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 隨筆
- 本筆記不允許任何個人和組織轉載