訓練tesseract

tesseract識別率,通過樣本數量提升,呈對數型增長,所以根據你的驗證碼的複雜程度來確定你的訓練樣本數量

因爲本身tesseract的識別精度很低,所以很有必要進行訓練


驗證碼:是由背景圖片和字符圖片複合而成,訓練的時候我們要告訴每個驗證碼樣本里,字符的位置(上下左右四個參數)和字符的值

定位元素的位置

  下載工具jTessBoxEditor. http://sourceforge.net/projects/vietocr/files/jTessBoxEditor/,這個工具是用來訓練樣本用的,由於該工具是用Java開發的,需要安裝JAVA虛擬機才能運行。


1.採集樣本,通過python圖片循環抓取寫入,寫入的時候把圖片命名爲   .tif  結尾

def data_sear():
    if not os.path.exists('samples'):
        os.makedirs('samples')
    for i in range(1,351):
        result = urllib2.urlopen("http://。。。。網址。。。").read()
        file1 = open('samples/result%d.tif'%i,'wb')
        file1.write(result)
        file1.close()

2.合併 tif(爲了方便通過軟件產生每個元素的位置)

打開jtessboxeditor,點擊Tools->Merge Tiff ,按住shift鍵選擇前文提到的101個tif文件,並把生成的tif合併到新目錄下,命名爲langyp.fontyp.exp0.tif。


注意:langyp 是本人定義的語言名稱,fontyp是本人定義的字體名稱,後續都會用到,你可以修改成你喜歡的名字

         遇到warning沒有關係

3.生成box文件(每個元素的位置)

執行命令生成langyp.fontyp.exp0.box文件

tesseract langyp.fontyp.exp0.tif langyp.fontyp.exp0 -l eng -psm 7 batch.nochop makebox

4,軟件識別的錯誤很多,我們要自己處理box文件

切換到jTessBoxEditor工具的Box Editor頁,點擊open,打開前面的tiff文件langyp.fontyp.exp0.tif,工具會自動加載對應的box文件。

檢查box數據,如下圖所示,數字8被誤認成字母H,手工修改H成8,並保存。

注意:修改:選中要修改的元素,點擊右上角character》》後面的》》,會出現參數,在這裏面修改,通過上下左右可以連續增減參數

           下面的page,每個page就是你的每個驗證碼,你驗證碼的數量和page不一樣,是應爲一些識別不了的空白,這個軟件略過了

            記得要及時點擊上面的save按鈕,保存

5.生成font_properties(告訴tesseract,你的box語法)

執行echo命令生成font_properties。

echo fontyp 0 0 0 0 0 >font_properties

也可以手工新建一個名爲font_properties的文本文件(注意該文件沒有擴展名),內容爲字體名fontyp,後面帶5個0,分別代表字體的粗體、斜體等屬性,這裏全部是0

6.生成訓練文件

執行命令,生成langyp.fontyp.exp0.tr訓練文件

tesseract langyp.fontyp.exp0.tif langyp.fontyp.exp0 -l eng -psm 7 nobatch box.train

7.生成字符集

執行命令,生成名爲unicharset的字符集文件。

unicharset_extractor langyp.fontyp.exp0.box

8.生成shape文件

執行命令,生成shape文件

shapeclustering -F font_properties -U unicharset -O langyp.unicharset langyp.fontyp.exp0.tr

9.生成聚集字符特徵文件

執行命令,生成3個特徵字符文件,unicharset、inttemp、pffmtable

mftraining -F font_properties -U unicharset -O langyp.unicharset langyp.fontyp.exp0.tr

10.生成字符正常化文件

執行命令,生成正常化特徵文件normproto。

cntraining langyp.fontyp.exp0.tr

11.更名

執行命令,把步驟9,步驟10生成的特徵文件進行更名。

rename normproto fontyp.normproto
rename inttemp fontyp.inttemp
rename pffmtable fontyp.pffmtable
rename unicharset fontyp.unicharset
rename shapetable fontyp.shapetable

12.合併訓練文件

執行命令,生成fontyp.traineddata文件。

combine_tessdata fontyp.

注意:

a、fontyp.traineddata文件最終要拷貝tesseract安裝目錄的tessdata目錄下,才能被tesseract找到。

b、命令行最後必須帶一個點。







發佈了105 篇原創文章 · 獲贊 82 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章