1. 功能介紹
利用jTessBoxEditor工具進行Tesseract3.02.02樣本訓練,提高驗證碼識別需求是對某個網站的驗證碼進行樣本訓練,形成自己的語言庫,來提高驗證碼識別率。
2. 環境準備
關於tesseract樣本訓練有一個官方流程說明, https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesseract#run-tesseract-for-training
具體的方法有兩種: 1-利用三方工具,2-完全命令行操作, 三方工具主要在 https://github.com/tesseract-ocr/tesseract/wiki/AddOns 下載,本文將用到 jTessBoxEditor 這個工具,下載地址爲https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/jTessBoxEditor-1.5.zip/download?use_mirror=jaist&download=&failedmirror=tenet.dl.sourceforge.net
3. 數據準備
使用抓取程序抓取驗證碼,放在E:\workspace\ocr\images\test目錄下,分別按順序命名爲0.jpg,1.jpg,---,10000.jpg,如,
該驗證碼有幾個特點:a、定長4位,b、都是數字,c、有背景干擾,但比較簡單,d、字體顏色不確定,e、有粘連。
爲了提高識別率,首先做了一個工作就是灰度化處理 如,並全部轉換成tif文件,分別命名成:0.tif,1.tif,2.tif,……,10001.tif,統一存放在E:\workspace\ocr\images\tif下。
4. 利用jTessBoxEditor進行模型訓練
4.1 訓練步驟
4.1.1 運行程序
運行以下命令:
java-Xms128m -Xmx1024m -jar jTessBoxEditor.jar
4.1.2 合併樣本圖片
在打開的jtessboxeditor界面中,點擊Tools->Merge Tiff ,如圖:
按住shift鍵選擇前文準備好的tif文件,並把生成的tif合併到新目錄E:\workspace\ocr\images\tif\new2下,命名爲langyp.fontyp.exp0.tif。
注意: langyp 是定義的語言名稱, fontyp是定義的字體名稱,後續都會用到,可以隨意脩名字 。
4.1.3 生成box文件
執行命令生成 langyp.fontyp.exp0.box 文件
tesseract langyp.fontyp.exp0.tif langyp.fontyp.exp0-l eng -psm 7 batch.nochop makebox
E:\workspace\ocr\images\tif\new2的目錄
2017-05-10 14:37 <DIR> .
2017-05-10 14:37 <DIR> ..
2017-05-10 14:30 6,327 langyp.fontyp.exp0.box
2017-05-10 13:07 126,056 langyp.fontyp.exp0.tif
2 個文件 132,383 字節
2 個目錄24,869,994,496 可用字節
4.1.4 修改box文件
切換到jTessBoxEditor工具的Box Editor頁,點擊open,打開前面的tiff文件langyp.fontyp.exp0.tif,工具會自動加載對應的box文件。
檢查box數據,如下圖所示是已經修改好的情況,如果數字被誤認則手工修改,並保存。
點擊下圖紅色框的按鈕,逐個覈對tif文件的box數據,全部檢查結束並保存。
如上圖:圈中的部分1爲打開tif文件,2可以合併左邊的行,3可以插入行,4可以刪除行,5修改每行的數據,使得圈中識別的數字,character是識別的字符,X是起始橫軸座標,Y是起始縱軸座標,W是寬度,H是高度
4.1.5 生成font_properties
執行echo命令生成font_properties。
echofontyp 0 0 0 0 0 >font_properties
也可以手工新建一個名爲font_properties的文本文件(注意該文件沒有擴展名),內容爲字體名fontyp,後面帶5個0,分別代表字體的粗體、斜體等屬性,這裏全部是0
4.1.6 生成訓練文件
執行命令,生成langyp.fontyp.exp0.tr訓練文件
tesseractlangyp.fontyp.exp0.tif langyp.fontyp.exp0 -l eng -psm 7 nobatch box.train
E:\workspace\ocr\images\tif\new2 的目錄
2017-05-10 16:34 <DIR> .
2017-05-10 16:34 <DIR> ..
2017-05-10 16:05 16 font_properties
2017-05-10 14:30 6,327 langyp.fontyp.exp0.box
2017-05-10 13:07 126,056 langyp.fontyp.exp0.tif
2017-05-10 16:20 618,844 langyp.fontyp.exp0.tr
2017-05-10 16:20 202 langyp.fontyp.exp0.txt
5 個文件 751,445 字節
2 個目錄24,869,101,568 可用字節
4.1.7 生成字符集文件
執行命令,生成名爲unicharset的字符集文件。
unicharset_extractorlangyp.fontyp.exp0.box
E:\workspace\ocr\images\tif\new2的目錄
2017-05-10 16:41 <DIR> .
2017-05-10 16:41 <DIR> ..
2017-05-10 16:05 16 font_properties
2017-05-10 14:30 6,327 langyp.fontyp.exp0.box
2017-05-10 13:07 126,056 langyp.fontyp.exp0.tif
2017-05-10 16:20 618,844 langyp.fontyp.exp0.tr
2017-05-10 16:20 202 langyp.fontyp.exp0.txt
2017-05-10 16:41 712 unicharset
6 個文件 752,157 字節
2 個目錄24,869,171,200 可用字節
4.1.8 生成shape文件
執行命令,生成shape文件
shapeclustering-F font_properties -U unicharset -O langyp.unicharset langyp.fontyp.exp0.tr
E:\workspace\ocr\images\tif\new2的目錄
2017-05-10 17:24 <DIR> .
2017-05-10 17:24 <DIR> ..
2017-05-10 17:20 19 font_properties
2017-05-10 14:30 6,327 langyp.fontyp.exp0.box
2017-05-10 13:07 126,056 langyp.fontyp.exp0.tif
2017-05-10 17:23 618,844 langyp.fontyp.exp0.tr
2017-05-10 17:23 202 langyp.fontyp.exp0.txt
2017-05-10 17:24 723 langyp.unicharset
2017-05-10 17:24 202 shapetable
2017-05-10 17:24 712 unicharset
8 個文件 753,085 字節
2 個目錄24,868,278,272 可用字節
4.1.9 生成聚集字符特徵文件
執行命令,生成3個特徵字符文件,unicharset、inttemp、pffmtable
mftraining-F font_properties -U unicharset -O langyp.unicharset langyp.fontyp.exp0.tr
4.1.10 生成字符正常化特徵文件
執行命令,生成正常化特徵文件normproto。
cntraininglangyp.fontyp.exp0.tr
4.1.11 更名
執行命令,把步驟9,步驟10生成的特徵文件進行更名。
renamenormproto fontyp.normproto
renameinttemp fontyp.inttemp
renamepffmtable fontyp.pffmtable
renameunicharset fontyp.unicharset
renameshapetable fontyp.shapetable
4.1.12 合併訓練文件
執行命令,生成fontyp.traineddata文件。
combine_tessdatafontyp.
注意:
a、fontyp.traineddata文件最終要拷貝tesseract安裝目錄的tessdata目錄下,才能被tesseract找到。
b、命令行最後必須帶一個點。
c、執行結果中,1,3,4,5,13這幾行必須有數值,才代表命令執行成功。
4.1.13 fontyp.traineddata拷貝
複製fontyp.traineddata到tesseract的安裝目錄的tessdata子目錄下安裝子目錄C:\Program Files(x86)\Tesseract-OCR\tessdata,如下:
4.1.14 測試使用
使用命令重新驗證碼識別:
tesseract 1.jpg result -l fontyp-psm 7
4.2 總結
jtessboxeditor 工具其實是一個基本成型的三方樣本訓練工具,它的功能就是自動執行上述腳本命令,但是在實際使用中,還存在不夠完善的地方,譬如不能加psm參數,生成shape時經常程序異常崩潰,所以本文操作還是以命令行爲主。