本文档描述了 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.ac1-80 Makefile.am1-20 autogen.sh1-124
Autoconf/Automake 的构建过程包含四个主要步骤
来源: autogen.sh40-124 configure.ac553-605
要生成构建系统,请运行
该脚本
config 目录不存在,则创建它aclocal 处理 m4 宏libtoolize 添加 libtool 支持autoconf 生成 configure 脚本autoheader 生成 config.h.inautomake 生成 Makefile.in 文件来源: autogen.sh70-120
生成构建系统后,使用以下命令配置构建
configure 脚本
来源: configure.ac87-117 configure.ac126-252
配置完成后,使用以下命令构建软件
这将编译源代码并生成库和可执行文件。
使用以下命令安装编译后的软件
这将把库、可执行文件和数据文件安装到配置好的路径。
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 启用实验性构建 |
Tesseract 在配置期间会自动检测 CPU 架构功能(如 SIMD 指令),并在可用时启用优化代码路径。此检测由 SIMDDetect 类在运行时管理。
来源: configure.ac126-251 src/arch/simddetect.cpp124-252 src/arch/simddetect.h17-99
构建系统检查各种 SIMD 指令集,包括:
每个架构都有关键函数(如点积运算)的优化实现,这对于 LSTM 引擎中的神经网络计算至关重要。
来源: src/arch/dotproduct.h1-45 src/arch/dotproductneon.cpp17-71 src/arch/intsimdmatrixrvv.cpp18-88
来源: configure.ac497-501 configure.ac519-545
Tesseract 的训练工具有额外的依赖项。要构建它们
如果所有必需的依赖项都可用,则只会构建训练工具
如果缺少任何这些依赖项,将显示警告,并且不会构建训练工具。
来源:configure.ac519-545 Makefile.am743-761
缺少依赖项
git pull 后构建失败
./autogen.sh clean 清理已生成的文件./autogen.sh 重新生成构建系统配置因 pkg-config 错误而失败
无法构建训练工具
来源:configure.ac500-501 configure.ac523-545 autogen.sh40-55
Autoconf/Automake 构建系统包括针对以下平台的特定调整:
来源:configure.ac89-116 configure.ac313-321
Autoconf/Automake 构建系统是 Tesseract 在类 Unix 系统上构建的主要方法。它提供了一种灵活而强大的方式,可以在不同环境的最佳设置下配置和编译库。通过了解此构建系统,您可以根据自己的具体需求和平台要求来自定义 Tesseract。