Tesseract-OCR-04-使用 jTessBoxEditor 進行訓練
- 本篇是關於 jTessBoxEditor 進行訓練,使 Tesseract-OCR 文字識別準確率得到極大的提高,本篇完善了很多細節,初學者也可以看懂,一起學習吧!
- 想要一遍成功要細心關注【注意】,我踩過的坑都標出來了
訓練的大致步驟:
- 1.安裝 jTessBoxEditor
- 2.獲取樣本檔案
- 3.Merge 樣本檔案
- 4.生成 .box 檔案
- 5.定義字元配置檔案
- 6.字元矯正
- 7.執行批處理檔案
- 8.將生成的 num.trainddata 放入 Tesseract 安裝目錄的 tessdata 資料夾裡
1.安裝 jTessBoxEditor
- 下載jTessBoxEditor,地址https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/
- 解壓後得到jTessBoxEditor
- 由於這是由Java開發的,所以我們應該確保在執行jTessBoxEditor前先安裝JRE(Java Runtime Environment,Java執行環境)
- 沒有安裝 jre 的可以到官網下載安裝:
http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
- jre 安裝就不仔細介紹了,因為能找到這篇的,基本都安裝過了,下面介紹 jTessBoxEditor
- 但是呢,這個 jTessBoxEditor ,不用安裝,直接解壓就可以,單擊解壓到或者直接拉出來就可以了
2.獲取樣本檔案
- 我們可以用畫圖工具繪製樣本檔案,數量越多越好,我自己畫了 5 張圖作為訓練的資料,如圖:
- 【注意】:樣本影象檔案格式必須為tif\tiff格式,否則在Merge樣本檔案的過程中會出現 Couldn’t Seek 的錯誤。
- 再轉格式嫌麻煩就直接拿走我的:https://pan.baidu.com/s/1hoTkxMVw5z_ve9hzftLOqw
3.Merge樣本檔案
- 在安裝目錄找到一個【train.bat】開啟 jTessBoxEditor >【Tools】>【Merge TIFF】
- 操作截圖:
- 將樣本檔案全部選上,安裝 Ctrl 鍵不鬆
- 【注意】:這裡是沒有介面化的提示的,選中後,點選【開啟】,立馬就是輸入合成後的檔名介面,輸入num.font.exp0.tif,點選【儲存】
- 也就是將合併檔案儲存為 num.font.exp0.tif
4.生成BOX檔案
- 開啟 cmd 並切換至 num.font.exp0.tif 所在目錄
- 使用 cd 目錄名 進入目錄
- 使用 cd.. 返回上一級目錄
- 輸入下面命令,生成檔名為num.font.exp0.box
tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox
【語法】:tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox
【語法】:lang為語言名稱,fontname為字型名稱,num為序號;在tesseract中,一定要注意格式
- 操作截圖
如果報錯可能是沒有進入合併好的 tif 檔案目錄下,也可能是沒有換成自己用的檔名哦
5.定義字元配置檔案
在資料夾資料夾內,新建一個文字檔案,名為font_properties,刪掉.txt,用記事本開啟,寫入內容為:
font 0 0 0 0 0
【語法】:<fontname> <italic> <bold> <fixed> <serif> <fraktur>
【語法】:fontname為字型名稱,italic為斜體,bold為黑體字,
fixed為預設字型,serif為襯線字型,fraktur德文黑字型,
1和0代表有和無,精細區分時可使用
6.準備環節
- 將5個tif檔案,num.font.exp0.tif,生成的num.font.exp0.box檔案,還有font_properties檔案放在同一個目錄下
- 目前8個檔案,截圖:
7.字元矯正
- 開啟 jTessBoxEditor>【BOX Editor】> 【Open】,開啟num.font.exp0.tif;矯正【Char】上的字元
- 操作截圖:
- 【注意】:記得[Page]有好多頁哦!修改後記得儲存
- 當然有可能生成的 box 檔案後,會多一個盒子,它把7識別成了兩個
- 處理方式:自己根據看到的數字修改char,如果不是完整字元就敲 空格,然後回車
- 操作截圖:
- 然後就是依次處理 5 頁
- 最後儲存,替換原來的 box 檔案
8.執行批處理檔案
- 【注意】:執行該批處理檔案前,先要目錄下建立font_properties檔案 ,也就是滴 5 步
- 在目標目錄下,新建一個txt檔案,複製程式碼,重新命名為 do.bat,直接更改字尾名就可以
- 程式碼如下
echo Run Tesseract for Training..
tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train
echo Compute the Character Set..
unicharset_extractor.exe num.font.exp0.box
mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr
echo Clustering..
cntraining.exe num.font.exp0.tr
echo Rename Files..
rename normproto num.normproto
rename inttemp num.inttemp
rename pffmtable num.pffmtable
rename shapetable num.shapetable
echo Create Tessdata..
combine_tessdata.exe num.
echo. & pause
- 儲存後,雙擊執行即可,執行後會在資料夾生成很多檔案,如下:
9.拷貝 num.trainddata 檔案
- 最後將 num.trainddata 複製到 Tesseract-OCR 安裝目錄下的 tessdata 資料夾
- 【注意】:這裡是【Tesseract-OCR 安裝目錄下的 tessdata 資料夾】
10.大功告成,測試結果
- 這裡我是將圖片 num1.jpg 放在了:D:\p
- 我們需要在 cmd 進入此目錄
- 使用 cd 目錄名 進入目錄
- 使用 cd.. 返回上一級目錄
- 使用 Tesseract 命令:
- 【注意】:語言引數要設定成 num,就是我們剛才拷貝的,沒拷貝 num.trainddata 檔案不能使用
tesseract 檔名 儲存的txt檔名 例:
tesseract num1.jpg num01 -l num
- 操作截圖:
執行結果:
我們可以看到新生成的檔案 num01 的內容為 762408,內容完全正確。細心的人會發現,最後一句指令,我們使用了指令[-l num]而不是[-l eng]。這說明,最後一次轉換我們使用的是新生成的num語言的匹配庫而不是預設的 eng 語言匹配庫
- 我們可以看到,經過簡單的訓練,我們對於數字資料的轉換準確率提高了很多
- 看到這裡如果還沒有安裝工具,參考:Windows下 Tesseract-OCR 的安裝與 環境變數配置
本篇完善了很多細節,初學者也可以看懂,奉上 原文連結,拜拜
更多文章連結:Tesseract 隨筆
- 本筆記不允許任何個人和組織轉載