------韋訪 20181016 1、概述上一講學(xué)習(xí)了怎么樣用opencv識(shí)別車牌,但是,我們只做到了將車牌上的字符分割出來(lái),還沒有對(duì)字符進(jìn)行識(shí)別,這一講先來(lái)學(xué)習(xí)OCR(Optical Character Recognition,光學(xué)字符識(shí)別)。目前OCR用的比較多的是開源框架Tesseract-OCR,所以就挑這個(gè)來(lái)學(xué)學(xué)。 2、Tesseract-OCR安裝Ubuntu的話,直接執(zhí)行命令: sudo apt-get install tesseract-ocr 就可以安裝了,我沒試過。下面我們用源碼安裝。 下載tesseract-ocr源碼: Github地址為:https://github.com/tesseract-ocr/tesseract 安裝步驟可以參考文檔:https://github.com/tesseract-ocr/tesseract/wiki/Compiling 安裝依賴: 首先安裝一些依賴工具和庫(kù): sudo apt-get install g++ # or clang++ (presumably) sudo apt-get install autoconf automake libtool sudo apt-get install pkg-config sudo apt-get install libpng-dev sudo apt-get install libjpeg8-dev sudo apt-get install libtiff5-dev sudo apt-get install zlib1g-dev 如果想自己訓(xùn)練數(shù)據(jù),則還要安裝以下工具: sudo apt-get install libicu-dev sudo apt-get install libpango1.0-dev sudo apt-get install libcairo2-dev 再安裝Leptonica: 注意Tesseract和Leptonica版本的對(duì)應(yīng),如下表,
安裝命令如下, wget http://www./source/leptonica-1.74.4.tar.gz tar -zxvf leptonica-1.74.4.tar.gz cd leptonica-1.74.4/ ./configure make -j8 編譯安裝: 先cd到源碼的根目錄,然后運(yùn)行 mkdir local ./autogen.sh ./configure --with-extra-libraries=/usr/local/include make -j8 sudo make install sudo ldconfig 如果上面命令都通過,再執(zhí)行命令 tesseract 如果打印如下信息則說明安裝成功。 安裝語(yǔ)言包: git clone https://github.com/tesseract-ocr/tessdata.git 然后將所有的.traineddata文件拷貝到/usr/local/share/tessdata/文件夾。 用tesseract測(cè)試文字識(shí)別:
我們要識(shí)別的圖片如上圖,運(yùn)行以下命令, tesseract 05.png 05 -l chi_sim -l可以指定字庫(kù)文件,chi_sim是識(shí)別中文的字庫(kù),運(yùn)行后會(huì)生成05.txt文本文件,
可以看到,中文識(shí)別出來(lái)了,但是英文的都識(shí)別出什么鬼咯!那指定一個(gè)英文的字庫(kù)文件看看效果如何?運(yùn)行命令, tesseract 05.png 05_en -l eng 運(yùn)行結(jié)果, 這下英文識(shí)別正確,中文沒識(shí)別出來(lái)。就不能同時(shí)識(shí)別中文和英文嗎?字庫(kù)就不能混用嗎?百度了以下,蠻多人都有這個(gè)疑問的,找了老半天,在這個(gè)博客找到方法, https://www.jianshu.com/p/f09045a4fc8a 把兩個(gè)字庫(kù)用加法”+”連起來(lái)就可以了,命令如下, tesseract 05.png 05 -l chi_sim+eng 運(yùn)行結(jié)果, 3、Python編程想讓python調(diào)用tesseract,得先執(zhí)行以下命令安裝pytesseract, sudo pip install pytesseract 安裝好以后,識(shí)別圖片里的字符就很簡(jiǎn)單了,執(zhí)行以下代碼,
運(yùn)行結(jié)果: 4、試著用官方字庫(kù)識(shí)別車牌上面的例子既然能識(shí)別中文、英文和數(shù)字,那么,能否直接用來(lái)識(shí)別我們上一講提取出來(lái)的車牌呢?試試看, 扣出來(lái)的字符圖片為,代碼如下,
運(yùn)行結(jié)果: 什么都沒識(shí)別到,試試中文呢?原圖片為,運(yùn)行結(jié)果: 也什么都沒識(shí)別出來(lái)。 5、訓(xùn)練既然使用官方的字庫(kù)無(wú)法識(shí)別出字符,那么,我們就應(yīng)該訓(xùn)練自己的數(shù)據(jù),訓(xùn)練需要用到一個(gè)工具---jTessBoxEditorFX,這個(gè)工具是java寫的,我的系統(tǒng)是ubuntu,jTessBoxEditorFX根目錄如下圖, Windows系統(tǒng)直接雙擊train.bat文件即可,linux系統(tǒng)則運(yùn)行train腳本,我電腦運(yùn)行腳本后,提示錯(cuò)誤如下: Error: Could not find or load main class net.sourceforge.tessboxeditor.JTessBoxEditor 搞了半天不知什么原因,在我自己的電腦上運(yùn)行也是這個(gè)問題,我就想會(huì)不會(huì)是這個(gè)工具不支持openjdk導(dǎo)致的?因?yàn)槲覂膳_(tái)電腦安裝的都是openjdk,然后,將openjdk改成Oracle的,果然就可以了。因?yàn)楣倦娔X要編譯安裝7.1系統(tǒng),只能用Openjdk,所以就不改公司電腦環(huán)境了,先往后學(xué),以后再補(bǔ)上OCR自己訓(xùn)練字庫(kù)這部分。
如果您感覺本篇博客對(duì)您有幫助,請(qǐng)打開支付寶,領(lǐng)個(gè)紅包支持一下,祝您掃到99元,謝謝~~
|
|