一、前言
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通过设置结果范围圈定大小写)、数字以及部分特殊字符;如下图验证码图片识别:
import ddddocr
from main import DIR
ocr = ddddocr.DdddOcr()
image = open(DIR + '/img/xixi.jpg', 'rb').read()
result = ocr.classification(image)
print(result)
阅读源码可知ddddocr
内置有两套ocr模型,默认不会自动切换,可以在初始化ddddocr
的时候通过参数进行切换。
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
。
ocr.classification(image, png_fix=True)
如以下图片:
tips:看了一些开源项目,发现很多人喜欢在每次ocr识别的时候都
重新初始化ddddocr
,即每次都执行ocr = ddddocr.DdddOcr()
,这是错误的,通常来说只需要初始化一次即可,因为每次初始化和初始化后的第一次识别速度都非常慢。
2、 目标检测能力
主要用于快速检测出图像中可能的目标主体位置
,由于被检测出的目标不一定为文字,所以本功能仅提供目标的bbox位置(在⽬标检测⾥,我们通常使⽤bbox(bounding box,缩写是 bbox)来描述⽬标位置。bbox是⼀个矩形框,可以由矩形左上⻆的 x 和 y 轴坐标与右下⻆的 x 和 y 轴坐标确定)。
如下图检测目标主体位置:
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
:
3、 其它能力
滑块检测、ocr概率输出、自定义OCR训练模型导入
四、总结
ddddocr
是一款功能全面的开源 OCR 工具,支持验证码识别、目标检测、滑块验证等任务。其安装便捷、易于使用,性能强大,适合自动化处理场景。通过灵活切换模型和参数设置,可以快速实现图像文字识别和检测需求,为自动化需求提供高效助力。