Tesseract-OCR-04-使用 jTessBoxEditor 進行訓練

肖朋偉發表於2018-09-07

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 隨筆


  • 本筆記不允許任何個人和組織轉載

相關文章