1. 程式人生 > >Tesseract-OCR-v5.0中文識別,訓練自定義字型檔,提高圖片的識別效果

Tesseract-OCR-v5.0中文識別,訓練自定義字型檔,提高圖片的識別效果

1,下載安裝Tesseract-OCR 安裝,連結地址https://digi.bib.uni-mannheim.de/tesseract/

2,安裝成功 tesseract -v

注意:安裝後,要新增系統環境變數

3,cmd指定目錄到 cd C:\Work\BlogsTest\TestPic,要識別圖片的資料夾 識別:tesseract test.png result -l chi_sim

識別成功的效果,result.txt檔案會自動生成

要注意:Tesseract-OCR的安裝目錄要包含識別中文的字符集chi_sim.traineddata,可以在GitHub下載https://github.com/tesseract-ocr/tessdata

4,可見第3步的識別效果不是很好,想到通過訓練自定義字型檔,提高圖片的識別效果

(0)下載安裝jTessBoxEditor,https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/

注意要安裝JavaRuntime

(1)開啟jTessBoxEditor,選擇Tools->Merge TIFF,進入訓練樣本所在資料夾,選中要參與訓練的樣本圖片:

(2)點選 “開啟” 後彈出儲存對話方塊,選擇儲存在當前路徑下,檔案命名為 “qq66.test.exp0.tif” ,格式只有一種 “TIFF” 可選。

tif文面命名格式[lang].[fontname].exp[num].tif
lang是語言,fontname是字型,num為自定義數字。

比如我們要訓練自定義字型檔 qq66,字型名test,那麼我們把圖片檔案命名為 qq66.test.exp0.tif

(3)使用tesseract生成.box檔案

tesseract qq66.test.exp0.tif qq66.test.exp0 -l chi_sim --psm 6 batch.nochop makebox

注意:--psm的語法,數字對應不同的 頁面分割模式。

(4)使用jTessBoxEditor矯正.box檔案的錯誤

開啟後矯正後,點選 save

(5)生成font_properties檔案:(該檔案沒有後綴名)

執行命令,執行完之後,會在當前目錄生成font_properties檔案
echo test 0 0 0 0 0 >font_properties

也可以手工新建一個名為font_properties的文字檔案,輸入內容 “test 0 0 0 0 0” 表示字型test的粗體、傾斜等共計5個屬性。這裡的“test”必須與“qq66.test.exp0.box”中的“test”名稱一致。


(6)使用tesseract生成.tr訓練檔案

執行下面命令,執行完之後,會在當前目錄生成qq66.test.exp0.tr檔案。

tesseract qq66.test.exp0.tif qq66.test.exp0 nobatch box.train

(7)生成字符集檔案:

執行下面命令:執行完之後會在當前目錄生成一個名為“unicharset”的檔案。

unicharset_extractor qq66.test.exp0.box

(8)生成shape檔案:

執行下面命令,執行完之後,會生成 shapetable 和 zwp.unicharset 兩個檔案。

shapeclustering -F font_properties -U unicharset -O qq66.unicharset qq66.test.exp0.tr

(8)生成聚字元特徵檔案

執行下面命令,會生成 inttemp、pffmtable、shapetable和zwp.unicharset四個檔案。

mftraining -F font_properties -U unicharset -O qq66.unicharset qq66.test.exp0.tr

(9)生成字元正常化特徵檔案

執行下面命令,會生成 normproto 檔案。

cntraining qq66.test.exp0.tr

(10)檔案重新命名
重新命名inttemp、pffmtable、shapetable和normproto這四個檔案的名字為[lang].xxx。

這裡修改為qq66.inttemp、qq66.pffmtable、qq66.shapetable和qq66.normproto

(11)合併訓練檔案
執行下面命令,會生成qq66.traineddata檔案。

combine_tessdata qq66.

最後檔案目錄

5,用新生成的qq66.traineddata字符集,重新識別身份證

6,可以同時選擇多個不同的樣本生成box檔案

7,在原有訓練資料的基礎上,加入新的字元訓練資訊

經研究找到實用合併方法(紅色部分為示例,實際應為你自己生成的檔名):

在新的訓練資料生成.box 和.tr檔案後,

生成字符集 unicharset_extractor add.font.exp0.box new.font.exp0.box

合併訓練資料(.tr)

mftraining -F font_properties -U unicharset -O added.unicharset add.font.exp0.tr new.font.exp0.tr

聚合所有的tr檔案:

cntraining add.font.exp0.tr new.font.exp0.tr 

8,設定圖片分割模式

Page segmentation modes:

0 = Orientation and script detection (OSD) only.
1 = Automatic page segmentation with OSD.
2 = Automatic page segmentation, but no OSD, or OCR
3 = Fully automatic page segmentation, but no OSD. (Default)
4 = Assume a single column of text of variable sizes.
5 = Assume a single uniform block of vertically aligned text.
6 = Assume a single uniform block of text.
7 = Treat the image as a single text line.
8 = Treat the image as a single word.
9 = Treat the image as a single word in a circle.
10 = Treat the image as a single character.

例如:

tesseract test.png result  -l chi_sim -psm 7 nobatch