虽然电子集成(例如 API 集成)是一种时髦的数据交换方式,但如今仍有大量的文档交换(例如物理形式、扫描图像)。让我们回到我们的日常生活中,你可能需要填写一张表格来申请驾照。有些医生仍然开处方。当你运送东西给别人时,你仍然需要填写申报表格。
为了迎合这种情况,文档数字化可能有助于它的流式传输。这一系列的故事将讲述如何建立一个端到端的文档数字化系统。
- 第 1 部分:基本端到端系统的高层工作流
- 第 2 部分:端到端系统的高级工作流(本文)
- 第 3 部分:代码演练
在上一篇文章中,我们介绍了将图像转换为文本和命名实体识别(NER)的工作流程。基本版的一个假设是输入图像是好的。然而,它可以是旋转的图像,在现实生活的例子中质量较低。因此,图像预处理程序有助于这些情况。另一方面,修复 OCR 输出错误也有助于提供准确的结果。
图像预处理在提高图像质量以便进一步处理方面起着重要的作用。根据不同的图像问题,有许多方法可以解决这些问题。
扭曲的图像影响 OCR 引擎的行分割。尽管 tesseract 引擎提供了一个选项来处理它,但您可能还是能更好地处理它。
对于简单的情况,可以使用 OpenCV 来修复。收据是简单案件的典型例子之一。布局简单,内容逐行显示。您可能需要实现自定义逻辑来解决不对称问题。它可以计算出几条最长的线,甚至建立一个机器学习模型来检测旋转的角度。
通常,二值化是 OCR 引擎中的处理之一。如果该值大于阈值,它会将像素颜色更改为黑色;如果该值小于阈值,它会将像素颜色更改为白色。OCR 引擎中的预定义阈值公式适用于一般问题。可以用 OpenCV 自己做。
噪声会降低 OCR 准确度性能,因此我们更好地执行噪声去除以提高图像质量。它使用一种算法(例如高斯模糊、中值模糊)来使像素更平滑。你可以按照这个 OpenCV 教程来做。
在图像预处理之后,我们可以进行布局分析。目的是将整个文档分成多个子图像,从而可以在子图像级别而不是整个文档级别执行文本识别。如果文档只有一列,文档布局分析可能不重要。但是,大多数表单也包含多列。
我们可以将这一步骤视为区域检测或寻找感兴趣区域(ROI)。我们可以利用轮廓、侵蚀和扩张来实现它,而不是深度学习模型。找到角色的草图,然后扩大覆盖范围,建立一个更大的区域。
建议进行 OCR 后处理,因为 OCR 引擎会在命名实体识别(NER)阶段引入一些错误并导致不正确的结果。
Norvig 的实现是一种非常简单快速的纠正拼写错误的方法。给定一个字典,该算法将找到最小的编辑距离,以转移到正确的单词。位置就是其中的典型
缺点包括:
- 如果编辑距离太大,无法修复不正确的单词
- 如果目标单词只包含几个字符(如 an、am ),则无法修复单词
除了基于字典的纠正,基于模式的纠正也有助于修复错误。例如,大多数牌照都有预定义的图案。这可以通过使用正则表达式来实现。
然而,缺点包括:
- 不支持看不见的模式
- 即使看到模式,也不能保证满足所有情况。
- 预处理和后处理是很重要的,除非你的模型能够吸收那些错误。
- 不要盲目应用预处理和后处理。看看你的数据,看看哪一步是必要的。
我是湾区的数据科学家。专注于数据科学、人工智能,尤其是 NLP 和平台相关领域的最新发展。在 LinkedIn 或 Github 上随时联系 me 。
- 沃克 j,藤井 y,Popat A. C..2018.基于网络的文档 OCR 服务。
- 王晓东,王晓东,王晓东,王晓东,王晓东,王晓东。..2017.用于多语言 OCR 的序列到标签文字识别。