【Python】ddddoc进行OCR识别和目标检测 ——识别验证码和滑块(安装部署+测试代码注释详细)

47 篇文章 16 订阅
4 篇文章 31 订阅


欢迎关注 『Python』 系列,持续更新中
欢迎关注 『Python』 系列,持续更新中

安装部署

gitee已经上传完整项目

在这里插入图片描述

requiremen.txt

coloredlogs==15.0.1
flatbuffers==23.3.3
humanfriendly==10.0
mpmath==1.3.0
numpy==1.24.2
onnxruntime==1.14.1
opencv-python==4.7.0.72
packaging==23.0
Pillow==9.5.0
protobuf==4.22.1
pyreadline3==3.4.1
sympy==1.11.1

插件作者更新地址

作者官方更新地址,但是requirement.txt有点问题,最好用我打包好的解压即用,但是后续获取项目更新用作者的。

https://github.com/sml2h3/ddddocr

项目结构

  • 你的项目
    • ddddocr(存放插件文件)
    • test_pic(存放验证码测试图片)
    • venv(如果你要配置虚拟环境的话)
    • requirements.txt(venv 安装第三方库时用到)
    • 你的测试代码.py(import ddddocr 调用方法)

第一部分 OCR识别部分

# @Time    : 2023/4/8 22:14
# @Author  : 南黎
import ddddocr

#1.初始化一个实例,配置识别模式默认为OCR识别
ocr = ddddocr.DdddOcr()

#2.读取图片
with open("test_pic/OCR_yzm.png", 'rb') as f:
    image = f.read()

#3.给ocr实例传入image图片进行识别,得到ocr内容
ocr_result = ocr.classification(image)
print(ocr_result)#iepv
  • 验证码
    在这里插入图片描述
  • 识别结果
    在这里插入图片描述

第二部分 目标检测部分

# @Time    : 2023/4/9 8:17
# @Author  : 南黎
import ddddocr
import cv2

#1.初始化一个实例,配置识别模式为目标检测
det = ddddocr.DdddOcr(det=True)

#2.读取图片
file_path= "test_pic/ob_yzm.png"#图片路径
result_file_path= "test_pic/result_ob_yzm.png"#保存的结果图片的路径
with open(file_path, 'rb') as f:
    image = f.read()

#3.给det实例传入image图片进行识别
result_poses = det.detection(image)
#打印得到的识别结果,复合列表中表示了每一个框四个顶点的x,y坐标
#[[3, 15, 34, 46], [204, 124, 234, 155], [67, 32, 96, 62], [113, 89, 143, 118], [184, 71, 213, 100], [68, 127, 98, 156], [153, 128, 185, 157]]
print(result_poses)

#4.读取cv2图片对象im
image_cv2 = cv2.imread(file_path)#读取图片路径,但是注意不能带有中文

#5.绘制带有瞄框的cv2图片
for box in result_poses:
    x1, y1, x2, y2 = box
    im = cv2.rectangle(image_cv2, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)

#6.把绘制的图片输出持久化保存
cv2.imwrite(result_file_path, image_cv2)
  • 文字验证码
    在这里插入图片描述
  • 识别结果
    在这里插入图片描述
  • 瞄框内容
    在这里插入图片描述
  • 滑块验证码
    在这里插入图片描述
  • 滑块识别结果
    在这里插入图片描述

总结

大家喜欢的话,给个👍,点个关注!继续跟大家分享敲代码过程中遇到的问题!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2022 mzh

Crated:2022-1-10

欢迎关注 『Python』 系列,持续更新中
欢迎关注 『Python』 系列,持续更新中
【Python安装第三方库一行命令永久提高速度】
【使用PyInstaller打包Python文件】
【更多内容敬请期待】


  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个使用 Selenium 和 Pillow 库识别滑块验证码Python 代码示例: ```python from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from PIL import Image # 初始化浏览器 driver = webdriver.Chrome() driver.get('https://www.example.com') # 找到验证码图片元素和滑块元素 captcha_image = driver.find_element_by_xpath('//*[@id="captcha-image"]') slider_button = driver.find_element_by_xpath('//*[@id="slider-button"]') # 获取验证码图片和滑块位置信息 captcha_location = captcha_image.location slider_location = slider_button.location # 计算滑块相对于验证码图片的偏移量 slider_offset_x = slider_location['x'] - captcha_location['x'] slider_offset_y = slider_location['y'] - captcha_location['y'] # 获取验证码图片 captcha_image_base64 = captcha_image.screenshot_as_base64 captcha_image_data = captcha_image_base64.decode('base64') captcha_image_file = open('captcha.png', 'wb') captcha_image_file.write(captcha_image_data) captcha_image_file.close() # 处理验证码图片,获取有效部分和缺口位置 captcha_image = Image.open('captcha.png') captcha_image = captcha_image.convert('L') captcha_image = captcha_image.crop((0, 0, captcha_image.width - slider_offset_x, captcha_image.height)) captcha_image.save('captcha_cropped.png') captcha_image_data = captcha_image.tobytes() captcha_image_size = captcha_image.size # TODO: 使用机器学习或其他算法识别验证码缺口位置 # 移动滑块完成验证 slider_action = ActionChains(driver) slider_action.click_and_hold(slider_button).perform() slider_action.move_by_offset(captcha_image_size[0] - slider_offset_x, 0).perform() slider_action.release().perform() ``` 需要注意的是,上述代码中的 TODO 部分需要使用机器学习或其他算法来识别验证码缺口位置,这是整个验证码识别过程的核心部分,可根据具体情况选择不同的算法和模型进行实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发现你走远了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值