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)】
以上是我在網上找了很多帖子,通過自己整理學習出來的。謝謝各位大佬。