菜单

字符集管理

相关源文件

Tesseract OCR 中的字符集管理是指系统如何处理、存储和识别使用的字符(unicharacters)集合。这包括从训练数据创建字符集、管理字符属性、高效的字符编码以及在训练和识别过程中使用这些字符集。

有关 LSTM 训练过程本身的信息,请参阅LSTM 训练

字符集管理概述

字符集管理主要围绕 UNICHARSET 类进行,该类维护一组具有其属性的字符。系统支持字符映射、标准化、压缩,并提供从训练数据提取字符集的工具。

来源

UNICHARSET 类

UNICHARSET 类是 Tesseract 字符集管理的基础。它代表一组 Unicode 字符/连字及其属性。

核心功能

UNICHARSET 类提供了以下关键功能

  1. 字符存储:将 Unicode 字符串表示映射到唯一的数字 ID(UNICHAR_ID
  2. 属性管理:存储每个字符的属性(isalpha、islower、isupper 等)
  3. 脚本识别:将每个字符与其脚本(拉丁文、西里尔文、汉字等)关联起来
  4. 字符标准化:存储字符的标准化形式
  5. 编码/解码:在字符串和 ID 表示之间进行转换

UNICHARSET 结构

来源

字符集创建和提取

unicharset_extractor 工具从 box 文件或文本文件中创建 UNICHARSET 文件。此过程包括

  1. 读取包含字符示例的输入文件
  2. 根据指定的模式对字符串进行标准化
  3. 提取唯一字符
  4. 设置字符属性
  5. 将 UNICHARSET 写入文件

标准化模式

提取器支持三种标准化模式

模式描述推荐用于
合并字素1合并字素簇拉丁文、简单脚本
拆分字素2拆分字素簇印度语、高棉语、缅甸语
纯 Unicode3不经修改地使用 Unicode 字符阿拉伯语、希伯来语、泰语、藏语

提取过程

来源

字符编码和压缩

Tesseract 使用 UnicharCompress 类为 Unicode 字符提供更有效的编码,特别是对于 CJK(中文、日文、韩文)和印度语系。

UnicharCompress 类

编码策略

Tesseract 使用多种策略来压缩字符编码

  1. 韩语编码:将韩文字符分解为 Jamo 组件
  2. 汉字(CJK)编码:使用部首笔画编码汉字
  3. 字素编码:处理组合标记和特殊字符
  4. 连字处理:将连字分解为其组成字符

编码过程

来源

Box 文件和字符集输入

Box 文件是字符集创建的基础输入。它们包含字符的边界框及其 Unicode 表示。

Box 文件格式

Box 文件格式如下

<UTF-8 char> <left> <bottom> <right> <top> <page>

例如

a 123 456 140 480 0

这表示字符 'a',在页面 0 上,坐标为 (left=123, bottom=456, right=140, top=480)。

Box 文件处理

来源

LSTM 训练中的字符集

LSTM 训练系统使用字符集来映射文本和网络的输出。

训练中的字符集作用

  1. 网络输出定义:输出层的大小由字符集大小决定
  2. 标签编码:使用字符集对训练标签进行编码
  3. 识别解码:使用字符集将网络输出解码回文本
  4. 重编码:使用 UnicharCompress 进行更高效的编码

与 LSTMTrainer 的集成

LSTM 训练字符数据流

来源

字符集转换和映射

在重新训练模型或更改字符集时,Tesseract 提供映射功能以在不同字符集之间进行转换。

字符集映射过程

代码映射应用

  1. 微调模型:将预训练模型适应新字符集
  2. 语言转换:在具有重叠脚本的语言之间转换模型
  3. 扩展模型:向现有模型添加新字符
  4. 脚本适应:使模型能够处理脚本变体

来源

调试和可视化

Tesseract 通过 ScrollView 类提供用于调试和可视化字符集的工具。

可视化功能

  1. 字符显示:查看单个字符及其属性
  2. 错误可视化:显示真实值和识别结果之间的不匹配
  3. 训练可视化:通过字符级细节监控训练进度

用于字符错误分析的 BlamerBundle

来源

字符集管理的最佳实践

  1. 全面的字符覆盖:确保训练数据包含识别所需的所有字符
  2. 适当的标准化:根据脚本特性选择正确的标准化模式
  3. 一致的字符集:在训练和识别过程中使用一致的字符集
  4. 字符属性:为字符设置适当的属性以提高识别率
  5. 脚本识别:正确识别多脚本文档的脚本
  6. Box 文件质量:为训练创建准确的 Box 文件

结论

字符集管理是 Tesseract OCR 系统的一个关键组成部分,它连接了自然语言文本和机器学习模型。 UNICHARSET 类以及 UnicharCompress 等支持类,为处理不同脚本和语言的 Unicode 字符提供了一个全面的框架。

理解这些组件对于训练有效的 OCR 模型、将 Tesseract 扩展到新语言以及调试识别问题至关重要。