亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python通用驗證碼識別OCR庫之ddddocr驗證碼識別

 更新時間:2022年05月27日 16:16:39   作者:蟲師  
dddd_ocr也是一個用于識別驗證碼的開源庫,又名帶帶弟弟ocr,爬蟲界大佬sml2h3開發(fā),識別效果也是非常不錯,下面這篇文章主要給大家介紹了關(guān)于Python通用驗證碼識別OCR庫之ddddocr驗證碼識別的相關(guān)資料,需要的朋友可以參考下

前言

相信做自動化測試的同學(xué)一定不可忽視的問題就是驗證碼,他幾乎是一個網(wǎng)站登錄的標(biāo)配,當(dāng)然,我一般是不建議在這上面浪費(fèi)時間去做識別的。

舉個例子,現(xiàn)在你的目的是進(jìn)入自己家的房子,房子為了防止小偷進(jìn)入于是上了一把鎖。我們沒必要花費(fèi)力氣去研究開鎖技術(shù)。去找鎖匠配置一把萬能鑰匙(讓開發(fā)設(shè)置驗證碼的萬能碼),或者干脆先去上鎖匠把驗證碼去掉(讓開發(fā)暫時屏蔽驗證碼)。嚴(yán)格來說識別驗證碼不是我們自動化測試的重點。除非你是驗證碼廠商的員工,破解識別驗證碼是你的工作。

那么,如果有很簡單的方式去識別驗證碼的話,我們其實就可以不用麻煩開發(fā)針對驗證碼做屏蔽開關(guān)了。

ddddocr: 帶帶弟弟OCR通用驗證碼識別SDK 就是這樣一款強(qiáng)大驗證碼識別工具。

為什么我會想到:hhhhhhhh 紅紅火火恍恍惚惚, 哈哈~!

傳統(tǒng)驗證碼

傳統(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)

運(yùn)行結(jié)果:

iepv

滑動驗證碼

當(dāng)然,傳統(tǒng)驗證碼現(xiàn)在已經(jīng)比較少網(wǎng)站在使用了,幾年前開始流行滑動驗證碼,當(dāng)時,也有類似的識別方案,主要通過selenium模擬滑動。

首先,需要準(zhǔn)備兩張圖片

  • 有缺口的圖片

  • 滑塊縫合的圖片

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)

運(yùn)行結(jié)果

{'target': [17, 78]}

從文檔中沒找到這個坐標(biāo)是滑塊的初始坐標(biāo)還是滑到正確位置的坐標(biāo)。

當(dāng)然,這種方案想要運(yùn)行到自動化中還是比較難的,首先我們很難得到滑塊縫合的圖片,除非你將驗證碼的所有圖片和缺口圖片都保存下來,當(dāng)驗證碼隨機(jī)生成一張圖片后,先截圖和本地保存的圖片對比,然后,找到對應(yīng)的滑塊縫合的圖片。通過ddddocr找到元素坐標(biāo)。

總之,太麻煩了,我選擇放棄~!

文字點選驗證碼

這種驗證碼現(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)

運(yùn)行結(jié)果:

[[17,?28,?82,?92],?[55,?95,?118,?158],?[39,?160,?103,?222]]

這里給出的坐標(biāo)就是識別的三個文字的圖片坐標(biāo)。

這種方案同樣會面臨兩個問題;

  • 文字的識別順序不一定是要你點擊的順序。例如識別出來的文字順序是: 荷葉飯, 驗證碼可能提示你點擊的順序是:葉飯荷。

  • 生成的坐標(biāo)只是圖片的坐標(biāo),不管是web還是app,驗證碼圖片只是屏幕的一部分,除非你截取整個屏幕。那么識別率就無法控制了。

總結(jié)

  • ddddorc 針對傳統(tǒng)的輸入驗證碼還是很好用的。

  • 針對新型的驗證碼,識別率還行,但是,如何與自動化結(jié)合是個難題。

  • OCR技術(shù)本來就是以圖片文字識別為主,它并不包含模擬鼠標(biāo)點擊、滑動、鍵盤輸入等動作。

到此這篇關(guān)于Python通用驗證碼識別OCR庫之ddddocr驗證碼識別的文章就介紹到這了,更多相關(guān)Python ddddocr驗證碼識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pandas篩選某列出現(xiàn)編碼錯誤的解決方法

    pandas篩選某列出現(xiàn)編碼錯誤的解決方法

    今天小編就為大家分享一篇pandas篩選某列出現(xiàn)編碼錯誤的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • pandas之分組groupby()的使用整理與總結(jié)

    pandas之分組groupby()的使用整理與總結(jié)

    這篇文章主要介紹了pandas之分組groupby()的使用整理與總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 使用Python將PDF轉(zhuǎn)換為文檔的方法實現(xiàn)

    使用Python將PDF轉(zhuǎn)換為文檔的方法實現(xiàn)

    要將PDF文件轉(zhuǎn)換為Doc格式,你可以使用 Python 模塊,它將讓你輕松地將 pdf 轉(zhuǎn)換為 doc ,在本文中,我們將探索使用 Python 將 PDF 文檔轉(zhuǎn)換為Doc文件,需要的朋友可以參考下
    2023-09-09
  • pytorch模型的定義、修改、讀取、斷點續(xù)訓(xùn)深入解析

    pytorch模型的定義、修改、讀取、斷點續(xù)訓(xùn)深入解析

    模型定義是深度學(xué)習(xí)中重要的一環(huán),PyTorch提供了強(qiáng)大而靈活的工具和函數(shù),使我們能夠輕松定義各種類型的深度學(xué)習(xí)模型,通過深入理解模型定義的原理和應(yīng)用,我們能夠更好地理解和設(shè)計自己的模型,從而提升深度學(xué)習(xí)任務(wù)的性能和效果
    2024-03-03
  • python中列表的常見操作梳理總結(jié)(一)

    python中列表的常見操作梳理總結(jié)(一)

    這篇文章主要介紹了python中列表的常見操作梳理總結(jié),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • Python類的高級函數(shù)詳解

    Python類的高級函數(shù)詳解

    這篇文章主要介紹了Python類的高級函數(shù),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • 如何使用Python異步之上下文管理器

    如何使用Python異步之上下文管理器

    這篇文章主要為大家介紹了如何使用Python異步之上下文管理器詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Python標(biāo)準(zhǔn)庫06之子進(jìn)程 (subprocess包) 詳解

    Python標(biāo)準(zhǔn)庫06之子進(jìn)程 (subprocess包) 詳解

    本篇文章主要介紹了Python標(biāo)準(zhǔn)庫06之子進(jìn)程 (subprocess包) 詳解,具有一定的參考價值,有興趣的同學(xué)可以了解一下。
    2016-12-12
  • 如何基于Python和Flask編寫Prometheus監(jiān)控

    如何基于Python和Flask編寫Prometheus監(jiān)控

    這篇文章主要介紹了如何基于Python和Flask編寫Prometheus監(jiān)控,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • 對Python定時任務(wù)的啟動和停止方法詳解

    對Python定時任務(wù)的啟動和停止方法詳解

    今天小編就為大家分享一篇對Python定時任務(wù)的啟動和停止方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02

最新評論