菜单

Autoconf/Automake 构建系统

相关源文件

本文档描述了 Tesseract OCR 使用的 Autoconf/Automake 构建系统。它涵盖了在类 Unix 平台上编译 Tesseract 的此构建系统的设置、配置和使用。有关替代构建系统的信息,请参阅 CMake 构建系统Windows 构建

概述

Tesseract OCR 提供多种构建系统以支持不同的平台和开发者的偏好。Autoconf/Automake 系统是类 Unix 环境的主要构建方法,并用于官方发布。此构建系统使用 GNU Autotools 从平台无关的配置文件生成平台特定的 Makefile。

来源: autogen.sh1-124 configure.ac1-634 Makefile.am1-196

关键组件

核心文件

  • configure.ac:主要的 autoconf 配置文件,包含项目信息、编译器检查、库检测和配置选项
  • Makefile.am:automake 模板,定义构建目标、源文件和安装规则
  • autogen.sh:脚本,按正确的顺序运行必要的 autotools 命令来生成构建系统
  • m4/*.m4:autoconf 用于检测系统功能的宏文件

生成的代码

  • configure:生成的脚本,它会检查系统功能并创建相应的 Makefile
  • Makefile.in:automake 生成的中间模板文件
  • Makefile:configure 脚本生成的最终平台特定 Makefile
  • config_auto.h:在配置过程中生成的包含平台特定定义的头文件

来源: configure.ac1-80 Makefile.am1-20 autogen.sh1-124

构建流程

Autoconf/Automake 的构建过程包含四个主要步骤

来源: autogen.sh40-124 configure.ac553-605

1. 生成构建系统

要生成构建系统,请运行

该脚本

  1. 如果 config 目录不存在,则创建它
  2. 运行 aclocal 处理 m4 宏
  3. 运行 libtoolize 添加 libtool 支持
  4. 运行 autoconf 生成 configure 脚本
  5. 运行 autoheader 生成 config.h.in
  6. 运行 automake 生成 Makefile.in 文件

来源: autogen.sh70-120

2. 配置

生成构建系统后,使用以下命令配置构建

configure 脚本

  1. 检查编译器可用性和能力
  2. 检测平台功能(例如,CPU 架构)
  3. 检查所需库
  4. 根据用户提供的标志设置构建选项
  5. 生成平台特定的 Makefile 和 config_auto.h

来源: configure.ac87-117 configure.ac126-252

3. 构建

配置完成后,使用以下命令构建软件

这将编译源代码并生成库和可执行文件。

4. 安装

使用以下命令安装编译后的软件

这将把库、可执行文件和数据文件安装到配置好的路径。

来源: configure.ac573-578

配置选项

configure 脚本支持许多自定义构建的选项。以下是最重要的选项:

选项描述
--prefix=PATH设置安装前缀(默认是 /usr/local
--disable-graphics禁用 ScrollView 图形支持
--disable-legacy禁用旧版 OCR 引擎
--disable-float32在 LSTM 网络中使用 double 而非 float
--with-extra-includes=DIR将 DIR 添加到 include 搜索路径
--with-extra-libraries=DIR将 DIR 添加到库搜索路径
--with-archive与 libarchive 一起构建,用于压缩模型文件
--with-curl与 libcurl 一起构建,用于 URL 图像处理
--enable-debug启用调试(添加调试符号)
--enable-visibility使用 -fvisibility 启用实验性构建

来源: configure.ac252-352

架构检测

Tesseract 在配置期间会自动检测 CPU 架构功能(如 SIMD 指令),并在可用时启用优化代码路径。此检测由 SIMDDetect 类在运行时管理。

来源: configure.ac126-251 src/arch/simddetect.cpp124-252 src/arch/simddetect.h17-99

SIMD 优化

构建系统检查各种 SIMD 指令集,包括:

  • x86/x64:AVX、AVX2、AVX512、FMA、SSE4.1
  • ARM:NEON
  • RISC-V:RVV(向量扩展)

每个架构都有关键函数(如点积运算)的优化实现,这对于 LSTM 引擎中的神经网络计算至关重要。

来源: src/arch/dotproduct.h1-45 src/arch/dotproductneon.cpp17-71 src/arch/intsimdmatrixrvv.cpp18-88

依赖项

必需的依赖项

  • Leptonica (≥ 1.74):图像处理功能必需
  • C++17 编译器:用于构建代码

可选依赖项

  • libarchive:用于压缩模型文件
  • libcurl:用于处理 URL 中的图像
  • ICU:用于训练工具(Unicode 支持)
  • Pango:用于训练工具(文本渲染)
  • Cairo:用于训练工具(图形)

来源: configure.ac497-501 configure.ac519-545

构建训练工具

Tesseract 的训练工具有额外的依赖项。要构建它们

如果所有必需的依赖项都可用,则只会构建训练工具

  • ICU (≥ 52.1)
  • Pango (≥ 1.38.0)
  • Cairo

如果缺少任何这些依赖项,将显示警告,并且不会构建训练工具。

来源:configure.ac519-545 Makefile.am743-761

故障排除

常见问题

  1. 缺少依赖项

    • 确保所有必需的开发包都已安装(例如,libleptonica-dev)
    • 检查 configure 输出中是否有特定的缺失依赖项
  2. git pull 后构建失败

    • 运行 ./autogen.sh clean 清理已生成的文件
    • 然后运行 ./autogen.sh 重新生成构建系统
  3. 配置因 pkg-config 错误而失败

    • 确保 pkg-config 已安装
    • 检查 pkg-config 是否能找到所需的库
  4. 无法构建训练工具

    • 检查 ICU、Pango 和 Cairo 开发包是否已安装
    • 在 configure 输出中查找特定的缺失依赖项消息

来源:configure.ac500-501 configure.ac523-545 autogen.sh40-55

跨平台考虑

Autoconf/Automake 构建系统包括针对以下平台的特定调整:

  • Linux/Unix:标准构建过程
  • macOS:框架和 Homebrew 包的特殊处理
  • MinGW/Cygwin:特定于 Windows 的调整和标志

来源:configure.ac89-116 configure.ac313-321

结论

Autoconf/Automake 构建系统是 Tesseract 在类 Unix 系统上构建的主要方法。它提供了一种灵活而强大的方式,可以在不同环境的最佳设置下配置和编译库。通过了解此构建系统,您可以根据自己的具体需求和平台要求来自定义 Tesseract。