Python中识别图片/滑块验证码准确率极高的ddddocr库详解
作者:上海-悠悠 发布时间:2021-10-05 05:20:17
标签:Python,ddddocr,识别,验证码
前言
验证码的种类有很多,它是常用的一种反爬手段,包括:图片验证码,滑块验证码,等一些常见的验证码场景。
识别验证码的python 库有很多,用起来也并不简单,这里推荐一个简单实用的识别验证码的库 ddddocr (带带弟弟ocr)库.
环境准备
python 版本要求小于等于python3.9 版本
pip 安装
pip install ddddocr
下载的安装包比较大,一般用国内的下载源可以加快下载速度
pip install ddddocr -i https://pypi.douban.com/simple
github地址 https://github.com/sml2h3/ddddocr
快速开始
先随便找个纯英文的验证码,保持为a1.png
代码示例
import ddddocr # 导入 ddddocr
ocr = ddddocr.DdddOcr() # 实例化
with open('a1.png', 'rb') as f: # 打开图片
img_bytes = f.read() # 读取图片
res = ocr.classification(img_bytes) # 识别
print(res)
运行结果
已经能识别到 xnen ,但是会出现"欢迎使用ddddocr,本项目专注带动行业内卷…"提示语, 可以加一个参数show_ad=False
import ddddocr # 导入 ddddocr
ocr = ddddocr.DdddOcr(show_ad=False) # 实例化
with open('a1.png', 'rb') as f: # 打开图片
img_bytes = f.read() # 读取图片
res = ocr.classification(img_bytes) # 识别
print(res)
图片验证码
识别一下三种验证码
代码示例
import ddddocr # 导入 ddddocr
ocr = ddddocr.DdddOcr(show_ad=False) # 实例化
with open('a2.png', 'rb') as f: # 打开图片
img_bytes = f.read() # 读取图片
res2 = ocr.classification(img_bytes) # 识别
print(res2)
with open('a3.png', 'rb') as f: # 打开图片
img_bytes = f.read() # 读取图片
res3 = ocr.classification(img_bytes) # 识别
print(res3)
with open('a4.png', 'rb') as f: # 打开图片
img_bytes = f.read() # 读取图片
res4 = ocr.classification(img_bytes) # 识别
print(res4)
运行结果
giv6j
zppk
4Tskh
滑块验证码
滑块验证码场景如下场景示例
先抠出2张图片,分别为background.png 和 target.png
解决问题的重点是计算缺口的位置
import ddddocr
det = ddddocr.DdddOcr(det=False, ocr=False, show_ad=False)
with open('target.png', 'rb') as f:
target_bytes = f.read()
with open('background.png', 'rb') as f:
background_bytes = f.read()
res = det.slide_match(target_bytes, background_bytes, simple_target=True)
print(res)
运行结果
{'target_y': 0, 'target': [184, 58, 246, 120]}
target 的四个值就是缺口位置的左上角和右下角的左边位置
识别中文
识别图片上的文字
import ddddocr
import cv2
det = ddddocr.DdddOcr(det=True)
with open("test.png", 'rb') as f:
image = f.read()
poses = det.detection(image)
im = cv2.imread("test.png")
for box in poses:
x1, y1, x2, y2 = box
im = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)
cv2.imwrite("result.jpg", im)
保存后的图片
来源:https://blog.csdn.net/qq_27371025/article/details/129147852
0
投稿
猜你喜欢
- 前言:python利用matplotlib库中的plt.ion()函数实现即时数据动态显示:1.非定长的时间轴代码示例:# -*- codi
- 带你走进数据类型一:整数、浮点数Python中整数和浮点数的定义以及运算和C++都是一样的,我在这里就不需多说了,我就说明一点:Python
- Python “TypeError: unhashable type: ‘dict&rsqu
- python是解释型语言,本文介绍了Python下利用turtle实现绘图功能的示例,本例所示为Python绘制一个树枝,具体实现代码如下:
- 下面是滚动条css代码参数介绍:scrollbar-3d-light-color 设置或检索滚动条亮边框颜色 scrollbar-highl
- python解释器有好多版本,Anaconda里面包含了python解释器,并且包含了很多其他的工具包,所以我们只安装1个Anaconda即
- 下面是Sql Server 和 Access 操作数据库结构的常用Sql,希望对你有所帮助。内容由海娃整理,不正确与不完整之处还请提出,谢谢
- 用于匹配的正则表达式为 :([1-9]\d*\.?\d*)|(0\.\d*[1-9])([1-9] :匹配1~9的数字;\d :匹配数字,包
- 一、创建虚拟环境(1)打开cmd命令窗口(2)创建虚拟环境 conda create -n mydjango_env(3)查看虚拟环境 co
- 一、错误案例package mainimport ("fmt""time")var TestMap
- What do the ->, => and :: symbols mean?The -> is the "in
- @property有什么用呢?表面看来,就是将一个方法用属性的方式来访问.上代码,代码最清晰了.class Circle(object):
- 写在前面:从昨晚的梦里回忆起数据管理的作业:实现一个自己的选题----毕业生信息管理系统,实现学生个人信息基本的增删改查,我想了想前段时间刚
- 第一招、mysql服务的启动和停止net stop mysqlnet start mysql第二招、登陆mysql语法如下: mysql -
- (一)关于体验约瑟夫.派恩和詹姆士.吉尔摩在《体验经济》一书中提出其观点:所谓“体验”就是企业以商品为道具,以服务为舞台,以顾客为中心,创造
- 分享由字符“\”转义引起的SQL数据库实例名称找不到或远程连接失败并显示错误error40的解决办法:一、问题介绍很久没有用c#去连数据库程
- 1.matplotlib简介matplotlib 库是 Python 中绘制二维和三维图表的数据可视化工具特点: &
- 1. 概述在看代码的时候发现基本上都是用 querySelector() 和 querySelectorAll() 来获取元素,疑惑为什么不
- 1.介绍Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具; go te
- 使用方法很简单,如果你有两个站,把这段代码放在访问高的那个站来刷自己的新站,放在那个文件里面呢?就放在INDEX里面吧.或者公用的头或者尾!