关于人工智能:OCR技术的昨天今天和明天2023年最全OCR技术指南

51次阅读

共计 9215 个字符,预计需要花费 24 分钟才能阅读完成。

OCR 是一项科技变革,通过自动化大幅缩小人工录入的过程,帮忙用户从图像或扫描文档中提取文字,并将这些文字转换为计算机可读格局。这一性能在许多须要进一步解决数据的场景中,如身份验证、费用治理、主动报销、业务办理等都显得尤为实用。现如今,OCR 解决方案会联合 AI(人工智能)和 ML(机器学习)技术,以自动化处理过程并晋升数据提取的准确性。本文将介绍该技术的前世今生,一览该技术的阶段性倒退:传统 OCR 技术统治的过来,深度学习 OCR 技术闪光的当初,预训练 OCR 大模型跃然纸上的将来!

一、OCR 的前世:传统 OCR 技术统治的过来

传统 OCR 技术的工作原理

OCR 的运作形式能够类比为人类浏览文本和识别模式的能力。传统 OCR 技术通过电脑视觉、模式识别技术来自动识别并提取图像或文档中的字符。传统 OCR 技术须要通过以下步骤:

1. 图像预处理

这个阶段是为了加强图像的品质,包含去噪、二值化(行将图像转化为黑白),以及主动纠正图像的扭曲和歪斜等。

图像预处理在光学字符识别(OCR)中的利用

在光学字符识别(OCR)的工作流程中,图像预处理是首要步骤,它为整个零碎的准确性和稳健性打下基础。因而,了解图像预处理中应用的技术及其执行步骤极为要害。

图像预处理的定义

图像预处理是一种在进行次要的图像剖析之前,改良图像数据(打消无用信息,强化有用信息,或者进步计算速度)的技术。它能够加强图像品质,使得 OCR 引擎更好地拆散出文本和背景,进步文本的辨认准确度。

图像预处理的次要步骤和技术

1. 去噪声:在此步骤中,会应用各种滤波器(例如,中值滤波器、高斯滤波器等)来缩小图像中的噪声,如尘埃、划痕等。

2. 灰度化:将彩色图像转化为灰度图像。因为在大多数状况下,咱们只须要关注文字和背景的对比度,而不须要关注它们的色彩。灰度化能将计算复杂度大幅升高,同时保留次要信息。

3. 二值化:该步骤将图像转换为只蕴含黑白两色的图像。二值化过程能够通过设定一个阈值来实现,所有低于这个阈值的像素将被标记为彩色,而高于阈值的像素将被标记为红色。这样能够进一步强化文字与背景的对比度。

4. 去斜和校对:OCR 零碎须要主动纠正图像中的扭曲和歪斜,以确保文本的正确辨认。这个过程包含检测图像中文本行的歪斜角度,并进行相应的校对。

5. 区域划定:也被称为布局剖析,该步骤用于辨认图像中的文本区域、非文本区域以及文本的构造信息,如列、行、块、题目、段落、表格等。通过这个步骤,能够为后续的文字提取步骤提供根底。

图像预处理的重要性

优质的图像预处理工作能够显著进步后续步骤的效率和准确性。它能够晋升图像品质,更好地拆散文本和背景,打消图像中的噪声,纠正图像中的扭曲和歪斜,辨认文本的构造信息等。这些都是确保 OCR 零碎能精确辨认和提取文字的关键因素。因而,深刻了解和把握图像预处理步骤和技术,对于构建一个高效精确的 OCR 零碎至关重要。
 

2. 字符宰割

字符宰割是 OCR 过程中的一个重要步骤。这个步骤的指标是将图像中的文字区域分割成独立的字符,以便后续步骤进行字符识别。以下是进行字符宰割的次要步骤和应用的一些常见技术。

字符宰割的次要步骤

1. 行宰割:该步骤的指标是将图像中的文本区域分割成独自的行。通常状况下,行宰割能够通过剖析图像的程度投影直方图来实现。程度投影直方图是通过将图像中每个像素点的灰度值在程度方向上累加失去的。在文本行之间,累加值通常会显著降落,这些降落的地位就是行宰割的地位。

2. 字符宰割:在行宰割之后,下一步是将每一行文本进一步宰割成独自的字符。这通常能够通过剖析垂直投影直方图来实现。与程度投影直方图相似,垂直投影直方图是通过将每个像素点的灰度值在垂直方向上累加失去的。在字符之间,累加值通常也会显著降落,这些降落的地位就是字符宰割的地位。

字符宰割的常见问题和解决办法

在字符宰割的过程中,有一些常见的问题,例如字符的粘连和断开。这些问题可能导致字符无奈正确宰割,从而影响 OCR 的准确性。
 

1. 字符粘连:有时候,图像中的两个或更多的字符可能会严密相连,造成一个像是一个繁多字符的形态。为了解决这个问题,一种罕用的办法是通过形态学操作来拆散粘连的字符。例如,能够应用细化或骨架化技术来提取字符的中心线,而后依据这些中心线来拆散粘连的字符。
 

2. 字符断开:有时候,图像中的一个字符可能会因为噪声或其余起因而被断开成两个或更多的局部。为了解决这个问题,一种罕用的办法是通过形态学操作来连贯断开的字符。例如,能够应用收缩或闭运算技术来填补字符的空洞,而后依据这些填补后的形态来连贯断开的字符。

总的来说,字符宰割是 OCR 中的关键步骤。只有当图像中的字符被精确地宰割进去,OCR 零碎能力正确地辨认和提取这些字符。因而,深刻了解和把握字符宰割的步骤和技术,对于构建一个高效精确的 OCR 零碎至关重要。

3. 字符识别

图像或文档在这个步骤中被合成为局部或区域,辨认其中的字符。这个过程波及矩阵匹配(即每个字符都与字符矩阵库进行比拟)和特色辨认(即从图像中辨认文本模式和字符特色)。

字符识别技术

在光学字符识别(OCR)的工作流程中,字符识别是一个要害的步骤。在这个步骤中,零碎须要对宰割失去的每一个独自字符进行辨认。以下是字符识别阶段中的次要技术和步骤,特地是在传统的 OCR 零碎中。

特征提取

特征提取是字符识别的首个步骤,它的目标是从每个字符图像中提取出能够反映其次要形态和构造的特色。这些特色能够帮忙辨别不同的字符。在传统的 OCR 零碎中,常见的特征提取办法包含:

灰度共生矩阵(GLCM): GLCM 是一种统计办法,用于从图像中提取纹理特色。这些特色包含对比度、相关性、能量和同态性等。

Hu 不变矩: Hu 不变矩是一组能够抵制图像平移、缩放和旋转变动的特色。

傅立叶描述符: 傅立叶描述符能够从字符的形态,特地是字符的边界,提取特色。
 

字符分类

在提取了特色后,下一步是应用这些特色来对字符进行分类。在传统的 OCR 零碎中,最常见的分类器是反对向量机(SVM)。

反对向量机(SVM) SVM 是一种有监督的学习模型,它通过找出可能最大化类别间距的决策边界来进行分类。

训练分类器时须要有一个标注了实在类别标签的字符集。在进行字符识别时,分类器将依据输出的特色输入一个类别标签,这个标签就是辨认的后果。

性能评估

在实现字符识别之后,须要对系统的性能进行评估。罕用的性能指标包含准确率、准确率、召回率和 F1 分数。这些指标能够帮忙咱们理解分类器在不同条件下的体现,以便对其进行优化和改良。
 

传统 OCR 的局限性

尽管传统的光学字符识别(OCR)技术在许多场景中体现得相当杰出,但这种技术的确存在一些局限性,尤其是在比较复杂或者具备挑战性的状况下。以下是一些次要的局限性:

1. 对清晰度和品质的高要求:传统的 OCR 技术高度依赖图像的品质。如果输出的图像品质较差(例如,图像含糊、对比度低、光照不均、存在噪声等),则 OCR 的准确度可能会大大降低。

2. 对字体和布局的依赖性:传统的 OCR 技术通常基于特定的字体和布局进行训练。因而,如果输出的文本应用了训练数据中未蕴含的字体或者不同的布局,那么辨认精度可能会受到影响。

3. 理简单背景和装璜字的挑战:如果文本字符与背景严密相连或者文本在简单的背景上,传统的 OCR 零碎可能会难以精确地宰割和辨认字符。相似地,如果字符被装璜或者以艺术字模式出现,传统的 OCR 零碎可能也无奈精确地辨认出这些字符。

4. 艰难的手写辨认:对于手写文字的辨认,传统的 OCR 零碎通常会遇到更大的挑战,因为手写文字的形态、大小和倾斜度变动十分大,且往往不足清晰的边界。

5. 法解决多语言和特殊字符:传统的 OCR 零碎通常针对繁多或者少数几种语言进行优化,对于其余语言或者特殊字符,例如数学符号、音乐符号等,可能无奈提供称心的辨认成果。

6. 缺 乏上下文了解:传统的 OCR 技术通常将字符识别作为一个独立的工作进行,而没有思考字符的上下文信息。因而,如果一个字符在图像中模糊不清,OCR 零碎可能无奈精确地辨认出这个字符。

总的来说,尽管传统的 OCR 技术在一些场景中体现得十分杰出,但在解决简单或者具备挑战性的工作时,这种技术的局限性就会裸露进去。这也是为什么越来越多的研究者开始摸索应用深度学习等更先进的技术来改良 OCR 零碎。

OCR 的今生:深度学习 OCR 技术闪光的当初

传统 OCR 技术在解决简单的图像和不规则形态的文本时,成果并不现实。深度学习时代,机器能够“学习”解决简单工作,并且对数据具备很好的适应性。通过联合深度学习,建设更为弱小和灵便的 OCR 模型,它可能解决各种类型的文本,并且进步字符识别的准确率。

深度学习 OCR 技术分为两步:文本检测与文本辨认。

深度学习文本检测

基于候选框的形式 Proposal-based:举例 FastRCNN

FastRCNN(疾速区域卷积神经网络)是一种用于指标检测的深度学习模型,它通过利用区域倡议网络(Region Proposal Network,RPN)来找出图像中可能存在指标的区域,而后通过一个卷积网络对这些区域进行特征提取和分类。它在解决图像数据时,能够实现更高的运算速度和更精确的指标检测。

在 OCR(Optical Character Recognition,光学字符识别)场景下,FastRCNN 能够被用来定位和辨认图像中的文本内容。它能够辨认各种模式的文本,包含打印的、手写的甚至是非结构化的文本。因为 FastRCNN 是一个二级任务模型,它先进行文本区域的定位,再进行文字辨认,使得模型在解决简单场景下的文本辨认工作时具备很高的效率和准确度。

[https://arxiv.org/pdf/1506.01497.pdf]()

技术阐明

文本区域检测,FastRCNN 通过 RPN 生成可能的文本区域倡议。RPN 是一种全卷积网络,它可能在图像的任意地位生成潜在的文本区域,这对于解决各种简单图像,尤其是含有多个、大小不一、布局简单的文本区域的图像具备重要作用。

技术步骤

区域倡议:利用 RPN 网络在预处理后的图像上生成潜在的文本区域倡议。

特征提取和分类:对每个倡议区域应用 FastRCNN 进行特征提取和分类。因为 FastRCNN 能够在不同的区域进行特色共享,所以它能够在不就义精度的状况下大大提高计算效率。

后处理:解决模型输入,包含对检测到的文本区域进行合并、去重和排序等操作,最初将检测和辨认后果返回给用户。

继续学习和优化:依据模型在理论利用中的体现,收集反馈数据,继续优化和训练模型,进步其在简单场景下的性能。

基于宰割的形式 Segmentation-based:举例 MaskRCNN

Mask-RCNN 是一个基于深度学习的指标检测模型,它的次要个性是同时进行指标检测和像素级别的图像宰割。该模型在 FastRCNN 的根底上增加了一个并行的宰割工作,能够输入指标的分类、地位和形态等信息。

在 OCR(Optical Character Recognition,光学字符识别)场景下,Mask-RCNN 能够被用来对文本进行精密的检测和宰割。因为 Mask-RCNN 不仅能够辨认出图像中的文字,还可能准确地给出文字的形态和地位,这使得它特地适宜用于解决含有简单布局和形态的文本图像。

[https://arxiv.org/pdf/1703.06870.pdf]()

技术阐明

Mask-RCNN 在 OCR 场景中的利用次要波及到文本区域检测和形态宰割。

首先,与 FastRCNN 一样,Mask-RCNN 通过 RPN 生成可能的文本区域倡议。而后,对每个倡议区域,Mask-RCNN 不仅进行了 FastRCNN 的分类和回归工作,还额定进行了一个并行的像素级宰割工作。

在 OCR 中,这个宰割工作能够用来生成文字的准确形态和地位信息,这对于解决简单布局和形态的文本图像,例如自在形态的文本,垂直或歪斜排列的文本,具备重要的利用价值。

技术步骤

** 区域倡议:利用 RPN 网络在预处理后的图像上生成潜在的文本区域倡议。

** 特征提取、分类和宰割:对每个倡议区域,Mask-RCNN 同时进行特征提取、分类和像素级宰割。通过这些工作,能够失去每个文字的类别、地位和准确形态。

** 后处理: 解决模型输入,包含对检测到的文本区域进行合并、去重和排序等操作,以及依据宰割后果生成文字的准确形态和地位信息。

** 继续学习和优化: 依据模型在理论利用中的体现,收集反馈数据,继续优化和训练模型,进步其在简单场景下的性能。

深度学习文本辨认

当咱们议论深度学习 OCR 文字辨认的技术路线时,次要有三种方向:基于 CTC 的解码形式,基于 Attention 的解码形式,以及基于字符宰割的办法。

基于 CTC 的解码形式:

设想一下,你正在听一段音频,你须要将其中的对话转化为文字。这就须要一个可能依照工夫程序将声音转化为字符的零碎。这就是 CTC(Connectionist Temporal Classification)的概念。CTC 解决的就是如何将具备固定工夫长度的音频(或者图像)转化为不固定长度的文字。

CTC(Connectionist Temporal Classification)是一种用于序列型问题的非凡解码形式。在 OCR 工作中,它能够帮忙咱们在固定维度的时序特色与非固定维度的输入(例如:文本字符串)之间建设映射关系。那么,具体如何运作呢?

技术阐明

CTC 的要害翻新是引入了一个非凡的符号,通常被称为“空格”字符或者“blank”字符。这个字符没有理论的语义含意,但它在训练模型时起着要害的作用。

具体来说,当咱们训练一个模型时,咱们须要一个固定长度的输出(例如图像)对应一个固定长度的输入(例如字符序列)。但在 OCR 问题中,输出图像的宽度(或者说特色的时序长度)往往是固定的,而输入的字符数量是变动的,这导致了输出和输入之间存在一个“不对齐”的问题。

CTC 通过引入“空格”字符,无效地解决了这个问题。在训练时,咱们能够为每个可能的字符预测一个概率,同时还预测一个“空格”字符的概率。而后,咱们能够通过一种叫做“解码”的过程,从这些预测的概率中生成最终的字符序列。

技术步骤

当咱们应用基于 CTC 的解码形式解决 OCR 问题时,个别会采纳如下的技术步骤:
 

1. 特征提取:首先,咱们须要从输出的图像中提取出有用的特色。这通常是通过深度学习模型(如 CNN)实现的。每个图像的宽度会被划分成若干个小块(即“工夫步”),并且每个小块都会生成一个特征向量。
 

2. 序列预测:而后,咱们将这些特征向量输出到一个递归神经网络(RNN)中,为每个工夫步预测一个字符,同时预测一个“空格”字符。

3. CTC 解码:最初,咱们应用 CTC 解码算法从预测的概率中生成最终的字符序列。在这个过程中,“空格”字符起到了一个重要的作用:它能够用来示意字符之间的边界,同时也能够用来示意不存在字符的工夫步。

在这种解码形式中,CRNN+CTC 模型是十分典型的代表。CRNN(卷积递归神经网络)联合了卷积神经网络(CNN)和递归神经网络(RNN)的个性,可能无效地从图像中提取特色并进行序列预测。
 

值得注意的是,只管基于 CTC 的解码形式在解决定长输出和变长输入的问题上有着显著的劣势,但因为其预测每个字符时并未充分利用上下文信息,所以在解决不规则形态的文本(如蜿蜒文本或者手写文本)时,成果可能会有所降落。

基于 Attention 的解码形式:技术深度解析

咱们在浏览时,总是会关注到一些特定的局部,而疏忽其余不太重要的信息。在这个过程中,咱们总是在上下文中寻找重要的信息,这就是 Attention 机制。

基于 Attention 的解码形式是一种在深度学习中宽泛应用的办法,尤其在解决序列型问题,如机器翻译和 OCR 时,体现优异。它之所以被称为 ”Attention”(注意力),是因为这种机制能模拟人类在解决信息时会关注要害局部的个性。

技术阐明

Attention 机制的根本思维是,在进行预测时,模型应该“关注”输出中最相干的局部。在 OCR 的环境中,这意味着在预测某个字符时,模型应该关注图像中与该字符最相干的区域。

Seq2Seq+Attention 模型就是基于 Attention 的一种典型模型。这种模型通常由两局部组成:编码器(Encoder)和解码器(Decoder)。编码器的工作是将输出图像转化为一组特征向量。解码器的工作是将这些特征向量转化为字符序列。

与传统的 Seq2Seq 模型不同,这里的解码器在生成每一个字符时,都会通过 Attention 机制来抉择和关注哪些特征向量。换句话说,模型会“关注”那些对以后预测最有帮忙的特色。

技术步骤

应用基于 Attention 的解码形式解决 OCR 问题,个别会采纳以下的技术步骤:

1. 特征提取:首先,咱们须要一个编码器(通常是深度神经网络,如 CNN)来将输出的图像转化为一组特征向量。

2. 序列预测:而后,咱们须要一个解码器(通常是递归神经网络,如 RNN 或者 LSTM)来将这些特征向量转化为字符序列。在生成每一个字符时,解码器都会应用 Attention 机制来抉择和关注哪些特征向量。

3. Attention 解码:通过 Attention 解码过程,模型可能生成一系列的字符,这些字符独特组成了最终的文本后果。值得注意的是,因为每一步预测都是依赖于后面所有步骤的上下文信息,因而,这种办法在解决简单的、不规则的文本时,通常可能获得更好的成果。

基于 Attention 的解码形式尽管在解决不规则形态的文本,如蜿蜒文本或手写文本时成果较好,然而须要留神的是,当解决的文本过长或者过短时,这种办法可能成果会有所升高。此外,因为模型须要思考全副的上下文信息,因而计算复杂度绝对较高,这也是基于 Attention 的解码形式须要留神的一点。

基于字符宰割的办法

咱们在浏览单词时,会一个字母一个字母地浏览。这种办法对于解决蜿蜒的文本和不规则的文本十分无效,但前提是咱们须要对每个字符进行准确的标注,这就是基于字符宰割的办法。

在 OCR 畛域,基于字符宰割的办法是一种更传统的解决形式,它的核心思想是将 OCR 问题拆解为两个子问题:字符检测和字符识别。这种办法对解决蜿蜒文本和不规则文本有肯定劣势,然而对字符标注的要求较高。

技术阐明

基于字符宰割的办法首先通过图像处理技术来宰割出图像中的每个字符,而后对每个字符进行独自的辨认。这种形式的长处是它可能解决各种形态和大小的文本,尤其是蜿蜒和不规则的文本。而且,因为每个字符都是独自解决的,所以它也能很好地解决字符间距不统一的状况。

然而,这种办法也有它的局限性。因为它须要对每个字符进行准确的定位和宰割,所以它对字符标注的要求很高。在理论利用中,因为各种各样的烦扰因素(比方光照、背景噪声、字体款式等),很难做到齐全精确的字符宰割。

技术步骤

应用基于字符宰割的办法解决 OCR 问题,个别会采纳以下的技术步骤:

1. 字符检测:首先,咱们须要用一种字符检测算法(如滑动窗口或基于区域的办法)来定位并宰割出图像中的每个字符。这通常须要大量的图像处理技术,例如边缘检测、形态学操作等。
 

2. 字符识别:而后,咱们须要对每个宰割进去的字符进行辨认。这能够通过一个分类器(如 SVM 或深度神经网络)来实现。每个字符都被独自辨认,而后组合在一起造成最终的文本。

3. 字符排序:在辨认了所有字符后,咱们还须要对它们进行排序,以失去正确的浏览程序。这通常能够通过空间关系(如从左到右,从上到下)或者序列模型(如 HMM)来实现。

在这个过程中,字符的定位、宰割和辨认都是关键步骤,每个步骤的后果都会间接影响到最终的 OCR 性能。因而,只管基于字符宰割的办法在解决一些简单文本时有其劣势,但也须要在理论利用中衡量其复杂性和准确性。

基于 Transformer 的办法

Transformer 模型在近年来的 NLP 畛域曾经展现出了微小的后劲,它优良的性能也引起了 OCR 畛域的留神。基于 Transformer 的办法提供了一种全新的解决 OCR 问题的形式,这种办法能够解决 CNN 在解决长期依赖问题上的局限性。

[https://arxiv.org/pdf/2102.10772.pdf]()

技术阐明

Transformer 模型的外围是自注意力(Self-Attention)机制,这种机制能使模型在解决序列数据时,对每个元素都有一个全局的视角。在 OCR 问题中,这意味着模型在预测某个字符时,能同时思考到图像中所有的区域,而不仅仅是部分区域。

Transformer 模型通常由两局部组成:编码器(Encoder)和解码器(Decoder)。编码器的工作是将输出的图像转化为一组特征向量。解码器的工作是将这些特征向量转化为字符序列。值得注意的是,因为自注意力机制的存在,编码器和解码器在解决每个特征向量或字符时,都能思考到所有的特征向量或字符。

技术步骤

应用基于 Transformer 的办法解决 OCR 问题,个别会采纳以下的技术步骤:
 

1. 特征提取:首先,咱们须要一个编码器(通常是深度神经网络,如 CNN)来将输出的图像转化为一组特征向量。

 
2. 序列预测:而后,咱们须要一个基于 Transformer 的解码器来将这些特征向量转化为字符序列。在生成每一个字符时,解码器都会应用自注意力机制来抉择和关注哪些特征向量。

 
3. 字符组合:最初,解码器将生成的字符序列组合成最终的文本后果。因为 Transformer 模型对每个特征向量的解决都思考到了所有的特征向量,因而,这种办法在解决简单的、不规则的文本时,通常可能获得更好的成果。
 

总的来说,基于 Transformer 的办法是一种十分有前途的解决 OCR 问题的形式。它不仅能克服 CNN 在解决长期依赖问题上的局限性,而且因为自注意力机制的存在,它在解决简单文本时的性能也很优良。然而,因为 Transformer 模型的计算量绝对较大,因而在理论利用中,须要留神计算资源和模型性能之间的均衡。

OCR 的将来:预训练 OCR 大模型跃然纸上的将来

以后,NLP 与 CV 预训练大模型(OpenAI GPT、Meta SAM)曾经显示出了弱小的性能。通过在大量的无标签数据上进行预训练,大模型能够学习到大量视觉特色和语言特色,将极大地晋升模型在上游工作上的性能。以后,这方面的钻研已处于飞速发展阶段,曾经有一些钻研表明,联结字符级别和字段级别文本多模态特色加强的预训练大模型在 OCR 工作上有很大的后劲。

OpenAI

Segment Anything | Meta AI

展望未来,咱们期待预训练大模型可能进一步晋升 OCR 的性能,特地是在解决多语言、简单场景、长文本等问题上。同时,也须要钻研如何在保障性能的同时,升高模型的计算资源耗费,使得这些模型可能在更宽泛的设施和场景中失去利用。

合合 TextIn.com 专一智能文字畛域 15 年

合合 TextIn – 合合信息旗下 OCR 云服务产品

正文完
 0