Python中識別圖片/滑塊驗證碼準(zhǔn)確率極高的ddddocr庫詳解
前言
驗證碼的種類有很多,它是常用的一種反爬手段,包括:圖片驗證碼,滑塊驗證碼,等一些常見的驗證碼場景。
識別驗證碼的python 庫有很多,用起來也并不簡單,這里推薦一個簡單實用的識別驗證碼的庫 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
快速開始
先隨便找個純英文的驗證碼,保持為a1.png
代碼示例
import ddddocr # 導(dǎo)入 ddddocr ocr = ddddocr.DdddOcr() # 實例化 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,本項目專注帶動行業(yè)內(nèi)卷…"提示語, 可以加一個參數(shù)show_ad=False
import ddddocr # 導(dǎo)入 ddddocr ocr = ddddocr.DdddOcr(show_ad=False) # 實例化 with open('a1.png', 'rb') as f: # 打開圖片 img_bytes = f.read() # 讀取圖片 res = ocr.classification(img_bytes) # 識別 print(res)
圖片驗證碼
識別一下三種驗證碼
代碼示例
import ddddocr # 導(dǎo)入 ddddocr ocr = ddddocr.DdddOcr(show_ad=False) # 實例化 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
滑塊驗證碼
滑塊驗證碼場景如下場景示例
先摳出2張圖片,分別為background.png 和 target.png
解決問題的重點是計算缺口的位置
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)
保存后的圖片
到此這篇關(guān)于Python中識別圖片/滑塊驗證碼準(zhǔn)確率極高的ddddocr庫詳解的文章就介紹到這了,更多相關(guān)Python ddddocr庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入解析NumPy中的Broadcasting廣播機(jī)制
在吳恩達(dá)老師的深度學(xué)習(xí)專項課程中,老師有提到NumPy中的廣播機(jī)制,同時那一周的測驗也有涉及到廣播機(jī)制的題目。那么,到底什么是NumPy中的廣播機(jī)制?本文就來介紹一下2021-05-05Python利用Faiss庫實現(xiàn)ANN近鄰搜索的方法詳解
這篇文章主要介紹了Python利用Faiss庫實現(xiàn)ANN近鄰搜索的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08從Pytorch模型pth文件中讀取參數(shù)成numpy矩陣的操作
這篇文章主要介紹了從Pytorch模型pth文件中讀取參數(shù)成numpy矩陣的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03基于Python+Matplotlib實現(xiàn)直方圖的繪制
Matplotlib是Python的繪圖庫,它能讓使用者很輕松地將數(shù)據(jù)圖形化,并且提供多樣化的輸出格式。本文將為大家介紹如何用matplotlib繪制直方圖,感興趣的朋友可以學(xué)習(xí)一下2022-04-04Python?np.where()的詳解以及代碼應(yīng)用
numpy里有一個非常神奇的函數(shù)叫做np.where()函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python?np.where()的詳解以及代碼應(yīng)用的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08教你用Python+selenium搭建自動化測試環(huán)境
今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著如何用Python+selenium搭建自動化測試環(huán)境展開,文中有非常詳細(xì)的介紹,需要的朋友可以參考下2021-06-06