菜单

输出渲染器

相关源文件

此页面介绍了 Tesseract OCR 中的输出渲染系统。输出渲染器将识别的文本和布局信息转换为各种格式,例如纯文本、HTML、PDF 和 XML。有关识别过程本身的信息,请参阅识别引擎。有关用于调用渲染器的 API 的详细信息,请参阅TessBaseAPI

渲染器系统概述

Tesseract 中的输出渲染器系统提供了一个灵活的框架,用于将 OCR 结果转换为不同的输出格式。该系统通过类层次结构工作,其中包含一个基渲染器类和用于各种输出格式的专用子类。

来源

基础渲染器架构

渲染器系统围绕抽象基类TessResultRenderer构建,该类定义了所有特定格式渲染器实现的核心接口和功能。

TessResultRenderer 的关键组件

  • 初始化:根据基本名称和扩展名设置输出文件路径
  • 文档生命周期:定义了开始文档、添加图像和结束文档的方法
  • 渲染器链式调用:允许多个渲染器链接在一起,以同时生成多种输出格式
  • 输出管理:提供写入输出文件的相关方法

渲染器生命周期

渲染过程遵循特定的生命周期

来源

可用的渲染器

Tesseract 提供了多种内置渲染器,支持各种输出格式

文本渲染器 (TessTextRenderer)

生成纯 UTF-8 文本输出。这是最简单的渲染器,输出识别的文本,不包含格式或布局信息。

TessTextRenderer text_renderer("output_basename");

来源

HOCR 渲染器 (TessHOcrRenderer)

生成带有 OCR 功能的 HTML 输出。HOCR 是一种基于 HTML 的格式,可以保留布局信息、边界框和置信度值,使其适合于后期处理和高亮显示。

TessHOcrRenderer hocr_renderer("output_basename", true); // true enables font information

来源

PDF 渲染器 (TessPDFRenderer)

生成可搜索的 PDF 文档。此渲染器将识别出的文本叠加在原始图像之上,允许文本搜索、选择和复制,同时保留原始外观。

TessPDFRenderer pdf_renderer("output_basename", "/path/to/tessdata", false); // false means include images

PDF 渲染器是 Tesseract 中最复杂的渲染器之一,它负责

  1. PDF 对象创建
  2. 字体嵌入
  3. 文本的正确方向定位
  4. 图像编码
  5. 文档结构组装

来源

ALTO 渲染器 (TessAltoRenderer)

生成 ALTO XML 输出。ALTO(Analyzed Layout and Text Object)是一种用于存储具有详细布局信息的 OCR 结果的 XML 格式,广泛应用于数字图书馆。

TessAltoRenderer alto_renderer("output_basename");

来源

TSV 渲染器 (TessTsvRenderer)

生成制表符分隔值输出。此格式对于数据提取和分析很有用,它以表格格式提供识别的文本以及相关的坐标和置信度值。

TessTsvRenderer tsv_renderer("output_basename");

来源

其他渲染器

Tesseract 还包括其他一些专用渲染器

  • TessPAGERenderer:生成 PAGE XML 输出
  • TessUnlvRenderer:生成 UNLV 格式输出
  • TessBoxTextRenderer:为训练生成 box 文件输出
  • TessLSTMBoxRenderer:生成 LSTM box 文件输出
  • TessWordStrBoxRenderer:生成 WordStr box 文件输出

来源

渲染器链式调用

Tesseract 渲染器系统的一个强大功能是能够将多个渲染器链接在一起,在一次 OCR 扫描中生成多种输出格式。

链式调用是通过insert()方法实现的

来源

与 TessBaseAPI 集成

渲染器通过ProcessPages()ProcessPage()方法与 TessBaseAPI 集成

C API 还提供了创建和使用渲染器的便捷函数

来源

PDF 渲染器深入解析

PDF 渲染器是 Tesseract 中最复杂的渲染器之一,值得特别关注。它通过将文本叠加在原始图像上来创建可搜索的 PDF。

PDF 文档结构

PDF 渲染器构建一个 PDF 文档,包含

  1. 目录对象
  2. 页面树
  3. 单个页面对象
  4. 字体资源
  5. 图像对象
  6. 文本对象

对于每一页,渲染器都会

  1. 创建一个页面对象
  2. 将原始图像放置在页面上
  3. 创建定位在识别出的单词上方的文本对象
  4. 处理文本方向和排版

PDF 中的文本定位

PDF 渲染器根据 OCR 结果仔细定位文本,处理

  1. 基线定位
  2. 文本方向
  3. 字符间距
  4. 单词间距
  5. 行间距

这确保了文本叠加与图像对齐,从而实现准确的文本选择和搜索。

来源

以编程方式使用渲染器

要以编程方式使用渲染器,请遵循以下步骤

  1. 创建 TessBaseAPI 实例
  2. 使用语言初始化 API
  3. 创建合适的渲染器
  4. 使用渲染器处理图像
  5. 清理资源

示例代码

来源

创建自定义渲染器

要创建自定义渲染器,您需要

  1. 继承自 TessResultRenderer
  2. 实现 AddImageHandler() 方法
  3. 可选地实现 BeginDocumentHandler() 和 EndDocumentHandler()

示例骨架

来源

结论

Tesseract 中的输出渲染器系统提供了一个灵活且可扩展的框架,用于将 OCR 结果转换为各种格式。通过了解基本架构和可用渲染器,您可以有效地将 Tesseract 的 OCR 功能集成到您的应用程序和工作流程中。

渲染器链式调用的能力使得在一次 OCR 扫描中生成多种输出格式成为可能,从而提高了效率。此外,模块化设计还使得在需要时可以为专用格式创建自定义渲染器。