您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Python通用驗證碼識別OCR庫怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習“Python通用驗證碼識別OCR庫怎么使用”吧!
傳統(tǒng)驗證就是數(shù)字、字母、漢字等,把背景搞得模糊一些,這些驗證碼在他前面就是個弟弟。
以第一個為例,要想識別他非常容易了。
import ddddocr ocr = ddddocr.DdddOcr(old=True) # 第一個驗證截圖保存:verification_code_1.png with open("./verification_code_1.png", 'rb') as f: image = f.read() res = ocr.classification(image) print(res)
運行結(jié)果:
iepv
當然,傳統(tǒng)驗證碼現(xiàn)在已經(jīng)比較少網(wǎng)站在使用了,幾年前開始流行滑動驗證碼,當時,也有類似的識別方案,主要通過selenium模擬滑動。
首先,需要準備兩張圖片
有缺口的圖片
滑塊縫合的圖片
import ddddocr import cv2 slide = ddddocr.DdddOcr(det=False, ocr=False) # 滑塊縫合的圖片 with open('./verification_code_2-2.png', 'rb') as f: target_bytes = f.read() # 有缺口的圖片 with open('./verification_code_2-1.png', 'rb') as f: background_bytes = f.read() # 滑塊縫合的圖片 img = cv2.imread("./verification_code_2-2.png") res = slide.slide_comparison(target_bytes, background_bytes) print(res)
運行結(jié)果
{'target': [17, 78]}
從文檔中沒找到這個坐標是滑塊的初始坐標還是滑到正確位置的坐標。
當然,這種方案想要運行到自動化中還是比較難的,首先我們很難得到滑塊縫合的圖片,除非你將驗證碼的所有圖片和缺口圖片都保存下來,當驗證碼隨機生成一張圖片后,先截圖和本地保存的圖片對比,然后,找到對應(yīng)的滑塊縫合的圖片。通過ddddocr找到元素坐標。
總之,太麻煩了,我選擇放棄~!
這種驗證碼現(xiàn)在也比較常見,我們需要按照順序點擊圖片中的文字。
import ddddocr import cv2 det = ddddocr.DdddOcr(det=True) # 驗證碼圖片 with open("./verification_code_3.png", 'rb') as f: image = f.read() poses = det.detection(image) print(poses) # 驗證碼圖片 im = cv2.imread("verification_code_3.png") for box in poses: x1, y1, x2, y2 = box im = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2) # 結(jié)果圖片 cv2.imwrite("result.jpg", im)
運行結(jié)果:
[[17, 28, 82, 92], [55, 95, 118, 158], [39, 160, 103, 222]]
這里給出的坐標就是識別的三個文字的圖片坐標。
這種方案同樣會面臨兩個問題;
文字的識別順序不一定是要你點擊的順序。例如識別出來的文字順序是: 荷葉飯, 驗證碼可能提示你點擊的順序是:葉飯荷。
生成的坐標只是圖片的坐標,不管是web還是app,驗證碼圖片只是屏幕的一部分,除非你截取整個屏幕。那么識別率就無法控制了。
到此,相信大家對“Python通用驗證碼識別OCR庫怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。