适用ddddocr自动化测试验证码识别

news2024/11/17 12:57:22

原打算使用tesseract进行验证码识别的但后面发现实在太辣鸡了

不知道tesseract以及没安装的可以看这篇文章:
tesseract安装以及联调python

使用tesseract的代码:

import pytesseract
from PIL import Image, ImageEnhance
"""
步骤①:定位图片的元素,并且截取当前浏览器的页面图片
步骤②:获取验证码坐标点,以及验证码图片、浏览器、截图的长和宽
步骤③:截取截图里的验证码图片,获得的验证码图片并保存
步骤④:获得验证码code
"""
# imagePng = "../img/test.png"
# 原图路径
imagePng = "../img/test.png"
# 处理之后图片的路径
savePngPath = "../img/savePng.png"

# 原图转对象
resource_img = Image.open(imagePng)

# 转换模式:L | RGB
resource_img = resource_img.convert('L')

# 提高识别率(提高个毛)
enhancer = ImageEnhance.Color(resource_img)
enhancer = enhancer.enhance(0)
enhancer = ImageEnhance.Brightness(enhancer)
enhancer = enhancer.enhance(2)
enhancer = ImageEnhance.Contrast(enhancer)      # 增强对比度
enhancer = enhancer.enhance(8)
enhancer = ImageEnhance.Sharpness(enhancer)
resource_img = enhancer.enhance(20)

resource_img = ImageEnhance.Contrast(resource_img)  # 增强对比度
resource_img = resource_img.enhance(2.0)
resource_img.save(savePngPath)

# 识别图片
code = pytesseract.image_to_string(Image.open(savePngPath)).strip()
#code = pytesseract.image_to_string(Image.open('../img/xin.png')).strip()
print(f"提取的验证码为:【{code}】")







实际验证码图片
在这里插入图片描述

得到的效果
在这里插入图片描述
这还识别个毛啊

使用ddddocr进行识别

  • ddddocr安装
pip install ddddocr

代码:

import ddddocr

ocr = ddddocr.DdddOcr()
with open('../img/test.png', 'rb') as f:
	img_bytes = f.read()
res = ocr.classification(img_bytes)
print('识别出的验证码为:' + res)

运行结果

E:\code\venv\Scripts\python.exe E:\code\SeleniumTest\ddddocr验证码识别.py 
欢迎使用ddddocr,本项目专注带动行业内卷,个人博客:wenanzhe.com
训练数据支持来源于:http://146.56.204.113:19199/preview
爬虫框架feapder可快速一键接入,快速开启爬虫之旅:https://github.com/Boris-code/feapder
谷歌reCaptcha验证码 / hCaptcha验证码 / funCaptcha验证码商业级识别接口:https://yescaptcha.com/i/NSwk7i
识别出的验证码为:2177

Process finished with exit code 0

运行的时候可能会出现:
ddddocr找不到onnxruntime_pybind11_state模块的异常

...
    from .onnxruntime_pybind11_state import *  # noqa
ImportError: DLL load failed: 找不到指定的模块。

找对应的你电脑的对应位数直接下载就好了

Microsoft Visual C++ Redistributable 2019x86 官方下载地址:32位
Microsoft Visual C++ Redistributable 2019x64 官方下载地址:64位

参考解决链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/692436.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DOTA大环配体化合物:DOTA PEG5 amine/azide/DBCO,特点分享说明

一、DOTA-PEG5-amine,DOTA PEG5 NH2,DOTA-PEG5-amine HCl salt,DOTA五聚乙二醇氨基Product structure: 1.CAS No:N/A 2.Molecular formula:C28H54N6O12 3.Molecular weight:666.8 5.Appearance …

【图像处理】去雾代码收(附halcon、python、C#、VB、matlab)

【图像处理】去雾代码收(附halcon、python、C#、VB、matlab) 一、halcon算法1.1 halcon算法源码1.2 halcon算法效果图![在这里插入图片描述](https://img-blog.csdnimg.cn/8ad5217a59be4de29b5a7b6eee997b85.png#pic_center) 二、opencv算法2.1 python源…

了解架构是什么

前言: \textcolor{Green}{前言:} 前言: 💞这个专栏就专门来记录一下寒假参加的第五期字节跳动训练营 💞从这个专栏里面可以迅速获得Go的知识 了解架构是什么 01. 什么是架构1.1 定义1.1 问题1.2 什么是架构 - 单机1.3 …

Linux服务器同步Windows目录同步-rsync

前言 最近需要,Linux的服务器同步Windows的一个目录。查了下,大概有三种方法:网盘同步;rsync同步;挂载目录。 网盘同步,可以选择搭建一个Nextcloud 。但是问题在于,我需要的是,客户…

react context上下文与vue中 provide inject的用法区别

一、react中: 数据传递 1、引入createContext import { createContext } from "react"; 2、创建并导出 export const FspThemeContext createContext({}); 3、传递数据(value项不能缺少!!) ①不解构…

微流控芯片压力和流量的超高精度串级控制解决方案

摘要:针对微流控芯片压力驱动进样系统中压力和流量的高精度控制,本文提出了国产化替代解决方案。解决方案采用了积木式结构,便于快速搭建起气压驱动进样系统。解决方案的核心是采用了串级控制模式,结合高精度的传感器、电气比例阀…

JMeter如何进行多服务器远程测试

JMeter是Apache软件基金会的开源项目,主要来做功能和性能测试,用Java编写。 我们一般都会用JMeter在本地进行测试,但是受到单个电脑的性能影响,往往达不到性能测试的要求,无法有效的模拟高并发的场景,那么…

云计算服务模式、PaaS、SaaS都是啥?

什么是云计算服务模式 云计算服务模式是指云服务提供商提供的不同类型的云计算服务,包括基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)等。这些服务可以帮助企业在云端进行资源共…

Mysql找出执行慢的SQL【慢查询日志使用与分析】

分析慢SQL的步骤 慢查询的开启并捕获:开启慢查询日志,设置阈值,比如超过5秒钟的就是慢SQL,至少跑1天,看看生产的慢SQL情况,并将它抓取出来explain 慢SQL分析show Profile。(比explain还要详细…

WideResNet(宽残差网络)算法解析-鸟类识别分类-Paddle实战

文章目录 一、理论基础1.前言2.设计理念2.1 ResNet算法2.1.1 residual(残差结构)模块2.1.2 residual的计算方式2.1.3 ResNet中两种不同的residual2.1.4 Batch Normalization(批归一化) 2.2 WideResNet(WRNs)算法2.2.1 宽残差块2.2…

vue2项目引入vant组件库

Vant官网 Vant 2 - Mobile UI Components built on Vue

【零基础入门学习Python---Python数据处理和存储保姆级教程】

🚀 Python 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

记一次Tomcat控制台弱口令爆破事件应急响应

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 事件背景介绍02 流量分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中,安全部门在安全设备上观察到大量Tomcat控制台登录请求,现需根据流量情况进…

多线程的CAS(Compare and Swap)机制与乐观锁、AtomicInteger等原子包装类的使用

一.乐观锁 与 CAS机制 在java的多线程并发过程中: ​ 1.当一个对象在多个内存中都存在副本时,如果一个线程在自己的工作内存修改了共享变量,其它线程也应该能够看到被修改后的值。常常用volatile关键字来保证多线程数据的可见性。 ​…

Nginx Rewrite 重写跳转

文章目录 一.Nginx Rewrite概述1.Rewrite跳转场景2.Rewrite跳转场景3.Rewrite跳转实现4.Rewrite实际场景4.1Nginx跳转需求的实现方式4.2 rewrite放在 server{},if{},location{} 段中4.3对域名或参数字符串 5.nginx正则表达式5.1 常用的正则表达式元字符 …

Jmeter(jmeter-plugins插件的安装使用)

目录 一、安装JMter Plugins 二、Custom Thread Groups插件 Stepping Thread Group 元件 Ultimate Thread Group 一、安装JMter Plugins 1、官网下载 JMeter Plugins 的jar包 2. 将下载的jar包复制到 %JMETER_HOME%\lib\ext 目录下 3. 启动 JMeter --> Options -->…

学习系统编程No.26【信号处理实战】

引言: 北京时间:2023/6/26/13:35,昨天12点左右睡觉,本以为能和在学校一样,7点左右起床,设置了7点到8点30时间段内的4个闹钟,可惜没想到啊,没醒,直接睡到了12点&#xff…

rust基本语法

文章目录 变量与可变性变量与常量Shadowing(隐藏)数据类型标量类型1.整数类型2.浮点类型3.布尔类型4.字符类型 复合类型1.Tuple2.数组 函数if表达式循环1.loop2.while3.for 变量与可变性 声明变量使用let关键字,默认情况下,变量是…

kafka初学入门

kafka概述 消息中间件对比 特性ActiveMQRabbitMQRocketMQKafka开发语言javaerlangjavascala单机吞吐量万级万级10万级100万级时效性msusmsms级以内可用性高(主从)高(主从)非常高(分布式)非常高&#xff0…

大模型显存占用分析

大模型显存占用由以下几部分组成: 1. 模型本身参数,假设是1个单位 2.模型的梯度,同样也是一个单位 3.优化器参数(占大头):以Adam参数为例,还需要在显卡中额外存储m和v两个参数,因…