1. 程式人生 > >Tesseract 3.02中文字型檔訓練----整理

Tesseract 3.02中文字型檔訓練----整理

下載chi_sim.traindata字型檔
下載tesseract-ocr-setup-3.02.02.exe             安裝到e:\Tesseract-ocr目錄下

1.Tesseract-OCR的命令列使用

開啟DOS介面,輸入tesseract:

如果出現如上輸出,表示安裝正常。


下載jTessBoxEditor用於修改box檔案
下載地址:http://download.csdn.net/detail/a443475601/5896893 裡面自帶java執行庫,安裝後 然後啟動命令列 java -jar jTessBoxEditor.jar即可開啟

為了方便 tif文面命名格式[lang].[fontname].exp[num].tif
lang是語言 fontname是字型
比如我們要訓練自定義字型檔 chi 字型名:黑體
那麼我們把tif檔案重新命名 chi.黑體.exp0.tif


把多個.tif檔案合併成一個.tif檔案合併成一個.tif檔案


下面開始訓練字型檔:

下面第一條命令與上圖功能一樣,產生.box檔案
1、E:\Tesseract-ocr\tesseract.exe chi.黑體.exp0.tif chi.黑體.exp0 batch.nochop makebox

    執行以上命令也會產生一個box檔案。產生box檔案的過程是必須的,也是最重要的,沒有box檔案以下的內容都無法進行。

需要記住的是生成的.box要和這個.tif檔案同在一個目錄下。

2、文字校正。執行jTessBoxEditor工具,開啟chi.黑體.exp0.tif檔案(必須將上一步生成的.box和.tif樣本檔案放在同一目錄),如上圖所示。可以看出有些字元識別的不正確,可以通過該工具手動對每張圖片中識別錯誤的字元進行校正。校正完成後儲存即可。

2、產生字元特徵檔案 

   tesseract chi.黑體.exp0.tif chi.黑體.exp0 nobatch box.train

     這一步將會產生 chi.黑體.exp0.tr檔案和一個 chi.黑體.exp0.txt檔案,txt檔案貌似沒什麼用,看看而以。

3、計算字符集

   unicharset_extractor chi.黑體.exp0.box

     這一步會產生一個unicharset字符集檔案.

4、定義字型特徵檔案,---Tesseract-OCR3.01以上的版本在訓練之前需要建立一個名稱為font_properties.txt的字型特徵檔案

     手工建立一個檔案font_properties.txt

     內容如:黑體 0 0 0 0 0

注意:這裡   必須與訓練名中的名稱保持一致,填入下面內容 ,這裡全取值為0,表示字型不是粗體、斜體等等。

5、聚集字元特徵

   1) shapeclustering -F font_properties.txt -U unicharset chi.黑體.exp0.tr   注意:如果font_properties不加副檔名.txt,可能會報錯

   2) mftraining -F font_properties.txt -U unicharset -O chi.unicharset chi.黑體.exp0.tr

   使用上一步產生的字符集檔案unicharset,來生成當前新語言的字符集檔案chi.unicharset。同時還會產生圖形原型檔案inttemp和每個字元所對應的字元

   特徵數檔案pffmtable。最重要的就是這個inttemp檔案了,他包含了所有需要產生的字的圖形原型。 

   3)cntraining chi.黑體.exp0.tr

     這一步產生字元形狀正常化特徵檔案normproto。

6、把目錄下的unicharset、inttemp、pffmtable、shapetable、normproto這五個檔案前面都加上chi.

7、執行combine_tessdata chi.

    然後把chi.traineddata放到tessdata目錄

必須確定的是第2、4、5、6行的資料不是-1,那麼一個新的字典就算生成了.

8、用新的字型檔對圖片進行分析

     tesseract test.tif output -l chi    

    內容會寫到output.txt檔案中,這個檔案與測試圖片在同一個目錄下

識別問題:

1、一個字分成2部分識別,如:好,會認為女  子,如何解決???

4.Tesseract-OCR的QA合集

A.ImageMagick是什麼?

ImageMagick是一個用於檢視、編輯點陣圖檔案以及進行影象格式轉換的開放原始碼軟體套裝

我在這裡之所以提到ImageMagick是因為某些圖片格式需要用這個工具來轉換。

B.Leptonica 是什麼?

Leptonica 是一影象處理與影象分析工具,tesseract依賴於它。而且不是所有的格式(如jpg)都能處理,所以我們需要藉助imagemagick做格式轉換。

Here's a summary of compression support and limitations:
    - All formats except JPEG support 1 bpp binary.
    - All formats support 8 bpp grayscale (GIF must have a colormap).
    - All formats except GIF support 24 bpp rgb color.
    - All formats except PNM support 8 bpp colormap.
    - PNG and PNM support 2 and 4 bpp images.
    - PNG supports 2 and 4 bpp colormap, and 16 bpp without colormap.
    - PNG, JPEG, TIFF and GIF support image compression; PNM and BMP do not.
    - WEBP supports 24 bpp rgb color.

C.提高圖片質量?

識別成功率跟圖片質量關係密切,一般拿到後的驗證碼都得經過灰度化,二值化,去噪,利用imgick就可以很方便的做到.

convert -monochrome foo.png bar.png #將圖片二值化

D.我只想識別字符和數字?

結尾僅需要加digits

命令例項:tesseract imagename outputbase digits

E.訓練你的tesseract

不得不說,tesseract英文識別率已經很不錯了(現有的tesseract-data-eng),但是驗證碼識別還是太雞肋了。但是請別忘記,tesseract的智慧識別是需要訓練的.

F.命令執行出現empty page!!錯誤

嚴格來說,這不是一個bug(tesseract 3.0),出現這個錯誤是因為tesseract搞不清影象的字元佈局

訓練時出現的問題

錯誤1:

編譯下面兩句的時候

shapeclustering -F font_properties -U unicharset eng.timesitalic.exp0.tr
mftraining -F font_properties -U unicharset -O eng.unicharset eng.timesitalic.exp0.tr

出現錯誤: No shape table file present: shapetable Reading num.tr …Font id = -1/0, class id = 1/13 on sample 0font_id >= 0 && font_id < font_id_map_.SparseSiz
..\..\classify\trainingsampleset.cpp, line 622

原因:主要出在font_properties.txt這個檔案的配置上。
內容為:黑體 0 0 0 0 0      正確