ddddocr名字真奇怪是一款强大的基于深度学习的通用开源ocr识别库,具有高效、准确、易用的特点,广泛应用于图像处理和文字识别任务。

常见用处:在爬虫时候 识别验证码

安装

非常easy

1
pip install ddddocr

使用实例

1
2
3
4
5
6
7
8
9
10
import ddddocr

ocr = ddddocr.DdddOcr(show_ad=False) # show\_ad=False关闭广告
with open("./img/img_1.png", "rb") as f1:
im = f1.read()
yzm1 = ocr.classification(im)
with open("./img/img_2.png", "rb") as f2:
im = f2.read()
yzm2 = ocr.classification(im)
print(yzm1, yzm2)

函数解释

当然,以下是对ddddocr库中DdddOcr类及其classification方法的解释,以及如何在上述代码中使用的详细说明:

DdddOcr

DdddOcrddddocr 库中的一个类,用于执行OCR(光学字符识别)任务,特别是针对验证码等复杂字符的识别。

初始化方法(构造函数)

1
ocr = ddddocr.DdddOcr(show_ad=False, det=True, ocr=True, cls=True, gpu=False, path_det_model=None, path_ocr_model=None, path_cls_model=None)
  • show_ad:布尔值,是否显示广告。在上述代码中,设置为 False 以关闭广告。
  • det:布尔值,是否启用检测模型(用于定位图片中的文本区域)。通常,对于验证码识别,这个选项是启用的。
  • ocr:布尔值,是否启用OCR模型(用于识别检测到的文本)。
  • cls:布尔值,是否启用分类模型(用于进一步处理OCR结果,例如将数字识别为特定的验证码字符集)。
  • gpu:布尔值,是否使用GPU进行加速。如果系统中有可用的GPU和相应的CUDA支持,可以设置为 True
  • path_det_model, path_ocr_model, path_cls_model:字符串,分别指定检测、OCR和分类模型的路径。如果未指定,将使用默认的预训练模型。

classification 方法

1
result = ocr.classification(image, det=True, cls=True, box_limit=2000)
  • image:要识别的图片,通常是一个二进制数据或经过预处理的图像数组。
  • det:布尔值,是否启用检测模型。对于验证码识别,通常保持为 True
  • cls:布尔值,是否启用分类模型。对于验证码识别,通常也保持为 True
  • box_limit:整数,限制检测到的文本区域的数量。对于验证码,这个值通常不需要调整,因为验证码通常只包含一个文本区域。

返回值

classification 方法返回一个字符串或字符串列表,表示识别到的字符。对于验证码,通常期望返回一个字符串,因为验证码通常是一个单词或一串连续的字符。

在代码中的使用

在上述代码中,DdddOcr 类被实例化,并且 classification 方法被用来识别两张图片中的验证码。

  1. 实例化 DdddOcr 类,关闭广告显示。
  2. 使用 with open 语句打开每张图片文件,并读取其二进制内容。
  3. 调用 classification 方法,传入图片数据,进行验证码识别。
  4. 打印识别结果。

这个过程对于两张图片是重复的,只是文件路径和存储识别结果的变量名不同。