用jTessBoxEditor訓練tesseract模型

導語:

上文咱們講到了怎麼使用tesseract,本文講一下怎麼對手寫的數字進行訓練,看完以後能夠觸類旁通對 其餘語言好比中文或者其餘文字甚至是符號進行本身的訓練,方式方法都是通用的。java

前提條件:

1.安裝java環境(由於jTessBoxEditor使用java的寫一個圖形化的工具,因此須要java的運行環境,不會的請自行谷歌啦)
2.安裝好tesseract(sourceforge下載地址
3.識別不許的圖片(這裏我先手寫了一張12345的圖片,識別出來的是1365,默認使用的eng語言庫)markdown

以下:
結果:工具

tesseract 12345.png stdout
1365
複製代碼

訓練步驟:

1.打開jTessBoxEditor 在命令行輸入oop

java -jar jTessBoxEditor
複製代碼

就會彈出一個交互式的窗口 post

2.選擇Tools->Merge TIFF字體

3.而後選擇一張圖片,這裏我建立了一個train的目錄用來放圖片和接下來的各類文件
文件名命名格式是:[lang].[fontname].exp[num].tif
lang-語言
fontname-字體
num-自定義的數字spa

這裏由於是識別的數字,因此我取的是num.test.exp0.tif。
後面的步驟會反覆用到這個名字。.net

完成後jTessBoxEditor工具會出現下面的彈框,而且在當前train目錄會生成num.test.exp0.tif的文件。
4.生成box文件,box就是把每一個識別出來的文字框起來命令行

輸入命令:
tesseract num.test.exp0.tif num.test.exp0  --psm 3 batch.nochop makebox
複製代碼

運行成功會生成一個num.test.exp0.box的文件code

5.接下來訓練剛纔的圖片(其實就是手動把錯誤的識別結果改爲正確的) 打開jTessBoxEdtor->Box Editor->Open,打開以前的num.test.exp0.tif,這裏會使用到同目錄下的num.test.exp0.box,因此要都放在同一個目錄下。 把沒有識別出來的2,在Char欄目填上,把識別錯誤的4改成6。修改完成後記得按回車而後Save保存起來。

6.生成font_properties文件 能夠手建立一個空文件而後填上test 0 0 0 0 0 說明:

test 0 0 0 0 0
【語法】:<fontname> <italic> <bold> <fixed> <serif> <fraktur>
【語法】:fontname爲字體名稱,italic爲斜體,bold爲黑體字,
fixed爲默認字體,serif爲襯線字體,fraktur德文黑字體,
1和0表明有和無,精細區分時可以使用
複製代碼

也能夠使用命令:

echo test 0 0 0 0 0 > font_properties
複製代碼

記住字體名稱必須和以前的num.test.exp0中的test保持一致。 7.生成訓練文件

tesseract num.test.exp0.tif num.test.exp0 nobatch box.train
複製代碼

8.生成字符集

unicharset_extractor zwp.test.exp0.box
複製代碼

執行成功會生成unicharset的文件

這裏有一點要注意,若是你安裝的tesseract是沒有帶訓練工具的話,你會被提示

zsh: command not found: unicharset_extractor
複製代碼

能夠參考另外一篇blog:zsh: command not found: unicharset_extractor

9.生成聚字符特徵文件

輸入命令:
mftraining -F font_properties -U unicharset -O num.unicharset num.test.exp0.tr
複製代碼

執行成功後會生成inttemp、pffmtable、shapetable和num.unicharset四個文件

10.生成字符正常化特徵文件

cntraining num.test.exp0.tr
複製代碼

執行成功後會生成normproto的文件

11.重命名文件

mv normproto num.normproto
mv inttemp num.inttemp
mv pffmtable num.pffmtable
mv shapetable num.shapetable
複製代碼

12.合併訓練文件

combine_tessdata num.
複製代碼

會生成一個num.traineddata的文件,看到這裏是否是笑開了花?沒錯這個就是最終的訓練集了,把這個放到tesseract的tessdata目錄之下。 多是/usr/local/Cellar/tesseract/4.1.1/share/tessdata也多是/usr/local/share/tessdata

13.最終結果:

總結:

1.要想完成這個流程要使用安裝了訓練工具的tesseract,tesseract如今好像不支持帶訓練工具的安裝參數了,安裝會報下面的錯誤(本人使用的是tesseract4.1.1版本) Error: invalid option: --with-training-tools ,因此安裝訓練工具須要本身編譯安裝,能夠參考博客 2.其實整個步驟中絕大部分命令能夠使用腳本幫忙完成掉,只有jTessBoxEditor標註矯正結果須要使用到界面,若是能夠把jTessBoxEditor標註結果作成一個工具,矯正完剩下的命令都自動執行就能夠批量的訓練了。

相關文章
相關標籤/搜索