光学字符识别 (OCR)

已完成

注释

有关更多详细信息,请参阅 “文本和图像 ”选项卡!

光学字符识别(OCR)是一种自动将图像中的视觉文本(无论是从扫描的文档、照片还是数字文件)转换为可编辑的可搜索文本数据的技术。 OCR 支持从以下自动提取数据,而不是手动转录信息:

  • 扫描的发票和收据
  • 文档的数字照片
  • 包含文本图像的 PDF 文件
  • 屏幕截图和捕获的内容
  • 表单和手写笔记

OCR 管道:分步过程

OCR 管道由五个基本阶段组成,共同将视觉信息转换为文本数据。

OCR 流程的示意图。

OCR 过程中的阶段包括:

  1. 图像获取和输入。
  2. 预处理和图像增强。
  3. 文本区域检测。
  4. 字符识别和分类。
  5. 输出生成和后期处理。

让我们更深入地检查每个阶段。

阶段 1:图像获取和输入

当包含文本的图像进入系统时,管道就开始运行。 这可以是:

  • 用智能手机相机拍摄的照片。
  • 从平板扫描仪或文件扫描仪扫描的文档。
  • 从视频流中提取的帧。
  • 以图像形式呈现的 PDF 页面。

小窍门

此阶段的图像质量显著影响文本提取的最终准确性。

阶段 2:预处理和图像增强

在文本检测开始之前,以下技术用于优化图像以提高识别准确性:

  • 降噪 可消除视觉伪影、尘埃斑点和扫描瑕疵,这些问题可能干扰文本检测。 用于执行降噪的具体技术包括:

    • 筛选和图像处理算法:高斯筛选器、中值筛选器和形态运算。
    • 机器学习模型:专门为文档图像清理训练的去噪自编码器和卷积神经网络 (CNN)
  • 对比度调整 增强了文本和背景之间的差异,使字符更加明显。 同样,有多种可能的方法:

    • 经典方法:直方图均衡、自适应阈值和伽马更正。
    • 机器学习:深度学习模型,用于了解不同文档类型的最佳增强参数。
  • 倾斜更正 可检测和更正文档旋转,确保文本行水平对齐。 倾斜更正的技术包括:

    • 数学技术:霍夫变换用于直线检测、投影轮廓和连通分量分析
    • 神经网络模型:使用图像特征直接预测旋转角度的CNN回归模型。
  • 分辨率优化 将图像分辨率调整为字符识别算法的最佳级别。 可以使用以下方法优化图像分辨率:

    • 内插方法:双三次内插、双线性内插和 Lanczos 重新采样算法
    • 超分辨率模型:生成对抗网络(GAN)和残差网络,这些网络可以智能地将低分辨率文本图像提升至更高分辨率。

阶段 3:文本区域检测

系统分析预处理的图像,以使用以下技术识别包含文本的区域:

  • 布局分析 区分文本区域、图像、图形和空白区域。 布局分析的技术包括:

    • 传统方法:连接的组件分析、运行长度编码和基于投影的分段。
    • 深度学习模型:语义分段网络,如 U-Net、掩码 R-CNN 和专用文档布局分析模型(例如,LayoutLM 或 PubLayNet 训练的模型)。
  • 文本块标识 根据空间关系将单个字符分组为单词、行和段落。 常见方法包括:

    • 经典方法:基于距离的聚类分析、空白分析和形态运算
    • 神经网络:了解空间文档结构的图形神经网络和转换器模型
  • 阅读顺序确定 确定应阅读文本的顺序(英语的从左到右、从上到下)。 正确的顺序可以通过以下方法确定:

    • 基于规则的系统:使用边界框坐标和空间启发法的几何算法。
    • 机器学习模型:序列预测模型和基于图形的方法,这些方法从训练数据中学习读取模式。
  • 区域分类 标识不同类型的文本区域(标头、正文文本、标题、表格)。

    • 基于特征的分类器:使用手工设计的特征(例如字体大小、位置和格式)的支持向量机 (SVM)
    • 深度学习模型:在标记的文档数据集上训练的卷积神经网络和视觉转换器

阶段 4:字符识别和分类

这是识别各个字符的 OCR 过程的核心:

  • 特征提取:分析每个字符或符号的形状、大小和独特特征。

    • 传统方法:统计特征,如时刻、傅立叶描述符和结构特征(循环、终结点、交集)
    • 深度学习方法:卷积神经网络,可自动从原始像素数据中学习歧视特征
  • 模式匹配:将提取的特征与识别不同字体、大小和写作样式的训练模型进行比较。

    • 模板匹配:使用关联技术与存储的字符模板直接比较
    • 统计分类器:隐马尔可夫模型 (HMM)、支持向量机和基于特征向量的 k 近邻算法
    • 神经网络:多层感知器、CNN 和专用体系结构,例如 LeNet 进行数字识别
    • 高级深度学习:残差网络(ResNet)、DenseNet 和 EfficientNet 体系结构,用于可靠的字符分类
  • 上下文分析:使用周围的字符和单词通过字典查找和语言模型提高识别准确性。

    • N 元语法模型:基于概率分布预测字符序列的统计语言模型。
    • 基于字典的更正:使用编辑距离算法(如 Levenshtein 距离)进行词典查找,以便进行拼写更正。
    • 神经语言模型:理解上下文关系的 LSTM 和基于转换器的模型(如 BERT 变体)。
    • 注意机制:在进行字符预测时专注于输入的相关部分的转换器模型。
  • 置信度评分:根据系统确定其标识的方式,为每个已识别字符分配概率分数。

    • 贝叶斯方法:概率模型,用于量化字符预测中的不确定性。
    • Softmax 输出:神经网络最终层激活转换为概率分布。
    • 组合方法:组合来自多个模型的预测以提高置信度估计。

阶段 5:输出生成和后期处理

最后阶段将识别结果转换为可用文本数据:

  • 文本编译:将单个字符识别组合成完整的单词和句子。

    • 基于规则的程序集:使用空间邻近度和置信度阈值组合字符预测的确定性算法。
    • 序列模型:循环神经网络(RNN)和长短期记忆网络(LSTM)将文本建模为序列数据。
    • 基于关注的模型:可以处理可变长度序列和复杂文本布局的转换器体系结构。
  • 格式保留:维护文档结构,包括段落、换行符和间距。

    • 几何算法:使用边界框坐标和空白分析基于规则的系统。
    • 布局理解模型:学习结构关系的图神经网络和文档 AI 模型
    • 多模态转换器:结合文本和布局信息以保留结构的模型,例如 LayoutLM。
  • 坐标映射:记录原始图像中每个文本元素的确切位置。

    • 坐标转换:图像像素和文档坐标之间的数学映射。
    • 空间索引:用于高效空间查询的数据结构,如 R 树和四树。
    • 回归模型:训练以预测精确文本定位坐标的神经网络。
  • 质量验证:应用拼写和语法检查来识别潜在的识别错误。

    • 基于字典的验证:针对全面的单词列表和专用域词汇查找。
    • 统计语言模型:用于语法和上下文验证的 N 元语法模型和概率分析器。
    • 神经语言模型:预先训练的模型,如 GPT 或 BERT,用于 OCR 错误检测和更正。
    • 集成验证:通过结合多种验证方法,提高错误检测的准确性。