jTessBoxEditor訓練驗證碼圖片

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時經常程序異常崩潰,所以本文操作還是以命令行爲主。

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