【读点论文】A Survey of Deep Learning Approaches for OCR and Document Understanding

news2024/11/26 14:31:22

A Survey of Deep Learning Approaches for OCR and Document Understanding

Abstract

  • 文档是许多领域(如法律、金融和技术等)中许多业务的核心部分。自动理解发票、合同和简历等文件是有利可图的,开辟了许多新的商业途径。通过深度学习的发展,自然语言处理和计算机视觉领域已经取得了巨大的进步,这些方法已经开始融入当代文档理解系统。在这篇调查论文中,我们回顾了不同的文档理解技术,并巩固了文献中存在的方法,作为研究人员探索这一领域的起点。
  • 论文地址:[2011.13534] A Survey of Deep Learning Approaches for OCR and Document Understanding (arxiv.org)
  • Accepted to the ML-RSA Workshop at NeurIPS2020.

Introduction

  • 人类撰写文档是为了记录和保存信息。作为信息载体,文档使用不同的布局来编写,以表示针对不同消费者的不同信息集。在这项工作中,我们研究了英文文档的文档理解问题。这里,我们使用术语文档理解来表示从文档页面中包含的书面文本和插图中阅读、解释和提取信息的自动化过程。从机器学习实践者的角度来看,本调查涵盖了我们构建模型以自动理解最初为人类消费而编写的文档的方法。文档理解模型通常使用光学字符识别(OCR) 和一定程度的文档布局分析,将文档和文档页面分割成有用的部分(即对应于特定表或属性的区域)。这些模型使用这些信息来大致理解文档的内容,例如,这个区域或边界框对应于一个地址。在本调查中,我们将在更细粒度的级别上关注文档理解的这些方面,并讨论用于这些任务的流行方法。我们的目标是总结现代文献理解中存在的方法,并强调当前的趋势和局限性。
  • 一文讲通OCR文字识别原理与技术全流程(科普版) - 知乎 (zhihu.com)

Document Processing & Understanding

  • 文档处理历来涉及手工制作的基于规则的算法,但随着深度学习的广泛成功,基于计算机视觉(CV)和自然语言处理(NLP)的方法已经脱颖而出。目标检测和图像分割的进步使得系统在各种任务上的表现接近人类。因此,这些方法已被应用于各种其他领域,包括NLP和语音。由于文档可以作为一种视觉信息媒介来阅读和查看,因此许多从业者也利用计算机视觉技术,并将其用于文本检测和实例分割。
  • 大型预训练语言模型(如ELMo和BERT)的广泛成功和普及已经导致文档理解转向使用基于深度学习的模型。这些模型可以针对各种任务进行微调,并且已经取代词向量作为自然语言任务预训练的事实上的标准。然而,语言模型,无论是基于递归神经网络还是基于Transformer,都难以处理长序列。鉴于业务文档中的文本可能非常密集和冗长,模型体系结构修改是必要的。最简单的方法是将文档截断为512个token的较小序列,这样预训练的语言模型就可以使用现成的。最近获得关注的另一种方法是基于降低基于Transfromer的语言模型的自关注组件的复杂性。
    • 基于计算机视觉的文档布局分析模块,将每个文档页面划分为不同的内容区域。该模型不仅描述了相关和不相关的区域,而且还用于对其识别的内容类型进行分类。
    • 一种光学字符识别(OCR)模型,其目的是定位和忠实地转录文档中存在的所有书面文本。OCR模型跨越了CV和NLP的边界,可以直接使用文档布局分析,也可以以独立的方式解决问题
    • 使用OCR或文档布局分析的输出来理解和识别文档中所传达的信息之间的关系的信息提取模型。这些模型通常专门用于特定的领域和任务,它们提供了使文档在机器上可读所必需的结构,为文档理解提供了实用工具。

Optical Character Recognition

  • OCR有两个主要组成部分: text detection and text transcription.。通常,这两个组件是分开的,每个任务使用不同的模型。下面,我们将讨论这些组件的最新方法,并展示如何通过不同的通用OCR系统处理文档。详细信息请参见下图。
    • 在这里插入图片描述

    • 这里,我们展示一般的OCR过程。文档可以选择左边的路径,并经过对象检测模型(该模型输出边界框)和转录模型(转录每个边界框中的文本)。如果文档采用中间路径,则对象将通过一个通用文本实例分割模型(如果像素包含文本则将其涂成黑色)和一个文本转录模型(转录实例分割模型标识的文本区域)。如果文档采用正确的路径,则模型将通过特定于字符的实例分割模型,该模型将输出像素对应的字符。所有路径产生相同的结构化输出。该文件来自funSD 。

Text Detection

  • 文本检测是查找页面或图像中存在的文本的任务。输入图像通常由三维张量C × H × W表示,其中C是通道数(通常是三个通道,分别代表红、绿、蓝),H是高度,W是图像的宽度。文本检测是一个具有挑战性的问题,因为文本有各种形状和方向,并且经常会被扭曲。我们探讨了研究人员提出文本检测问题的两种常见方法:作为对象检测任务和作为实例分割任务。文本检测模型必须要么学习输出文本周围边界框的坐标(对象检测),要么学习输出一个掩码,其中标记有文本的像素而不标记没有文本的像素(实例分割)。
Text Detection as Object Detection
  • 传统上,文本检测围绕手工制作特征来检测字符。深度学习的进步,特别是在对象检测和语义分割方面的进步,导致了文本检测处理方式的变化。使用这些来自传统计算机视觉文献的性能良好的目标检测器,例如Single-Shot MultiBox Detector (SSD)和Faster R-CNN模型,从业者构建高效的文本检测器。
  • 最早应用基于回归的文本检测器的论文之一是TextBoxes。他们添加了长默认框,这些框具有较大的SSD宽高比,以便使对象检测器适应文本。几篇论文建立在这项工作的基础上,使基于回归的模型对方向具有弹性,如深度匹配先验网络(DMPNet)和旋转敏感回归检测器(RRD)。其他论文也有类似的方法来解决这个问题,但他们开发了自己的提案网络,该网络更倾向于文本而不是自然图像。例如,Tian等人在他们的Connectionist Text Proposal Network中使用垂直锚机制将卷积网络与循环网络结合起来,以提高水平文本的准确性。
  • 目标检测模型通常通过IoU(交联)度量和F1分数来评估。该度量计算候选边界框与地面真实边界框(交集)重叠的数量,除以候选边界框和GT边界框(并集)占用的总空间。接下来,选择IoU阈值τ来确定哪些预测框计数为真阳性(IoU≥τ)。其余的被归类为假阳性。模型未能检测到的任何框都被归类为假阴性。使用这些定义,计算F1分数来评估目标检测模型。
Text Detection as Instance Segmentation
  • 文档中的文本检测有其独特的挑战:值得注意的是,文本通常是密集的,文档包含的文本比通常出现在自然图像中的文本多得多。为了解决这个密度问题,文本检测可以作为一个超密集的实例分割任务。实例分割是将图像的每个像素分类为特定的、预定义的类别的任务。
  • 基于分割的文本检测器在像素级工作,以识别文本的区域。这些逐像素预测通常用于估计统一框架中文本区域、字符及其相邻字符之间关系的概率。从业者使用流行的分割方法,如全卷积网络(FCN)来检测文本,改进对象检测模型,特别是当文本不对齐或扭曲时。有几篇论文在此分割基础上,通过直接从分割输出中提取边界区域来输出单词边界区域。TextSnake通过预测FCN的文本区域、中心线、文本方向和候选半径进一步扩展了这一点。然后将这些特征与步进算法相结合,提取中轴线点来重建文本实例。

Word-level versus character-level

  • 虽然上面引用的大多数论文都试图直接检测单词甚至单词行,但一些论文认为字符级检测比一般文本检测更容易,因为字符比文本行或单词更不模棱两可。CRAFT使用FCN模型为每个字符输出二维高斯热图。然后将靠近的字符分组在一个旋转的矩形中,该矩形具有尽可能小的面积来封装该字符集。最近,Ye等人将使用区域建议网络(RPN)获得的全局、词级和字符级特征结合起来,取得了巨大成功
  • 上面描述的大多数模型主要是为文本场景检测而开发的,但可以很容易地适应于文档文本检测,以处理像扭曲文本这样的困难情况。我们期望文档中的失真比自然图像少,但是扫描不良的文档或具有某些字体的文档仍然可能造成这些问题。

Text Transcription

  • 文本转录是对图像中的文本进行转录的任务。输入是一个图像,通常是与字符、单词或单词序列相对应的裁剪,尺寸为 C × H ′ × W ′ C × H' × W' C×H×W。文本转录模型必须学会摄取这个裁剪过的图像,并输出一系列属于某个预先指定的词汇表V的符号。V通常对应一组字符。例如,对于数字识别,这是最直观的方法。否则,V也可以对应一组单词,类似于单词级语言建模问题。在这两种情况下,问题都可以被定义为一个多类分类问题,类的数量等于词汇表V的大小。

  • 词级文本转录模型需要更多的数据,因为在多类分类问题中,类的数量远远大于字符级。一方面,预测单词而不是字符减少了出现小错字的可能性(比如在“elephant”这样的单词中将“a”替换为“o”)。另一方面,将自己限制在单词级别的词汇意味着不可能转录不属于该词汇的单词。这个问题在字符级别不存在,因为字符的数量是有限的。只要我们知道文档的语言,就很容易建立一个包含所有可能字符的词汇表。子词单位是一种可行的替代方法,因为它们缓解了单词和字符级别转录中存在的问题。

  • 最近,研究界开始转向使用递归神经网络,特别是在卷积图像特征提取器之上使用LSTM或GRU单元的递归模型。为了转录一个令牌,通常使用两种不同的解码机制。一种是标准贪婪解码或波束搜索,使用具有交叉熵损失的基于注意力的序列解码器,完全类似于使用条件语言模型进行解码。有时图像定向不佳或不对齐,降低了标准序列注意的有效性。为了克服这个问题,He等人使用了注意对齐,直接编码字符的空间信息,而Shi等人直接使用了空间注意机制。转录解码通常采用的第二种方式是连接时间分类(CTC)损失,这是语音中常见的损失函数,可以很好地模拟序列输出中的重复字符。

  • 大多数文本转录模型都借鉴了文本和语音序列建模的进步,并且通常只需要进行微小的调整就可以很好地利用这些进步。因此,实践者很少直接处理与文档理解任务的其他组件相关的这个方面。

End-to-end models

  • 端到端方法结合了文本检测和文本转录,以共同改进这两个组成部分。例如,如果文本预测的概率非常低,则意味着检测到的框要么没有捕获整个单词,要么捕获了非文本的内容。在这种情况下,端到端方法可能非常有效。结合这两种方法是相当常见的,快速导向文本识别(FOTS)和具有显式对齐和注意力的TextSpotter都顺序地将这些模型结合起来进行端到端训练。这些方法使用共享卷积作为文本检测和识别的特征,并实现了文本复杂方向的方法。Feng等人引入了TextDragon,这是一种端到端模型,通过使用可微分感兴趣区域滑动算子,它可以很好地处理扭曲的文本,该算子专门用于纠正感兴趣区域的扭曲。Mask TextSpotter是另一个端到端模型,它将边界框的区域建议网络与文本和字符分割相结合)。这些最近的工作显示了端到端OCR解决方案在减少错误方面的强大功能。

  • 然而,拥有独立的文本检测和文本识别模型提供了更大的灵活性。首先,两个模型可以分开训练。在只有一个小数据集可用于训练整个OCR模块的情况下,但是大量的文本识别数据很容易访问,在识别模型的训练中利用这些大量的数据是有意义的。此外,使用两个独立的模型,可以很容易地计算两个独立的度量集,并且可以更全面地了解瓶颈可能在哪里。因此,双模型和端到端方法都是可行的。一种方法是否比另一种方法更好,主要取决于可用的数据和想要实现的目标。

Datasets for Text Detection & Transcription

  • 大多数文献都是围绕场景文本检测,而不是文档文本检测,并在这些数据集上报告结果。其中一些主要的是ICDAR,Total-Text, CTW1500和SynthText。Jaume等人提出了funSD,这是一个用于文本检测、转录和文档理解的数据集,包含199个完全注释的表单,由31k个单词级边界框组成。另一个最近的文档理解数据集来自ICDAR 2019扫描收据OCR和信息提取(SROIE)的稳健阅读挑战。它包含1000个完整的扫描收据图像,具有用于文本检测/转录的行级注释,以及用于关键信息提取的标签。该网站包含针对该问题提出的解决方案的排名。由于解决方案在比赛结束后仍会发布,因此跟踪最新的方法是一种好方法。

Document Layout Analysis

  • 文档布局分析是对图片或页面扫描图像上感兴趣的区域进行定位和分类的过程。从广义上讲,大多数方法可以提炼为页面分割和逻辑结构分析。页面分割方法侧重于外观,并使用视觉线索将页面划分为不同的区域;最常见的是文本、图形、图像和表格。相比之下,逻辑结构分析侧重于为这些区域提供更细粒度的语义分类,即识别作为段落的文本区域,并将其与标题或文档标题区分开来
  • 文献版面分析方法的研究在学术界和产业界都有着悠久的历史。从第一个开创性的启发式方法,到多阶段经典机器学习系统,文档布局分析方法的演变现在由端到端可微方法主导。

Instance Segmentation for Layout Analysis

  • 当应用于商业文档中的布局分析问题时,实例分割方法预测每个像素的标签来对感兴趣的区域进行分类。这样的方法很灵活,很容易适应页面分割的细粒度任务或更具体的逻辑结构分析任务。
  • 在Yang等人中,作者描述了一个端到端神经网络,该网络在编码器-解码器架构中结合了文本和视觉特征,该架构还结合了一个无监督的预训练网络。在推理过程中,他们的方法使用池化层的下采样级联来编码视觉信息,这些信息被馈送到对称的上采样级联中进行解码。在每个级联级别上,生成的编码也直接传递到各自的解码块中,连接下采样和上采样表示。这种架构确保在编码和解码过程中考虑到不同分辨率水平的视觉特征信息。对于最后的解码层,本地化文本嵌入与计算可视化表示一起提供。
  • 这种受U-Net启发的编码-解码架构已被用于几种不同方法的文档布局分析。Ares Oliveira等人的方法,后来由Barman等人通过额外的文本嵌入扩展,使用具有大过滤器尺寸的卷积maxpooling层通过ResNet瓶颈为文档图像提供数据。然后通过双线性上采样层和较小的1x1和3x3卷积层处理表示。这两个作品分别用于对欧洲多种语言的历史文献和报纸进行布局分析。在Lee等人中,作者将U-Net架构模式与可训练的乘法层结合起来。这种层类型专门用于从网络的卷积特征映射中提取共现纹理特征,这对于定位具有周期性重复信息的区域(如表)是有效的。

Addressing Data Scarcity and Alternative Approaches

  • 获取用于布局分析的高质量训练数据是一项劳动密集型任务,既需要机械精度,又需要对文档内容的理解。由于对来自全新领域的文档进行布局标注存在困难,因此存在几种方法来利用未标记数据中的结构或使用定义良好的规则集来生成合成标记文档,以进一步提高文档布局分析系统的泛化性和性能。

  • BERT和RoBERTa等 mask 语言模型在许多下游NLP任务上显示出有效的经验性能。受BERT和RoBERTa的预训练策略的启发,Xu等人定义了一个屏蔽视觉语言模型,该模型随机屏蔽输入令牌,并使用该模型来预测被屏蔽的令牌。与BERT不同,他们的方法在这个掩码预测任务期间提供了标记的二维位置嵌入,这使得模型能够结合文本元素之间的语义和空间关系。在前面的4.1节中提到,Yang等人在他们更广泛的基于实例分割的网络中引入了一个辅助文档图像重建任务。在训练期间,该辅助模块使用单独的上采样解码器,该解码器在没有跳过连接的帮助下,从编码表示中预测原始像素值。

  • 虽然预训练可以让从业者从未标记的文档中获得更多价值,但这种技术本身并不总是足以有效地克服数据稀缺性问题。根据许多商业和学术文档在内容和页面级组织中都具有重复模式的直觉,出现了几种方法来制造合成的标记数据,以便提供适合于类似预训练的常规数据。在Monnier中,作者提出了一种三阶段合成新标记文档的方法。首先,他们通过从一组近200个已知文档背景中随机选择文档背景来生成文档。其次,它们使用基于网格的布局方法来定义单个文档元素的内容及其各自的大小。第三,他们的过程引入了损坏,如高斯模糊和随机图像裁剪。这种模块化的、基于规则的合成文档生成方法创建了一个异构数据集,使布局分析模型的预训练更加健壮。

  • 另外,一些合成过程不是定义规则来生成异构的文档集,而是从数据增强方法中获取线索。Capobianco和Marinai以及Journet等人描述了通用工具包,该工具包使用一组现有的标记文档来引入源图像中的变形和扰动。重要的是,对训练数据的这种变化是平衡的,以便在保留原始语义内容的同时,仍然使模型训练暴露于现实的错误,这些错误必须在对看不见的数据进行推理时加以考虑。

Datasets for Layout Analysis

  • 最近,出现了大量专门针对文档布局分析问题的数据集。国际文件分析与识别会议(ICDAR)从其各种年度竞赛中产生了几个数据集;2017年和2019年的最新数据为文档布局分析和其他文档处理任务提供了金标准数据。
  • 在更大的方面,DocBank是一个包含50万个文档页面的集合,具有适合训练和评估文档布局分析系统的令牌级注释。作者使用弱监督构建了这个数据集,匹配来自已知pdf的LaTeX源的数据以形成注释。同样,Zhong等人通过自动匹配PubMed Central™上超过100万份pdf文件的XML内容表示创建了pubaynet,这些pdf文件由大约36万份文档图像组成。虽然没有完整的文档布局,但Zhong等人也从PubMed Central创建了PubTabNet。他们的数据包括56.8万张表格图像以及内容的HTML表示。
    • 在这里插入图片描述

    • 文档通过通用布局分析模型,生成具有以下类别的布局分割掩码:图(绿色)、图形标题(橙色)、标题(紫色)、段落(红色)和算法(蓝色)。该文件已获得许可复制(苏布拉马尼,2016年)。

Information Extraction

  • 用于文档理解的信息提取的目标是获取可能具有不同布局的文档,并将信息提取为结构化格式。示例包括收据理解以识别项目名称、数量和价格,以及表单理解以识别不同的键值对。人类对文档信息的提取不仅仅是阅读页面上的文本,因为通常需要学习页面布局才能完全理解。因此,最近的增强通过以各种方式对文本的结构和视觉信息进行额外编码,扩展了文档的文本编码策略。

2D Positional Embeddings

  • 本文提出了多种序列标记方法,通过嵌入二维边界框的属性,并将其与文本嵌入合并,以增强现有的命名实体识别(NER)方法,从而创建在提取信息时同时感知上下文和空间定位的模型。Xu et al嵌入x,y坐标对使用两个不同的嵌入表定义一个边界框,并预训练一个掩码语言模型(LM)。在预训练过程中,文本被随机屏蔽,但2D位置嵌入被保留。然后可以在下游任务上对该模型进行微调。或者,也可以使用位置编码方法。其他特征也可以嵌入,如行或序列号。在此场景中,对文档进行预处理,为每个单独的令牌分配行号。然后将每个标记从左到右排序并给出顺序位置。最后,嵌入线和顺序位置。
  • 虽然这些策略取得了成功,但是当在不平坦的表面上扫描文档时,仅依赖行号或边界框坐标可能会产生误导,导致文本弯曲。此外,基于边界框的嵌入仍然缺少关键的视觉信息,如排版强调(粗体、斜体)和标识等图像。为了克服这些问题,可以使用Faster R-CNN模型嵌入与感兴趣的令牌相对应的图像,以创建与2D位置嵌入相结合的令牌图像嵌入。

Image Embeddings

  • 文档的信息提取也可以被定义为计算机视觉挑战,其中模型的目标是在感兴趣的区域上对信息进行语义分割或回归边界框。此策略有助于保留文档的2D布局,并允许模型利用2D相关性。虽然理论上可以严格地从文档图像中学习,但直接将文本信息嵌入图像简化了模型理解2D文本关系的任务。在这些情况下,一个编码函数被应用到一个提议的文本级别(即字符,标记,单词),以创建单独的嵌入向量。这些向量被转置到包含与嵌入文本对应的边界框的每个像素中,最终创建W × H × D的图像,其中W为宽度,H为高度,D为嵌入维数。建议的变体如下:

    • CharGrid将带有one-hot编码的字符嵌入到图像中。
    • WordGrid使用word2vec或FastText嵌入单个单词
    • BERTgrid在任务特定的文档上对BERT进行微调,并用于获取上下文词块向量。
    • C+BERTgrid,结合了特定于上下文和字符向量
  • 当比较网格方法时,C+BERTgrid显示出最好的性能,可能是由于它的上下文词向量结合了一定程度的OCR错误弹性。赵等提出了一种直接将文本嵌入应用于图像的替代方法。网格被投影到图像的顶部,映射函数将每个标记分配给网格中的唯一单元格。然后,模型学习将网格中的每个单元分配给一个类。该方法由于其网格系统而显著降低了维数,同时仍然保留了大多数二维空间关系。

Documents as Graphs

  • 文档上的非结构化文本也可以表示为图网络,其中图中的节点表示不同的文本段。如果两个节点在基数上彼此相邻,则用一条边连接,从而允许直接建模单词之间的关系。BiLSTM等编码器将文本段编码为节点。边缘可以表示为二进制邻接矩阵或更丰富的矩阵,编码额外的视觉信息,如段之间的距离或源节点和目标节点的形状。然后以类似于扩展卷积的方式将图卷积网络应用于不同的接受,以确保可以学习局部和全局信息。之后,将表示传递给序列标记解码器。

  • 文档也可以表示为有向图和空间依赖解析器。在这种表示中,节点由文本段表示,但表示节点类型的字段节点用于初始化每个DAG。另外,定义了两种边:

    • 将属于同一类别的段组合在一起的边(STORENAME ➡ Peet’s ➡ Coffee;字段节点后面跟着两个表示商店名称的节点)
    • 连接不同群体之间关系的边缘(Peet’s ➡ 94107; a zipcode)。
  • 使用带有附加2D位置嵌入的transformer对文本进行空间编码。在此之后,任务变成预测每个边类型的关系矩阵。这种方法可以表示任意深度的层次结构,并且可以应用于复杂的文档布局。

Tables

  • 表格数据提取仍然是信息提取的一个具有挑战性的方面,因为它们的格式种类繁多,层次结构复杂。表数据集通常有多个任务要执行。第一个任务是表检测,它涉及到文档中包含表的边界框的本地化。下一个任务是表结构识别,它需要将行、列和单元格信息提取为通用格式。这可以更进一步到表识别,这需要通过对表本身的单元格进行分类来理解结构信息和内容。由于文本和视觉特征对于正确提取和理解表同样重要,因此提出了许多不同的方法来执行此任务。
  • 其中一个名为TableSense的提议同时执行表检测和结构识别。TableSense使用三个阶段的方法:细胞特征化,卷积模型的对象检测,以及基于不确定性的主动学习采样机制。TableSense提出的表检测架构在计算机视觉方面的表现明显优于传统方法,如yolo-v3或Mask R-CNN 。由于这种方法不适用于一般的电子表格,Dong等人(2019b)通过使用多任务框架来共同学习表格区域、电子表格的结构组件和单元格类型,扩展了以前的工作。它们增加了一个额外的阶段,该阶段利用语言模型来学习表单元格的语义内容,以便将复杂的表扁平化为单一的标准格式
  • Wang等人提出了TUTA,其重点是在确定结构后理解表中的内容。作者提出了使用基于树的Transformer进行表理解语言模型预训练的三个新目标。为预训练引入的目标旨在帮助模型在令牌、单元格和表级别上理解表。作者根据模型要预测的表单元格屏蔽一定比例的令牌,随机屏蔽特定的单元格标题,以便模型根据其位置预测标题字符串,并为表提供上下文,例如表标题或描述,这些内容可能与模型相关联,也可能不相关联,以便模型识别哪些上下文元素与表呈正相关。根据一个单元与另一个单元的层次距离,通过限制对项目的注意连接,对Transformer架构进行了修改,以减少对注意力的干扰。TUTA已经在多个数据集上展示了最先进的性能,用于细胞类型分类。

Conclusion

  • 文档理解是工业界的一个热门话题,具有巨大的货币价值。大多数文档都是私有数据,对应于私有合同、发票和记录。因此,公开可用的数据集很难获得,并且在其他应用领域也不是学术界关注的焦点。与具有大量公开可用数据的领域(如图像分类和翻译)相比,关于处理文档理解方法的学术文献同样稀少。然而,最有效的文档理解方法是利用深度神经网络建模的最新进展。通过创建执行布局分析、光学字符识别和特定于领域的信息提取的集成系统,可以实现端到端的文档理解。在这项调查中,我们试图巩固和组织文献中存在的方法,以便成为想要探索文献理解的学者和实践者的起点。

  • OCR 利用图像处理、模式识别和机器学习等方法,识别字符的形状、大小、排列和颜色等特征,将图像中的文本转化为字符编码或文字数据,以便进行搜索、编辑、存储、分析和共享。OCR 技术的目标是实现图像中文本的数字化,使得图像中的文本能够像普通电子文本一样处理

  • OCR 的工作原理如下:

    • **图像获取:**需要获取要识别文本的图像,可以是从扫描仪、相机或其他图像获取设备获取的数字图像。
    • **预处理:**图像预处理是必要的步骤,目的是优化图像以减少噪声并提高对比度,从而使文本更易于识别。预处理操作包括图像平滑、灰度转换、二值化(将图像转化为黑白)、去噪等。
      • 去歪斜 – 如果文档在扫描时未正确对齐,则可能需要顺时针或逆时针倾斜几度,以使文本行完全水平或垂直。
      • 去除噪声 – 去除正负斑点,平滑边缘
      • 二值化 – 将图像从彩色或灰度转换为黑白(称为二值图像,因为有两种颜色)。该任务是作为将文本(或任何其他所需的图像组件)与背景分离的简单方法执行的。二值化的任务是必要的,因为大多数商业识别算法只对二值图像起作用,因为这样做更简单。此外,二值化的有效性在很大程度上影响了字符识别的质量,在选择给定输入图像类型所采用的二值化时要谨慎决策;由于用于获取二进制结果的方法的质量取决于图像的类型(扫描文档、场景文本图像、降级的历史文档等)
      • 删除行 – 清理非字形框和行
      • 布局分析或分区 – 将列、段落、标题等标识为不同的块。在多列布局和表格中尤为重要。
      • 行和字检测 – 建立字和字形的基线,必要时分隔字。
    • **分割:**在分割阶段,图像中的文本行或字符被分割成单独的部分。分割过程通过寻找图像中的水平和垂直边界来实现,将文本行划分为单个字符。
    • **特征提取:**特征提取是一个关键步骤,用于捕获字符的关键特征,如形状、线条、角度等。这些特征将用于后续的模式匹配。
    • **模式匹配:**模式匹配阶段,使用事先训练好的模型或模式库,将提取的特征与已知字符形状进行比较和匹配。这个过程会涉及模式识别算法、机器学习模型,如神经网络、支持向量机等。
    • 识别和校正: 完成模式匹配后,需要将得到的识别结果进一步处理。如,校正可能的识别错误、合并分割字符等步骤,以提高准确性。
    • **文本输出:**被成功识别的字符将被转化为计算机可编辑的文本格式。这些文本数据可以被输出到文本文件、数据库或其他应用程序中。
  • OCR 技术发展的主要历程如下:

    • 早期方法(1950s - 1960s):早期的OCR方法主要基于模板匹配和规则,通过比对字符模板和图像中的字符来实现识别。这种方法对于特定字体和排版比较适用,但在多种字体和语言的情况下效果不佳。
    • 模式识别方法(1970s - 1980s):在这个阶段,出现了基于模式识别技术的 OCR 方法。模式识别方法通过捕捉字符的特征进行识别。然而,这种方法对于字体变化和噪声敏感,限制了其准确性和鲁棒性。
    • **特征提取方法(1990s):**在这个时期,OCR 开始使用更复杂的特征提取方法,如投影、轮廓和连接组件等,以更好地捕获字符的形状和结构。这种方法在应对一些特定字体和语言时取得了较好成效。
    • **统计方法(2000s):**随着计算能力的提升,统计方法和机器学习开始在 OCR 中得到应用。支持向量机(SVM)、隐马尔可夫模型(HMM)等方法被用于字符识别。这些方法使得 OCR 能够更好地处理复杂字体和多样性。
    • **深度学习时代(2010s - 至今):**随着深度学习技术,尤其是卷积神经网络(CNN)和循环神经网络(RNN)的发展,OCR 取得了革命性进展。深度学习能够自动从数据中学习特征,使 OCR 能够更准确地捕捉字符的细节和上下文信息,实现了在不同字体、语言和样式下的高水准识别。
  • OCR 面临的主要挑战如下:

    • **图像质量:**图像质量会直接影响 OCR 的准确性。模糊、扭曲、阴影、噪声等图像问题可能导致字符识别错误。OCR 在处理低质量图像,特别是来自不同设备和光照条件下的图像,会面临较大挑战。
    • **手写字体识别:**手写字体的识别是一个相当复杂的任务,因为手写字母的形状和大小具有较大的差异性。所以,手写文本的识别需要更高级的技术和训练。
    • **多种字体和语言:**OCR 需要适应不同的字体和语言。一些字体可能具有复杂的形状,而且不同语言的字符结构也不同,需要依托更多的模型和数据进行训练。
    • **特定领域的定制:**对于某些特定领域,如医疗、法律等,需要定制化的OCR模型,以处理特定领域的专业术语和格式。
  • 想要提高 OCR 的准确性,要采取多种策略。首先,优化图像质量是提升 OCR 准确性关键,通过预处理操作如去噪、平滑和增强对比度,可以改善图像的清晰度和可识别性。其次,使用多样性的训练数据集来涵盖不同字体、语言和风格,以训练模型更好地适应各种文本输入。也可以通过深度学习提高 OCR 的准确性,如卷积神经网络和循环神经网络,让其更准确地捕捉字符的特征和上下文信息,以提高识别准确性。在识别后,通过上下文信息、后处理技术和规则,可以纠正可能的错误,提高输出文本的质量。想要提高 OCR 准确性,需要采用持续学习的方法,定期更新模型以适应新的字体、语言和样式,同时考虑用户的反馈,不断改进 OCR 系统,逐步提升其性能,以更准确地将图像中的文本转化为可编辑的电子文本。

  • 光学字符识别 (OCR) – 针对打字文本,一次一个字形或字符。

  • 光学单词识别 – 针对打字文本,一次一个单词(适用于使用空格作为单词分隔符的语言)。通常简称为“OCR”

  • 智能字符识别 (ICR) – 也针对手写的印刷脚本或草书文本,一次一个字形或字符,通常涉及机器学习。
    的文本转化为可编辑的电子文本。

  • 光学字符识别 (OCR) – 针对打字文本,一次一个字形或字符。

  • 光学单词识别 – 针对打字文本,一次一个单词(适用于使用空格作为单词分隔符的语言)。通常简称为“OCR”

  • 智能字符识别 (ICR) – 也针对手写的印刷脚本或草书文本,一次一个字形或字符,通常涉及机器学习。

  • 智能文字识别 (IWR) – 也针对手写字体或草书文本,一次一个单词。这对于字形在草书中没有分隔的语言特别有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1426175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

cesium-场景出图场景截屏导出图片或pdf

cesium把当前的场景截图,下载图片或pdf 安装 npm install canvas2image --save npm i jspdf -S 如果安装的插件Canvas2Image不好用,可自建js Canvas2Image.js /*** covert canvas to image* and save the image file*/ const Canvas2Image (function…

elementUI中分开的时间日期选择组件,控制日期的禁用

<el-date-picker v-model"query.startTime" type"datetime" :picker-options"startPickerOptions" format"yyyy-MM-dd HH时" popper-class"date-picker" placeholder"选择日期时间"></el-date-picker>…

【Mysql】数据库架构学习合集

目录 1. Mysql整体架构1-1. 连接层1-2. 服务层1-3. 存储引擎层1-4. 文件系统层 2. 一条sql语句的执行过程2-1. 数据库连接池的作用2-2. 查询sql的执行过程2-1. 写sql的执行过程 1. Mysql整体架构 客户端&#xff1a; 由各种语言编写的程序&#xff0c;负责与Mysql服务端进行网…

[C#][opencvsharp]opencvsharp sift和surf特征点匹配

SIFT特征和SURF特征比较 SIFT特征基本介绍 SIFT(Scale-Invariant Feature Transform)特征检测关键特征&#xff1a; 建立尺度空间&#xff0c;寻找极值关键点定位&#xff08;寻找关键点准确位置与删除弱边缘&#xff09;关键点方向指定关键点描述子 建立尺度空间&#xff0…

python爬虫实战——获取酷我音乐数据

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 开发环境: 版 本&#xff1a; python 3.8 编辑器&#xff1a;pycharm 2022.3.2 模块使用: requests >>> pip install requests 如何安装python第三方模块: win R 输入 cmd 点击确定, 输入安装命令 pip install…

【数据分享】1929-2023年全球站点的逐日最低气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01; 之前我们分享过1929-2023年全球气象站…

【云原生之kubernetes系列】--污点与容忍

污点与容忍 污点&#xff08;taints)&#xff1a;用于node节点排斥Pod调度&#xff0c;与亲和效果相反&#xff0c;即taint的node排斥Pod的创建容忍&#xff08;toleration)&#xff1a;用于Pod容忍Node节点的污点信息&#xff0c;即node节点有污点&#xff0c;也将新的pod创建…

GM8775C——DSI 转双通道 LVDS 发送器

1 产品概述 GM8775C 型 DSI 转双通道 LVDS 发送器产品主要实现将 MIPI DSI 转单 / 双通道 LVDS 功能&#xff0c; MIPI 支持 1/2/3/4 通道可选&#xff0c;每通道最高支持 1Gbps 速率&#xff0c;最大支持 4Gbps 速率。 LVDS 时钟频率高达 154MHz &#xff…

数据解构+算法(第07篇):动态编程!黄袍加身!

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

【数据分享】1929-2023年全球站点的逐月最高气温数据(Shp\Excel\无需转发)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01; 之前我们分享过1929-2023年全球气象站…

vue如何使用vuedraggable实现不同面板之间的拖拽排序,拖拽复制功能?【vuedraggable】

vuedraggable官方文档链接使用说明https://www.itxst.com/vue-draggable/re7vfyfe.htmlhttps://www.itxst.com/vue-draggable/re7vfyfe.html 效果图&#xff1a; 使用vuedraggable拖动左边的字段和逻辑到右边形成不同的规则校验 <!-- ****--date 2024-02-01 11:34****-…

私募证券基金动态-23年12月报

成交量&#xff1a;12月日均7,696.93亿元 2023年12月A股两市日均成交7,696.93亿元&#xff0c;环比下降12.39%、同比下降2.26%。12月整体21个交易日&#xff0c;无单日交易日成交金额过万亿&#xff0c;单日交易日最低成交金额为6,122.84亿元&#xff08;12月25日&#xff09;…

GPT-4 Vision调试任何应用,即使缺少文本日志 升级Streamlit七

GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二翻译: GPT-4 Vision静态图表转换为动态数据可视化 升级Streamlit 三翻译: GPT-4 Vision从图像转换为完全可编辑的表格 升级St…

【C/Python】GtkApplicationWindow

一、C语言 GtkApplicationWindow 是 GTK 库中用于创建应用程序主窗口的一个控件。 首先&#xff0c;需要确保环境安装了GTK开发库。然后&#xff0c;以下是一个简单的使用 GtkApplicationWindow 创建一个 GTK 应用程序的示例&#xff1a; #include <gtk/gtk.h>static …

前端JavaScript篇之let、const、var的区别

目录 let、const、var的区别 let、const、var的区别 let、const和var是JavaScript中用于声明变量的关键字&#xff0c;它们之间有一些区别。 首先&#xff0c;var是在ES5中引入的关键字&#xff0c;而let和const是在ES6中引入的。在ES6之前&#xff0c;我们只能使用var来声明…

Thinkphp5.0.23远程代码执行漏洞复现

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 1、漏洞介绍 使用Thinkphp5.x远程代码执行漏洞&#xf…

操作系统--进程、线程基础知识

一、进程 我们编写的代码只是一个存储在硬盘的静态文件&#xff0c;通过编译后就会生成二进制可执行文件&#xff0c;当我们运行这个可执行文件后&#xff0c;它会被装载到内存中&#xff0c;接着 CPU 会执行程序中的每一条指令&#xff0c;那么这个运行中的程序&#xff0c;就…

python爬虫-多线程-数据库——WB用户

数据库database的包&#xff1a; Python操作Mysql数据库-CSDN博客 效果&#xff1a; 控制台输出&#xff1a; 数据库记录&#xff1a; 全部代码&#xff1a; import json import os import threading import tracebackimport requests import urllib.request from utils im…

博客文章质量分数列表【分页、排序、搜索】

文章目录 一、分析二、代码1、前端代码2、后端代码 三、实现效果四、总结1、出现安全验证2、401 Unauthorized: [no body] 一、分析 官方提供的质量分查询入口&#xff1a;CSDN质量分 输入我们要查的文章即可&#xff0c;比如&#xff1a;https://blog.csdn.net/qq_36433289/a…

开发板——X210开发板的SD卡启动方式

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 参考博客&#xff1a; S5PV210 SD卡启动 - 简书 关于存储器的相关基础知识&#xff0c;见博文&#xff1a; 外存——SD卡/iNand芯片与S5PV210的SD/MMC/iNand控制器-CSDN博客 RAM、ROM和FLASH三…