开源OCR库之ddddocr

开源OCR库之ddddocr

Administrator 50 2025-02-26

一、前言

  ddddocr 是一个开源的 OCR项目。使用 ddddocr,我们可以处理大多数验证码。该库可以帮助我们识别图片的文字,从而完成自动化领域的任务。

二、安装

1、 从pypi安装

pip install ddddocr

2、 从源码安装

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

注意:请勿直接在ddddocr项目的根目录内直接import ddddocr,请确保你的开发项目目录名称不为ddddocr,此为基础常识。

    本项目基于dddd_trainer 训练所得,训练底层框架位pytorch,ddddocr推理底层抵赖于onnxruntime,故本项目的最大兼容性与python版本支持主要取决于onnxruntime。
    
文件目录说明:
ddddocr 
├── MANIFEST.in
├── LICENSE
├── README.md
├── /ddddocr/
│  │── __init__.py            主代码库文件
│  │── common.onnx            新ocr模型
│  │── common_det.onnx        目标检测模型
│  │── common_old.onnx        老ocr模型
│  │── logo.png
│  │── README.md
│  │── requirements.txt
├── logo.png
└── setup.py

三、使用ddddocr

1、 基础ocr识别能力

  主要用于识别单行文字,即文字部分占据图片的主体部分,例如常见的英数验证码等,本项目可以对中文、英文(随机大小写or通过设置结果范围圈定大小写)、数字以及部分特殊字符;如下图验证码图片识别:
xixi.jpg

import ddddocr
from main import DIR

ocr = ddddocr.DdddOcr()

image = open(DIR + '/img/xixi.jpg', 'rb').read()

result = ocr.classification(image)
print(result)

image.png

  阅读源码可知ddddocr内置有两套ocr模型,默认不会自动切换,可以在初始化ddddocr的时候通过参数进行切换。

image.png

import ddddocr
from main import DIR

ocr = ddddocr.DdddOcr(beta=True)  # 切换为第二套ocr模型

image = open(DIR + '/img/xixi.jpg', 'rb').read()
result = ocr.classification(image)
print(result)

  对于部分透明黑色png格式图片的识别支持: classification 方法 使用 png_fix 参数,默认为False

image.png

 ocr.classification(image, png_fix=True)

如以下图片:

image.png

image.png

image.png

  tips:看了一些开源项目,发现很多人喜欢在每次ocr识别的时候都重新初始化ddddocr,即每次都执行ocr = ddddocr.DdddOcr(),这是错误的,通常来说只需要初始化一次即可,因为每次初始化和初始化后的第一次识别速度都非常慢。

2、 目标检测能力

  主要用于快速检测出图像中可能的目标主体位置,由于被检测出的目标不一定为文字,所以本功能仅提供目标的bbox位置(在⽬标检测⾥,我们通常使⽤bbox(bounding box,缩写是 bbox)来描述⽬标位置。bbox是⼀个矩形框,可以由矩形左上⻆的 x 和 y 轴坐标与右下⻆的 x 和 y 轴坐标确定)。

  如下图检测目标主体位置:

haha.jpg

import ddddocr
import cv2
from main import DIR

det = ddddocr.DdddOcr(det=True)

with open(DIR + "/img/haha.jpg", 'rb') as f:
    image = f.read()

# 调用detection进行文本检测,返回检测到的文本框坐标
bboxes = det.detection(image)
print(bboxes)

im = cv2.imread(DIR + "/img/haha.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)

  绘制后保存的result.jpg

result.jpg

3、 其它能力

  滑块检测、ocr概率输出、自定义OCR训练模型导入

四、总结

  ddddocr 是一款功能全面的开源 OCR 工具,支持验证码识别、目标检测、滑块验证等任务。其安装便捷、易于使用,性能强大,适合自动化处理场景。通过灵活切换模型和参数设置,可以快速实现图像文字识别和检测需求,为自动化需求提供高效助力。