Tesseract-OCR識別中文與訓練字庫實例

關於中文的識別,效果比較好並且開源的應該就是Tesseract-OCR了,因此本身親身試用一下,分享到博客讓有一樣興趣的人少走彎路。java

文中所用到的身份證圖片資源是百度找的,若有侵權可聯繫我刪除。android

 

1、準備工做測試

一、下載Tesseract-OCR引擎,注意要3.0以上才支持中文哦,按照提示安裝就行。
字體

二、下載chi_sim.traindata字庫。要有這個才能識別中文。下好後,放到Tesseract-OCR項目的tessdata文件夾裏面。.net

三、下載jTessBoxEditor,這個是用來訓練字庫的。命令行

以上的幾個在百度都能找到下載,就不詳細講了。3d

 

 

2、識別orm

一、進入cmd,進入到要識別的圖片的路徑下。blog

二、輸入命令圖片

tesseract 圖片名稱 生成的結果文件的名稱 字庫

例如個人圖片識別就是:

tesseract test.jpg result -l chi_sim

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

固然啦效果不太理想。因此咱們要訓練本身的字庫。

 

3、訓練

一、將圖片轉換成tif格式,用於後面生成box文件。能夠經過畫圖,而後另存爲tif便可。

更改圖片名字,這個是有要求的=。=

tif文面命名格式[lang].[fontname].exp[num].tif
lang是語言 fontname是字體 
好比咱們要訓練自定義字庫 mjorcen字體名normal
那麼咱們把圖片文件重命名 mjorcen.normal.exp0.jpg在轉tif。

 

二、生成box文件。

tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l chi_sim batch.nochop makebox

box文件和對應的tif必定要在相同的目錄下,否則後面打不開。

 

三、打開jTessBoxEditor矯正錯誤並訓練

打開train.bat

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

 

四、訓練。

只要在命令行輸入命令便可。

tesseract  mjorcen.normal.exp0.jpg mjorcen.normal.exp0  nobatch box.train
unicharset_extractor mjorcen.normal.exp0.box

 

在這我明明已經矯正好了,可是仍是有1個字符不能識別出來,報的錯跟實際上徹底沒有相關性,不知道是否是bug,到後面的結果就是「園」字沒有識別出來。

先無論,畢竟只有一個樣本。

 

新建一個font_properties文件

裏面內容寫入 normal 0 0 0 0 0 表示默認普通字體

 

繼續敲命令

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.

如圖:

 

命令行輸入,合併五個文件:

combine_tessdata normal.

獲得訓練好的字庫。

 

4、測試

一、把 normal.traineddata 複製到Tesseract-OCR 安裝目錄下的tessdata文件夾中

 

二、識別命令:

tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l normal

 

三、效果

 

對比:

 

 

總結:確定要本身訓練事後的字庫識別效果好,接下來要把整個項目弄進android,還要研究怎麼將多個字庫合併成一個字庫,由於我不可能一次訓練完全部的圖片文字的。到時候有什麼成果了再分享博文。但願你們能夠點贊!謝謝。

 

更新:沒有錯誤的話命令行的提示應該是這樣的

相關文章
相關標籤/搜索