面向初学者的光学字符识别 [OCR] 简介

已发表: 2021-02-08

OCR 或光学字符识别 (OCR) 用于从票据和收据或任何上面有书面内容的图像中提取信息。 为了开发此解决方案,OpenCV 可用于处理图像,这些图像可以进一步输入 Tesseract OCR 引擎,该引擎可以从这些图像中提取文本。

但是,只有在图像清晰且文本足够可见的情况下,文本删除过程才能有效。 在零售应用中,为了从发票中提取文本,发票可能会被水印淹没,或者账单上可能有阴影,阻碍了信息的获取。

从较长的文本页面中捕获信息片段也可能是一项艰巨的任务。 为了解决这些问题,谨慎的做法是在信息提取管道中,图像处理模块中有一个地方可以处理上述困难。

它包括几个子过程,即文本的本地化、字符分割和这些字符的识别。 尽管很少有系统在没有分段的情况下进行管理。 这种方法是利用几个过程产生的,例如应用最小二乘法来降低错误率和支持向量机来匹配字符。

尽管如此,通常为了识别图像中字符的占用情况,还是会使用卷积神经网络 (CNN)。 文本可以被视为一致的字符序列。 更准确地检测和识别这些字符是一个难题,可以通过使用一种特殊类型的神经网络来解决,即循环神经网络 (RNN) 和长短期记忆 (LSTM)。

通过将文本调整为 blob 来收集单词。 此外,还会检查这些行和区域的等效文本。 文本行仅根据它们之间的间距类型划分为单词。 识别方法分为两步。 首先,识别每个单词。 每个完美或正确识别的单词都作为训练数据额外传递给自适应分类器。

作为输入接收的图像将被分批检查和处理。 文本逐行输入 LSTM 模型。 Tesseract 是一种光学字符识别引擎,可用于各种操作系统。 它使用 CNN 和 LSTM 架构的组合来精确地从图像数据中识别和导出文本。 然而,带有噪声或阴影的图像会影响检索的准确性。

为了最大限度地减少噪声或提高图像质量,可以使用 OpenCV 库对图像进行预处理。 这样的预处理步骤可以包括发现ROI或感兴趣区域、裁剪图像、去除噪声(或不需要的区域)、阈值化、膨胀和腐蚀、轮廓或边缘的检测。 完成这些步骤后,OCR 引擎可以读取图像并完美地从中提取相关文本。

目录

使用的工具

1.OpenCV

OpenCV 是一个最初与语言 C/C++ 和 python 兼容的库。 它通常用于处理带有图像样本的数据。 库中存在大量预定义的有用函数,可对图像样本进行必要的转换。 所有上述功能,如膨胀、腐蚀、切片、边缘检测等,都可以使用这个库轻松完成。

2. 正方体 OCR 引擎

由 Google 发布,是一个广泛用于文本识别的开源库。 它可用于检测和识别各种语言的文本。 处理速度非常快,几乎可以立即给出图像的文本输出。 许多扫描应用程序利用这个库并依赖于它的提取技术。

文本提取过程中涉及的步骤

(1) 首先,将可能的图像处理技术,如轮廓检测、噪声去除、腐蚀和膨胀函数应用于输入的噪声图像样本。

(2) 在这一步之后,就完成了票据上水印和阴影的去除。

(3) 此外,票据被分割成部分。

(4) 分割后的部分通过 Tesseract OCR 引擎得到完整的文本。

(5) 最后使用正则表达式,我们得到所有重要信息,例如总金额、购买日期和每件商品的费用。

让我谈谈带有文本的特定图像——发票和账单。 他们通常有水印,大多数是发行账单的公司。 如前所述,这些水印是有效提取文本的障碍。 通常,这些水印本身包含文本。

这些可以被视为噪音,因为 Tesseract 引擎可以识别一行中各种大小的文本。 与水印一样,阴影也会抑制引擎有效提取文本的准确性。 通过增强图像的对比度和亮度来消除阴影。

对于带有贴纸或水印的图像,将执行多步骤处理。 该过程包括将图像转换为灰度、应用形态变换、应用阈值处理(可以是二进制反转或 otsu 变换)、在较暗区域中提取较暗像素,最后在水印区域粘贴较暗像素。 回到阴影去除的过程。

首先,将膨胀应用于灰度图像。 在此之上,带有适当内核的中等蓝色会抑制文本。 此步骤的输出是包含部分阴影和存在的任何其他变色的图像。 现在在原始图像和获得的图像之间计算一个简单的差分运算。 最后,在应用阈值处理后,我们得到的是没有阴影的图像。

文本的识别和提取

可以在图像中找到的印记文本上构建和训练卷积神经网络模型。 该模型还可用于检测具有相同字体的其他相似图像中的文本。 Tesseract OCR 引擎用于从使用计算机视觉算法处理的图像中恢复文本。

对于光学字符识别,我们必须执行文本定位,然后进行字符分割,然后进行字符识别。 所有这些步骤都由 Tesseract OCR 执行。 Tesseract OCR 引擎在打印文本而不是手写文本时被证明是高度准确的。

获取相关信息

具体来说,在提取的所有文本中,使用多个正则表达式可以轻松获得购买日期、总金额等重要信息。 印在发票上的总金额可以通过应用正则表达式来提取,因为它通常出现在发票的末尾。 许多此类有用的信息可以根据其日期进行存储,以便于访问。

准确性

文本检索的准确性可以定义为 Tesseract OCR 获得的并且已经在发票中的正确信息数量与文本图像中实际出现的单词的累积数量之比。 更高的准确性意味着更高的预处理技术效率和 Tesseract OCR 提取信息的能力。

接下来是什么?

如果您有兴趣了解有关机器学习的更多信息,请查看 IIIT-B 和 upGrad 的机器学习和人工智能 PG 文凭,该文凭专为工作专业人士设计,提供 450 多个小时的严格培训、30 多个案例研究和作业、IIIT- B 校友身份、5 个以上实用的实践顶点项目和顶级公司的工作协助。

从世界顶级大学学习ML 课程获得硕士、Executive PGP 或高级证书课程以加快您的职业生涯。

引领人工智能驱动的技术革命

申请机器学习和自然语言处理高级证书课程