ddddocr(使用指南new)
ddddocr是一个开源的通用验证码识别工具,旨在通过最简依赖实现高效的验证码识别。以下是ddddocr的使用指南:
1. 环境支持
ddddocr支持多种操作系统和Python版本:
系统 | CPU | GPU | 最大支持Python版本 | 备注 |
---|---|---|---|---|
Windows 64位 | √ | √ | 3.12 | 部分版本Windows需要安装VC运行库 |
Windows 32位 | × | × | ||
Linux 64 / ARM64 | √ | √ | 3.12 | |
Linux 32 | × | × | ||
macOS X64 | √ | √ | 3.12 | M1/M2/M3芯片参考Issue #67 |
2. 安装方法
您可以通过以下两种方式安装ddddocr:
从PyPI安装:
pip install ddddocr
从源码安装:
git clone https://github.com/sml2h3/ddddocr.git
cd ddddocr
python setup.py install
注意:请勿直接在ddddocr项目的根目录内使用import ddddocr,确保您的开发项目目录名称不为ddddocr。
3. 基础OCR识别
ddddocr主要用于识别单行文字,如常见的英数字符验证码等。
示例代码:
import ddddocr
ocr = ddddocr.DdddOcr()
with open("example.jpg", "rb") as f:
image = f.read()
result = ocr.classification(image)
print(result)
切换OCR模型:
ddddocr内置两套OCR模型,默认情况下不会自动切换。您可以在初始化时通过参数进行切换:
import ddddocr
ocr = ddddocr.DdddOcr(beta=True) # 切换为第二套OCR模型
with open("example.jpg", "rb") as f:
image = f.read()
result = ocr.classification(image)
print(result)
处理透明背景的PNG图片:
对于部分透明黑色PNG格式图片的识别,使用png_fix参数:
result = ocr.classification(image, png_fix=True)
注意:请避免在每次OCR识别时重新初始化ddddocr,即每次都执行ocr = ddddocr.DdddOcr()。通常来说,只需初始化一次即可,因为每次初始化和初始化后的第一次识别速度都较慢。
4. 目标检测功能
ddddocr还提供目标检测功能,用于快速检测图像中的目标主体位置。
示例代码:
import ddddocr
import cv2
det = ddddocr.DdddOcr(det=True)
with open("test.jpg", "rb") as f:
image = f.read()
bboxes = det.detection(image)
print(bboxes)
im = cv2.imread("test.jpg")
for bbox in bboxes:
x1, y1, x2, y2 = bbox
im = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)
cv2.imwrite("result.jpg", im)
5. 滑块验证码检测
ddddocr提供滑块验证码检测功能,适用于不同类型的滑块验证码。
算法1:通过滑块图像的边缘在背景图中计算找到相对应的坑位。
import ddddocr
det = ddddocr.DdddOcr(det=False, ocr=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)
print(res)
算法2:通过比较两张图的不同之处判断滑块目标坑位的位置。
import ddddocr
slide = ddddocr.DdddOcr(det=False, ocr=False)
with open('bg.jpg', 'rb') as f:
target_bytes = f.read()
with open('fullpage.jpg', 'rb') as f:
background_bytes = f.read()
res = slide.slide_comparison(target_bytes, background_bytes)
print(res)
6. 自定义OCR模型导入
ddddocr支持导入自定义训练的OCR模型。
示例代码:
import ddddocr
ocr = ddddocr.DdddOcr(
det=False,
ocr=False,
import_onnx_path="myproject.onnx",
charsets_path="charsets.json"
)
with open('test.jpg', 'rb') as f:
image_bytes = f.read()
res = ocr.classification(image_bytes)
print(res)
7. 版本控制
该项目使用Git进行版本管理。您可以在GitHub仓库查看当前可用版本。
8. 相关资源
ddddocr GitHub仓库:ddddocr项目的官方仓库,包含最新的代码、文档及问题追踪。
dddd_trainer GitHub仓库:自定义训练模型的工具库,用于扩展ddddocr的功能。
总结
ddddocr 是一个高效且易于使用的验证码识别和目标检测工具,适合多种场景的快速集成和使用。通过丰富的接口和简化的操作流程,开发者可以在多种环境下灵活部署该工具。同时,提供的滑块验证功能和自定义模型支持使得ddddocr具备更高的扩展性。如果您需要高性能的验证码识别解决方案,ddddocr是一个值得尝试的选择。
推荐使用场景:
通用的字符验证码识别。
图片目标检测和框选。
滑块验证码的快速定位。