跳转到内容
STAGING SERVER
DEVELOPMENT SERVER

OCR vTool#

OCR vTool 可执行光学字符识别,允许您读取图像中的文本(即单词)。

光学字符识别的主要目标是识别图像中的物体或读取物体上的特定信息,例如保质期、序列号或产品标签。

OCR vTool 通过 Image 输入 pin 接受图像。文本以及结果单词的分割区域通过 Texts 和 Regions 输出 pin 输出。

要购买 OCR vTool 的许可证,请访问 Basler 网站。

OCR vTool

运作原理#

在指定的 ROI 中,OCR vTool 将文本分割为单词和单个字符,并对每个字符进行分类(即作为字母、数字或特殊字符,例如标点符号)。

尽管名称如此,但 OCR vTool 不读取单个字符,而是读取单词。最小单词长度为 2 个字符。

如果您的文本跨越多行,则每一行至少被视为一个单词。如果单行内的单词之间存在较大间距,算法会将这些单词视为不同的实体。

4 步向导将指导您完成 vTool 的配置。它会针对您的设置产生的影响提供即时反馈。请参阅以下部分以了解有关各个步骤的更多信息。

预览区域#

预览区域是一个实用的工具,可用于立即检查您在 vTool 设置中所做的任何更改。

预览区域上方有两个按钮,一个用于切换显示分割区域和识别字符周围的边界框,另一个用于高亮显示区域。

预览区域显示边界框、识别出的字符和区域高亮显示

显示边界框与识别的字符#

通过此按钮可以显示/隐藏分段区域周围的边界框:

显示/隐藏边界框和识别出的字符

在每个识别出的字符上方,会显示对应的识别结果。这可让您快速验证识别过程是否正确运行。

关闭区域高亮显示的预览区域

高亮显示区域#

通过此按钮可以高亮显示分段区域:

高亮显示区域图标

这有助于更轻松地查看字符是已被完整识别还是仅被部分识别。对于微调分段设置(例如对比度)非常有用。

隐藏了边界框和识别出字符的预览区域

第 1 步:初始设置#

首先加载一张合适的示教图像,可以是从磁盘加载,也可以使用实时相机图像。就以下方面而言,示教图像必须能够代表检测图像:

  • 文本的位置和方向
  • 字符的大小(如果您是手动指定 character dimensions)
    在自动模式下,字符的大小允许有所变化。

Basler 建议在配置 OCR vTool 时使用多张不同的样本图像。这样,您可以更好地评估文本的图像品质,并检查分段结果以及候选字符的置信度。这些样本图像最好能够涵盖您在应用中期望出现的所有字符集。

矩形设置#

加载图像后,图像中会显示一个矩形。该矩形用于标记文本所在的区域。您可以通过拖动矩形的手柄,或在预览区域左侧的输入框中手动输入数值,来调整其位置、方向和大小。

该区域必须仅包含您想要读取的文本,因为 OCR 算法无法区分字符与不需要的图像元素(杂波)或噪声。如果无法完全避免杂波或噪声,您应采取适当的措施,例如添加后处理步骤或添加其他 OCR vTool 以定义多个文本区域。此外,切勿将矩形紧紧贴着文本,因为文本在不同图像之间可能会在各个方向上发生微小的移动。

在定义区域时,请注意穿过区域矩形的箭头。它指示了阅读方向。无法读取其他方向延伸的文本。

为了让 OCR vTool 稳定运行,您要处理的所有图像中的文本方向应当大致相同。允许存在几度以内的微小偏差。Basler 建议调整相机的位置,以便能够从左到右阅读文本。如果您的文本具有不同(但固定)的方向,请相应地调整区域矩形的位置,同时确保箭头指向文本的阅读方向。

如果文本的位置变化很大且文本周围的背景空间有限,您应添加 Image Alignment 作为预处理步骤,以确保文本的方向和位置稳定。

这是一个样本图像,其中的矩形经过了微调旋转以跟随文本。

OCR Basic vTool - 矩形设置示例

字体设置#

选择适合图像中文本的字体和相应的字符集。通常,这由应用规范或打印工艺决定。

下表列出了可用的字体并显示了其外观示例:

字体名称 描述 外观
标准混合 不同的字体,带或不带衬线,通常用于文档中 标准混合字体
标准无衬线字体 不同的无衬线办公字体,通常用于文档中 标准无衬线字体
OCR-A 如 OCR-A 标准中所定义 OCR-A 字体
OCR-B 如 OCR-B 标准中所定义 OCR-B 字体
点阵打印 由点阵打印机生成的不同点阵打印字体 点阵字体
Pharma 制药行业中使用的无衬线字体 Pharma 字体
SEMI SEMI 标准中定义的半导体行业所用字体 SEMI 字体
手写 手写数字 手写字体

根据字体的不同,提供不同的字符集。字符集可包含以下部分或全部子集:

  • 大写字母
  • 小写字母
  • 数字
  • 特殊字符
    可识别的特殊字符因字体而异。

下表列出了每种字体可识别的字符:

字体名称 大写字母 小写字母 数字 特殊字符
标准混合 是 是 是 - = + < > . # $ % & ( ) @ * e £ ¥
标准无衬线字体 是 是 是 - / + . $ % * e £ ¥
OCR-A 是 是 是 - ? ! / { } = + < > . # $ % & ( ) @ * e £ ¥
OCR-B 是 是 是 - ? ! / { } = + < > . # $ % & ( ) @ * e £ ¥
点阵打印 是 无 是 - / . * :
Pharma 是 无 是 - / . ( ) :
SEMI 是 无 是 - .
手写 无 无 是 不适用

拒绝类别#

拒绝类别(Rejection class)允许您处理不确定的结果,即 vTool 无法识别的字符。这些字符被分类为拒绝字符,并且根据它们在 pylon Viewer 中的显示位置,由不同的问号图标表示。

此图标用于设置对话框中:

设置对话框中拒绝类别的问号图标

此图标用于引脚数据视图中:

引脚数据视图中拒绝类abler的问号图标

使用拒绝类别可以更好地评估结果的置信度。除了解析字符与训练字体的契合度之外,置信度还反映了字符的打印或图像 Quality。

如果置信度最高的结果位于拒绝类别中,则图像的该部分无法明确分配给某个字符。这可能是由图像中的污迹或未完全打印的字符引起的。如果这种情况频繁发生,则说明图像 Quality 较差。在这种情况下,您可以尝试提高图像 Quality,或者在后处理步骤中将此类字符声明为不可读。采用这种方法,您可以更稳妥地选择置信度较低的字符。

如果您的分类结果经常出现不确定,您可以考虑使用正则表达式来执行单词纠错。

如果您希望始终返回一个字符,请禁用 Allow rejections 选项。

为了找到适合您的设置,请尝试启用和禁用该选项,并观察步骤 4 中的结果在候选项列表和识别到的单词方面有何不同。

第 2 步:字符尺寸#

字符分割依赖于对字符尺寸(即宽度、高度和笔画宽度)的一些假设。OCR vTool 支持一种自动算法,可直接从图像数据中推导这些尺寸。或者,您也可以手动指定所需的尺寸范围。20 到 30 像素的字符高度是一个合适的尺寸范围,但您也可以指定更大的字符尺寸。20 像素以下的字符将无法再可靠地识别。

信息

如果文本中或不同图像之间的字符大小有所变化,请使用自动模式。这样,无论大小如何,都可以读取所有字符。

手动指定尺寸的典型用例是自动模式无法排除分割中的杂波。在这种情况下,手动指定尺寸可能会消除不需要的图像元素。

第 3 步:分割设置#

对比度#

图像中字符的分割基于阈值机制,并将指定的最小对比度值作为阈值。调整最小对比度并在预览区域中观察分割结果。使用预览区域上方的切换按钮启用区域分割视图,以获得更好的可视化效果。

选择一个最小对比度设置,在该设置下所有字符都能被正确分割和读取。请勿将最小对比度设置得太低,因为这可能会导致检测到不需要的杂波。

可用的字体经过训练,仅适用于浅色背景上的深色字符。如果此 Polarity 设置适合您的应用,请使用 Dark on light 选项。

如果您的应用涉及深色背景上的浅色字符,则必须使用 Light on dark 选项。在这种情况下,图像将在预处理步骤中在内部进行反转。

如果您的应用涉及比背景更亮或更暗的文本,请选择 Both 选项。但是,OCR vTool 无法读取极性混合的文本。在文本区域内,极性必须保持一致。

间距#

单词还可以包含点、逗号、连字符等特殊字符。其中大部分是标点符号。不过,连字符和等号被视为分隔符。

在某些应用中,您可能需要读取这些字符。在这种情况下,请选择包含特殊字符的字符集,并启用 Punctuation 和 Separators 选项。

在其他应用中,您可能希望在没有标点符号或分隔符的情况下读取单词,例如在读取日期时,您只对读取数字感兴趣。因此,请选择纯数字字符集,并禁用 Punctuation 和 Separators 选项。

在间距方面,您还必须考虑单个字符之间的距离。为了成功将文本分割为各个独立的区域,字符之间必须有相当大的间距。但在实际应用中,字符往往靠得太近,导致难以区分。如果您在应用中遇到这种情况,请启用 Separate touching characters option 选项。

点阵打印#

Dot Print 字体与其他所有字体类型不同,其字符完全由单独的点组成,而不是连续的笔画。为了读取点阵打印文本,OCR vTool 提供了专门的分割和分类选项。要使用这些选项,您必须在向导的 step 1 中选择 Dot Print 字体。字符之间有足够大的间距且采用紧凑点阵打印方案的常规点阵打印字符可以直接读取。

对于字符之间的间距类似于或小于字符内点之间的间距的点阵打印文本,Basler 建议启用 Tight character spacing 选项。

为了成功分割,您还必须考虑字符各点之间的间距。在紧凑的点阵打印方案中,点彼此靠得很近,且间距大小没有变化。启用默认设置的 Auto 选项可以很好地读取此类字符。在这种情况下,系统将使用内部的自动模式。

但是,如果某些间距大于其他间距,则单个字符的分割可能会失败,并且该字符会被拆分为多个区域。在这种情况下,使用 Max. dot gap 选项手动指定允许的最大点间距可能会有所帮助。不过,这样做可能会增加处理时间。

第 4 步:结果#

向导的最后一步会向您显示一个表格,其中包含单词中每个字符位置的潜在候选字符以及置信度值。如果您点击表格中的某个条目,预览区域中相应的边界框将被选中,反之亦然。

通过展开下拉列表,您可以查看所有候选字符。它们按置信度降序排列。这使您可以评估字符分类的整体置信度,并向您显示潜在的替代选项。

信息

置信度是一个介于 0 和 1 之间的值。它表明了字符识别的效果。非常好的分类结果通常具有高于 0.99 的置信度值。低于 0.9 或 0.8 的置信度值可能表示分类不可靠。

表格下方是 Text Recognized 区域。此处以紧凑的形式显示已识别的完整文本。

正则表达式#

OCR 面临的一个典型挑战是字符 0、O 和 o 之间的歧义。OCR-A 或 SEMI 等显式 OCR 字体旨在区分 0 和 O,但其他字体则不然。您可以在正则表达式的帮助下解决这一挑战。

正则表达式允许您执行单词纠错。单词纠错意味着不仅采用置信度最高的候选字符,还将其他候选字符考虑在内,以尝试找到符合正则表达式的候选字符组合。

为此,请在结果表格上方的输入框中输入与文本中的单词数量一样多的正则表达式。使用单个空格将正则表达式分隔开。

Example: 假设您想要读取保质期,例如“03/2026”。主要的目的是读取日期或时间的数字。同时假设特殊字符或字母也需要被读取。在这种情况下,您将选择包含数字、字母和特殊字符的字符集。通过使用正则表达式 "(0[1-9]|10|11|12)/202[4-9]",您能够在保持 MM/YYYY 日期结构的同时也读取斜杠。

信息

正则表达式无法通过添加或删除字符来纠正单词长度。正则表达式必须符合单词长度,并且单词长度在所有图像中必须保持不变。

对长单词执行单词纠错可能会增加处理时间。

配置 vTool#

要配置 OCR Basic vTool:

  1. 在 vTool Settings 区域的 Recipe Management 窗格中,点击 Open Settings 或双击该 vTool。
    将打开 OCR Basic 对话框。

  2. 拍摄或打开图像。
    使用 Single Shot 按钮拍摄实时图像,或者点击 打开图像 用于打开现有图像的按钮。
    加载图像后,文本读取过程将立即开始,并在预览区域中显示结果。
    窗口底部显示识别出的字符,单词之间以空格分隔。由于此处的空间有限,您可能无法看到全部文本。这仅用于指示已识别出多少字符。完整文本将在向导的第 4 步中显示。
    有关更多信息,请参阅 第 1 步:初始设置.
    OCR vTool 设置 - 步骤 1

  3. 在 Rectangle Settings 区域中,通过手动输入数值来定义文本区域。
    或者,您可以使用预览区域中区域矩形的控点进行移动、调整大小和旋转,使其贴合您想要读取文本的图像部分。
    矩形中的箭头必须指向文本的读取方向。

  4. 在 Font Settings 区域中,配置以下选项:

    • 字体类型
    • 字符集
    • 拒识类别
  5. 单击 下一步.
    步骤 2: OCR Basic 对话框即打开。
    有关更多信息,请参阅 第 2 步:字符尺寸.
    vTool 设置 - 步骤 2

  6. 决定是否保持用于检测字符尺寸的默认自动模式启用。如果您想手动指定尺寸,请取消勾选 Auto 选项并输入所需的字符宽度、高度和笔画宽度范围。

  7. 单击 下一步.
    第 3 步,共 OCR Basic 对话框即打开。
    有关更多信息,请参阅 第 3 步:分割设置.
    vTool 设置 - 第 3 步

  8. 根据您的应用调整对比度和极性。

  9. 根据您的应用选择间距选项。

  10. 如果您选择了点阵字体(Dot Print),请根据需要指定选项。

  11. 单击 下一步.
    第 4 步,共 OCR Basic 对话框即打开。
    有关更多信息,请参阅 第 4 步:结果.
    vTool 设置 - 第 4 步

  12. 在分类表和文本字段中查看字符识别的结果。
    在表中,您可以展开每个位置以打开备选分类结果。您可以看到分类后的字符及其置信度。
    如果启用了详细视图选项,您可以在表中选择一个字符,预览区域中对应的字符边界框将会高亮显示;反之,您也可以在预览区域中点击一个字符区域,以在表中查看对应的字符。

  13. 如果需要,请输入 正则表达式 来执行单词校正。
    每个单词输入一个正则表达式。表达式之间用单个空格分隔。

  14. 在 Text Recognized 字段中检查生成的单词。

  15. 点击 Finish 完成设置过程。

您可以在 引脚数据视图 中查看 OCR Basic vTool 的结果。在这里,您可以选择要显示的输出。

输入#

图像#

直接从 Camera vTool 或从输出图像的 vTool(例如 Image Format Converter vTool)接受图像。

  • 数据类型:图像
  • 图像格式:8 位到 16 位单色或彩色图像。彩色图像在内部转换为单色图像。

输出#

文本#

返回识别出的文本字符串。

  • 数据类型:字符串数组

区域#

返回识别出的文本区域。

  • 数据类型:区域数组

典型前置项#