本文档为 Tesseract OCR API 提供了全面的参考,该 API 使开发人员能够将其强大的 OCR 功能集成到他们的应用程序中。本参考涵盖了 C++ 和 C API、结果迭代器和输出渲染器。有关训练 Tesseract 的信息,请参阅训练,有关高级配置,请参阅构建和部署。
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 类是使用 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_word | Double | 非词典单词的惩罚 |
language_model_penalty_non_freq_dict_word | Double | 不常用词典单词的惩罚 |
来源: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++ 的语言中使用 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 允许遍历页面布局元素(块、段落、行、单词、符号)。
Page iterator 级别值
RIL_BLOCK:文本/图像/分隔符块RIL_PARA:块内的段落RIL_TEXTLINE:段落内的行RIL_WORD:行内的单词RIL_SYMBOL:单词内的符号/字符来源: include/tesseract/pageiterator.h37-285
ResultIterator 扩展 PageIterator 以提供对识别结果的访问。
来源: include/tesseract/resultiterator.h32-311
Tesseract 提供渲染器以不同格式输出识别结果。
所有渲染器的抽象基类。
来源: include/tesseract/renderer.h47-155
| 渲染器 | 描述 | 输出格式 |
|---|---|---|
| TessTextRenderer | 纯文本输出 | .txt |
| TessHOcrRenderer | 带 OCR 结果的 HTML | .hocr |
| TessAltoRenderer | ALTO XML 格式 | .xml |
| TessPDFRenderer | 带可搜索文本的 PDF | |
| TessTsvRenderer | 制表符分隔值 | .tsv |
| TessBoxTextRenderer | Box 文件格式(用于训练) | .box |
| TessLSTMBoxRenderer | LSTM Box 格式 | .box |
| TessWordStrBoxRenderer | 单词字符串 Box 格式 | .box |
| TessUnlvRenderer | UNLV 格式 | .unlv |
来源: include/tesseract/renderer.h156-462 src/api/baseapi.cpp996-1008
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 提供了一个强大而灵活的接口用于光学字符识别。主要组成部分包括:
这些组件可以组合起来,创建自定义的 OCR 解决方案,其功能范围可以从简单的文本提取到复杂的文档分析和可搜索 PDF 生成。
来源: include/tesseract/baseapi.h include/tesseract/capi.h include/tesseract/resultiterator.h include/tesseract/renderer.h src/lstm/lstmrecognizer.h