首页 > 编程语言 >python 识别图片验证码/滑块验证码准确率极高的 ddddocr 库

python 识别图片验证码/滑块验证码准确率极高的 ddddocr 库

时间:2024-07-07 09:10:53浏览次数:15  
标签:img 滑块 python bytes 验证码 ddddocr ocr png

前言

验证码的种类有很多,它是常用的一种反爬手段,包括:图片验证码,滑块验证码,等一些常见的验证码场景。
识别验证码的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)

保存后的图片

标签:img,滑块,python,bytes,验证码,ddddocr,ocr,png
From: https://www.cnblogs.com/huangcong/p/18288175

相关文章

  • python简单操作
    一.输出九九乘法表row=1whilerow<=9:  col=1  whilecol<=row:    print("%d*%d=%d"%(row,col,row*col),end="\t")    #\t在控制台输出一个制表符,协助文本垂直方向上对齐    #\n换行符\"可输出双引号 ......
  • Shopee虾皮api python获取虾皮购物平台的商品数据信息 数据采集
    虾皮购物(英语:Shopee)是一个电商平台,总公司设在新加坡,归属于SeaGroup(之前称之为Garena),该企业于2009年由李小冬(ForrestLi)创办。虾皮购物于2015年初次在新加坡推出,现阶段已拓展到马来西亚、泰国、印度尼西亚、越南和菲律宾。虾皮购物为全球华人地区的客户提供线上购物和销售......
  • Appium+python自动化(四十二)- 寿终正寝完结篇 - 结尾有惊喜,过时不候(超详解)
    1.简介 按照上一篇的计划,今天给小伙伴们分享执行测试用例,生成测试报告,以及自动化平台。今天这篇分享讲解完。Appium自动化测试框架就要告一段落了。2.执行测试用例&报告生成 测试报告,宏哥已经讲解了testng、HTMLTestRunner、allure等等,今天就在讲解一个新的测试报告BSTest......
  • python socket模块实现上传文件到服务器
    socket模块文件上传案例catserver.py#-*-coding:UTF-8-*-importsocketsock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.bind(('0.0.0.0',8001))#127.0.0.1或查看自己局域网本地IP地址sock.listen(1)conn,addr=sock.accept()#接收......
  • python速通(函数)
    (网页的生成)牛客网的某个网页基本已经写好了,最后一步为了适应手机的尺寸,需要将高度增加一倍。为了适用于多个网页,牛牛希望你能将这个功能定义为一个函数,函数输入网页高度h,输出增加后的结果。defiheight(h):returnh*2h1,h2=map(int,input().split())print(iheight......
  • python随笔day02
    1.arg元组类型和**kwargs字典类型#元组参数:元组类型数据,对传递参数有顺序要求deftest(*args):print(f"args[0]={args[0]},args[1]={args[1]},args[2]={args[2]}")test(1,2,3)#字典参数:字典类型数据,对传递参数没有顺序要求,格式要求key=value值deftest2(**kwargs):......
  • Python学习
    目录7-1jmu-python-判断闰年7-2jmu-python-素数7-3jmu-python-找字符7-4计算表达式(*,//,%)7-5客户评级7-6运输打折问题7-7水仙花数7-8生成输入数的乘方表7-9输出字母在字符串中位置索引7-10通过两个列表构建字典7-11jmu-python-重复元素判定7-12求集合......
  • python练习01
    练习if语句age=int(input('请输入年龄'))ifage<10:print('还是个小屁孩')elif10<age<20:print('青春期叛逆的小孩')elif30<age<40:print('老大不小了,赶紧结婚,小屁孩')elif40<age<50:print('家里有个不听话的小屁孩')elif50<......
  • python数据容器(二)元组
    1.数据容器:tuple(元组)(1)定义t1=(1,"Hello",True)t2=()t3=tuple()print(f"t1的类型是:{type(t1)},内容是:{t1}")print(f"t2的类型是:{type(t2)},内容是:{t2}")print(f"t3的类型是:{type(t3)},内容是:{t3}")运行结果:(2)定义单个元素的元素t1=("hel......
  • opencv环境搭建-python
    最近遇到了一些图像处理的需求,所以需要学习一下opencv,来记录一下我的学习历程。安装numpypipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplenumpy安装matplotlibpipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplematplotlib安装opencvpipin......