大家好,我是狂师,今天给大家推荐一款验证码识别神器:dddocr

1、介绍

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

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

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

2、基本使用

安装:pip install dddocr

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

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

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:数字验证码识别

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:混合验证码识别

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:滑动验证码识别

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:中文验证码识别

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库:
  pip install selenium
pip install dddocr
  1. 导入必要的库和模块:
   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的实例:
  ocr = dddocr.DddOcr()
  1. 使用selenium打开登录页面,并找到验证码图片元素:
   driver = webdriver.Chrome()
driver.get('https://example.com/login')
captcha_image = driver.find_element(By.ID, 'captcha-image')
  1. 获取验证码图片的src属性,并下载保存到本地:
  captcha_image_src = captcha_image.get_attribute('src')
driver.get_screenshot_as_file('screenshot.png')
  1. 使用dddocr识别验证码:
   result = ocr.classification('screenshot.png', model_type='mixed')
captcha_code = result[0]['text']
  1. 在登录页面找到验证码输入框,并输入识别出的验证码:
   captcha_input = driver.find_element(By.ID, 'captcha-input')
captcha_input.send_keys(captcha_code)
  1. 输入其他登录信息,并提交表单:
   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()

完整的代码示例:

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打开登录页面,并等待验证码图片加载完成:
   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编码:
   captcha_image_base64 = driver.execute_script("return arguments[0].toDataURL('image/png').substring(21);", captcha_image)
  1. 将base64编码解码为图片,并保存到本地:
   with open('captcha.png', 'wb') as f:
f.write(base64.b64decode(captcha_image_base64))
  1. 使用dddocr识别验证码:
  result = ocr.classification('captcha.png', model_type='mixed')
captcha_code = result[0]['text']
  1. 在登录页面找到验证码输入框,并输入识别出的验证码:
   captcha_input = driver.find_element(By.ID, 'captcha-input')
captcha_input.send_keys(captcha_code)
  1. 输入其他登录信息,并提交表单:
   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()

完整的代码示例:

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),则需要根据具体情况进行相应的处理。

Selenium+dddocr轻松解决Web自动化验证码识别的更多相关文章

  1. python之web自动化验证码识别解决方案

    验证码识别解决方案 对于web应用程序来讲,处于安全性考虑,在登录的时候,都会设置验证码,验证码的类型种类繁多,有图片中辨别数字字母的,有点击图片中指定的文字的,也有算术计算结果的,再复杂一点就是滑动 ...

  2. Selenium+Python+jenkins搭建web自动化测测试框架

    python-3.6.2 chrome 59.0.3071.115 chromedriver 2.9 安装python https://www.python.org/downloads/  (Wind ...

  3. windiows下搭建python+selenium+unittest+Chrome的Web自动化环境

    一.selenium.unittest概念 Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架.它是一款用于运行端到端功能测试的超强工具.您可以使用多个编程语言编写测试,并且 ...

  4. requests库结合selenium库共同完成web自动化和爬虫工作

    我们日常工作中,单纯的HTTP请求,程序员都倾向于使用万能的python Requests库.但大多数场景下,我们的需求页面不是纯静态网页,网页加载过程中伴随有大量的JS文件参与页面的整个渲染过程,且 ...

  5. Java+Selenium 3.x 实现Web自动化 - 1.自动化准备

    (一)自动化准备 说明:本文主要记录了基于公司现有项目(一个电子商务平台),从0开始实现UI自动化的历程.从准备阶段,部分内容直接省略了基础知识,一切以最终做成自动化项目为目标,难免会有晦涩之处.文章 ...

  6. Java+Selenium 3.x 实现Web自动化 - Maven打包TestNG,利用jenkins执行测试

    1. Jenkins本地执行测试 or 服务器端执行测试 测试代码计划通过jenkins执行时,通过网上查询各种教程,大多数为本地执行测试,由此可见,本地执行是大多数人的选择. 经过探讨,最终决定采用 ...

  7. Web自动化——介绍与安装以及第一个web自动化程序(一)

    1. 为什么要做Web自动化测试 什么是web自动化测试 让程序代替人,去验证网页上功能的过程 web自动化测试与手工测试的比较 web自动化测试执行的测试用例是手工功能测试的子集 web自动化测试的 ...

  8. Web自动化---解决登录页面随机验证码问题

    一.抛出问题 在日常的测试工作中,遇到了这样一个登录页面,如下图: 像我们之前做过UI自动化的同学就知道,自动输入账号和密码,这个简单,但是怎么样来识别验证码呢?验证码的形式有多种,有纯数字的,纯字母 ...

  9. Web自动化框架LazyUI使用手册(3)--单个xpath抓取插件详解(selenium元素抓取,有此插件,便再无所求!)

    概述 前面的一篇博文粗略介绍了基于lazyUI的第一个demo,本文将详细描述此工具的设计和使用. 元素获取插件:LazyUI Elements Extractor,作为Chrome插件,用于抓取页面 ...

  10. 【Selenium05篇】python+selenium实现Web自动化:读取ini配置文件,元素封装,代码封装,异常处理,兼容多浏览器执行

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第五篇博 ...

随机推荐

  1. OpenSSL 是什么?

    OpenSSL 是什么? OpenSSL 是开源的程序套件,该套件由三部分组成: libcrypto:具有通用功能的加密库,里面包含众多加密算法 libssl:实现 SSL/TLS 功能 openss ...

  2. 前端学习C语言 - 数组和字节序

    数组 本篇主要介绍:一维二维数组.字符数组.数组名和初始化注意点以及字节序. 一维数组 初始化 有以下几种方式对数组初始化: // 定义一个有5个元素的数组,未初始化 int a[5]; // 定义一 ...

  3. 尚医通-day14【创建订单】(内附源码)

    页面预览 订单详情 订单列表 第01章-创建订单 生成订单分析 生成订单方法参数:就诊人id与 排班id 生成订单需要获取就诊人信息(微服务远程调用service-user) 获取排班信息与规则信息( ...

  4. CDI的概念理解

    1.CDI是什么?目的和作用是什么? 概念(是什么):是JavaEE 6标准中一个规范, 作用(干什么): 它提供了Java EE平台上服务注入的组件管理核心,简化应该是CDI的目标,让一切都可以被注 ...

  5. python中的数据容器

    第六章:Python数据容器 数据容器入门 什么是数据容器 一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素,每一个元素,可以是任意类型的数据,如字符串.数字.布尔等. 根据特点的不同分 ...

  6. 【转载】Linux虚拟化KVM-Qemu分析(一)

    原文信息 作者:LoyenWang 出处:https://www.cnblogs.com/LoyenWang/ 公众号:LoyenWang 版权:本文版权归作者和博客园共有 转载:欢迎转载,但未经作者 ...

  7. 解读 --- yield 关键字

    引言 yield关键字是 C# 中的一种语言特性,用于在枚举器中简化迭代器的实现.它使得开发人员可以通过定义自己的迭代器来简化代码,而不必手动实现 IEnumerable 和 IEnumerator ...

  8. 利用Abp过滤器实现业务数据“回收站”功能

    @ 目录 原理 创建过滤器 使用过滤器 查询 删除 恢复 原理 回收站是当用户删除一条记录时,不是直接从数据库中删除,而是将其放入"回收站",以便用户可以在需要时恢复数据. 在Ab ...

  9. Hugging News #0724: Llama 2 登陆 Hugging Face、AI 开源游戏竞赛获奖选手公布!

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  10. 记一次 zabbix item became not supported 问题处理

    现象 配置了一个自定义监控项,超过 5m nodata 就会告警,最近触发了两次.通过日志查看,有一对相隔10分钟的告警: 时间t0: item xxx became not support: Tim ...