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

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

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

推荐文章

Go 单元测试
2024-11-18 19:21:56 +0800 CST
对多个数组或多维数组进行排序
2024-11-17 05:10:28 +0800 CST
Manticore Search:高性能的搜索引擎
2024-11-19 03:43:32 +0800 CST
MySQL 日志详解
2024-11-19 02:17:30 +0800 CST
Rust 高性能 XML 读写库
2024-11-19 07:50:32 +0800 CST
Linux 常用进程命令介绍
2024-11-19 05:06:44 +0800 CST
Python 获取网络时间和本地时间
2024-11-18 21:53:35 +0800 CST
Golang 几种使用 Channel 的错误姿势
2024-11-19 01:42:18 +0800 CST
pip安装到指定目录上
2024-11-17 16:17:25 +0800 CST
如何优化网页的 SEO 架构
2024-11-18 14:32:08 +0800 CST
`Blob` 与 `File` 的关系
2025-05-11 23:45:58 +0800 CST
15 个 JavaScript 性能优化技巧
2024-11-19 07:52:10 +0800 CST
Nginx 防止IP伪造,绕过IP限制
2025-01-15 09:44:42 +0800 CST
Java环境中使用Elasticsearch
2024-11-18 22:46:32 +0800 CST
程序员茄子在线接单