例如說 我只想要辨識數字的話 那用tesseract-ocr 提供的eng.traineddata來進行辨識的話
正確率並不高 此時就可以用訓練功能來訓練出具有高正確度辨識數字的lang.traineddata
方法請參考下面這篇轉錄文章
最近在研究車牌辨識
找上了歷史相當久遠的Tesseract
Tesseract屬於開放原始碼,並在Google code中維護。
Tesseract的討論相當多,但是對於訓練(traning)的著墨是少之又少
幾乎千篇一律是Tesseract 2.0的翻譯文(直接從官網翻譯出來的文章)
所以本篇應該是全世界第一篇繁體中文Tesseract 3.0 training教學
詳細內容還是得參考官方網站:Traning Tesseract 3.0
以下是我整理的訓練步驟:
一. 先到Tesseract下載頁面下載兩個檔案:
tesseract-ocr-setup-3.00.exe
tesseract-3.00.1.exe.zip
二. 下載完後安裝 tesseract-ocr-setup-3.00.exe
然後再將tesseract-3.00.1.exe.zip解壓縮出來的執行檔tesseract-3.00.1.exe
覆蓋在剛剛的安裝目錄(Tesseract-OCR)裡。
三. 將所收集到的某字體的字母二值化後做成一張 .tif 的圖檔。
(小畫家即可製作)
如下圖所示:
eng.segoe.exp1.tif
將此圖檔(eng.segoe.exp1.tif)放在安裝目錄(Tesseract-OCR)下。
四. 以系統管理員身分執行命令提示字元
到剛剛的安裝目錄底下(C:\Program Files (x86)\Tesseract-OCR),
執行下面的command line:
tesseract eng.timesitalic.exp0.tif eng.timesitalic.exp0 batch.nochop makebox
紅色部分是需要替換的文字,例子如下:
tesseract eng.segoe.exp1.tif eng.segoe.exp1 batch.nochop makebox
此時會產生一個.box的檔案(eng.segoe.exp1.box)。
五. 利用記事本打開.box檔(eng.segoe.exp1.box),
去修正裡面有錯的部分,也可利用一些軟體來修正。(詳情請參考Traning Tesseract 3.0)
六. 接著執行:
tesseract lang.timesitalic.exp0.tif lang.timesitalic.exp0 nobatch box.train
紅色一樣是需要替換的部分,例子如下:
tesseract eng.segoe.exp1.tif eng.segoe.exp1 nobatch box.train
此時會產生三個檔案:
.tr檔(eng.segoe.exp1.tr) .txt檔(eng.segoe.exp1.txt) .log檔(tesseract.log)
可以看一下log檔是否有錯誤發生。
七. 接著執行:
unicharset_extractor lang.timesitalic.exp0.box
紅色一樣是需要替換的部分,例子如下:
unicharset_extractor eng.segoe.exp1.box
此時會跑出一個檔案:unicharset。
八. 接著在安裝目錄(Tesseract-OCR)下新增一個純文字檔,
內容打上:
本篇的例子如下:segoe 0 0 0 0 0
並另存新檔,存檔類型改成所有檔案,檔案名稱為:font_properties。
這是用來做此字型的訓練內容(也就是.tif圖檔)的屬性設定,
意思就是:某字體 是否斜體 是否粗體 是否固定 是否是櫬線字體 是否是fraktur字體。
(屬性就是用0和1去控制。)
九. 接著執行:
mftraining -F font_properties -U unicharset lang.timesitalic.exp0.tr
(font_properties就是剛剛新增出來的純文字)
紅色一樣是需要替換的部分,例子如下:
mftraining -F font_properties -U unicharset eng.segoe.exp1.tr
此時會跑出四個檔案:inttemp, mfunicharset, Microfeat, pffmtable。
十. 接著執行:
mftraining -F font_properties -U unicharset -O lang.unicharset lang.timesitalic.exp0.tr
紅色一樣是需要替換的部分,例子如下:
mftraining -F font_properties -U unicharset -O eng.unicharset eng.segoe.exp1.tr
此時會多出一個檔案:.unicharset(eng.unicharset)。
十一. 接著執行:
cntraining lang.timesitalic.exp0.tr
紅色一樣是需要替換的部分,例子如下:
cntraining eng.segoe.exp1.tr
此時會多出一個檔案:normproto。
十二. (最容易忽略的步驟)
接著把剛剛產生的五個檔案:
Microfeat, normproto, pffmtable, mfunicharset, inttemp
重新命名,在前面加上:lang. ,替換例子如下:
eng.Microfeat, eng.normproto, eng.pffmtable, eng.mfunicharset, eng.inttemp
十三. 接著執行:
combine_tessdata lang.
紅色一樣是需要替換的部分,例子如下:
combine_tessdata eng.
畫面會出現類似的文字:
Combining tessdata files
TessdataManager combined tesseract data files.
Offset for type 0 is -1
Offset for type 1 is 84
Offset for type 2 is -1
Offset for type 3 is 1453
Offset for type 4 is 698348
Offset for type 5 is 698912
Offset for type 6 is -1
Offset for type 7 is -1
Offset for type 8 is -1
Offset for type 9 is -1
依照上述的步驟執行的話,至少這四行紅色部分不能為-1,否則就是失敗!
此時會跑出最後一個檔案:.traineddata(eng.traineddata)
也就是最後的訓練文檔。
十四. 最後進行測試前,
需要先把產生出來的.traineddata(eng.traineddata)檔,
複製到執行目錄下的tessdata資料夾(記得先備份原本在裡面的eng.traineddata),
然後執行:
tesseract image.tif output -l lang
紅色一樣是需要替換的部分,我們拿之前的訓練圖檔來測試,例子如下:
tesseract eng.segoe.exp1.tif output -l eng
會產生一個output.txt
裡面就是Tesseract OCR 3.0透過你的訓練文檔來辨識出來的結果。
正確率並不高 此時就可以用訓練功能來訓練出具有高正確度辨識數字的lang.traineddata
方法請參考下面這篇轉錄文章
最近在研究車牌辨識
找上了歷史相當久遠的Tesseract
Tesseract屬於開放原始碼,並在Google code中維護。
Tesseract的討論相當多,但是對於訓練(traning)的著墨是少之又少
幾乎千篇一律是Tesseract 2.0的翻譯文(直接從官網翻譯出來的文章)
所以本篇應該是
詳細內容還是得參考官方網站:Traning Tesseract 3.0
以下是我整理的訓練步驟:
一. 先到Tesseract下載頁面下載兩個檔案:
tesseract-ocr-setup-3.00.exe
tesseract-3.00.1.exe.zip
二. 下載完後安裝 tesseract-ocr-setup-3.00.exe
然後再將tesseract-3.00.1.exe.zip解壓縮出來的執行檔tesseract-3.00.1.exe
覆蓋在剛剛的安裝目錄(Tesseract-OCR)裡。
三. 將所收集到的某字體的字母二值化後做成一張 .tif 的圖檔。
(小畫家即可製作)
如下圖所示:
eng.segoe.exp1.tif
將此圖檔(eng.segoe.exp1.tif)放在安裝目錄(Tesseract-OCR)下。
四. 以系統管理員身分執行命令提示字元
到剛剛的安裝目錄底下(C:\Program Files (x86)\Tesseract-OCR),
執行下面的command line:
tesseract eng.timesitalic.exp0.tif eng.timesitalic.exp0 batch.nochop makebox
紅色部分是需要替換的文字,例子如下:
tesseract eng.segoe.exp1.tif eng.segoe.exp1 batch.nochop makebox
此時會產生一個.box的檔案(eng.segoe.exp1.box)。
五. 利用記事本打開.box檔(eng.segoe.exp1.box),
去修正裡面有錯的部分,也可利用一些軟體來修正。(詳情請參考Traning Tesseract 3.0)
六. 接著執行:
tesseract lang.timesitalic.exp0.tif lang.timesitalic.exp0 nobatch box.train
紅色一樣是需要替換的部分,例子如下:
tesseract eng.segoe.exp1.tif eng.segoe.exp1 nobatch box.train
此時會產生三個檔案:
.tr檔(eng.segoe.exp1.tr) .txt檔(eng.segoe.exp1.txt) .log檔(tesseract.log)
可以看一下log檔是否有錯誤發生。
七. 接著執行:
unicharset_extractor lang.timesitalic.exp0.box
紅色一樣是需要替換的部分,例子如下:
unicharset_extractor eng.segoe.exp1.box
此時會跑出一個檔案:unicharset。
八. 接著在安裝目錄(Tesseract-OCR)下新增一個純文字檔,
內容打上:
本篇的例子如下:segoe 0 0 0 0 0
並另存新檔,存檔類型改成所有檔案,檔案名稱為:font_properties。
這是用來做此字型的訓練內容(也就是.tif圖檔)的屬性設定,
意思就是:某字體 是否斜體 是否粗體 是否固定 是否是櫬線字體 是否是fraktur字體。
(屬性就是用0和1去控制。)
九. 接著執行:
mftraining -F font_properties -U unicharset lang.timesitalic.exp0.tr
(font_properties就是剛剛新增出來的純文字)
紅色一樣是需要替換的部分,例子如下:
mftraining -F font_properties -U unicharset eng.segoe.exp1.tr
此時會跑出四個檔案:inttemp, mfunicharset, Microfeat, pffmtable。
十. 接著執行:
mftraining -F font_properties -U unicharset -O lang.unicharset lang.timesitalic.exp0.tr
紅色一樣是需要替換的部分,例子如下:
mftraining -F font_properties -U unicharset -O eng.unicharset eng.segoe.exp1.tr
此時會多出一個檔案:.unicharset(eng.unicharset)。
十一. 接著執行:
cntraining lang.timesitalic.exp0.tr
紅色一樣是需要替換的部分,例子如下:
cntraining eng.segoe.exp1.tr
此時會多出一個檔案:normproto。
十二. (最容易忽略的步驟)
接著把剛剛產生的五個檔案:
Microfeat, normproto, pffmtable, mfunicharset, inttemp
重新命名,在前面加上:lang. ,替換例子如下:
eng.Microfeat, eng.normproto, eng.pffmtable, eng.mfunicharset, eng.inttemp
十三. 接著執行:
combine_tessdata lang.
紅色一樣是需要替換的部分,例子如下:
combine_tessdata eng.
畫面會出現類似的文字:
Combining tessdata files
TessdataManager combined tesseract data files.
Offset for type 0 is -1
Offset for type 1 is 84
Offset for type 2 is -1
Offset for type 3 is 1453
Offset for type 4 is 698348
Offset for type 5 is 698912
Offset for type 6 is -1
Offset for type 7 is -1
Offset for type 8 is -1
Offset for type 9 is -1
依照上述的步驟執行的話,至少這四行紅色部分不能為-1,否則就是失敗!
此時會跑出最後一個檔案:.traineddata(eng.traineddata)
也就是最後的訓練文檔。
十四. 最後進行測試前,
需要先把產生出來的.traineddata(eng.traineddata)檔,
複製到執行目錄下的tessdata資料夾(記得先備份原本在裡面的eng.traineddata),
然後執行:
tesseract image.tif output -l lang
紅色一樣是需要替換的部分,我們拿之前的訓練圖檔來測試,例子如下:
tesseract eng.segoe.exp1.tif output -l eng
會產生一個output.txt
裡面就是Tesseract OCR 3.0透過你的訓練文檔來辨識出來的結果。
沒有留言:
張貼留言