利用tesseract解析簡單數字驗證碼圖片

青衫無名發表於2018-03-14

tesseract 是一個 OCR(Optical Character Recognition,光學字元識別)引擎,能夠識別圖片中字元,利用這個可以用來解析一些簡單的圖片驗證碼。Github 地址:https://github.com/tesseract-ocr/tesseract,Windows 平臺 v3.05.01 版本下載地址:http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-3.05.01.exe

一開始弄這個是因為學校網路要上網每次都要在網頁驗證,就想能不能寫個程式自動驗證免去手動驗證過程。但這需要驗證碼,為了解決這個問題,就上網搜了一下,就看到有用 tesseract 的。有人用 Python 實現了一個工具:https://github.com/madmaze/pytesseract,拿來試了一下,Windows 上使用總是有問題,我就把目光轉向了 tesseract 本身,這是它的使用說明:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

最後就決定自己實現一個簡單的介面

使用方法

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

對引數解釋一下

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

具體思路

本地圖片的,先判斷該檔案是否存在;網路圖片的,下載到本地,預設的儲存路徑是 r”D:img.jpg” (儲存在哪不重要,只是暫存而已,解析完會自動刪除的)

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

接下來是一些非必要引數

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

至於為什麼只是數字,是因為英文的總是不能完全解析出來,修改了 -l 引數也是沒用,使用其自帶的 tessdata 也沒用,中文的話解析出來的內容完全看不懂… (或許是我開啟方式不對?)

效果

測試圖片1

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

測試圖片2

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

測試圖片3

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

溫馨提示:不能保證百分百正確,也不能保證百分百解析得出來。所以專案僅供參考!!!要有保證的話還是找打碼平臺吧

原文釋出時間為:2017-06-08

本文作者:陳鍵冬

本文來自雲棲社群合作伙伴“Python中文社群”,瞭解相關資訊可以關注“Python中文社群”微信公眾號


相關文章