Tesseract是什麼 OCR即光學字元識別,是指通過電子設備掃描紙上的列印的字元,然後翻譯成電腦文字的過程。也就是說通過輸入圖片,經過識別引擎,去識別圖片上的文字。Tesseract是一種適用於各種操作系統的光學字元識別引擎,最早是hp公司的軟體,2005年開源,2006年後由google一直 ...
Tesseract是什麼
OCR即光學字元識別,是指通過電子設備掃描紙上的列印的字元,然後翻譯成電腦文字的過程。也就是說通過輸入圖片,經過識別引擎,去識別圖片上的文字。Tesseract是一種適用於各種操作系統的光學字元識別引擎,最早是hp公司的軟體,2005年開源,2006年後由google一直贊助Tesseract開發和維護。2006年,Tesseract被認為是當時最準確的開源OCR引擎之一 。
驗證碼識別類型
這裡討論一般的驗證碼識別,即英文、數字、或者英文和數字的混合的驗證碼,不包括滑動和文字點擊這些類型。
Tesseract的安裝
Tesseract的github地址:https://github.com/tesseract-ocr/tesseract
Tesseract的安裝github上有說明,Tesseract現在有3.05的版本,也有4.0beta版,我自己使用之後感覺2者差異不大,替換之後識別率也沒有明顯提升,所以只要使用其中一個就好。Tesseract支持windows和linux,windows下裝完之後有個Tesseract-ocr的目錄,目錄下有個tesseract.exe的程式,可以通過調用這個exe的命令行去進行ocr的識別。
Tesseract的使用
簡單的命令行使用如下:
tesseract imagename outputbase [-l lang] [--oem ocrenginemode] [--psm pagesegmode] [configfiles...]
- 參數說明:
imagename 圖片文件
outputbase 輸出文件,也可以選擇命令行輸出stdout
- 可選參數
-l lang 識別庫,預設是eng,也可以是自己訓練出來的識別庫
-psm pagesegmode 識別模式
pagesegmode 具體含義見下圖
0 = Orientation and script detection (OSD) only. 1 = Automatic page segmentation with OSD. 2 = Automatic page segmentation, but no OSD, or OCR 3 = Fully automatic page segmentation, but no OSD. (Default) 4 = Assume a single column of text of variable sizes. 5 = Assume a single uniform block of vertically aligned text. 6 = Assume a single uniform block of text. 7 = Treat the image as a single text line. 8 = Treat the image as a single word. 9 = Treat the image as a single word in a circle. 10 = Treat the image as a single character.
Tesseract訓練
可以通過jTessBoxEditor去訓練Tesseract,而且訓練樣本越多,識別準確度越好,實際使用中我訓練了500張圖片,對識別率的提升還是有的,但是還是沒能達到自己想要的預期識別率,估計是樣本還不夠多吧。另外對樣本一個個修正也是個繁瑣的事情,尤其是驗證碼,一般都各種變形以防止程式輕易識別,不過總體來說只要樣本夠多,想要達到預期的識別率還是可以的。關於jTessBoxEditor訓練的詳細步驟,有興趣的可以自己去搜索Tesseract相關資料瞭解。