Tesseract的歷史
Tesseract是一個開源的OCR引擎,惠普公司的布裏斯托爾實驗室在1984-1994年開發完成。起初做爲惠普的平板掃描儀的文字識別引擎。Tesseract在1995年UNLV OCR字符識別準確性測試中拔得頭籌,受到普遍關注。後來HP放棄了OCR市場。在1994年之後,Tesseract的開發就中止了。架構
在2005年,HP將Tesseract貢獻給開源社區。美國內華達州信息技術研究所得到該源碼,同時,Google開始對Tesseract進行功能擴展及優化。目前,Tesseract做爲開源項目發佈在Google Project上,重獲新生。Tesseract的最新版本是3.02,它支持60種以上的語言,提供一個引擎和一個命令行工具,官方下載地址:谷震平的傳送門。 函數
Tesseract架構解析
Tesseract引擎功能強大,歸納地能夠分爲兩部分:工具
圖片佈局分析
字符分割和識別
圖片佈局分析,是字符識別的準備工做。工做內容:經過一種混合的基於製表位檢測的頁面佈局分析方法,將圖像的表格、文本、圖片等內容進行區分。佈局
字符分割和識別是整個Tesseract的設計目標,工做內容最爲複雜。首先是字符切割,Tesseract採用兩步走戰略:測試
利用字符間的間隔進行粗略的切分,獲得大部分的字符,同時也有粘連字符或者錯誤切分的字符。這裏會進行第一次字符識別,經過字符區域類型斷定,根據斷定結果對比字符庫識別字符。
根據識別出來的字符,進行粘連字符的分割,同時把錯誤分割的字符合並,完成字符的精細切分。
固然,還有另外一種說法—-細緻地能夠分爲四個部分:優化
圖 Tesseract主要四個部分(僅表明谷震平我的觀點,請勿抄襲) spa
舉個詳細的例子:
PS:此例也是Ray Smith的文章(Adapting the Tesseract Open Source OCR Engine for Multilingual OCR)中給出的,具備表明性。.net
不想貼文字,直接上圖:命令行
Tesseract的架構並非我這三言兩語能講清楚地,歡迎留言補充糾正!謝謝合做! 設計
Tesseract實現原理
原理這塊至關複雜,這篇blog只談TessBaseAPI相關的東西。後續系列再撰文補充。
TessBaseAPI是Tesseract引擎的一個核心類,關於這個類的源代碼請戳這裏:谷震平的傳送門。咱們來理解下這個類函數的運做機制,藉此聯想下Tesseract引擎的實現原理。機制以下: