何為Tesseract?
Tesseract的OCR引擎最先由HP實驗室於1985年開始研發,至1995年時已經成為OCR業內最准確的三款識別引擎之一。然而,HP不久便決定放棄OCR業務,Tesseract也從此塵封。數年以后,HP意識到,與其將Tesseract束之高閣,不如貢獻給開源軟件業,讓其重煥新生。在2005年,Tesseract由美國內華達州信息技術研究所獲得,並委托Google對其進行改進、優化工作。
Tesseract目前已作為開源項目發布在Google Project,它與Leptonica圖片處理庫結合,可以讀取各種格式的圖像並將它們轉化成超過60種語言的文本,我們還可以不斷訓練自己的庫,使圖像轉換文本的能力不斷增強。如果團隊深度需要,還可以以它為模板,開發出符合自身需求的OCR引擎。
Tesseract基本工作原理:

Tesseract安裝教程:
1. tesseract下載地址:https://digi.bib.uni-mannheim.de/tesseract/
2.下載完成后雙擊安裝包,選擇路徑,選擇語言后繼續下一步直到安裝成功
3.配置Tesseract的環境變量
4.查看安裝結果
在cmd中輸入tesseract –v 有結果如下圖,則說明安裝成功:

Tesseract使用教程:
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)


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目錄下
1.下載工具jTessBoxEditor 並解壓
網址: https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/ 
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
