菜单

传统训练

相关源文件

Tesseract OCR 中的传统训练是指在深度学习方法之前使用的基于模式的字符识别系统。本文档描述了 Tesseract 传统引擎的基于原型的训练方法,该方法使用字符特征、聚类和原型匹配来进行字符识别。有关基于神经网络的训练信息,请参阅 LSTM 训练

传统训练概述

Tesseract 中的传统训练使用基于形状的特征和聚类算法来创建字符的原型描述。然后将这些原型组织成模板,识别引擎使用这些模板进行字符分类。

传统训练方法创建

  1. 字符原型 - 典型字符特征的表示
  2. 类模板 - 每个字符类的原型集合
  3. 整数模板 - 优化模板,用于在识别过程中进行快速匹配

来源

基于特征的分类系统

传统引擎采用两级分类方法

  1. 类修剪器:一种快速过滤器,根据量化特征消除不太可能的字符类
  2. 详细匹配器:一种更精确的匹配器,通过将提取的特征与存储的原型进行比较来评估剩余的候选对象

来源

传统训练的数据结构

关键结构

  1. PROTO_STRUCT:表示一个具有位置、角度和长度的字符原型
  2. INT_CLASS_STRUCT:包含一个字符类的整数原型
  3. INT_TEMPLATES_STRUCT:所有字符类的集合
  4. ADAPT_TEMPLATES_STRUCT:可在识别过程中进行适应的模板

来源

训练过程

传统训练过程涉及几个阶段

  1. 特征提取:将字符图像转换为特征集
  2. 聚类:对相似特征进行分组以形成原型
  3. 原型生成:从聚类中创建字符原型
  4. 配置创建:创建配置(原型的组合)
  5. 整数转换:将浮点原型转换为整数格式以便进行高效匹配

特征提取

传统训练中使用的特征包括

  • 微特征(字符轮廓的段)
  • 归一化特征(位置、角度等)
  • 皮克特征(用于快速匹配的量化微特征)

来源

聚类算法

传统训练过程使用基于 k-d 树的聚类来对相似特征进行分组。聚类算法

  1. 从训练样本构建 k-d 树
  2. 查找特征空间中彼此靠近的点
  3. 根据距离阈值将点合并到聚类中
  4. 从生成的聚类创建原型

来源

原型创建

原型代表字符类的基本特征。每个原型包括

  • 位置(X, Y)
  • 角度
  • 长度
  • 数学表示(直线表示的 A、B、C 系数)

训练会根据特征分布创建球形(各向同性)和椭圆形(各向异性)原型。

来源

整数模板和修剪器

为了实现高效的运行时匹配,浮点原型通过量化转换为整数格式

类修剪器

类修剪器使用多维查找表快速拒绝不太可能的字符类

  1. 特征被量化到少量存储桶中
  2. 每个存储桶都包含指示哪些类可能匹配的位
  3. 修剪器可以快速消除不匹配特征的类

来源

原型修剪器

在类修剪之后,原型修剪器会识别类中的哪些原型可能与输入特征匹配

  1. 将特征与每个原型的修剪表进行比较
  2. 只有有希望的原型才会被进行详细评估
  3. 这种两阶段方法大大减少了所需的计算量

来源

自适应分类

传统引擎包含一个自适应分类器,可以从正在识别的文本中学习

  1. 使用新样本创建临时原型
  2. 经常出现的模式会被转换为永久原型
  3. 这使得引擎能够适应特定的字体和样式

来源

字体信息在训练中的应用

传统训练系统可以整合字体信息以提高识别率

  1. 字体属性(粗体、斜体、等宽、衬线)被存储
  2. 可以创建特定于字体的原型
  3. 分类器可以使用字体信息来改进匹配

来源

使用传统训练

要执行传统训练

  1. 准备带有真实文本的训练图像
  2. 从训练图像中提取特征
  3. 聚类特征以创建原型
  4. 将原型转换为整数格式
  5. 创建类修剪器表
  6. 以 .traineddata 文件格式保存训练好的数据

在识别过程中,传统引擎

  1. 从字符图像中提取特征
  2. 使用类修剪器识别候选类
  3. 将特征与剩余类中的原型进行匹配
  4. 将最佳匹配的字符类作为结果返回

来源

与 LSTM 训练的比较

方面传统训练LSTM 训练
特征类型手工设计(基于形状的特征)自动学习
训练方法原型聚类反向传播
字符模型单个原型神经网络
训练数据需求中等大型
识别速度简单情况下的速度更快更稳定
现代语言支持有限更好
适应性仅限于临时适应更好的泛化能力

传统训练系统在特定应用中仍然有用,尤其是在

  • 训练数据有限
  • 处理速度至关重要
  • 需要适应特定文档样式

来源