tesseract-ocr有2和3兩個版本,不同版本訓練方法稍有不同。
第3版本的訓練方法官版教程在這裏:TrainingTesseract3
第2版的訓練方法官版教程在這裏:TrainingTesseract
我使用的是最新的3.01版本的。訓練所需準備:
1.下載並安裝3.01版本的tesseract。事實上並不需要安裝這步驟,我下載的是壓縮包版,解壓即可,這裏我解壓到E:\Tesseract-ocr目錄。
2.下載並安裝jTessBoxEditor 工具,這是一個Box file editors,用來編輯訓練文件的,直接下載地址在這裏。這個軟件是用java寫的,運行需要安裝jre,好在這個東西比.net好裝多了,怎麼運行可以見它的readme文件。
3.一張用來訓練的tiff格式圖片。
在不通過訓練的前提下,使用tesseract來識別一個訂單號的內容,如圖發現錯誤率很高,希望通過訓練來提高準確率。
訓練過程:
1.通過合併10張如上圖的圖片合併爲一張tiff格式的圖片,如何合併呢?通過jTessBoxEditor的Merge Tiff 來完成,不過他的小缺點就是隻能合併多張tiff格式的,如果你的圖片是jpg的,需要先轉換。生成後的tiff圖片叫做orderNo.tif
2.Make Box Files。在orderNo.tif所在的目錄下打開一個命令行,輸入:
E:\Tesseract-ocr\tesseract.exe orderNo.tif orderNo batch.nochop makebox
來生成一個box文件,該文件記錄了tesseract識別出來的每一個字和其位置座標。
3.使用jTessBoxEditor打開orderNo.tif文件,需要記住的是第2步生成的orderNo.box要和這個orderNo.tif文件同在一個目錄下。逐個校正文字,後保存。
4.Run Tesseract for Training。輸入命令:
E:\Tesseract-ocr\tesseract.exe orderNo.tif orderNo nobatch box.train
5.Compute the Character Set。輸入命令:
E:\Tesseract-ocr\unicharset_extractor.exe orderNo.box
6.新建文件“font_properties”。如果是3.01版本,那麼需要在目錄下新建一個名字爲“font_properties”的文件,並且輸入文本 :
orderNo 0 0 0 0 0
大致意思就是說orderNo這個語言的字體爲普通字體。
並執行命令:
E:\Tesseract-ocr\mftraining.exe -F font_properties -U unicharset orderNo.tr
7.Clustering。輸入命令:
E:\Tesseract-ocr\cntraining.exe orderNo.tr
8.此時,在目錄下應該生成若干個文件了,把unicharset, inttemp, normproto, pffmtable這四個文件加上前綴“orderNo.”。然後輸入命令:
E:\Tesseract-ocr\combine_tessdata.exe orderNo.
會顯示一個結果如:
Combining tessdata files
TessdataManager combined tesseract data files.
Offset for type 0 is -1
Offset for type 1 is 108
Offset for type 2 is -1
Offset for type 3 is 1660
Offset for type 4 is 327545
Offset for type 5 is 327781
Offset for type 6 is -1
Offset for type 7 is -1
Offset for type 8 is -1
Offset for type 9 is -1
Offset for type 10 is -1
Offset for type 11 is -1
Offset for type 12 is –1
必須確定的是第2、4、5、6行的數據不是-1,那麼一個新的字典就算生成了。
此時目錄下“orderNo.traineddata”的文件拷貝到tesseract程序目錄下的“tessdata”目錄。
以後就可以使用該該字典來識別了,例如:
tesseract.exe test.jpg result –l orderNo
通過訓練出來的新語言,識別率提高了不少。