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

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

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 图像处理 机器学习 开源

推荐文章

虚拟DOM渲染器的内部机制
2024-11-19 06:49:23 +0800 CST
api远程把word文件转换为pdf
2024-11-19 03:48:33 +0800 CST
nuxt.js服务端渲染框架
2024-11-17 18:20:42 +0800 CST
Vue3如何执行响应式数据绑定?
2024-11-18 12:31:22 +0800 CST
一些好玩且实用的开源AI工具
2024-11-19 09:31:57 +0800 CST
开发外贸客户的推荐网站
2024-11-17 04:44:05 +0800 CST
PHP 微信红包算法
2024-11-17 22:45:34 +0800 CST
资源文档库
2024-12-07 20:42:49 +0800 CST
四舍五入五成双
2024-11-17 05:01:29 +0800 CST
解决python “No module named pip”
2024-11-18 11:49:18 +0800 CST
Vue3中如何实现响应式数据?
2024-11-18 10:15:48 +0800 CST
Vue 3 中的 Watch 实现及最佳实践
2024-11-18 22:18:40 +0800 CST
Python 获取网络时间和本地时间
2024-11-18 21:53:35 +0800 CST
Go 如何做好缓存
2024-11-18 13:33:37 +0800 CST
最全面的 `history` 命令指南
2024-11-18 21:32:45 +0800 CST
liunx宝塔php7.3安装mongodb扩展
2024-11-17 11:56:14 +0800 CST
支付宝批量转账
2024-11-18 20:26:17 +0800 CST
html流光登陆页面
2024-11-18 15:36:18 +0800 CST
程序员茄子在线接单