Tesseract訓練識別數字
一、軟件環境
1.安裝Tesseract 3.0.2
Github上找到 Tesseract ,安裝 windows下的版本(無需源代碼)
2.安裝jTessBoxEditorFX訓練工具
需要JDK1.8
二、訓練前需要準備的素材
1.多張包含數字的圖片
d盤新建一個文件夾 number, 將圖片放入其中,(白底黑字,圖片大小恰好包含數字,一張可包含多個數字,一般一個圖片包含1234567890.,並且是一種字體)
三、開始訓練
1. 新建一個名爲 font_propertities 的文本文件
裏面內容爲 normal 0 0 0 0 0
(normal代表字體名)
2. 用jTessBoxEditorFx將多個圖片合併成一個包含多頁圖片的tif文件
合成的文件取名爲 number.normal.exp2.tif
3. 創建Box文件
cd d:\number
tesseract number.normal.exp2.tif number.normal.exp2 -l eng batch.nochop makebox
這裏的eng是默認的語言,當我們創建好自己的number語言後,以後再次重新訓練可以改成number,也就是:
tesseract number.normal.exp2.tif number.normal.exp2 -l number batch.nochop makebox
4. jTessBoxEditorFx打開Box文件
打開後,查看識別的結果,並糾正錯誤,保存
5. 根據BOX文件和tif文件生成特徵文件
命令行 執行如下命令(可放入一個.bat文件便於執行)
tesseract number.normal.exp2.tif number.normal.exp2 nobatch box.train
unicharset_extractor number.normal.exp2.box
shapeclustering -F font_properties -U unicharset number.normal.exp2.tr
mftraining -F font_properties -U unicharset -O unicharset number.normal.exp2.tr
cntraining number.normal.exp2.tr
執行完畢,將生成5個文件
inttemp normproto pffmtable shapetable unicharset
6. 生成最終語言文件
將以上五個文件前面都改名,前面加上 number.
然後,命令行執行
combine_tessdata number.
就會生成 number.traineddata, 將其拷貝的tesseract 執行目錄的tessdata下
6. 通過命令行驗證訓練結果
tesseract number.normal.exp2.tif output -l number
執行後,執行結果在output.txt裏
以上過程可以反覆執行,不斷修正精確度
四. 在c# 中使用
1.引入
nuget引入 tesseract ,2.41版(爲何使用低版本?2.41以上版本,無法在xp下使用,使用時報錯,找不到libtesseract304.dll文件,事實上文件都在那裏,而且需要的vc runtime 都裝上了)
tesseract 2.41 依賴於vc++ runtime 2012 ,如果不安裝,會報錯找不到dll文件
2.代碼
a.初始化
b.識別
參考:
https://blog.csdn.net/jianglei1310446/article/details/77572435