本文档概述了 Tesseract OCR 系统的架构,解释了关键组件及其交互。它涵盖了高层结构、处理流程、识别引擎以及系统的数据流。有关构建系统的具体细节,请参阅构建与部署,有关训练引擎,请参阅训练。
Tesseract OCR 系统采用模块化架构设计,包含几个关键子系统
该架构包括:
外部接口:TessBaseAPI 类提供了应用程序与 Tesseract 交互的主要接口。
核心引擎:Tesseract 类是协调 OCR 过程的中心组件。
图像处理:用于图像预处理的组件,包括阈值处理和页面分割。
识别引擎:两个识别系统
输出生成:用于不同输出格式(文本、hOCR、PDF 等)的各种渲染器。
支持系统:字典、训练系统和数据管理。
来源
TessBaseAPI 类作为使用 Tesseract 的应用程序的主要入口点。它封装了 OCR 引擎,并提供了以下方法:
来源
Tesseract 类是核心引擎组件。它继承了一个提供各种 OCR 相关功能的类层次结构
Tesseract 类保存了识别图像中文本所需的所有状态。它包含:
来源
ImageThresholder 类处理图像预处理,包括:
来源
OCR 处理流程遵循以下主要步骤:
图像输入:图像通过 TessBaseAPI::SetImage 方法提供给系统。
阈值处理:ImageThresholder 将图像转换为二值形式。
页面分割:识别图像中的块、行、单词和字符。
识别:
后处理:字典纠错、布局分析和结果生成。
来源
Tesseract 支持两种识别引擎:
LSTM(长短期记忆)神经网络引擎是现代识别方法。
关键组件
src/lstm 中实现)。来源
传统引擎使用特征提取和模式匹配。
关键组件
来源
Tesseract 使用一系列数据结构来表示识别结果。
关键数据结构
来源
Tesseract 提供迭代器来访问识别结果。
Tesseract 通过渲染器类支持多种输出格式。
来源
Tesseract 采用基于组件的方法来管理语言模型数据。
初始化时,Tesseract 会:
TessdataManager 加载语言数据。来源
Tesseract 使用参数系统来配置其行为。
参数可以通过以下方式设置:
SetVariable。来源
Tesseract 的架构是模块化且灵活的,支持现代 LSTM 识别和传统的基于特征的方法。系统的管道包括图像预处理、页面分割、文本识别以及各种格式的结果生成。
核心组件(TessBaseAPI、Tesseract 类、识别引擎)协同工作,提供完整的 OCR 解决方案,而可扩展的渲染器类则允许轻松地与各种文档处理系统集成。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(d39177)