成员自1984年以来

了解更多

AIA -先进视觉+成像已转型为先进自动化协会,全球领先的视觉+成像、机器人、运动控制和工业AI行业的自动化行业协会。

下内容提交:

行业:
N / A.

应用:
外观检查和测试外观检查和测试

OCR / OCV应用中的考虑因素

发布05/10/2000

作者:Nello Zuech,特约编辑

问题
光学字符识别(OCR)和光学字符验证(OCV)之间存在区别。在OCR的情况下,基于与基本上的字符模式数据库的比较来识别单个字母数字字符。换句话说,被识别的字母数字字符的模式与数据库中的每个字符的模式进行比较。作为最佳匹配的模式被选为当前正在识别的字符。在OCV的情况下,有一个先验的了解特定字母数字模式是什么,并且系统基本上验证或验证当前字符正是它应该是什么。验证和识别之间的微妙差异,这很重要。因此,关于应用程序必须理解的第一件事是它是否实际上是OCR或OCV。

对于涉及光学字符识别(OCR)或光学字符验证的应用程序,有几个“拇指”:

  • 最小字符的笔画宽度至少为3像素宽
  • 典型的字符应覆盖20-25像素的大约20-25像素的区域
  • 字符之间的间距应该是两个像素
  • 字体应该是粗体

这里的关键问题是要读取的字符串的长度。如果一个字符有20个像素,两个字符之间有2个像素的间距,那么字符串的最大长度将是22个字符,以适应500像素排列的相机。这是假设可重复定位,所以在视场内没有提供字符串位置。在光学字符识别/验证应用中,粗体字体是理想的字体样式。一般来说,在基于机器视觉的实现中,在给定的时间内只能处理一种字体样式。

另一个经验法则是最佳的OCR系统的读取率为99.9%。换句话说,每千个字符中的一个都是误读或“禁止读”。应评估在给定申请中的影响。例如,如果要读取每分钟的300个对象,则0.1%被排序为“无读”,在一小时内,您将有大约20个产品手动读取。这是可接受的吗?这是最好的情况。最糟糕的情况是如果他们被误读了。

在开发OCR/OCV应用程序时,还必须理解许多其他应用程序问题。必须定义数据集中的字母数字数。此外,必须理解可能期望的不同字体样式的数量。是否必须同时处理大写和小写字符?字母数字、大写字母和小写字母以及字体样式的组合可能最终决定了数据库中必须包含的代表各自字母数字的模式的数量。

必须理解所有可能影响场景的变量。位置变量可能包括部分位置、字符字段位置以及字段内最终的特定字符位置。位置变量可以同时具有平移和旋转的性质。这可能意味着机器视觉系统在使用模式识别算法阅读字母数字之前需要一个“查找程序”。位置不确定性的程度可能决定优化性能所需的特定算法。对于所有密集的目的,机器视觉系统应该是旋转和过渡不变的尽可能透明的用户。

如果存在“Z轴”位置不确定性,因为在相对于必须安装相机的位置的平面的位置的位置的变化,系统也可能必须是鳞片不变的。鉴于字母数字出现的平面不能与相机平面保持不保持,也可能意味着系统能够处理透视误差的能力。如果字符串恰好在圆柱形或球形的部分上,则必须将这一点传达给在工作中招标的前瞻性机器视觉公司,因为系统必须处理图像捕获中的任何扭曲。

带有字母数字字符串的对象的表面属性可能有变化,应该传达给潜在的投标人。例如,由于制造方式(不同的机床、刀具等)的不同,或由于正常暴露在大气中的时间不同,零件内部或零件之间的表面光洁度和/或反射特性可能会有所不同。零件的颜色可能每批都不一样,甚至在同一批内也不一样。如果色调没有变化,可能饱和度或亮度水平的颜色是变化的。可能有其他部分属性,可能是围绕字母数字字符串的变量,例如孔或其他切口。系统可能必须容忍可接受的物理条件;例如:零件尺寸公差、表面划痕、毛刺等。

毫无疑问,字符的笔画宽度、字符高度、字符间的间距以及字母数字串的有效对比都会因字符的打印方式而发生变化。这种对比可以从一个字符到另一个铭刻在同一部分,随机在一个特定的铭刻字符,以及从部分到部分。这些可能是由于制造过程,印刷过程,零件或原材料供应商和后制造和应用处理的变化。

任何交付的系统都应该足够健壮,能够处理“混淆对”,不管预期的所有外观变量是什么。换句话说,系统不应该将“B”与“3”或“8”混淆;字母“I”中有一个“1”;一个G加一个6;字母“O”和数字“0”;'6'中包含'9'或'3'中包含'8';或将在应用程序中遇到的任何其他字母数字组合。

可能是系统应该能够可靠地读取字符,尽管由于处理而导致的一些字符行程缺失,但由于处理而缺少。这可能是对部分印刷的所有条件的不可能要求。因此,建议供应商可能是适当的,在这种情况下,系统应该在不确定性而不是危险的情况下发出“无读”信号。

在邀请供应商竞标之前,这些都应该在一个全面的规范中定义。为了增加可靠性,应该指定单一的字体样式。它应该是尽可能粗体的字体样式,并有一组字母数字每个独特的几何定义,以增加系统的可靠性。规范应该包括错误接受(误读)和错误拒收(未读)率。

关于光学字符识别的评论
OCR至少有四种基本方法:

  1. 基于相关性的,基本上几何形状评分和匹配
  2. 最近的邻居分类器/决策理论,基本上使用特定的几何特征/功能集和匹配基于接近特定的多维模型
  3. 句法或结构,基本上使用特定特征和关系之间的关系
  4. 基于展示训练的神经网络/模糊逻辑分类和基于正确决策的强化。

一些系统配有出厂安装的字体,预先培训:例如,半,OCR-A,OCR-B。有些人有能力在工厂培训正在使用的特定字体样式。其他人要求供应商训练新字体样式。

不同的执行可以产生不同的性能,因此难以表明一种方法是最优越的。除了句法方法之外,是特定的字体。Requiring a system to be trained to read more than one font style at the same time with these exacerbates the ability to provide correct reads as more characters can become the victim of a confusion pair (e.g. 3 vs. 8, 8 vs. B, etc.). The syntactic approach is generally conceded to be the most robust when it comes to multi-font applications. With this approach specific character features and specific relationships are used which are generally font-style independent.

例如,可能表征了“e”:如果向量通常是复仇者和另一个向量横向的另一个向量横向,则开始(0,0),并且如果围绕方向上的向量达到在复活节中也存在矢量的交叉点方向和南部方向的向量和向量中的向量与东方方向的向量相交,那么角色是'e'。

这种方法要求每个角色都根据矢量和弧线及其方向进行唯一定义。这些条件通常与字体样式无关,尽管可能存在字体样式,但由于其本身的性质可能导致混淆。在任何应用中都应避免使用这些。

没有公司提供关于阅读准确性的数字。所有这些都表明,阅读准确性与许多因素有关:打印质量,应用条件,如照明的一致性/一致性,字体风格和潜在的混淆对,系统训练的程度,字符间距的一致性,等等。在良好的条件下,可以预期99.9%的阅读准确性。考虑到更多的“读取”时间,一些系统声称读取精度为99.96%。

系统通常具有多种读取字符的方法。如果可以使用高置信度(由系统确定)可靠地读取字符,则仅启用一组算法。如果系统确定给定字符的不确定性程度,则更好的系统可以启用另一组算法来读取该特定字符。如果仍然是一个问题,一些系统可以实现更多的识别算法。最终决定可以基于“投票” - 不同方法的次数表明它是相同的角色导致关于角色的决定。即使在那里只有一个角色识别算法套件,系统也可能具有“通过读取字符5-10次投票”的能力。例如,如果十次,则可以设置阈值,使得系统必须在特定字符上达成一致的至少六次,并且何时是字符读取的情况。

假读数通常通过在培训期间建立条件来控制,以误坏,以支持“无读”。在“无读”的情况下,系统通常将以突出显示的方式显示未认定的字符,因此操作员可以通过键盘来决定和输入正确的字符。

还可以通过在字符串中添加校验和编号来减少假读取。这个数字必须与某种规则读取的其他号码一致:例如读取所有数字的总和的最后一位数必须与校验和编号相同。

比较读取率也不直接。大多数公司都不愿意在阅读率或吞吐量上扩展太多。在大多数情况下,可以假设声称的读取率基于最佳条件。在大多数情况下,还必须在读取之前添加与拍摄图像相关联的时间并找到字符串/查找字符。同样,这些依赖于打印和字体类型的质量以及是否必须处理旋转以及转换。

灯光
在OCR的情况下,照明是非常关键的。在实现严格的OCR时,照明可能和算法一样重要。在OCR应用中,光照产生字符串的二值图像。要么是在黑色背景上显示白色,要么反之亦然。理想情况下,光照产生一致的二值图像。因此,所使用的算法通常对二值图像而不是灰度图像进行操作,这加快了处理和读取的速度。

评论光学字符验证
除了工程细节外,还有两个与光学字符验证(OCV)应用有关的基本问题。它们是:通过验证字符是否正确满足的应用程序是满意的;或者还要求系统必须能够确保字符的质量 - 打印质量检查(PQI)。在公司接近这个应用程序的方式,这些应用不是互补的。

如我们对OCR的评论所观察到的那样,照明至关重要的OCV应用也是如此。目标是产生二进制图像。OCV的大多数方法都利用了图像是二进制的事实。许多提供GPMV系统的人提供了验证字符的二进制相关方法。只要二进制状态可以被保险,这种方法通常会产生足够的结果来验证正确的字符。

一些系统使用灰度模板作为建立字符模式和随后的比较的基础。相关例程使用匹配程度或匹配分数作为确定字符是否正确的基础。基于灰度模板,它是容忍影响灰度级的条件,实际上正常化。因此,这种条件不太可能导致错误拒绝。

一些这样的条件包括:打印对比度本身,打印源自不同背景颜色的对比差异,在行程宽度上对比度的变化,对比度的变化源于场景的照明不均匀性,从场景到场景。

另一方面,形状评分可能不是检查字符的质量时最好的。在影响性格冲程的形状的条件变化的情况下,在易读性(行程增厚或变薄,轻微的闭合)方面仍然可以接受,建立容忍这些条件的形状匹配得分可能影响特征验证可靠性。通过松开形状得分匹配标准,以容忍反映谦逊字符劣化但仍然清晰可辨的字符的条件,甚至可能成为不同特征的形状可能成为可接受的或可能产生误解的字符的条件可能会被接受系统。

在喷墨印刷中,处理笔画宽度变化是一个特别需要关注的条件。处理这一问题的一种方法是“欺骗”系统,训练它接受一个与三种字体样式之一的任何相似字符匹配的字符。字体样式将对应于:粗,细和名义笔触宽度。这种方法的两个缺点是:很可能使系统对质量问题和速度更加宽容;每次比赛得分比较都需要有限的时间;将三个匹配项关联起来所花费的时间是进行单个关联的三倍。

一些系统实际上在操作员设置期间进行光学字符识别(OCR),但在运行模式下进行光学字符验证(OCV)。在设置期间,系统基于将灰度模板与字体库中的每个字符相关联地读取每个字符。具有最佳匹配分数或与正在读取的字符的相关性的字体库中的字符被认为是读取的字符。这在屏幕上显示为操作员验证正确性。在运行模式期间,系统知道每个位置的字符在每个位置,所以实际上只执行“匹配”或验证。

源自当前版本的灰度模板与存储在当前训练集中的特定位置的灰度模板匹配。只要匹配号(或相关数)大于先前建立的值(以1000为1-1000的比例为一个完美的匹配),系统将确认正确的字符正确。

验证可能构成“混淆对”的字符需要额外的逻辑,而不是匹配分数可靠。一种方法是建立感兴趣的区域(rois),在那里可能会有混乱并寻找对比变化。另一种方法包括基于所涉及的字符集自动启用的不同工具。因此,例如,虽然前一种方法将在“B”的左手行程的三个位置处将“兴趣区域”(ROI)应用于“B”的区域,这是区分它的区域或“8”或“3”“寻找对比度变化,后一种方法将使用方向矢量属性 - 灰度尺度在每个像素沿边界处改变的方向。这被认为是更强大的。他们将用于其他字符对的其他规则包括孔数,字符断裂和像素加权。

以下讨论审查了另外两种方法的性质。提供OCV / PQI系统的大多数其他公司体现了一个或多个审查的技术。因此,该讨论实际上比建议更通用,并且该讨论是为了讨论文献中发现的方法之间的差异。

虽然几家公司使用二进制模板作为其字符比较的基础,但它们各自的执行可能会急剧差异。例如,在一个情况下,该方法基于使用围绕标称值的灰度区域作为二进制图像的基础。也就是说,将在60 - 120(例如)之间的灰色阴影值(例如)之间的所有像素分配给黑色或前景区域。该范围之外的所有像素被分配了背景或白色区域。标称值本身是自适应的;也就是说,它在当前场景中使用ROI中的灰度分布来校正该值。

另一种方法可以建立一个单个阈值,上述所有像素是白色或背景,并且下面的所有像素是黑色或前景的。该方法使用自适应阈值来补偿光水平变化。然后,基于执行相关例程以建立最初确定的标称阈值的最佳字符匹配,并且对于标称值周围的每个灰色10阴影的每个阴影。这一切都在操作员设置期间自动执行。然而,阈值可能不会在场景的基础上调整。

方法之间的另一个基本差异可能是窗口搜索例程的基础。在一个实例中,它可能基于BLOB分析,而在另一个中,它可以基于归一化的灰度相关性。BLOB分析基于字符像素串的边界框分布,并相应地定位其质心并校正到引用的位置。这种方法对任何文本,图形或外文的“噪声”都会敏感,这些噪声可能无法靠近被检查的字符串。

在找到该区域之后,一种方法可以查找特定字符上的特定功能以执行精细对齐。在另一种方法中,精细对齐将使用通常基于一个字符的曲线 - '灰度边缘模板。'的相关匹配。这通常在操作员设置期间自动完成,系统包括某些规则,以识别它应该用作相关模板的基础的字符的何种规则。

在二值化图像之后,一个系统可能执行侵蚀,然后将其在前景的决定和通过子区域的子区域上的学习模板进行基础。在另一个系统中,除了在执行图像减法之前,除了更大的字符串对齐之外,还执行字符对齐的字符。这可以是单个像素侵蚀,以消除外来像素,然后是一种像素宽度基于在工程建立期间建立的厚/薄设置的另一个侵蚀。这旨在补偿笔划宽度变化。

在某些方法中,决策是基于单个子区域的结果,而在其他方法中,决策是基于与特定字符的模板减法相关联的像素残差结果。在这两种情况下,对拒绝的“敏感性”可能是基于预先确定的像素变化百分比。有些实现还会自动拒绝对比度小于训练时对比度50%的字符。这个百分比可以在工程设置期间进行调整。

在一些产品中发现的另一种方法是基于二值图像和基于提取局部几何特征及其相互关系的语法分析。这种方法更适合OCR应用程序,而不太适合同样涉及字符质量的应用程序。另一种方法也是基于二值图像,使用向量相关作为验证或识别的基础。虽然这种方法对缩放或笔画宽度变薄或变厚不太敏感,但可能对局部笔画形状的变化更敏感。

在这两种情况下,二值化的鲁棒性在一定程度上取决于特定的机器视觉系统在图像二值化之前或之后可能进行的图像预处理。尽管如此,这种方法有望产生性能可能是好的OCV,但当涉及到字符质量问题。

其他几个执行基于OCR为验证字符的方法。这些往往有点慢,并且不太适合pqi。除了执行的特定算法之外,吞吐量是:字符串的位置重复性,字符串中的字符数,字符串数,外观中的预期变量以及是否需要pqi。

通常,在PQI处执行了形态学操作的系统。

执行之间的一个差异是,一些在一个较大区域内的子区域执行它们的模板匹配,该子区域包括若干时间与字符以字符为基础的多个字符(可能是整个字符串)。有些建议,这可能适用于激光标记,因为失败通常是整个字符集的“无标记”条件(所有字符串和字符串中的所有字符)而不是特定的“无标记”。喷墨印刷的情况不太可能是这种情况。

当多个字符被验证为一个模式时,混淆对更成问题,因为不能逐个字符执行分析。它也更容易受到字符间距变化的字符的影响。一般情况下,系统确实能够根据角色建立感兴趣的区域,但这在操作人员设置过程中可能比较棘手,可能需要更多的时间。

如上所述,一些系统具有内置于一组规则来处理混乱对。在其他系统中,此功能可能不存在,而是使用基于ROI分析的方法。在操作员期间,设置一些系统需要比其他系统更多的操作员干预。在某些系统中,诸如:阈值,字符串定位,字符对齐,拒绝的对比度,字符缩放和宽高比和规则以实现混淆对的属性都是对操作员完全透明的。

这是什么意思呢?基本上,虽然有很多方法可以合理可靠的OCV。执行更多图像处理的方法更适合执行PQI。更强大的方法通常在灰度数据上运行,并且多于二进制像素计数。设置以避免假接受时,更简单的类型方法往往具有更高的错误拒绝发生率。有些不太适用于性质质量评估比其他品质评估,例如,由于喷墨印刷的性质,预计会经历更虚假的拒绝。另一方面,一些方法被认为更适合处理混乱对。