跳到主要内容

OCR 任务

OCR(光学字符识别)任务用于从图像中提取文本信息。以下是如何使用 OCR 任务的指南。

首先需要从图像中提取出文本的位置,然后裁剪出来文本区域的图像,最后将裁剪后的图像传入 OCR 模型进行识别。

完整的步骤如下:

  • 收集图像
  • 在大图上标注文本区域
  • 训练文本检测模型
  • 裁剪文本区域小图
  • 在小图上标注文本内容
  • 训练 OCR 模型
  • 在测试平台使用模块化任务实施OCR识别
  • 在C#中调用OCR接口

文本区域标注

把需要检测文本的数据准备在一个文件夹,随后使用右键点击文件夹,选择使用labelme打开:

你可以标注矩形,或者旋转框矩形。取决于文本框是否倾斜。

注意:

  • 整个数据集的标注方式要一致
  • 确保所有的文件都被标注

矩形框标注方法:

标注好的矩形框:

训练文本检测模型

检测模型训练方法:

  • 打开训练平台
  • 创建训练任务
  • 选择目标检测或旋转框检测任务
  • 数据集分析
  • 调整数据增强
  • 训练模型
  • 在测试平台中测试模型

打开训练平台

创建训练任务

根据标注的方式选择任务类型:

  • 目标检测:标注的是矩形框
  • 旋转框检测:标注的是旋转框

数据集分析

调整数据增强

在这个例子里面,我们不使用resize以外的数据增强:

训练模型

因为本次训练的数据较少,所以数据倍增10,且为100%训练集

观察训练指标效果:

在测试平台中测试模型

裁剪文本区域小图

使用文本检测模型对大图进行预测,得到文本区域的坐标。然后使用这些坐标裁剪出小图。这个步骤可以在AI测试平台中完成:

裁剪出来的小图:

小图标注文本内容

打开LabelMeAI

使用labelme打开裁剪出来的小图,进行文本内容标注:

标注文本内容

使用快捷键 T 标注文本标记:

标注完成

训练 OCR 模型

与检测模型训练类似,打开训练平台,创建 OCR 任务,选择 OCR 任务类型,数据集分析,调整数据增强,训练模型,测试模型。

创建 OCR 任务

训练参数

OCR 训练参数:

在测试平台使用模块化任务实施OCR识别

在试平台中选择模块化任务

加载模型

分别加载文本检测模型和OCR模型:

识别结果

在C#中调用OCR接口

在我们开源的 OpenIVS 中,有 C# 测试程序,工程名字是 DlcvDemo,可以看到 OCR 接口的调用示例。

加载模型

打开 C# 测试程序,点击 加载OCR模型 按钮,选择检测模型和 OCR 模型:

加载成功后:

识别图像

代码参考

下面是 C# 中调用 OCR 接口的示例代码:

// 加载模型
private dynamic model;
model = new OcrWithDetModel();
model.Load(detModelPath, ocrModelPath, deviceId);
model.SetHorizontalScale(horizontalScale);

// 识别图像
CSharpResult result = model.Infer(image);

https://github.com/dl-cv/OpenIVS/blob/master/DlcvDemo/Form1.cs

识别结果的解析请参考结果定义:

高性能SDK套件 - C#接口