Tesseract3.02訓練生成新的識別語言庫的詳細步驟
改進:tesseract3.03添加了自動化處理的工具:
準備一個包含訓練字元的txt檔案training_text.txt,然後找到你需要識別的字型檔案,比如你想識別宋體的字元,就找到宋體的truetype或者opentype檔案。然後執行下面的命令來建立一個tif/box檔案對。
training/text2image --text=training_text.txt --outputbase=eng.TimesNewRomanBold.exp0 --font='Times New Roman Bold' --fonts_dir=/usr/share/fonts
主要到字型檔案可能包含空格,所以要新增引號。更多具體的引數設定可以參考training/text2image.cpp檔案。
-------------------------------------------------
此外使用者還需要提供以下三個文字型別的檔案:
- lang.font_properties 指示識別字體的屬性,生成形狀特徵檔案需要
- lang.frequent_words_list 儲存常見的單詞,每行一個,生成使用者常用字字典lang.freq-dawg需要
- lang.words_list 儲存所有的單詞,每行一個,生成使用者字典lang.word-dawg需要
- lang.unicharambigs 矯正易混淆詞需要
通過以上的操作,這一步最終要得到一個*.tif格式的
2、由tif圖片產生相應的Box檔案(*.box)
tesseract [lang].[fontname].exp[number].tif [lang].[fontname].exp[number] batch.nochop makebox
這一步產生對應的lang.fontname.exp[number].box 檔案。
編輯該Box檔案,校正識別出來的字元,如果單個字元識別成了兩個或者多個字元,則要將這些行進行合併。前兩項座標取最小值,後兩項座標取最大值。
3、產生字元特徵檔案(*.tr)tesseract [lang].[fontname].exp[number].tif [lang].[fontname].exp[number]
這一步產生三個檔案:
(1) tesseract.log記錄該步驟執行結果;
(2) lang.fontname.exp[number].txt;
(3) lang.fontname.exp[number].tr為特徵檔案。
4、由*.box檔案計算字符集(unicharset)unicharset_extractor lang.fontname.exp[number].box
這一步產生字符集檔案unicharset。
5、聚集字元特徵(inttemp、pffmtable、normproto)mftraining -F font_properties -U unicharset -O lang.unicharset [lang].[fontname].exp[number].tr
使用上一步產生的字符集檔案unicharset,來生成當前新語言的字符集檔案lang.unicharset。同時還會產生圖形原型檔案inttemp和每個字元所對應的字元特徵數檔案pffmtable,很可能也會產生另外一個shapetabel