前言
驗(yàn)證碼的種類有很多,它是常用的一種反爬手段,包括:圖片驗(yàn)證碼,滑塊驗(yàn)證碼,等一些常見的驗(yàn)證碼場景。識別驗(yàn)證碼的python 庫有很多,用起來也并不簡單,這里推薦一個簡單實(shí)用的識別驗(yàn)證碼的庫 ddddocr (帶帶弟弟ocr)庫.
環(huán)境準(zhǔn)備
python 版本要求小于等于python3.9 版本 pip 安裝
pip install ddddocr
下載的安裝包比較大,一般用國內(nèi)的下載源可以加快下載速度
pip install ddddocr -i https://pypi.douban.com/simple
github地址https://github.com/sml2h3/ddddocr
??如果你想學(xué)習(xí)接口自動化測試,我這邊給你推薦一套視頻,這個視頻可以說是B站播放全網(wǎng)第一的接口自動化測試教程,同時在線人數(shù)到達(dá)1000人,并且還有筆記可以領(lǐng)取及各路大神技術(shù)交流:798478386????
【已更新】B站講的最詳細(xì)的Python接口自動化測試實(shí)戰(zhàn)教程全集(實(shí)戰(zhàn)最新版)_嗶哩嗶哩_bilibili【已更新】B站講的最詳細(xì)的Python接口自動化測試實(shí)戰(zhàn)教程全集(實(shí)戰(zhàn)最新版)共計200條視頻,包括:1.【接口自動化】目前軟件測試的市場行情以及測試人員能力標(biāo)準(zhǔn)。、2.【接口自動化】全面熟練Requests庫以及底層方法調(diào)用邏輯、3.【接口自動化】接口自動化實(shí)戰(zhàn)及正則和JsonPath提取器的應(yīng)用等,UP主更多精彩視頻,請關(guān)注UP賬號。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a
快速開始
先隨便找個純英文的驗(yàn)證碼,保持為a1.png
?代碼示例
import ddddocr # 導(dǎo)入 ddddocr
ocr = ddddocr.DdddOcr() # 實(shí)例化
with open('a1.png', 'rb') as f: # 打開圖片
img_bytes = f.read() # 讀取圖片
res = ocr.classification(img_bytes) # 識別
print(res)
運(yùn)行結(jié)果
已經(jīng)能識別到 xnen ,但是會出現(xiàn)"歡迎使用ddddocr,本項(xiàng)目專注帶動行業(yè)內(nèi)卷..."提示語, 可以加一個參數(shù)show_ad=False
import ddddocr # 導(dǎo)入 ddddocr
ocr = ddddocr.DdddOcr(show_ad=False) # 實(shí)例化
with open('a1.png', 'rb') as f: # 打開圖片
img_bytes = f.read() # 讀取圖片
res = ocr.classification(img_bytes) # 識別
print(res)
圖片驗(yàn)證碼
識別一下三種驗(yàn)證碼
?
?
代碼示例
import ddddocr # 導(dǎo)入 ddddocr
ocr = ddddocr.DdddOcr(show_ad=False) # 實(shí)例化
with open('a2.png', 'rb') as f: # 打開圖片
img_bytes = f.read() # 讀取圖片
res2 = ocr.classification(img_bytes) # 識別
print(res2)
with open('a3.png', 'rb') as f: # 打開圖片
img_bytes = f.read() # 讀取圖片
res3 = ocr.classification(img_bytes) # 識別
print(res3)
with open('a4.png', 'rb') as f: # 打開圖片
img_bytes = f.read() # 讀取圖片
res4 = ocr.classification(img_bytes) # 識別
print(res4)
?運(yùn)行結(jié)果
giv6j
zppk
4Tskh
滑塊驗(yàn)證碼
滑塊驗(yàn)證碼場景如下場景示例
先摳出2張圖片,分別為background.png 和 target.png?
?
?
解決問題的重點(diǎn)是計算缺口的位置
import ddddocr
det = ddddocr.DdddOcr(det=False, ocr=False, show_ad=False)
with open('target.png', 'rb') as f:
target_bytes = f.read()
with open('background.png', 'rb') as f:
background_bytes = f.read()
res = det.slide_match(target_bytes, background_bytes, simple_target=True)
print(res)
運(yùn)行結(jié)果
{'target_y': 0, 'target': [184, 58, 246, 120]}
target 的四個值就是缺口位置的左上角和右下角的左邊位置
識別中文
識別圖片上的文字
import ddddocr
import cv2
det = ddddocr.DdddOcr(det=True)
with open("test.png", 'rb') as f:
image = f.read()
poses = det.detection(image)
im = cv2.imread("test.png")
for box in poses:
x1, y1, x2, y2 = box
im = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)
cv2.imwrite("result.jpg", im)
?保存后的圖片?文章來源:http://www.zghlxwxcb.cn/news/detail-778588.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-778588.html
到了這里,關(guān)于python 識別圖片驗(yàn)證碼/滑塊驗(yàn)證碼準(zhǔn)確率極高的 ddddorc 庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!