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