菜单

API 参考

相关源文件

本文档为 Tesseract OCR API 提供了全面的参考,该 API 使开发人员能够将其强大的 OCR 功能集成到他们的应用程序中。本参考涵盖了 C++ 和 C API、结果迭代器和输出渲染器。有关训练 Tesseract 的信息,请参阅训练,有关高级配置,请参阅构建和部署

API 组件概述

Tesseract API 由多个协同工作的关键组件组成,以提供 OCR 功能。

来源:include/tesseract/baseapi.h76-685 include/tesseract/capi.h137-188 src/lstm/lstmrecognizer.h50-156 include/tesseract/renderer.h47-155

典型使用流程

来源:src/api/baseapi.cpp160-186 src/api/baseapi.cpp295-363 src/api/baseapi.cpp452-478

TessBaseAPI 类

TessBaseAPI 类是使用 Tesseract OCR 的主要接口。它负责初始化、图像处理、识别和结果检索。

初始化

  • datapath:包含语言数据文件的 tessdata 目录的路径
  • language:ISO 639-3 语言代码(例如,英语为“eng”)
  • oem:OCR 引擎模式(OEM_TESSERACT_ONLY、OEM_LSTM_ONLY、OEM_TESSERACT_LSTM_COMBINED、OEM_DEFAULT)
  • configs:配置文件名数组
  • configs_size:配置文件的数量
  • vars_vec:变量名向量
  • vars_values:变量值向量
  • set_only_non_debug_params:如果为 true,则只设置非调试参数

来源:include/tesseract/baseapi.h197-215 src/api/baseapi.cpp297-363

配置

Tesseract 使用变量来控制识别行为。一些常用的变量:

可变类型描述
tessedit_char_whitelist字符串将识别限制在这些字符
tessedit_char_blacklist字符串不要识别这些字符
tessedit_create_hocr布尔值以 hOCR 格式输出
tessedit_create_pdf布尔值以 PDF 格式输出
language_model_penalty_non_dict_wordDouble非词典单词的惩罚
language_model_penalty_non_freq_dict_wordDouble不常用词典单词的惩罚

来源:src/api/baseapi.cpp208-262 src/api/baseapi.cpp436-449

图像处理

来源:include/tesseract/baseapi.h300-324 src/api/baseapi.cpp501-550

识别

来源:include/tesseract/baseapi.h452-453 src/api/baseapi.cpp759-842

结果检索

来源:include/tesseract/baseapi.h522-601

清理

来源:include/tesseract/baseapi.h290 src/api/baseapi.cpp184-186

C API

C API 提供了从无法直接使用 C++ 的语言中使用 Tesseract OCR 的函数。每个函数对应 C++ API 中的一个方法。

创建与清理

来源:include/tesseract/capi.h187-188 src/api/capi.cpp137-142

初始化

来源:include/tesseract/capi.h219-243 src/api/capi.cpp215-259

图像处理

来源:include/tesseract/capi.h309-323 src/api/capi.cpp309-323

识别与结果

来源:include/tesseract/capi.h378-388 src/api/capi.cpp378-388

迭代器

Tesseract 提供了迭代器类,用于在不同粒度级别访问识别结果。

PageIterator

PageIterator 允许遍历页面布局元素(块、段落、行、单词、符号)。

Page iterator 级别值

  • RIL_BLOCK:文本/图像/分隔符块
  • RIL_PARA:块内的段落
  • RIL_TEXTLINE:段落内的行
  • RIL_WORD:行内的单词
  • RIL_SYMBOL:单词内的符号/字符

来源: include/tesseract/pageiterator.h37-285

ResultIterator

ResultIterator 扩展 PageIterator 以提供对识别结果的访问。

来源: include/tesseract/resultiterator.h32-311

渲染器

Tesseract 提供渲染器以不同格式输出识别结果。

TessResultRenderer

所有渲染器的抽象基类。

来源: include/tesseract/renderer.h47-155

渲染器类型

渲染器描述输出格式
TessTextRenderer纯文本输出.txt
TessHOcrRenderer带 OCR 结果的 HTML.hocr
TessAltoRendererALTO XML 格式.xml
TessPDFRenderer带可搜索文本的 PDF.pdf
TessTsvRenderer制表符分隔值.tsv
TessBoxTextRendererBox 文件格式(用于训练).box
TessLSTMBoxRendererLSTM Box 格式.box
TessWordStrBoxRenderer单词字符串 Box 格式.box
TessUnlvRendererUNLV 格式.unlv

使用渲染器

来源: include/tesseract/renderer.h156-462 src/api/baseapi.cpp996-1008

LSTM 识别

Tesseract 使用 LSTM(长短期记忆)神经网络进行 OCR 识别。LSTMRecognizer 类负责基于 LSTM 的识别。

来源: src/lstm/lstmrecognizer.h50-569 src/lstm/lstmrecognizer.cpp74-89 src/lstm/lstmrecognizer.cpp245-291

完整使用示例

下面是一个完整的示例,展示了如何使用 Tesseract API 从图像中识别文本

C API 用法

来源: include/tesseract/baseapi.h76-685 include/tesseract/capi.h137-1060

高级处理

页面布局分析

来源: include/tesseract/baseapi.h444-445 src/api/baseapi.cpp737-751

文本方向和脚本检测

来源: include/tesseract/baseapi.h617-619

处理多个文件

来源: include/tesseract/baseapi.h482-486 src/api/baseapi.cpp996-1008

总结

Tesseract OCR API 提供了一个强大而灵活的接口用于光学字符识别。主要组成部分包括:

  1. TessBaseAPI - 核心 C++ API 类
  2. C API - C++ API 的 C 包装函数
  3. Iterators - 用于按页面、段落、行、单词或符号访问 OCR 结果的类
  4. Renderers - 用于将 OCR 结果输出为各种格式的类
  5. LSTMRecognizer - 基于神经网络的识别引擎

这些组件可以组合起来,创建自定义的 OCR 解决方案,其功能范围可以从简单的文本提取到复杂的文档分析和可搜索 PDF 生成。

来源: include/tesseract/baseapi.h include/tesseract/capi.h include/tesseract/resultiterator.h include/tesseract/renderer.h src/lstm/lstmrecognizer.h