關於中文的識別,效果比較好而且開源的應該就是Tesseract-OCR了,所以自己親身試用一下,分享到博客讓有同樣興趣的人少走彎路。
文中所用到的身份證圖片資源是百度找的,如有侵權可聯系我刪除。
一、准備工作
1、下載Tesseract-OCR引擎,注意要3.0以上才支持中文哦,按照提示安裝就行。
2、下載chi_sim.traindata字庫。要有這個才能識別中文。下好后,放到Tesseract-OCR項目的tessdata文件夾里面。
3、下載jTessBoxEditor,這個是用來訓練字庫的。
以上的幾個在百度都能找到下載,就不詳細講了。

二、識別
1、進入cmd,進入到要識別的圖片的路徑下。
2、輸入命令
|
1
|
tesseract 圖片名稱 生成的結果文件的名稱 字庫
|
例如我的圖片識別就是:
|
1
|
tesseract test.jpg result -l chi_sim
|

識別完后會生成result.txt文件

當然啦效果不太理想。所以我們要訓練自己的字庫。
三、訓練
1、將圖片轉換成tif格式,用於后面生成box文件。可以通過畫圖,然后另存為tif即可。
更改圖片名字,這個是有要求的=。=
tif文面命名格式[lang].[fontname].exp[num].tif
lang是語言 fontname是字體
比如我們要訓練自定義字庫 mjorcen字體名normal
那么我們把圖片文件重命名 mjorcen.normal.exp0.jpg在轉tif。
2、生成box文件。
|
1
|
tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l chi_sim batch.nochop makebox
|

box文件和對應的tif一定要在相同的目錄下,不然后面打不開。
3、打開jTessBoxEditor矯正錯誤並訓練
打開train.bat

找到tif圖,打開,並校正。

4、訓練。
只要在命令行輸入命令即可。
|
1
|
tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 nobatch box.train
|
|
1
|
unicharset_extractor mjorcen.normal.exp0.box
|

在這我明明已經矯正好了,但是還是有1個字符不能識別出來,報的錯跟實際上完全沒有相關性,不知道是不是bug,到后面的結果就是“園”字沒有識別出來。
先不管,畢竟只有一個樣本。
新建一個font_properties文件
里面內容寫入 normal 0 0 0 0 0 表示默認普通字體
繼續敲命令
|
1
2
3
4
5
6
7
8
9
|
shapeclustering -F font_properties -U unicharset mjorcen.normal.exp0.tr
mftraining -F font_properties -U unicharset -O unicharset mjorcen.normal.exp0.tr
cntraining mjorcen.normal.exp0.tr
|
最后會生成五個文件,把目錄下的unicharset、inttemp、pffmtable、shapetable、normproto這五個文件前面都加上normal.
如圖:

命令行輸入,合並五個文件:
|
1
|
combine_tessdata normal.
|
得到訓練好的字庫。

四、測試
1、把 normal.traineddata 復制到Tesseract-OCR 安裝目錄下的tessdata文件夾中
2、識別命令:
|
1
|
tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l normal
|
3、效果

對比:

總結:肯定要自己訓練過后的字庫識別效果好,接下來要把整個項目弄進android,還要研究怎么將多個字庫合並成一個字庫,因為我不可能一次訓練完所有的圖片文字的。到時候有什么成果了再分享博文。希望大家可以點贊!謝謝。
更新:沒有錯誤的話命令行的提示應該是這樣的

最近要做文字識別,不讓直接用別人的接口,所以只能嘗試去用開源的類庫。tesseract-ocr是惠普公司開源的一個文字識別項目,通過它可以快速搭建圖文識別系統,幫助我們開發出能識別圖片的ocr系統。因為Windows環境開發,我也就必須在windows環境安裝系統。
第一步:下載安裝包
根據https://github.com/tesseract-ocr/tesseract/wiki,我找到非官方的安裝包,好像我只看到64位的安裝包http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe,下載后直接安裝即可,但是要記得你的安裝目錄,我們等會配置環境變量要用。
如果不是做英文的圖文識別,還需要下載其他語言的識別包https://github.com/tesseract-ocr/tesseract/wiki/Data-Files。
簡體字識別包:https://raw.githubusercontent.com/tesseract-ocr/tessdata/4.00/chi_sim.traineddata
繁體字識別包:https://github.com/tesseract-ocr/tessdata/raw/4.0/chi_tra.traineddata
第二步:安裝
直接執行下載好的tesseract-ocr-setup-4.00.00dev.exe,下一步、下一步安裝。
第三步:配置環境變量
注意:我的系統是win7,其他系統應該差不多,跟配置java變量一樣
復制你的安裝地址,我的是安裝在C:\Program Files (x86)\Tesseract-OCR,界面如下:

復制安裝路徑“C:\Program Files (x86)\Tesseract-OCR”,進入“控制面板\系統和安全\系統”,點擊
“系統保護”

進入到以下界面:

點擊環境變量,進入配置以下界面:

把剛才的安裝路徑“C:\Program Files (x86)\Tesseract-OCR”添加到紅線划的PATH和Path,注意,添加時候開頭用“;”跟之前的變量隔開,結尾以“;”結尾。下面是我的配置信息樣本:
C:\Users\Administrator\AppData\Roaming\Composer\vendor\bin;C:\Users\Administrator\AppData\Roaming\npm;C:\Program Files (x86)\Tesseract-OCR;
配置好了點擊保存。
打開命令終端,輸入:tesseract -v,可以看到版本信息

如果出現報錯,估計是環境變量沒配置好。
到這里,我們就算安裝完成了,但是,我們的系統還是無法識別中文的,我們要去下載簡體漢字、繁體漢字語言包(上文給了地址了),下載好之后放到安裝目錄的tessconfigs目錄下即可。
補充:因為沒有配置全局變量,無法跨盤執行數據轉換,這里我們在環境變量那增加一個配置信息
系統變量—->新建:

增加一個TESSDATA_PREFIX變量名,變量值還是我的安裝路徑C:\Program Files (x86)\Tesseract-OCR;
