python爬蟲反爬之圖片驗(yàn)證功能實(shí)現(xiàn)
發(fā)現(xiàn)寶藏
前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家?!緦毑厝肟凇俊?/p>
一、ddddOcr(針對(duì)圖形驗(yàn)證碼)
1. 工具介紹
相信做自動(dòng)化測(cè)試的同學(xué)一定不可忽視的問題就是驗(yàn)證碼,他幾乎是一個(gè)網(wǎng)站登錄的標(biāo)配,當(dāng)然,我一般是不建議在這上面浪費(fèi)時(shí)間去做識(shí)別的。
舉個(gè)例子,現(xiàn)在你的目的是進(jìn)入自己家的房子,房子為了防止小偷進(jìn)入于是上了一把鎖。我們沒必要花費(fèi)力氣去研究開鎖技術(shù)。去找鎖匠配置一把萬能鑰匙(讓開發(fā)設(shè)置驗(yàn)證碼的萬能碼),或者干脆先去上鎖匠把驗(yàn)證碼去掉(讓開發(fā)暫時(shí)屏蔽驗(yàn)證碼)。嚴(yán)格來說識(shí)別驗(yàn)證碼不是我們自動(dòng)化測(cè)試的重點(diǎn)。除非你是驗(yàn)證碼廠商的員工,破解識(shí)別驗(yàn)證碼是你的工作。
那么,如果有很簡(jiǎn)單的方式去識(shí)別驗(yàn)證碼的話,我們其實(shí)就可以不用麻煩開發(fā)針對(duì)驗(yàn)證碼做屏蔽開關(guān)了。
ddddocr: 帶帶弟弟OCR通用驗(yàn)證碼識(shí)別SDK 就是這樣一款強(qiáng)大驗(yàn)證碼識(shí)別工具。
ddddocr是由sml2h3開發(fā)的專為驗(yàn)證碼廠商進(jìn)行對(duì)自家新版本驗(yàn)證碼難易強(qiáng)度進(jìn)行驗(yàn)證的一個(gè)python庫(kù),其由作者與kerlomz共同合作完成,通過大批量生成隨機(jī)數(shù)據(jù)后進(jìn)行深度網(wǎng)絡(luò)訓(xùn)練,本身并非針對(duì)任何一家驗(yàn)證碼廠商而制作,本庫(kù)使用效果完全靠玄學(xué),可能可以識(shí)別,可能不能識(shí)別。
ddddocr奉行著開箱即用、最簡(jiǎn)依賴的理念,盡量減少用戶的配置和使用成本,希望給每一位測(cè)試者帶來舒適的體驗(yàn)
OCR部分應(yīng)該已經(jīng)有很多人做了測(cè)試,在這里就放一部分網(wǎng)友的測(cè)試圖片。
2. 安裝及環(huán)境支持
python <= 3.9 Windows/Linux/Macos.. 暫時(shí)不支持Macbook M1(X),M1(X)用戶需要自己編譯onnxruntime才可以使用
安裝命令
pip install ddddocr
以上命令將自動(dòng)安裝符合自己電腦環(huán)境的最新ddddocr
3. 識(shí)別示例
1 代碼示例
# 實(shí)例化對(duì)象 import ddddocr ocr = ddddocr.DdddOcr() # 讀取圖片內(nèi)容 f = open('D:\OCR\checkCode.jpg', mode='rb') img = f.read() result = ocr.classification(img) print(result)
運(yùn)行結(jié)果
4. 識(shí)別示例
2 代碼示例
# 實(shí)例化對(duì)象 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(標(biāo)準(zhǔn)OCR識(shí)別)
1. 工具介紹
? Tesseract-OCR(Optical Character Recognition)是一個(gè)開源的光學(xué)字符識(shí)別引擎,由Google開發(fā)并維護(hù)。它用于將圖像中的文字轉(zhuǎn)換為可編輯文本,可以識(shí)別各種語言的文本,并且在適當(dāng)?shù)那闆r下,也可以用于識(shí)別印刷體和手寫體。
以下是一些關(guān)于Tesseract-OCR工具的介紹:
開源性質(zhì): Tesseract-OCR是一個(gè)免費(fèi)的開源工具,可以自由地使用和分發(fā)。這意味著你可以在自己的項(xiàng)目中免費(fèi)使用它,也可以根據(jù)需要進(jìn)行修改和定制。
跨平臺(tái)支持: Tesseract-OCR可在多個(gè)操作系統(tǒng)上運(yùn)行,包括Windows、Linux和macOS等。這使得它成為一個(gè)跨平臺(tái)的解決方案,可以在各種環(huán)境中使用。
多語言支持: Tesseract-OCR支持超過100種語言的文字識(shí)別,包括中文、英文、法文、德文、日文等。這使得它在全球范圍內(nèi)都有廣泛的應(yīng)用。
高準(zhǔn)確性: Tesseract-OCR經(jīng)過多年的開發(fā)和改進(jìn),具有較高的文字識(shí)別準(zhǔn)確性。它能夠識(shí)別多種字體和字型,即使在低分辨率或模糊的圖像中也能表現(xiàn)良好。
簡(jiǎn)單易用: 使用Tesseract-OCR進(jìn)行文字識(shí)別通常是非常簡(jiǎn)單的。它提供了命令行接口和API接口,可以輕松地集成到各種應(yīng)用程序和開發(fā)項(xiàng)目中。
可定制性: 雖然Tesseract-OCR在默認(rèn)配置下已經(jīng)表現(xiàn)出色,但也可以通過配置文件和參數(shù)進(jìn)行定制,以滿足特定需求。你可以調(diào)整字體、語言、圖像處理方法等參數(shù),以獲得更好的識(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.右擊此電腦選擇高級(jí)設(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回車,若顯示版本號(hào)即為安裝成功。
3. 識(shí)別示例1
(自帶英文,無需額為下載語言包)
1.代碼示例
import pytesseract from PIL import Image def demo(): # 打開要識(shí)別的圖片 image = Image.open('D:/OCR/eng.png') # 使用pytesseract調(diào)用image_to_string方法進(jìn)行識(shí)別,傳入要識(shí)別的圖片,lang='chi_sim'是設(shè)置為中文識(shí)別, text = pytesseract.image_to_string(image, lang='eng') # 輸入所識(shí)別的文字 print(text) if __name__ == '__main__': demo()
2.運(yùn)行結(jié)果
4. 識(shí)別示例2
1.在官網(wǎng)下載中文識(shí)別語言包,放到 D:\Program Files (x86)\Tesseract-OCR\tessdata (安裝目錄)下
2.代碼示例
import pytesseract from PIL import Image def demo(): # 打開要識(shí)別的圖片 image = Image.open('D:/OCR/古詩.png') # 使用pytesseract調(diào)用image_to_string方法進(jìn)行識(shí)別,傳入要識(shí)別的圖片,lang='chi_sim'是設(shè)置為中文識(shí)別, text = pytesseract.image_to_string(image, lang='chi_sim') # 輸入所識(shí)別的文字 print(text) if __name__ == '__main__': demo()
運(yùn)行結(jié)果
3. 識(shí)別示例3
import pytesseract import requests from PIL import Image from io import BytesIO def demo(): # 設(shè)置請(qǐng)求頭 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對(duì)象 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方法進(jìn)行識(shí)別,傳入要識(shí)別的圖片,lang='chi_sim'是設(shè)置為中文識(shí)別, text = pytesseract.image_to_string(image, lang='chi_sim') # 輸入所識(shí)別的文字 print(text) if __name__ == '__main__': demo()
到此這篇關(guān)于python爬蟲反爬之圖片驗(yàn)證功能實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python圖片驗(yàn)證內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 非常簡(jiǎn)單的Python識(shí)別圖片驗(yàn)證碼實(shí)現(xiàn)過程
- python爬蟲如何解決圖片驗(yàn)證碼
- python3定位并識(shí)別圖片驗(yàn)證碼實(shí)現(xiàn)自動(dòng)登錄功能
- python圖片驗(yàn)證碼識(shí)別最新模塊muggle_ocr的示例代碼
- Python基于內(nèi)置庫(kù)pytesseract實(shí)現(xiàn)圖片驗(yàn)證碼識(shí)別功能
- Python +Selenium解決圖片驗(yàn)證碼登錄或注冊(cè)問題(推薦)
- python自動(dòng)化實(shí)現(xiàn)登錄獲取圖片驗(yàn)證碼功能
相關(guān)文章
python使用pandas抽樣訓(xùn)練數(shù)據(jù)中某個(gè)類別實(shí)例
今天小編就為大家分享一篇python使用pandas抽樣訓(xùn)練數(shù)據(jù)中某個(gè)類別實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02詳細(xì)解析Python中__init__()方法的高級(jí)應(yīng)用
這篇文章主要介紹了詳細(xì)解析Python中__init__()方法的高級(jí)應(yīng)用,包括在映射和elif序列等地方的更為復(fù)雜的用法,需要的朋友可以參考下2015-05-05使用python生成云詞圖實(shí)現(xiàn)畫紅樓夢(mèng)詞云圖
紅樓夢(mèng)相信大家都看過,今天給大家介紹另一種不用搞得烏漆麻黑的方式來制作紅樓夢(mèng)的詞云圖,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09Python讀取postgresql數(shù)據(jù)庫(kù)詳情
這篇文章主要介紹了Python讀取postgresql數(shù)據(jù)庫(kù)詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09解決tensorflow模型壓縮的問題_踩坑無數(shù),總算搞定
這篇文章主要介紹了解決tensorflow模型壓縮的問題_踩坑無數(shù),總算搞定!希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03