Tesseract訓練識別數字

一、軟件環境

1.安裝Tesseract 3.0.2

Github上找到 Tesseract ,安裝 windows下的版本(無需源代碼)

2.安裝jTessBoxEditorFX訓練工具

    需要JDK1.8

二、訓練前需要準備的素材

1.多張包含數字的圖片
  d盤新建一個文件夾 number, 將圖片放入其中,(白底黑字,圖片大小恰好包含數字,一張可包含多個數字,一般一個圖片包含1234567890.,並且是一種字體)

三、開始訓練

1. 新建一個名爲 font_propertities 的文本文件
               裏面內容爲 normal 0 0 0 0 0 
              (normal代表字體名)
2. 用jTessBoxEditorFx將多個圖片合併成一個包含多頁圖片的tif文件
            合成的文件取名爲 number.normal.exp2.tif

點Tools->Merge,選擇圖片

3. 創建Box文件
          cd d:\number
          tesseract number.normal.exp2.tif number.normal.exp2 -l eng batch.nochop makebox
          這裏的eng是默認的語言,當我們創建好自己的number語言後,以後再次重新訓練可以改成number,也就是:

tesseract number.normal.exp2.tif number.normal.exp2 -l number batch.nochop makebox

4. jTessBoxEditorFx打開Box文件
           打開後,查看識別的結果,並糾正錯誤,保存

在這裏插入圖片描述

5. 根據BOX文件和tif文件生成特徵文件
     命令行 執行如下命令(可放入一個.bat文件便於執行)
      tesseract number.normal.exp2.tif number.normal.exp2  nobatch box.train

      unicharset_extractor number.normal.exp2.box

      shapeclustering -F font_properties -U unicharset number.normal.exp2.tr

      mftraining -F font_properties -U unicharset -O unicharset number.normal.exp2.tr

       cntraining  number.normal.exp2.tr

  執行完畢,將生成5個文件
  inttemp  normproto  pffmtable  shapetable   unicharset
6. 生成最終語言文件
  將以上五個文件前面都改名,前面加上 number.

此時文件夾如上
然後,命令行執行

combine_tessdata number.

就會生成 number.traineddata, 將其拷貝的tesseract 執行目錄的tessdata下

tessedata文件夾

6. 通過命令行驗證訓練結果

tesseract number.normal.exp2.tif output -l number

執行後,執行結果在output.txt裏

以上過程可以反覆執行,不斷修正精確度

四. 在c# 中使用

1.引入
          nuget引入 tesseract ,2.41版(爲何使用低版本?2.41以上版本,無法在xp下使用,使用時報錯,找不到libtesseract304.dll文件,事實上文件都在那裏,而且需要的vc runtime 都裝上了)   
          tesseract 2.41 依賴於vc++ runtime 2012 ,如果不安裝,會報錯找不到dll文件
2.代碼
a.初始化

初始化代碼

b.識別

識別前先二值化(轉換成白底黑字),然後識別

參考:

https://blog.csdn.net/jianglei1310446/article/details/77572435

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