摘要
本文檔記錄了本人如何使用tesseract_ocr實現(xiàn)字符識別功能。該技術(shù)文檔包括函數(shù)解釋與工程實例,如需轉(zhuǎn)載,請注明引用。
如何提高識別率
- 外部處理
- 根據(jù)官方技術(shù)文檔可知,tesseract本身對輸入圖像會使用一些圖像處理并分割字符,但有時效果不佳可以通過以下方法提高。
- 尺度化
首先,保證圖片大小最好在200X200以上,或者說單個字符至少是30像素X30像素以上(下限是多少我也不知道)。過小識別率會降低。
其次,適當(dāng)拉寬圖像,以O(shè)penCV為例,使用resize(src, dst, Size(0,0), 1.2, 1.0, INTER_LINEAR);輸出圖像的width是輸入圖像的1.2倍,height不變。 -
二值化
雖然不二值化tesseract也能識別,但識別的準(zhǔn)確率不穩(wěn)定,因此強烈建議使用二值化操作,增強字符與背景的對比度。
testing_result1.JPG -
去噪
二值化后圖片可能會留下許多噪點,因此去噪是十分有必要的,否則會同樣會導(dǎo)致識別錯誤。
捕獲.JPG
統(tǒng)計學(xué)、形態(tài)學(xué)去噪都有不錯的效果,具體情況具體分析。
- 旋轉(zhuǎn)校正與去邊緣
tesseract基本不支持旋轉(zhuǎn)變換,因此自行修正旋轉(zhuǎn)。同時邊緣結(jié)構(gòu)同樣會影響識別。
總而言之,輸入tesseract的圖像最好是背景沒有噪點、字符工整的。
- 尺度化
- 根據(jù)官方技術(shù)文檔可知,tesseract本身對輸入圖像會使用一些圖像處理并分割字符,但有時效果不佳可以通過以下方法提高。