OCR技术及其在图像文本提取中的应用

在处理纸质发票、传单、小册子和表格时,经常会遇到这些文件的硬拷贝或以.jpg、.png或.pdf格式保存的文本图像。手动处理这些文件中的数据不仅繁琐耗时,而且容易出错。这些文件不能直接编辑,需要先将其转换为可编辑格式,或者使用能够从图像中读取内容并提取出来以供进一步处理的工具。可能都使用过在线或离线工具将图像转换为可编辑文本格式,以简化工作流程。这是通过光学字符识别(OCR)或Optical Character Recognition实现的。

目录

  • 什么是Keras OCR?
  • 为什么需要从图像中提取文本?
  • Python中可用的OCR库
  • Keras OCR演示
  • 结论

什么是Keras OCR?

OCR是Optical Character Recognition的缩写,通常被称为“文本识别”,这是一种从图像中提取文本的流行技术。OCR程序是一个工具,它从扫描文档、相机图像和仅图像的PDF中提取并重新利用数据。OCR系统使用硬件(如光学扫描仪)和能够处理图像的软件的组合。在文本提取方面,OCR工具(OCR库)采用多种机器算法进行模式识别,以识别图像文件中文本的存在和布局。这些工具被训练以识别图像中字符或数字的形状,以识别图像中的文本。然后,这些工具可以将提取的文本重建为机器可读的格式。因此,提取的文本可以像常规文本一样被选择、编辑或复制粘贴。简而言之,OCR将图像格式的数字数据转换为可编辑的文档处理文件。幸运的是,许多免费和商业工具(离线和在线)允许OCR技术从图像中提取文本。

目前,由于实施了智能字符识别(ICR)等技术,OCR工具相当先进,可以识别语言、笔迹风格等。在本文中,将讨论OCR、OCR的好处、为什么需要从文档中提取文本、Python中可用的OCR库,以及使用Keras-OCR库从图像中提取文本的示例。

为什么需要从图像中提取文本?

如上所述,OCR技术的主要好处是它自动化了手动和耗时的数据输入任务。这是因为通过使用OCR,可以创建可以按要求编辑和存储的数字文档。OCR工具处理图像以识别文本,并在图像背后创建一个隐藏的文本层。这个额外的层可以被计算机轻松读取,从而使图像可识别和可搜索。这对于企业来说至关重要,因为它们每天必须处理媒体和内容。OCR还提供以下好处:

  • 自动化、快速处理和将纸质文档转换为数字格式,加速工作流程
  • 节省时间并减少手动错误的可能性
  • 消除手动数据输入的需求
  • 减少手动数据输入意味着降低企业的整体成本
  • 节省纸张和存储空间,因为更多的数据可以转换为电子格式

OCR应用的一个典型例子可以在医疗保险索赔表处理中看到。有了OCR,更容易将保险索赔与被保险人的详细信息进行比较。配备OCR的系统可以向相关团队标记数据中的任何异常,并防止可能的欺诈行为。

尽管OCR可以轻松从图像中提取文本,但有时也会面临挑战。当文本出现在代表自然环境的图像中时,这种情况就会发生,图像中存在几何失真、过多的噪声或杂乱和复杂的背景,以及不同于常规字体的不同字体。尽管如此,OCR技术在深度学习应用中具有越来越强大的潜力,可以构建用于读取车辆牌照、数字化发票或菜单、扫描身份证、比较索赔表等的工具。

Python中可用的OCR库

现在已经了解了OCR及其用途,让看看一些常用的开源Python库用于文本识别和提取。

也称为‘Python-tesseract’,它是Python的OCR工具,作为Tesseract-OCR引擎的包装器。这个库可以读取所有图像类型(.jpeg、.png、.gif、.bmp、.tiff等),并识别图像中的文本。因此,它通常用于OCR图像到文本转换的用例。

另一个相当受欢迎的Python库是EasyOCR。顾名思义,该库专为初学者设计,易于使用。它是一个通用的OCR Python模块,支持80多种语言,可以读取自然场景和文档中的密集文本。安装后,用户只需要初始化两个类——一个reader()和另一个通过readtext()函数读取图像中的文本。

这是一个与上述两个库同样强大的开源库。Keras-OCR库提供了一个高级API和端到端训练管道,用于构建新的OCR模型。在下一节中,将看到一个使用Keras-OCR从多个图像中提取文本的逐步教程。可以在这里找到文档。

在本节中,将构建一个Keras-OCR管道,从一些示例图像中提取文本。在这个教程中使用Google Colab。

让首先使用以下代码安装keras-ocr库(支持Python >= 3.6和TensorFlow >= 2.0.0):

!pip install -q keras-ocr

也可以使用以下命令从主位置安装该包。

pip install git+https://github.com/faustomorales/keras-ocr.git#egg=keras-ocr

必须导入matplotlib和新安装的Keras-ocr库来处理图像并从中提取文本。

import keras_ocr import matplotlib.pyplot as plt

让用Keras-ocr设置一个管道。模型是一个预训练的文本提取模型,加载了检测器和识别器的预训练权重。

pipeline = keras_ocr.pipeline.Pipeline()

将使用两张图像来测试Keras-ocr库的能力。可以尝试使用任何其他带有文本的图像。

# 从文件夹路径读取图像到图像对象 images = [ keras_ocr.tools.read(img) for img in ['/content/Image1.png', '/content/Image2.png',] ]

以下是在这个Keras-ocr库教程中使用的两张图像。一张是使用手写风格字体的纯文本图像,另一张是包含文本的图像。

现在,让在图像上运行管道识别器,并对这些图像中的文本进行预测。

# 从图像生成文本预测 prediction_groups = pipeline.recognize(images)

可以使用以下代码绘制模型的预测:

# 绘制文本预测 fig, axs = plt.subplots(nrows=len(images), figsize=(10, 20)) for ax, image, predictions in zip(axs, images, prediction_groups): keras_ocr.tools.drawAnnotations(image=image, predictions=predictions, ax=ax)

得到的预测输出是——

Keras-OCR库在两张图像上都表现良好。它能够正确识别文本的位置,并从输入图像中提取单词。

还可以像这样打印图像中识别出的文本:

predicted_image = prediction_groups[1] for text, box in predicted_image: print(text)

如果需要,上述识别的文本可以从上述图像中转换为.csv或.txt格式以供进一步使用。

  • OCR使得处理带有文本的图像并将其转换为可编辑文档变得更加容易。
  • 它可以减少手动数据输入工作,加速业务工作流程。
  • 许多开源和商业工具使用OCR技术来更快地处理图像和文档。
  • Keras-OCR是一个高度准确的库,只需几行代码即可提取文本。它是开源图像文本提取项目的好选择。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485