菜单

架构

相关源文件

本文档概述了 Tesseract OCR 系统的架构,解释了关键组件及其交互。它涵盖了高层结构、处理流程、识别引擎以及系统的数据流。有关构建系统的具体细节,请参阅构建与部署,有关训练引擎,请参阅训练

高层架构概述

Tesseract OCR 系统采用模块化架构设计,包含几个关键子系统

该架构包括:

  1. 外部接口TessBaseAPI 类提供了应用程序与 Tesseract 交互的主要接口。

  2. 核心引擎Tesseract 类是协调 OCR 过程的中心组件。

  3. 图像处理:用于图像预处理的组件,包括阈值处理和页面分割。

  4. 识别引擎:两个识别系统

    • LSTM 神经网络引擎(现代方法)
    • 传统 OCR 引擎(旧方法)
  5. 输出生成:用于不同输出格式(文本、hOCR、PDF 等)的各种渲染器。

  6. 支持系统:字典、训练系统和数据管理。

来源

核心组件

TessBaseAPI

TessBaseAPI 类作为使用 Tesseract 的应用程序的主要入口点。它封装了 OCR 引擎,并提供了以下方法:

  • 设置识别环境
  • 提供输入图像
  • 控制识别参数
  • 检索识别结果
  • 管理输出渲染器

来源

Tesseract 类

Tesseract 类是核心引擎组件。它继承了一个提供各种 OCR 相关功能的类层次结构

Tesseract 类保存了识别图像中文本所需的所有状态。它包含:

  • 识别引擎(LSTM 和/或传统)
  • 字典和语言信息
  • 页面分析和分割组件
  • 配置参数
  • 支持多种语言

来源

ImageThresholder

ImageThresholder 类处理图像预处理,包括:

  • 将各种图像格式转换为二值(黑白)图像
  • 应用不同的阈值处理方法(Otsu、Sauvola)
  • 缩放和标准化图像以进行识别

来源

OCR 处理管道

OCR 处理流程遵循以下主要步骤:

  1. 图像输入:图像通过 TessBaseAPI::SetImage 方法提供给系统。

  2. 阈值处理ImageThresholder 将图像转换为二值形式。

  3. 页面分割:识别图像中的块、行、单词和字符。

  4. 识别

    • LSTM 神经网络(用于现代模型)
    • 传统特征匹配识别(旧方法)
  5. 后处理:字典纠错、布局分析和结果生成。

来源

识别引擎

Tesseract 支持两种识别引擎:

LSTM 神经网络引擎

LSTM(长短期记忆)神经网络引擎是现代识别方法。

关键组件

  • LSTMRecognizer:管理神经网络。
  • RecodeBeam:实现来自网络输出的束搜索解码。
  • Network:神经网络架构(在 src/lstm 中实现)。

来源

传统引擎(旧版)

传统引擎使用特征提取和模式匹配。

关键组件

  • IntegerMatcher:用于字符识别的快速模式匹配。
  • AdaptiveClassifier:对新字体/模式的运行时自适应。
  • Features:各种特征提取器(例如,轮廓特征)。

来源

数据结构

Tesseract 使用一系列数据结构来表示识别结果。

关键数据结构

  • PAGE_RES:包含页面所有识别结果。
  • BLOCK_RES:块(段落或列)的结果。
  • ROW_RES:文本行的结果。
  • WERD_RES:单词的结果,包括识别的替代项。
  • BLOB_CHOICE:带置信度的字符识别替代项。

来源

结果迭代和输出

Tesseract 提供迭代器来访问识别结果。

Tesseract 通过渲染器类支持多种输出格式。

  • TessTextRenderer:纯文本输出。
  • TessHOcrRenderer:带 OCR 信息的 HTML(hOCR 格式)。
  • TessAltoRenderer:ALTO XML 格式。
  • TessPDFRenderer:带可搜索文本的 PDF。

来源

模型和语言数据管理

Tesseract 采用基于组件的方法来管理语言模型数据。

初始化时,Tesseract 会:

  1. 通过 TessdataManager 加载语言数据。
  2. 根据可用数据设置识别组件。
  3. 配置引擎模式(LSTM、旧版或组合)。

来源

配置系统

Tesseract 使用参数系统来配置其行为。

参数可以通过以下方式设置:

  • 命令行参数
  • 配置文件
  • 直接 API 调用 SetVariable

来源

结论

Tesseract 的架构是模块化且灵活的,支持现代 LSTM 识别和传统的基于特征的方法。系统的管道包括图像预处理、页面分割、文本识别以及各种格式的结果生成。

核心组件(TessBaseAPI、Tesseract 类、识别引擎)协同工作,提供完整的 OCR 解决方案,而可扩展的渲染器类则允许轻松地与各种文档处理系统集成。