眾所周知,驗證碼在大部分的實際運用中是繞不開的問題,包括驗證,爬蟲,測試等等,然后解決驗證碼的方法也有不少,但大多數都會運用OCR。(這里說的驗證碼,是字符類型的驗證碼)
目前要解決驗證碼,有以下幾種方法:
1、用OCR工具,比如tesseract-ocr;
2、利用各類語言編寫的識別庫;
3、想方法繞過驗證碼,這種測試中運用的多;
前些天看見騰訊和百度都在已經搞自己的 AI LAB(實際上他們很早就開始了,并且對開發者開放了不少接口,提供使用),AI LAB包含語音識別、文字識別、圖像識別,人臉識別、內容審核、數據法分析等等,然后也看到文字識別可以用來識別(字符)驗證碼,就想著能不能用文字識別的接口來識別驗證碼,也稱“在線OCR”。
說著就動手實現了,剛好公司的系統后臺在登錄的時候有個驗證碼,于是就利用selenium框架寫了一個自動登錄系統后臺的python腳本,騰訊和百度的AI方法都可以實現了。
首先是利用騰訊 AI 的文字識別方法(騰訊 AI:https://ai.qq.com/),選擇通用識別(https://ai.qq.com/product/ocr.shtml),查看技術文檔(https://ai.qq.com/doc/ocrgeneralocr.shtml),下載SDK(https://ai.qq.com/doc/sdk.shtml)(SDK只支持Python2,需要支持Python3的下載文章后面鏈接的代碼。),目前只支持PHP和Python。這里注意下,在使用接口之前,需要注冊成為開發者,創建應用獲得AppID、AppKey,后面會有用到。
實現方法和思路是截取當前的驗證碼,然后將截取下來的驗證碼傳給OCR接口識別,待返回識別結果后,就將結果保存,顯示在當前窗口。以下是實現方法和具體步驟:
1)、先訪問后臺網站,截取驗證碼;
驗證碼需要截取保存,不要點擊,也不要刷新,不然每次請求登錄的驗證碼都會變化。
2)、截取驗證碼之后,傳送給OCR接口;
3)、在輸入框中輸入驗證碼;
4)、這里需要用到的SDK,在后面的代碼鏈接下載查看。
利用騰訊 AI 的文字識別方法就是這樣了,之后就是用百度 AI?的文字識別方法了。
利用百度 AI 的文字識別方法(百度 AI:https://ai.baidu.com/),選擇通用文字識別(https://ai.baidu.com/tech/ocr/general),查看技術文檔(https://ai.baidu.com/docs#/OCR-API/top),下載SDK(https://ai.baidu.com/sdk#ocr),支持的語言要比騰訊多一些,這里選擇用Python實現。使用之前一樣要申請成為開發者,創建應用獲得Access Token(APP_ID,API_KEY,SECRET_KEY)。
實現方法和前面利用騰訊?AI 一樣,截取和保存都是一樣的,不一樣的就是OCR接口傳參和方法不一樣,區別比較大。
OCR驗證碼接口識別方法:
以上就是利用騰訊和百度 AI?的文字識別在線OCR識別驗證碼的方法了,實現過程和方法不復雜,比本地安裝一些OCR軟件簡單多了,而且識別率和準確率也比本地化的OCR要高不少。
騰訊和百度的?AI?接口目前都是免費使用的,不過在使用次數上,兩者有區別,但還是能夠完全保證日常使用的,下面的鏈接的是實現的代碼,IP地址和開發者賬號已做了模糊化處理。
(PS.注意騰訊 Ai 提供的SDK只支持Python2,鏈接下的代碼已修改為Python3實現。百度的SDK支持Python3,不需要修改。)
以上內容屬于原創,轉載需授權,有問題可留言。