首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Selenium+dddocr轻松解决Web自动化验证码识别

Selenium+dddocr轻松解决Web自动化验证码识别

作者头像
测试开发技术
发布于 2023-09-12 06:18:40
发布于 2023-09-12 06:18:40
2.1K00
代码可运行
举报
文章被收录于专栏:测试开发技术测试开发技术
运行总次数:0
代码可运行

1、介绍

dddocr是一个基于深度学习的OCR(Optical Character Recognition,光学字符识别)库,用于识别图片中的文字。它可以识别各种类型的文字,包括印刷体、手写体、表格、条形码等。dddocr库使用了深度卷积神经网络(CNN)和循环神经网络(RNN)等先进的模型,具有较高的准确性和稳定性。

使用dddocr库可以方便地进行文字识别的开发和应用。它提供了简单易用的API接口,可以接收图片作为输入,返回识别结果。用户只需要将待识别的图片传入dddocr库的API接口,即可获取识别出的文字信息。同时,dddocr库还支持批量处理多张图片,提供了多线程和分布式处理的功能,可以提高识别速度和效率。

dddocr库可以广泛应用于各种场景,例如文档数字化、图像检索、自动化办公等。它可以帮助用户快速准确地提取图片中的文字信息,方便进行后续的处理和分析。在实际应用中,dddocr库已经被广泛应用于金融、医疗、物流等领域,取得了良好的效果。

2、基本使用

安装:pip install dddocr

利用dddocr库可以支持识别不同类型的验证码

示例1:英文字母验证码识别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import dddocr

def recognize_letter_captcha(image_path):
    ocr = dddocr.DddOcr()
    result = ocr.classification(image_path, model_type='letter')
    return result

image_path = 'letter_captcha.png'
result = recognize_letter_captcha(image_path)
print(result)

示例2:数字验证码识别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import dddocr

def recognize_number_captcha(image_path):
    ocr = dddocr.DddOcr()
    result = ocr.classification(image_path, model_type='number')
    return result

image_path = 'number_captcha.png'
result = recognize_number_captcha(image_path)
print(result)

示例3:混合验证码识别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import dddocr

def recognize_mixed_captcha(image_path):
    ocr = dddocr.DddOcr()
    result = ocr.classification(image_path, model_type='mixed')
    return result

image_path = 'mixed_captcha.png'
result = recognize_mixed_captcha(image_path)
print(result)

示例4:滑动验证码识别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import dddocr

def recognize_slide_captcha(image_path):
    ocr = dddocr.DddOcr()
    result = ocr.slide_captcha(image_path)
    return result

image_path = 'slide_captcha.png'
result = recognize_slide_captcha(image_path)
print(result)

示例5:中文验证码识别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import dddocr

def recognize_chinese_captcha(image_path):
    ocr = dddocr.DddOcr()
    result = ocr.classification(image_path, model_type='chinese')
    return result

image_path = 'chinese_captcha.png'
result = recognize_chinese_captcha(image_path)
print(result)

以上示例中,image_path为待识别的验证码图片路径,通过调用不同的识别函数来识别不同类型的验证码。每个示例都创建了一个dddocr的实例,然后调用相应的方法进行识别。识别结果会以字符串形式返回。实际应用中,可能需要根据具体情况进行参数调整和模型训练,以提高识别准确性。

3、selenium+dddorc自动化登录识别验证码

使用selenium和dddocr进行自动登录时,可以通过以下步骤识别验证码:

  1. 安装selenium和dddocr库:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  pip install selenium
  pip install dddocr
  1. 导入必要的库和模块:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   from selenium import webdriver
   from selenium.webdriver.common.by import By
   from selenium.webdriver.support.ui import WebDriverWait
   from selenium.webdriver.support import expected_conditions as EC
   import dddocr
  1. 创建一个dddocr的实例:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  ocr = dddocr.DddOcr()
  1. 使用selenium打开登录页面,并找到验证码图片元素:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   driver = webdriver.Chrome()
   driver.get('https://example.com/login')
   captcha_image = driver.find_element(By.ID, 'captcha-image')
  1. 获取验证码图片的src属性,并下载保存到本地:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  captcha_image_src = captcha_image.get_attribute('src')
  driver.get_screenshot_as_file('screenshot.png')
  1. 使用dddocr识别验证码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   result = ocr.classification('screenshot.png', model_type='mixed')
   captcha_code = result[0]['text']
  1. 在登录页面找到验证码输入框,并输入识别出的验证码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   captcha_input = driver.find_element(By.ID, 'captcha-input')
   captcha_input.send_keys(captcha_code)
  1. 输入其他登录信息,并提交表单:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   username_input = driver.find_element(By.ID, 'username-input')
   password_input = driver.find_element(By.ID, 'password-input')
   username_input.send_keys('your_username')
   password_input.send_keys('your_password')
   submit_button = driver.find_element(By.ID, 'submit-button')
   submit_button.click()

完整的代码示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import dddocr

ocr = dddocr.DddOcr()

driver = webdriver.Chrome()
driver.get('https://example.com/login')

captcha_image = driver.find_element(By.ID, 'captcha-image')
captcha_image_src = captcha_image.get_attribute('src')
driver.get_screenshot_as_file('screenshot.png')

result = ocr.classification('screenshot.png', model_type='mixed')
captcha_code = result[0]['text']

captcha_input = driver.find_element(By.ID, 'captcha-input')
captcha_input.send_keys(captcha_code)

username_input = driver.find_element(By.ID, 'username-input')
password_input = driver.find_element(By.ID, 'password-input')
username_input.send_keys('your_username')
password_input.send_keys('your_password')

submit_button = driver.find_element(By.ID, 'submit-button')
submit_button.click()

以上代码示例中,假设登录页面的验证码图片元素的id为'captcha-image',验证码输入框的id为'captcha-input',用户名输入框的id为'username-input',密码输入框的id为'password-input',登录按钮的id为'submit-button'。根据实际情况,需要替换这些id值为实际的页面元素id。

注意:上述示例仅适用于验证码图片直接以img标签的形式嵌入在页面中的情况。

4、验证码通过Ajax请求加载如何识别

如果验证码是通过Ajax请求加载的,可以通过以下步骤识别验证码:

  1. 使用selenium打开登录页面,并等待验证码图片加载完成:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   driver = webdriver.Chrome()
   driver.get('https://example.com/login')

   wait = WebDriverWait(driver, 10)
   captcha_image = wait.until(EC.presence_of_element_located((By.ID, 'captcha-image')))
  1. 执行JavaScript代码,获取验证码图片的base64编码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   captcha_image_base64 = driver.execute_script("return arguments[0].toDataURL('image/png').substring(21);", captcha_image)
  1. 将base64编码解码为图片,并保存到本地:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   with open('captcha.png', 'wb') as f:
       f.write(base64.b64decode(captcha_image_base64))
  1. 使用dddocr识别验证码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  result = ocr.classification('captcha.png', model_type='mixed')
  captcha_code = result[0]['text']
  1. 在登录页面找到验证码输入框,并输入识别出的验证码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   captcha_input = driver.find_element(By.ID, 'captcha-input')
   captcha_input.send_keys(captcha_code)
  1. 输入其他登录信息,并提交表单:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   username_input = driver.find_element(By.ID, 'username-input')
   password_input = driver.find_element(By.ID, 'password-input')
   username_input.send_keys('your_username')
   password_input.send_keys('your_password')

   submit_button = driver.find_element(By.ID, 'submit-button')
   submit_button.click()

完整的代码示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import dddocr
import base64

ocr = dddocr.DddOcr()

driver = webdriver.Chrome()
driver.get('https://example.com/login')

wait = WebDriverWait(driver, 10)
captcha_image = wait.until(EC.presence_of_element_located((By.ID, 'captcha-image')))

captcha_image_base64 = driver.execute_script("return arguments[0].toDataURL('image/png').substring(21);", captcha_image)

with open('captcha.png', 'wb') as f:
    f.write(base64.b64decode(captcha_image_base64))

result = ocr.classification('captcha.png', model_type='mixed')
captcha_code = result[0]['text']

captcha_input = driver.find_element(By.ID, 'captcha-input')
captcha_input.send_keys(captcha_code)

username_input = driver.find_element(By.ID, 'username-input')
password_input = driver.find_element(By.ID, 'password-input')
username_input.send_keys('your_username')
password_input.send_keys('your_password')

submit_button = driver.find_element(By.ID, 'submit-button')
submit_button.click()

以上代码示例中,假设登录页面的验证码图片元素的id为'captcha-image',验证码输入框的id为'captcha-input',用户名输入框的id为'username-input',密码输入框的id为'password-input',登录按钮的id为'submit-button'。根据实际情况,需要替换这些id值为实际的页面元素id。

注意:上述示例仅适用于验证码图片通过Ajax请求加载,并且返回的是base64编码的情况。如果验证码图片是通过其他方式加载的,或者返回的是其他格式的数据(如图片的URL),则需要根据具体情况进行相应的处理。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-12 08:20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2024年最新关闭火绒安全工具的开机自启方法
火绒安全软件5.0下线“火绒剑”安全工具,关于火绒安全软件5.0下线“火绒剑”安全工具的通知 (huorong.cn),现在想要关闭火绒的开机自启得花点心思。大致方法如下:
莲子心
2025/07/14
940
DirectX修复工具,解决WeGame打不开,Wegame界面英雄联盟点击启动没反应,解决方法
其实很多人重装游戏后,打开还是会出现这个问题,那是因为卸载的时候就没卸载干净,游戏一些常用配置,注册信息还留在原有系统里面,所以重装游戏后还是会出现这个问题。
小焱
2025/07/09
1470
DirectX修复工具,解决WeGame打不开,Wegame界面英雄联盟点击启动没反应,解决方法
如何彻底关闭windows defender
Win10系统中自带了windows defender杀毒软件,他的好评率并不高,其一是扫描的频率太高,占用大量CPU;其二是有些文件,不经过任何提示就直接删除了。你可能之前试过很多办法,但是它又莫名的启动了。今天我们将介绍彻底关闭windows defender杀毒软件的方法
zby1101
2020/08/05
32.3K0
如何彻底关闭windows defender
火绒安全:守护电脑安全的国产之光,专业防护无需等待
在当今数字化的时代,电脑已经成为了我们生活和工作中不可或缺的工具,然而随着电脑的普及和互联网的发展,各种电脑病毒、木马、恶意软件也层出不穷,给我们的电脑安全带来了巨大的威胁,因此选择一款优秀的杀毒软件来保护我们的电脑安全显得尤为重要。
M.Talen
2024/05/22
2960
火绒安全:守护电脑安全的国产之光,专业防护无需等待
教你一劳永逸的方法永久关闭电脑恶意弹窗垃圾广告
时隔一个多月没有来水博客,相信小伙伴用电脑都多多少少遇到过很多恶意垃圾弹窗,并且关掉也只能管几天,关键是还不知道是什么软件弹出来的,或者说知道是某某软件产生的,但是又不得不用这个软件,所以也舍不得卸载,今天就带给大家一劳永逸的方法,永久告别弹窗,拉进小黑屋,利用的是火绒安全,个人也用了很久,强烈推荐,可以完全替换电脑管家、360安全杀毒以及金山毒霸等套装。
Lcry
2022/11/29
1.6K0
教你一劳永逸的方法永久关闭电脑恶意弹窗垃圾广告
电脑软件:推荐八款提高工作效率的软件,值得收藏!
从360到腾讯管家,从瑞星到金山毒霸,走过了xp与WIN7到现在的win10,见过了无数的杀毒软件,此时我不得不推荐一下火绒安全软件(话说有没有广告费啊)。简单来介绍它,那就是干净,干净的让我都不知道这个软件是否是真的运行了,除了更新病毒库他有点存在感,其他时间就根本看不到它的影子。这里不得不推荐一下这个功能:
小明互联网技术分享社区
2022/04/07
1.3K0
电脑软件:推荐八款提高工作效率的软件,值得收藏!
轻量级病毒查杀,火绒安全软件下载、防护中心、杀流氓软件,拦截黑客入侵、网络钓鱼攻击
火绒提供的功能包括病毒查杀、防护中心、访问控制等;火绒自主研发的新一代反病毒引擎,拥有通用脱壳、动态行为查杀等技术;火绒的访问控制功能可拦截黑客入侵、网络钓鱼攻击、勒索攻击、无文件攻击等各项威胁,还可控制应用程序行为。
小焱
2025/06/12
3690
轻量级病毒查杀,火绒安全软件下载、防护中心、杀流氓软件,拦截黑客入侵、网络钓鱼攻击
电脑总是突然变卡或者风扇呼呼的吹,元凶可能时它哟!
不要着急你可能遇到了Windows10和Window11的通病,可以点击快捷键“Ctrl+Shift+Esc”进入任务管理器查看后台进程情况
90后小陈老师
2024/05/09
1.5K0
电脑总是突然变卡或者风扇呼呼的吹,元凶可能时它哟!
关于WannaREN的坏消息和好消息
接到安全界朋友消息,WannaREN目前正通过部分软件下载站广泛传播,习惯去软件下载站、不习惯去软件官网下载的朋友们注个意吧:
Windows技术交流
2020/04/10
2.6K0
最好用的电脑杀毒软件-火绒安全告别流氓软件
哈喽各位小伙伴大家早,我是橙c。昨天从工作了几年的公司辞职打了几个电话得到了朋友的鼓励鼓起了勇气辞职了。
IT小侠公社
2019/06/12
3K0
最好用的电脑杀毒软件-火绒安全告别流氓软件
电脑软件:火绒应用商店功能体验
火绒作为国内杀毒软件的一股清流,相信很多电脑爱好者都使用火绒软件作为自己的电脑杀毒软件,火绒杀毒软件的最大特点是软件没有弹窗广告、电脑杀毒可靠、完全免费使用、支持拦截烦人的弹窗广告。
小明互联网技术分享社区
2023/09/18
9580
电脑软件:火绒应用商店功能体验
时间就是金钱!Windows 上必装的 10 款高效软件
不管你是上班族还是学生党,是电脑迷还是技术派,都会常跟电脑打交道。今天好奇仔给大家安利一些Windows上必备的高效软件,逼格满分。
小小詹同学
2019/12/02
1.7K0
时间就是金钱!Windows 上必装的 10 款高效软件
火绒安全软件评测 | WitAwards 2016 「 年度安全产品」参评巡礼
*本文原创作者: ArthurKiller,本文属“WitAwards 2016年度安全评选”专题报道,未经许可禁止转载 火绒,国内一款新兴的免费杀毒软件。该软件安装包只有9.1 MB的大小,却包含了防火墙,杀毒引擎,HIPS,弹窗拦截,文件粉碎,垃圾清理,火绒剑,系统右键管理等功能。 1.5MB大小的病毒库却可以抵挡千万种流行电脑病毒。虽然作为一款创业公司的产品,火绒却有着自己的“坚持”——国内大部分免费杀毒软件都是OEM其它公司的杀毒引擎。 火绒自主研发了杀毒引擎;在“捆绑、弹窗、私自上传、篡改电脑”的
FB客服
2018/02/08
4.1K0
火绒安全软件评测 | WitAwards 2016 「 年度安全产品」参评巡礼
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。
全栈程序员站长
2022/08/26
5260
这些软件太强了,Windows必装!尤其程序员!
win10 小而美的软件
强悍、 轻巧、 干净。界面简单易用,没有纷繁复杂的功能,没有“全家桶”服务,没有广告的骚扰。偶尔提示你阻止下某某游戏中心的安装,或者某某软件的弹窗。或者在后台默默更新病毒库,告诉你“我已经全副武装,随时可以出征”。而其他时候呢只想安安静静地做个美男子。
用户2870857
2019/12/23
9120
win10 小而美的软件
推荐阅读
相关推荐
2024年最新关闭火绒安全工具的开机自启方法
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档