何爲Tesseract?
Tesseract的OCR引擎最早由HP實驗室於1985年開始研發,至1995年時已經成爲OCR業內最準確的三款識別引擎之一。然而,HP不久便決定放棄OCR業務,Tesseract也今後塵封。數年之後,HP意識到,與其將Tesseract束之高閣,不如貢獻給開源軟件業,讓其重煥新生。在2005年,Tesseract由美國內華達州信息技術研究所得到,並委託Google對其進行改進、優化工做。
Tesseract目前已做爲開源項目發佈在Google Project,它與Leptonica圖片處理庫結合,能夠讀取各類格式的圖像並將它們轉化成超過60種語言的文本,咱們還能夠不斷訓練本身的庫,使圖像轉換文本的能力不斷加強。若是團隊深度須要,還能夠以它爲模板,開發出符合自身需求的OCR引擎。
python
Tesseract基本工做原理:
工具
Tesseract安裝教程:
1. tesseract下載地址:https://digi.bib.uni-mannheim.de/tesseract/
2.下載完成後雙擊安裝包,選擇路徑,選擇語言後繼續下一步直到安裝成功字體
3.配置Tesseract的環境變量優化
4.查看安裝結果
在cmd中輸入tesseract –v 有結果以下圖,則說明安裝成功:spa
Tesseract使用教程:
.net
bat調用Tesseract在cmd中進入圖片所在目錄,輸入 tesseract 圖片名稱 結果文檔名稱如: tesseract 0.png result.txt ,識別0.png的結果保存爲result.txt文檔。命令行
python調用Tesseract
1.pip安裝pytesseract cmd輸入指令 pip install pytesseract
調用方法:
text = pytesseract.image_to_string(image)3d
7.cmd運行指令生成字符特徵集(tr)
tesseract num.font.exp0.tif num.font.exp0 nobatch box.train
8.cmd運行指令生成字符集(unicharset)
unicharset_extractor num.font.exp0.box
9. cmd運行指令生成字符特徵(shapetable、inttemp、pffmtable、 normproto)
shapeclustering -F font_properties.txt -U unicharset num.font.exp0.tr
mftraining -F font_properties.txt -U unicharset -O num.unicharset num.font.exp0.tr
cntraining num.font.exp0.tr
10.重命名,結果合併
把目錄下的字符集 unicharset、圖形原型文件inttemp、字符特徵數文件pffmtable、
字符形狀表shapetable、字符形狀正常化特徵文件normproto
這五個文件的文件名前面都加上「num.」執行combine_tessdata num,生成num.traineddata
11.結果導入
把num.traineddata放到tesseract目錄下的tessdata目錄下orm
1.下載工具jTessBoxEditor 並解壓
網址: https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/ blog
2.獲取訓練數據:
3.合併樣本圖像。
運行jTessBoxEditor
點擊Tools--->Merge TIFF。
選擇樣本圖像合併成num.font.exp0.tif文件。
4.打開命令行執行命令生成box文件:tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox 生成的BOX文件爲num.font.exp0.box,BOX文件爲Tessercat識別出的文字和其座標。
Make Box File的命令格式爲:
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox
其中lang爲語言名稱,fontname爲字體名稱,num爲序號,能夠隨便定義。
5.文字校訂。
運行jTessBoxEditor
打開num.font.exp0.tif(必須將上一步生成的.box和.tif樣本文件放在同一目錄) 手動對每張圖片中識別錯誤的字符進行校訂。校訂完成後保存。
6.定義字體特徵文件。Tesseract-OCR3.01以上的版本在訓練以前須要在樣本圖片(tif)所在目錄下建立一個名稱爲font_properties的字體特徵文件。font_properties不含有BOM頭,文件內容格式以下: <fontname> <italic> <bold> <fixed> <serif> <fraktur> fontname爲字體名稱,必須與[lang].[fontname].exp[num].box中的名稱保持一致。<italic> 、<bold> 、<fixed> 、<serif>、 <fraktur>的取值爲1或0,表示字體是否具備這些屬性。這裏用記事本打開font_properties ,輸入如下下內容: num 0 0 0 0 0