最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python通用驗(yàn)證碼識(shí)別OCR庫(kù)ddddocr的安裝使用教程

 更新時(shí)間:2022年07月06日 16:53:20   作者:PandaMan~  
dddd_ocr是一個(gè)用于識(shí)別驗(yàn)證碼的開(kāi)源庫(kù),又名帶帶弟弟ocr,下面這篇文章主要給大家介紹了關(guān)于Python通用驗(yàn)證碼識(shí)別OCR庫(kù)ddddocr的安裝使用教程,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在使用自動(dòng)化登錄網(wǎng)站的時(shí)候,經(jīng)常輸入用戶名和密碼后會(huì)遇到驗(yàn)證碼。今天介紹一款通用驗(yàn)證碼識(shí)別 OCR庫(kù),對(duì)驗(yàn)證碼識(shí)別徹底說(shuō)拜拜,它的名字是 ddddocr(帶帶弟弟 OCR )。這里主要以字母數(shù)字類驗(yàn)證碼進(jìn)行說(shuō)明。

項(xiàng)目地址:https://github.com/sml2h3/ddddocr

一、安裝ddddocr

通過(guò)命令將自動(dòng)安裝符合自己電腦環(huán)境的最新 ddddocr。

pip install ddddocr

如果安裝速度慢,可以連接國(guó)內(nèi)鏡像進(jìn)行安裝,命令如下:

pip install ddddocr -i https://pypi.tuna.tsinghua.edu.cn/simple/

二、使用ddddocr

1. 使用舉例

import ddddocr

ocr = ddddocr.DdddOcr()
with open('code.png', 'rb') as f:
	img_bytes = f.read()
res = ocr.classification(img_bytes)
print('識(shí)別出的驗(yàn)證碼為:' + res)

2. 完整代碼

import os
import ddddocr
from time import sleep
from PIL import Image
from selenium import webdriver
from selenium.webdriver.common.by import By

class GetVerificationCode:
	def __init__(self):
        self.res = None
        url = '要登錄的地址'
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()  # 將瀏覽器最大化
        self.driver.get(url)

	# 獲取驗(yàn)證碼信息
    def getVerification(self):
        # 獲取當(dāng)前文件的位置、并獲取保存截屏的位置
        current_location = os.path.dirname(__file__)
        screenshot_path = os.path.join(current_location, "..", "VerificationCode")
        # 截取當(dāng)前網(wǎng)頁(yè)并放到自定義目錄下,并命名為printscreen,該截圖中有我們需要的驗(yàn)證碼
        sleep(1)
        self.driver.save_screenshot(screenshot_path + '//' + 'printscreen.png')
        sleep(1)
        # 定位驗(yàn)證碼
        imgelement = self.driver.find_element(By.XPATH, '驗(yàn)證碼圖片的Xpath定位')
        # 獲取驗(yàn)證碼x,y軸坐標(biāo)
        location = imgelement.location
        # 獲取驗(yàn)證碼的長(zhǎng)寬
        size = imgelement.size
        # 寫成我們需要截取的位置坐標(biāo)
        rangle = (int(location['x'] + 430),
                  int(location['y'] + 200),
                  int(location['x'] + size['width'] + 530),
                  int(location['y'] + size['height'] + 250))
        # 打開(kāi)截圖
        i = Image.open(screenshot_path + '//' + 'printscreen.png')
        # 使用Image的crop函數(shù),從截圖中再次截取我們需要的區(qū)域
        fimg = i.crop(rangle)
        fimg = fimg.convert('RGB')
        # 保存我們截下來(lái)的驗(yàn)證碼圖片,并讀取驗(yàn)證碼內(nèi)容
        fimg.save(screenshot_path + '//' + 'code.png')
        ocr = ddddocr.DdddOcr()
        with open(screenshot_path + '//' + 'code.png', 'rb') as f:
            img_bytes = f.read()
        self.res = ocr.classification(img_bytes)
        print('識(shí)別出的驗(yàn)證碼為:' + self.res)

    # 判斷驗(yàn)證碼錯(cuò)誤時(shí)的提示信息是否存在
    def isElementPresent(self, by, value):
        try:
            element = self.driver.find_element(by=by, value=value)
        except NoSuchElementException:
            pass
            # 發(fā)生了NoSuchElementException異常,說(shuō)明頁(yè)面中未找到該元素,返回False
            return False
        else:
            # 沒(méi)有發(fā)生異常,表示在頁(yè)面中找到了該元素,返回True
            return True

	# 登錄
    def login(self):
        self.getVerification()
        self.driver.find_element(By.XPATH, '用戶名輸入框Xpath定位').send_keys('用戶名')
        self.driver.find_element(By.XPATH, '密碼輸入框Xpath定位').send_keys('密碼')
        self.driver.find_element(By.XPATH, '驗(yàn)證碼輸入框Xpath定位').send_keys(self.res)
        sleep(1)
        self.driver.find_element(By.XPATH, '登錄按鈕Xpath定位').click()
        sleep(2)
		isFlag = True
        while isFlag:
            try:
                isPresent = self.isElementPresent(By.XPATH, '驗(yàn)證碼錯(cuò)誤時(shí)的提示信息Xpath定位')
                if isPresent is True:
                    codeText = self.driver.find_element(By.XPATH, '驗(yàn)證碼錯(cuò)誤時(shí)的提示信息Xpath定位').text
                    if codeText == "驗(yàn)證碼不正確":
                        self.getVerification()
                        sleep(2)
                        self.driver.find_element(By.XPATH, '驗(yàn)證碼輸入框Xpath定位').clear()
                        sleep(1)
                        self.driver.find_element(By.XPATH, '驗(yàn)證碼輸入框Xpath定位').send_keys(self.res)
                        sleep(1)
                        self.driver.find_element(By.XPATH, '登錄按鈕Xpath定位').click()
                        sleep(2)
                    tips = self.driver.find_element(By.XPATH,
                                                    '未輸入驗(yàn)證碼時(shí)的提示信息Xpath定位').text
                    if tips == "請(qǐng)輸入驗(yàn)證碼":
                        self.getVerification()
                        sleep(2)
                        self.driver.find_element(By.XPATH, '驗(yàn)證碼輸入框Xpath定位').click()
                        sleep(1)
                        self.driver.find_element(By.XPATH, '驗(yàn)證碼輸入框Xpath定位').send_keys(self.res)
                        sleep(1)
                        self.driver.find_element(By.XPATH, '登錄按鈕Xpath定位').click()
                        sleep(2)
                    continue
                else:
                    print("驗(yàn)證碼正確,登錄成功!")
            except NoSuchElementException:
                pass
            else:
                isFlag = False
                
        sleep(5)
        self.driver.quit()

if __name__ == '__main__':
    GetVerificationCode().login()

3. 驗(yàn)證碼樣例

4. 識(shí)別結(jié)果

可以實(shí)現(xiàn):驗(yàn)證碼識(shí)別錯(cuò)誤后,繼續(xù)識(shí)別

三、代碼說(shuō)明

本文代碼中時(shí)間等待都是使用了強(qiáng)制等待,如有需要可對(duì)代碼進(jìn)行修改,可以使用顯示等待。關(guān)于selenium的三種等待方式(顯示等待,隱式等待,強(qiáng)制等待)可以參考其他博主的文章了解學(xué)習(xí)。

總結(jié)

對(duì)于現(xiàn)在已有的驗(yàn)證碼圖片都有可能具備一定的識(shí)別能力。簡(jiǎn)單來(lái)說(shuō),ddddocr 讓驗(yàn)證碼識(shí)別變得如此簡(jiǎn)單與易用,可以快速的檢測(cè)出圖片上的文字、數(shù)字或圖標(biāo),讓更多的伙伴能夠快速的破解網(wǎng)站的登錄驗(yàn)證碼。

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

相關(guān)文章

  • 一篇文章教你用Python實(shí)現(xiàn)一個(gè)學(xué)生管理系統(tǒng)

    一篇文章教你用Python實(shí)現(xiàn)一個(gè)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • python+Selenium自動(dòng)化測(cè)試——輸入,點(diǎn)擊操作

    python+Selenium自動(dòng)化測(cè)試——輸入,點(diǎn)擊操作

    這篇文章主要介紹了python+Selenium自動(dòng)化測(cè)試——輸入,點(diǎn)擊操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • 基于python和pygame庫(kù)實(shí)現(xiàn)刮刮樂(lè)游戲

    基于python和pygame庫(kù)實(shí)現(xiàn)刮刮樂(lè)游戲

    這篇文章主要介紹了如何基于python和pygame庫(kù)實(shí)現(xiàn)刮刮樂(lè)游戲,文中通過(guò)代碼示例和圖文給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • Python中sklearn實(shí)現(xiàn)交叉驗(yàn)證示例分析

    Python中sklearn實(shí)現(xiàn)交叉驗(yàn)證示例分析

    這篇文章主要介紹了Python中sklearn實(shí)現(xiàn)交叉驗(yàn)證,本文python的版本為3.8,各個(gè)版本之間函數(shù)名字略有不同,但是原理都是一樣的,集成開(kāi)發(fā)環(huán)境使用的是Anaconda的Spyder,需要的朋友可以參考下
    2023-08-08
  • Pytorch中的torch.where函數(shù)使用

    Pytorch中的torch.where函數(shù)使用

    這篇文章主要介紹了Pytorch中的torch.where函數(shù)使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python解包中*和**的最全用法

    Python解包中*和**的最全用法

    本文主要介紹了Python解包中*和**的最全用法,它們具有多種用途,包括解包參數(shù)、擴(kuò)展序列、字典和集合操作等,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • 在numpy矩陣中令小于0的元素改為0的實(shí)例

    在numpy矩陣中令小于0的元素改為0的實(shí)例

    今天小編就為大家分享一篇在numpy矩陣中令小于0的元素改為0的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • BeautifulSoup中find和find_all的使用詳解

    BeautifulSoup中find和find_all的使用詳解

    這篇文章主要介紹了BeautifulSoup中find和find_all的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Pandas實(shí)現(xiàn)在線文件和剪貼板數(shù)據(jù)讀取詳解

    Pandas實(shí)現(xiàn)在線文件和剪貼板數(shù)據(jù)讀取詳解

    這篇文章主要為大家介紹的是Pandas兩種少用的讀取文件方式:讀取在線文件的數(shù)據(jù)和讀取剪貼板的數(shù)據(jù),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-06-06
  • Python 數(shù)據(jù)分析之Beautiful Soup 提取頁(yè)面信息

    Python 數(shù)據(jù)分析之Beautiful Soup 提取頁(yè)面信息

    Beautiful Soup 提供一些簡(jiǎn)單的、python 式的函數(shù)用來(lái)處理導(dǎo)航、搜索、修改分析樹(shù)等功能。它是一個(gè)工具箱,通過(guò)解析文檔為用戶提供需要抓取的數(shù)據(jù),因?yàn)楹?jiǎn)單,所以不需要多少代碼就可以寫出一個(gè)完整的應(yīng)用程序
    2021-10-10

最新評(píng)論

松溪县| 阿合奇县| 乡城县| 黄陵县| 肇州县| 内丘县| 南靖县| 巴南区| 河东区| 二连浩特市| 静宁县| 新龙县| 新巴尔虎右旗| 当阳市| 清镇市| 思南县| 长泰县| 台南市| 杭州市| 东城区| 承德县| 彭山县| 文昌市| 万安县| 磴口县| 旬邑县| 乌兰察布市| 石阡县| 甘孜| 靖安县| 依安县| 电白县| 明星| 疏勒县| 屏边| 山东省| 得荣县| 西藏| 科技| 礼泉县| 江津市|