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
识别结果的解析请参考结果定义: