综合 Python 实现验证码识别:使用 Ddddocr 库

2024-11-18 18:38:02 +0800 CST views 744

Python 实现验证码识别:使用 Ddddocr 库

前言

在自动化任务中,验证码识别是一项具有挑战性的任务。Ddddocr 是一个开源的 OCR 库,能帮助开发者处理各种验证码和图片中的文字识别。它基于 pytorchonnxruntime,兼容性良好,能够处理中文、英文、数字以及特殊字符。

官方项目地址:ddddocr GitHub

安装方法

从 pypi 安装

可以通过 pip 安装 ddddocr 库:

pip install ddddocr

从源码安装

如果 pip 安装存在问题,可以从源码安装:

git clone https://github.com/sml2h3/ddddocr.git
cd ddddocr
python setup.py install

注意: 不要在ddddocr项目的根目录直接执行 import ddddocr,也不要将项目目录命名为 ddddocr,以避免模块冲突。

文件目录结构

项目基于 dddd_trainer 进行训练,使用 pytorch 作为训练框架,推理过程则依赖于 onnxruntime

ddddocr
├── ddddocr/
│   ├── __init__.py
│   ├── common.onnx  # 新的OCR模型
│   ├── common_det.onnx  # 目标检测模型
│   ├── common_old.onnx  # 旧的OCR模型
├── README.md
├── setup.py

使用文档

基础 OCR 识别

ddddocr 主要用于识别图片中的文字,如验证码等。下面是一个简单的识别示例:

import ddddocr

# 初始化 OCR 对象
ocr = ddddocr.DdddOcr()

# 读取图片并进行OCR识别
image = open("example.jpg", "rb").read()
result = ocr.classification(image)
print(result)

使用第二套模型

如果需要切换到第二套OCR模型:

ocr = ddddocr.DdddOcr(beta=True)

image = open("example.jpg", "rb").read()
result = ocr.classification(image)
print(result)

支持透明图片的识别

对于黑色透明的 png 图片,可以使用 png_fix 参数:

result = ocr.classification(image, png_fix=True)

提示: 避免在每次OCR识别时都重新初始化 ddddocr,因为初始化后的第一次识别速度较慢。建议只初始化一次。

目标检测功能

除了OCR识别外,ddddocr 还能检测图像中的目标区域(返回目标的边界框 bbox),特别适合用来检测图像中的主体物体。示例:

import ddddocr
import cv2

# 初始化对象,启用目标检测
det = ddddocr.DdddOcr(det=True)

# 读取图片并进行目标检测
image = open("21.png", 'rb').read()
bboxes = det.detection(image)
print(bboxes)  # 输出目标区域的坐标

# 使用 OpenCV 绘制检测结果
im = cv2.imread("21.png")
for bbox in bboxes:
    x1, y1, x2, y2 = bbox
    im = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)

# 保存结果图像
if im is not None and im.size != 0:
    cv2.imwrite("result.jpg", im)
else:
    print("Error: 处理后的图像是空的,无法保存。")

其他能力

ddddocr 还具备一些高级功能,比如:

滑块检测

ddddocr 提供了滑块检测功能,使用 opencv 实现,适用于处理滑块验证码的场景。

OCR 结果概率输出

ddddocr 支持返回识别结果的概率分布。通过 probability=True 参数,可以返回每个字符的识别概率:

result = ocr.classification(image, probability=True)

自定义 OCR 训练模型

开发者可以导入自定义训练的 OCR 模型,增强识别效果。

实际测试

可以从一些常见的验证码服务平台(如网易、腾讯的验证码服务)获取图片进行测试。ddddocr 在处理这类验证码时表现良好,能够成功识别大多数场景中的验证码内容。

总结

ddddocr 是一个功能强大且易于使用的 Python OCR 库,特别擅长处理验证码和单行文本的识别任务。它支持透明图片的处理、目标检测以及自定义模型导入。通过简单的初始化和调用,就能快速完成图片文字的识别和目标检测任务。

对于需要处理验证码或OCR识别的项目,ddddocr 无疑是一个理想的选择。

复制全文 生成海报 Python OCR 图像处理 机器学习 开源

推荐文章

在 Rust 中使用 OpenCV 进行绘图
2024-11-19 06:58:07 +0800 CST
imap_open绕过exec禁用的脚本
2024-11-17 05:01:58 +0800 CST
Golang 中你应该知道的 noCopy 策略
2024-11-19 05:40:53 +0800 CST
Vue 3 中的 Fragments 是什么?
2024-11-17 17:05:46 +0800 CST
任务管理工具的HTML
2025-01-20 22:36:11 +0800 CST
关于 `nohup` 和 `&` 的使用说明
2024-11-19 08:49:44 +0800 CST
JavaScript设计模式:适配器模式
2024-11-18 17:51:43 +0800 CST
一个有趣的进度条
2024-11-19 09:56:04 +0800 CST
FcDesigner:低代码表单设计平台
2024-11-19 03:50:18 +0800 CST
mendeley2 一个Python管理文献的库
2024-11-19 02:56:20 +0800 CST
html文本加载动画
2024-11-19 06:24:21 +0800 CST
Vue3 结合 Driver.js 实现新手指引
2024-11-18 19:30:14 +0800 CST
Vue3中哪些API被废弃了?
2024-11-17 04:17:22 +0800 CST
Go语言中的mysql数据库操作指南
2024-11-19 03:00:22 +0800 CST
为什么大厂也无法避免写出Bug?
2024-11-19 10:03:23 +0800 CST
php微信文章推广管理系统
2024-11-19 00:50:36 +0800 CST
Vue 中如何处理父子组件通信?
2024-11-17 04:35:13 +0800 CST
程序员茄子在线接单