OCR(Optical Character Recognition):光學字符識別,是指對圖片文件中的文字進行分析識別,獲取的過程。
Tesseract:開源的OCR識別引擎,初期Tesseract引擎由HP實驗室研發,後來貢獻給了開源軟件業,後經由Google進行改進,消除bug,優化,重新發布。
項目地址:https://github.com/tesseract-ocr
該項目最新版本是3.04,本人試驗用的版本是3.02。
1 安裝並設置環境
運行tesseract-ocr-setup-3.02.02.exe程序安裝tesseract,如圖所示,圖中的jTessBoxEditor相關內容用於其他測試與本文無關。
安裝完成後爲了能在cmd命令行直接使用tesseract.exe,向path環境變量中增加tesseract安裝目錄,同時添加環境變量TESSDATA_PREFIX,其值是訓練數據tessdata所在的目錄,例如圖中爲:F:\Program Files (x86)\Tesseract-OCR,該目錄也可以由參數
--tessdata-dir指明,詳細見第2節參數介紹。
2 參數介紹
在命令行直接輸入tesseract回車後可看到它的幫助信息,如圖所示:
更詳細的參數說明請參考:https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.html,部分內容如下圖:
一般來說,可以使用如下的格式來使用tesseract:
tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]
tesseract 圖片名 輸出文件名 -l 字庫文件 -psm pagesegmode 配置文件
3 實例
如要識別如下圖片,可以直接使用簡單的命令:tesseract test.png result,即可將識別結果輸出到result.txt文件中
識別結果如下:
可以看出識別效果不是特別理想,所以識別前可對識別的圖像進行預處理,典型處理如:增加對比度、二值化等,如對上一幅圖進行預處理後如下圖所示:
生成識別結果時,可以使用hocr參數來讓tesseract生成html格式的結果文件,如:tesseract binary.png result hocr,識別結果如下:
對比可以看出預處理後的識別效果要明顯優於之前的識別效果,生成html格式的識別文件還有另外一個好處,即可以獲得識別字符在原圖片上面的座標信息,用文本編輯器打開上面的rusult.html文件,內容如圖:
從圖中紅色方框內可以看出識別出的字符串user在原圖片中的座標信息(306,884)左上角,(445,926)右下角。此外之前版本還支持識別信心值,但從3.02版本以後該特性被去掉了,相關內容請參考:http://blog.csdn.net/sosoben/article/details/13768895
4 結語
以上只是簡單介紹了tesseract的英文字符識別功能,其實它支持很多語言的識別,另外它還支持樣本訓練等,更深入的應用請查找其他文獻。