OCR工具介绍#

章节目标#

  • 了解在什么场景下应该选用OCR工具

  • 了解OCR工具中配置器和算子的连接关系

  • 了解OCR工具中的配置器和算子

支持的使用场景#

  • 字符识别:用于读取图中的字符,给出每个字符的位置以及类别,并支持以字符串的形式输出识读结果。适用于工业场景对打码内容(序列号、生产日期等)进行校验等场景。训练简单,甚至简单场景无需训练,易于部署;具备轻量级的特点,可运行于嵌入式平台。

OCR工具中配置器和算子的连接关系#

OCR工具中的配置器#

标签类别参数配置器(label_classes.conf)#

  • 描述:用于配置OCR工具中可能出现的字符类别列表(visionflow::param::LabelClasses),例如[A, B, C, …, Z, 0, 1, …, 9],字符标签列表会被用于标注器以提前确定类别范围。

Warning

  • 背景类为默认类别,不需要显式设置在LabelClasses中

  • 不能出现重复的字符类别名。

  • 每个标注仅能为单个字符。

标注器参数配置器(label_oper.conf)#

  • 描述:用于配置标注器的自定义附加参数(visionflow::param::BinaryPacks),例如不同标注类别对应的标注样式(纹理、颜色、线宽、线型等)。为了生成OCR工具所需要的字符标注,在OCR工具中我们引入了标注器算子,由于目前标注过程需由人工标注产生,所以标注器算子中的执行逻辑交由人工操作实现。

图像均值配置器(image_mean_conf)#

  • 描述:用于计算训练集中的视图的灰度均值,灰度均值会被用于训练及推理过程中对输入视图进行提前减均值操作。

  • 基本原理:统计训练集中所有视图各通道的灰度总和并除以训练集图像总数。

OCR工具训练器(trainer)#

  • 描述:基于AI算法的OCR工具训练器,用于生成OCR工具模型。

OCR通用识别模型配置器(universal_conf)#

  • 描述:该配置器负责生成OCR通用识别模型。该模型已经经过预训练,具备直接对大多数场景进行有效识别的能力。

Warning

  • 调用该配置器会覆盖已有的模型。在执行此操作前,建议备份你的原始模型,以防止数据丢失。

OCR工具中的算子#

标注器算子(label_oper)#

  • 描述:用于生成某张图像上的字符标注、掩模和不学习区域。标注器算子在当前OCR工具中是一个占位算子,实际无法自动运行,需要交给标注器开发者自己触发运行。

  • 如何产生标注:通过直接给label_oper算子设置输出对应的字符标注、不学习区域(VFLOW:Without-Training)来完成标注过程。

Warning

  • 字符标注需要根据所在视图的状态(已标注在训练集在中(train)、已标注在测试集中(test)、已标注未知集合(unknown))来进行相应的状态更新,否则会影响view_tagger的正常功能

视图标签算子(view_tagger)#

  • 描述:在visionflow中,视图有四种状态,已标注在训练集在中(train)、已标注在测试集中(test)、已标注未知集合(unknown)、未标注(unlabel)。当OCR工具的前序工具的推理结果发生改变时,view_tagger可以复用之前已有的标注用于生成新的视图的状态。

  • 基本原理:在标注器算子中,生成的标注均带有标签,以表示某个标注是在train、test、unknown状态,当前序工具推理结果发生改变并生成新的view时,会计算新的view和当前已有标注的IOU值,若某个view能找到CIOU大于指定阈值的标注,则将该标注的状态赋予该view。

推理算子(infer)#

  • 描述:推理输入的视图,并根据预设的阈值对结果进行筛选。它只保留概率值超过该阈值的识别结果,并通过非极大值抑制(NMS)操作减少重复的检测结果。最终,算子将输出经过筛选的字符识别结果,其类型为 visionflow::props::MultiNamesPolygonRegionList

推理结果模板匹配算子(infer_string_matcher)#

标注模板匹配算子(truth_string_matcher)#

推理结果比对算子(comparator)#

  • 描述:计算推理结果和对应标注的相似性,得到最终模型效果的评价指标:字符召回率、字符精确率。

  • 基本原理:参考 模型评估