驗證碼識別 Tesseract的簡單使用和總結


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相關資料了解。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM