Tesseract OCR的簡單使用與訓練

2021-08-11 12:31:40 字數 2954 閱讀 4632

原文:

tesseract,一款由hp實驗室開發由google維護的開源ocr(optical character recognition , 光學字元識別)引擎,與microsoft office document imaging(modi)相比,我們可以不斷的訓練的庫,使影象轉換文字的能力不斷增強;如果團隊深度需要,還可以以它為模板,開發出符合自身需求的ocr引擎。

原始碼位址為:

接下來,我們將在windows環境下安裝tesseract並實現簡單的轉換和訓練:

1、tesseract實現

大體流程:tesseract安裝 -> 開啟命令列 -> 生成目標檔案

tesseract安裝

開啟命令列

開啟命令列,輸入tesseract,回車;以下便是tesseract的大體面貌:

生成目標檔案

先準備一張檔案,如test.png

將命令列切換至目標影象檔案目錄,比如我們轉換檔案為test.png(檔案允許多種格式),位於c:\users\lian\desktop\test;然後在命令列中輸入

tesseract test.png output_1 –l eng

【語法】: tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile…]

imagename為目標檔名,需加格式字尾;outputbase是轉換結果檔名;lang是語言名稱(在tesseract-ocr中tessdata資料夾可看到以eng開頭的語言檔案eng.traineddata),如不標-l eng則預設為eng。

開啟檔案output_1.txt,發現tesseract成功的將影象轉換成152408。

可喜可賀,說明老牌名將tesseract還是很強的!但是還是有點不夠準確,那麼我們有沒有什麼辦法能提高tesseract識別字元準確率呢?接下來,我們將使用配套訓練工具jtessboxeditor來訓練樣本,來提高我們的準確率!

2、tesseract訓練:

大體流程為:安裝jtessboxeditor -> 獲取樣本檔案 -> merge樣本檔案 –> 生成box檔案 -> 定義字元配置檔案 -> 字元矯正 -> 執行批處理檔案 -> 將生成的traineddata放入tessdata中

安裝jtessboxeditor

獲取樣本檔案

merge樣本檔案

開啟jtessboxeditor,tools->merge tiff,將樣本檔案全部選上,並將合併檔案儲存為num.font.exp0.tif

生成box檔案

開啟命令列並切換至num.font.exp0.tif所在目錄,輸入,生成檔名為num.font.exp0.box

tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox

【語法】:tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox

lang為語言名稱,fontname為字型名稱,num為序號;在tesseract中,一定要注意格式。

定義字元配置檔案

在目標資料夾內生成乙個名為font_properties的文字檔案,內容為

font 0 0 0 0 0

【語法】:

fontname為字型名稱,italic為斜體,bold為黑體字,fixed為預設字型,serif為襯線字型,fraktur德文黑字型,1和0代表有和無,精細區分時可使用。

字元矯正

開啟jtessboxeditor,box editor -> open,開啟num.font.exp0.tif;矯正上的字元,記得有好多頁噢!

修改後記得儲存。

執行批處理檔案

在目標目錄下生成乙個批處理檔案

複製**

rem 執行改批處理前先要目錄下建立font_properties檔案

echo run tesseract for training..

tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train

echo compute the character set..

unicharset_extractor.exe num.font.exp0.box

mftraining -f font_properties -u unicharset -o num.unicharset num.font.exp0.tr

echo clustering..

cntraining.exe num.font.exp0.tr

echo rename files..

rename normproto num.normproto

rename inttemp num.inttemp

rename pffmtable num.pffmtable

rename shapetable num.shapetable

echo create tessdata..

combine_tessdata.exe num.

echo. & pause

複製**

儲存後執行即可,執行結果如圖:

最終資料夾內會有以下檔案,如圖:

將生成的traineddata放入tessdata中

最後將num.trainddata複製到tesseract-ocr中tessdata資料夾即可。

3、最後的測試

按照之前步驟,使用命令列輸入

tesseract test.png output_2 -l num

我們可以看到新生成的檔案output_2的內容為762408,內容完全正確。細心的人會發現,最後一句指令,我們使用了指令[-l num]而不是[-l eng]。這說明,最後一次轉換我們使用的是新生成的num語言的匹配庫而不是預設的eng語言匹配庫。

Tesseract OCR引擎 入門

ocr optical character recognition 光學字元識別,是指對檔案中的文字進行分析識別,獲取的過程。tesseract 開源的ocr識別引擎,初期tesseract引擎由hp實驗室研發,後來貢獻給了開源軟體業,後經由google進行改進,消除bug,優化,重新發布。當前版本...

Tesseract OCR引擎 入門

ocr optical character recognition 光學字元識別,是指對檔案中的文字進行分析識別,獲取的過程。tesseract 開源的ocr識別引擎,初期tesseract引擎由hp實驗室研發,後來貢獻給了開源軟體業,後經由google進行改進,消除bug,優化,重新發布。當前版本...

Tesseract OCR引擎 入門

ocr optical character recognition 光學字元識別,是指對檔案中的文字進行分析識別,獲取的過程。tesseract 開源的ocr識別引擎,初期tesseract引擎由hp實驗室研發,後來貢獻給了開源軟體業,後經由google進行改進,消除bug,優化,重新發布。當前版本...