python爬蟲反爬之圖片驗證功能實現(xiàn)
發(fā)現(xiàn)寶藏
前些天發(fā)現(xiàn)了一個巨牛的人工智能學習網(wǎng)站,通俗易懂,風趣幽默,忍不住分享一下給大家?!緦毑厝肟凇?。
一、ddddOcr(針對圖形驗證碼)
1. 工具介紹
相信做自動化測試的同學一定不可忽視的問題就是驗證碼,他幾乎是一個網(wǎng)站登錄的標配,當然,我一般是不建議在這上面浪費時間去做識別的。
舉個例子,現(xiàn)在你的目的是進入自己家的房子,房子為了防止小偷進入于是上了一把鎖。我們沒必要花費力氣去研究開鎖技術(shù)。去找鎖匠配置一把萬能鑰匙(讓開發(fā)設(shè)置驗證碼的萬能碼),或者干脆先去上鎖匠把驗證碼去掉(讓開發(fā)暫時屏蔽驗證碼)。嚴格來說識別驗證碼不是我們自動化測試的重點。除非你是驗證碼廠商的員工,破解識別驗證碼是你的工作。
那么,如果有很簡單的方式去識別驗證碼的話,我們其實就可以不用麻煩開發(fā)針對驗證碼做屏蔽開關(guān)了。
ddddocr: 帶帶弟弟OCR通用驗證碼識別SDK 就是這樣一款強大驗證碼識別工具。
ddddocr是由sml2h3開發(fā)的專為驗證碼廠商進行對自家新版本驗證碼難易強度進行驗證的一個python庫,其由作者與kerlomz共同合作完成,通過大批量生成隨機數(shù)據(jù)后進行深度網(wǎng)絡訓練,本身并非針對任何一家驗證碼廠商而制作,本庫使用效果完全靠玄學,可能可以識別,可能不能識別。
ddddocr奉行著開箱即用、最簡依賴的理念,盡量減少用戶的配置和使用成本,希望給每一位測試者帶來舒適的體驗
OCR部分應該已經(jīng)有很多人做了測試,在這里就放一部分網(wǎng)友的測試圖片。
2. 安裝及環(huán)境支持
python <= 3.9 Windows/Linux/Macos.. 暫時不支持Macbook M1(X),M1(X)用戶需要自己編譯onnxruntime才可以使用
安裝命令
pip install ddddocr
以上命令將自動安裝符合自己電腦環(huán)境的最新ddddocr
3. 識別示例
1 代碼示例
# 實例化對象 import ddddocr ocr = ddddocr.DdddOcr() # 讀取圖片內(nèi)容 f = open('D:\OCR\checkCode.jpg', mode='rb') img = f.read() result = ocr.classification(img) print(result)
運行結(jié)果
4. 識別示例
2 代碼示例
# 實例化對象 import ddddocr import requests ocr = ddddocr.DdddOcr() # 讀取圖片內(nèi)容 response = requests.get('http://127.0.0.1:3004/api/checkCode?type=0&time=1709971779303') result = ocr.classification(response.content) print(result)
二、Tesseract(標準OCR識別)
1. 工具介紹
? Tesseract-OCR(Optical Character Recognition)是一個開源的光學字符識別引擎,由Google開發(fā)并維護。它用于將圖像中的文字轉(zhuǎn)換為可編輯文本,可以識別各種語言的文本,并且在適當?shù)那闆r下,也可以用于識別印刷體和手寫體。
以下是一些關(guān)于Tesseract-OCR工具的介紹:
開源性質(zhì): Tesseract-OCR是一個免費的開源工具,可以自由地使用和分發(fā)。這意味著你可以在自己的項目中免費使用它,也可以根據(jù)需要進行修改和定制。
跨平臺支持: Tesseract-OCR可在多個操作系統(tǒng)上運行,包括Windows、Linux和macOS等。這使得它成為一個跨平臺的解決方案,可以在各種環(huán)境中使用。
多語言支持: Tesseract-OCR支持超過100種語言的文字識別,包括中文、英文、法文、德文、日文等。這使得它在全球范圍內(nèi)都有廣泛的應用。
高準確性: Tesseract-OCR經(jīng)過多年的開發(fā)和改進,具有較高的文字識別準確性。它能夠識別多種字體和字型,即使在低分辨率或模糊的圖像中也能表現(xiàn)良好。
簡單易用: 使用Tesseract-OCR進行文字識別通常是非常簡單的。它提供了命令行接口和API接口,可以輕松地集成到各種應用程序和開發(fā)項目中。
可定制性: 雖然Tesseract-OCR在默認配置下已經(jīng)表現(xiàn)出色,但也可以通過配置文件和參數(shù)進行定制,以滿足特定需求。你可以調(diào)整字體、語言、圖像處理方法等參數(shù),以獲得更好的識別結(jié)果。
GitHub 地址: https://gitcode.com/tesseract-ocr/tesseract?utm_source=csdn_github_accelerator&isLogin=1
安裝包官方下載地址:https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe
語言包下載地址:https://github.com/tesseract-ocr/tessdata
2. 配置系統(tǒng)環(huán)境
1.右擊此電腦選擇高級設(shè)置,在系統(tǒng)變量的path屬性中添加安裝路徑
2.添加 tessdata 系統(tǒng)變量
如下圖新建系統(tǒng)變量 : TESSDATA_PREFIX
變量值為 tessdata 文件夾的路徑(在Tesseract-OCR的安裝目錄下):
3.cmd查看是否安裝成功
tesseract --version
4.查看已經(jīng)安裝的語言
在cmd中輸入tesseract --list-langs回車,若顯示版本號即為安裝成功。
3. 識別示例1
(自帶英文,無需額為下載語言包)
1.代碼示例
import pytesseract from PIL import Image def demo(): # 打開要識別的圖片 image = Image.open('D:/OCR/eng.png') # 使用pytesseract調(diào)用image_to_string方法進行識別,傳入要識別的圖片,lang='chi_sim'是設(shè)置為中文識別, text = pytesseract.image_to_string(image, lang='eng') # 輸入所識別的文字 print(text) if __name__ == '__main__': demo()
2.運行結(jié)果
4. 識別示例2
1.在官網(wǎng)下載中文識別語言包,放到 D:\Program Files (x86)\Tesseract-OCR\tessdata (安裝目錄)下
2.代碼示例
import pytesseract from PIL import Image def demo(): # 打開要識別的圖片 image = Image.open('D:/OCR/古詩.png') # 使用pytesseract調(diào)用image_to_string方法進行識別,傳入要識別的圖片,lang='chi_sim'是設(shè)置為中文識別, text = pytesseract.image_to_string(image, lang='chi_sim') # 輸入所識別的文字 print(text) if __name__ == '__main__': demo()
運行結(jié)果
3. 識別示例3
import pytesseract import requests from PIL import Image from io import BytesIO def demo(): # 設(shè)置請求頭 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/58.0.3029.110 Safari/537.3'} # 獲取圖片并轉(zhuǎn)換為PIL Image對象 response = requests.get( 'https://img-blog.csdnimg.cn/591e6f372b8c419fb3a00093a1f5ad92.png?x-oss-process=image/watermark,' 'type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Y2K5aOV5pil5rC0,size_20,color_FFFFFF,t_70,g_se,' 'x_16#pic_center', headers=headers) image = Image.open(BytesIO(response.content)) # 使用pytesseract調(diào)用image_to_string方法進行識別,傳入要識別的圖片,lang='chi_sim'是設(shè)置為中文識別, text = pytesseract.image_to_string(image, lang='chi_sim') # 輸入所識別的文字 print(text) if __name__ == '__main__': demo()
到此這篇關(guān)于python爬蟲反爬之圖片驗證功能實現(xiàn)的文章就介紹到這了,更多相關(guān)python圖片驗證內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python使用pandas抽樣訓練數(shù)據(jù)中某個類別實例
今天小編就為大家分享一篇python使用pandas抽樣訓練數(shù)據(jù)中某個類別實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02Python讀取postgresql數(shù)據(jù)庫詳情
這篇文章主要介紹了Python讀取postgresql數(shù)據(jù)庫詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09解決tensorflow模型壓縮的問題_踩坑無數(shù),總算搞定
這篇文章主要介紹了解決tensorflow模型壓縮的問題_踩坑無數(shù),總算搞定!希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03