使用计算机视觉和深度学习创建现代OCR管道( 四 )


早期的实验跟踪了Word Deep Net在单个单词的OCR图像上的表现,称之为单字准确性(SWA) 。在这种情况下,准确性意味着深度网络有多少基本真理词是正确的 。此外还跟踪了网络的精度和召回率 。精度是指深度网络返回的实际上正确的单词的比例,而召回率是指深度网络正确预测的评估数据的比例 。在精度和召回率之间往往存在权衡 。
例如,假设有一个机器学习模型,旨在将电子邮件分类为垃圾邮件 。精确度将是分类器是否所有标记为垃圾邮件的东西,有多少实际上是垃圾邮件?相比之下在所有真正是垃圾邮件的东西中,我们是否标记了?可以正确标记垃圾邮件(高精度),同时不实际标记所有真正的垃圾邮件(低召回率) 。
将数据集划分为不同的类别,例如(收据),屏幕截图,等,并为每个类别单独计算准确性,并计算所有数据的整体准确性 。例如,下面的条目显示了实验室笔记本中第一次完整的端到端测试的早期工作,其中一个真正的单词检测器与Word Deep Net相结合 。你可以看到,在一开始做得非常糟糕:
我们实验室笔记本中早期端到端实验的屏幕截图
在某一时刻,合成数据管道在OCR基准集上产生了高80年代的单字准确性(SWA)百分比 。然后收集了大约20,000个真实的单词图像(相比之下,100万个合成生成的单词),并使用这些图像来微调Word Deep Net 。
现在有一个系统,可以在单个单词图像上做得很好,但当然,一个真正的OCR系统可以对整个文档的图像进行操作 。所以下一步是专注于文档级的单词检测器 。
3.字检测器
对于 Word,决定不使用基于网络的深度方法 。这种方法的主要候选者是对象检测系统,如RCNN,它试图从图像中检测狗,猫或植物等物体的位置(边界框) 。大多数图像可能只有给定对象的一到五个实例 。
然而,大多数文档不仅只有几个单词 - 它们有数百甚至数千个单词,即比当时大多数基于神经网络的对象检测系统能够找到的对象多几个数量级 。因此不确定这样的算法是否会扩展到OCR系统所需的水平 。
另一个重要的考虑因素是,使用特征检测器的传统计算机视觉方法可能更容易调试,因为神经网络是出了名的不透明,并且具有难以理解和解释的内部表示 。
最终使用了一种经典的计算机视觉方法,称为最大稳定极值区域(MSER),使用的实现 。MSER 算法查找图像的不同阈值或级别处的连接区域 。从本质上讲,它们检测图像中的斑点,因此特别适合文本 。
单词检测器首先检测图像中的 MSER 特征,然后将这些特征串联成单词和行检测 。一个棘手的方面是,单词深度网络接受固定大小的单词图像输入 。这要求字检测器有时在单个检测框中包含多个单词,或者如果单个单词太长而不适合深度网络的输入大小,则将其切成两半 。然后,有关这种斩波的信息必须通过整个管道传播,以便在深网运行后重新组装它 。另一个棘手的问题是处理深色背景上带有白色文本的图像,而不是白色背景上的深色文本,这迫使 MSER 检测器能够处理这两种情况 。
4.组合式端到端系统
一旦将Word 改进到可接受的点,就将其与Word Deep Net链接在一起,以便针对文档级图像而不是较旧的单字准确性基准测试套件对整个组合系统进行端到端的基准测试 。然而,第一次测量端到端的准确性时发现表现约为44%,比竞争对手差得多 。
主要问题是图像中噪声的间距和虚假的垃圾文本 。有时会错误地将两个单词组合在一起,例如组合成“”,或者错误地将单个单词片段化,例如片段化成“ wo + rld” 。