1. 程式人生 > >Tesseract3.02訓練生成新的識別語言庫的詳細步驟

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]

nobatch box.train

這一步產生三個檔案:

(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