1. 程式人生 > >Tesseract-OCR 在烏班圖下訓練教程

Tesseract-OCR 在烏班圖下訓練教程

一、Tesseract訓練

1.下載Tesseract-OCR(相關版本自行選擇) 

   這個就不多說了,可以百度一下。

2.下載jTessBoxEditor(執行環境為java虛擬機器) 

   下載百度下載,有很多。開啟資料夾,目錄如下。

把檔案下載到烏班圖解壓下來。執行jTessBoxEditor.jar 檔案,右鍵終端開啟。輸入 java -jar jTessBoxEditor.jar

執行程式後出現

3.下面就開始進行訓練

 基本步驟是  獲取樣本檔案 -> Merge樣本檔案 –> 生成BOX檔案 -> 對樣本圖片用jTessBoxEditor工具進行矯正 -> 生成font_properties檔案 -> 生成.tr訓練檔案 ->

1)獲取樣本檔案

     下載好樣本檔案;

2)Merge樣本檔案

     先將驗證碼檔案準備好,點選jTessBoxEditor 的 Tools 的Merge_TIFF。這時選擇到你樣本的目錄,注意篩選的格式。全選,然後再填寫儲存的名。

確定就在該目錄下建立了 test.tif 檔案。

3)生成BOX檔案

開啟在   test.tif   檔案目錄下開啟終端,執行    tesseract test.tif test makebox  

結果生成了test.box檔案 

4)對樣本圖片用jTessBoxEditor工具進行矯正 

  開啟jTessBoxEditor,點選 Box Editor 下的 open 。選擇剛剛生成的 test.tif

    右側為對應的Box檔案資料,如果char的字元和當前的樣本圖片一致時就進行矯正,修改char裡的字元,然後進行save,這樣就矯正  了,進入下張樣本圖片時,同樣,矯正後點選save,當所有樣本圖片都矯正了,這一步也就完成了

5) 生成font_properties檔案(該檔案沒有後綴名)

在命令列執行:echo font 0 0 0 0 0 >font_properties     注意 font 是值建立 字型的名字,下面合併訓練檔案時 會用到。 結果生成了font_properties檔案 

內容為字型名font,後面帶5個0,分別代表字型的粗體、斜體等屬性,這裡全部是0

結果生成了font_properties檔案

6)生成.tr訓練檔案

    在命令列執行:   tesseract test.tif test -l eng --psm 7 nobatch box.train

   注意 是 --psm 寫一個 -  會報錯。   成功就會生成 一下檔案

7)生成字符集檔案 

在命令列執行 : unicharset_extractor test.box 

生產 unicharset 檔案

8)生成shape檔案

  在命令列執行 : shapeclustering -F font_properties -U unicharset -O test.unicharset test.tr

結果生成了shapetable檔案和test.unicharset檔案

9)生成聚集字元特徵檔案 

在命令列執行: mftraining -F font_properties -U unicharset -O test.unicharset test.tr 

  結果生成了pffmtable,inttemp,unicharset檔案

10).生成字元正常化特徵檔案  在命令列執行: cntraining test.tr 

   結果生成了normproto檔案

11)把h,i步驟生成的檔案用 mv 命令進行更名

mv normproto test.normproto   mv inttemp test.inttemp mv pffmtable test.pffmtable   mv unicharset test.unicharset   mv shapetable test.shapetable

12).合併訓練檔案  在命令列執行: combine_tessdata test.       注意這裡的  font   是與上面的一樣。

13) 將fontyp.traineddata檔案拷貝至Tesseract-OCR資料夾裡的tessdata語言包資料夾裡

 通過 命令   tesseract --list-langs     可以檢視檢視當前語言包有哪些  這時 發現剛剛新加的 test 新增進去了。

重新驗證一遍:

python 程式碼:  lang 引數是你選擇的語言包 (afr  是我在下面的連線中下載的)   psm是識別強度

import pytesseract
from PIL import Image
image1 = Image.open("yanzen_code/codeFile3.gif")
image1 = image1.convert("RGB")
text = pytesseract.image_to_string(image1,lang='afr',config='--psm 10')
print text

參考資料:  1. Tesseract 在 googlecode上的專案,已停止更新,有一些資料,但是還是建議轉github  【http://tesseract-ocr.googlecode.com/】  2. Tesseract 在 GITHUB 上的專案  【https://github.com/tesseract-ocr/tesseract】  3. 如何編譯自己的Tesseract專案  【https://github.com/tesseract-ocr/tesseract/wiki/Compiling】  4. 各種語言的訓練包,直接拿來用  【https://github.com/tesseract-ocr/tessdata】  5. 現在Tesseract負責人Ray Smith 的介紹論文  【https://github.com/tesseract-ocr/docs/blob/master/tesseracticdar2007.pdf】  6. wiki上的簡介  【https://en.wikipedia.org/wiki/Tesseract_(software)】  

以上是我在網上找了很多帖子,通過自己整理學習出來的。謝謝各位大佬。