如何用 CMake 构建 Tesseract 并开启 BUILD_TRAINING_TOOLS 编译训练工具
2026/9/9 22:17:27 网站建设 项目流程

如何用 CMake 构建 Tesseract 并开启 BUILD_TRAINING_TOOLS 编译训练工具

【免费下载链接】tesseractTesseract Open Source OCR Engine (main repository)项目地址: https://gitcode.com/GitHub_Trending/te/tesseract

如果你要用 Tesseract 训练自己的语言模型,就需要源码树里src/training/下的训练工具(lstmtrainingtext2imageunicharset_extractor等),而官方二进制包不一定带全这些工具。本文的任务是:用 CMake 从源码构建 Tesseract,并确认BUILD_TRAINING_TOOLS选项开启,把训练工具一并编译出来。适用环境为 Linux(INSTALL.GIT.md 中 cmake 小节给出的 Linux 构建流程),构建产物默认输出到build/bin目录。

构建前的依赖检查

CMake 配置阶段会逐项检查依赖,提前装好可以避免 configure 阶段直接报错:

依赖要求来源
CMake ≥ 3.10CMakeLists.txt 中cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
支持 C++17 的编译器INSTALL.GIT.md 列出的训练工具依赖;CMake 会把标准设为 C++17,若编译器支持则自动提升到 C++20
Leptonica ≥ 1.74CMakeLists.txt 中MINIMUM_LEPTONICA_VERSION 1.74,找不到时会报Cannot find required library Leptonica. Quitting!并终止
pkg-config训练工具依赖 ICU 和 pango 时通过 pkg-config 探测
icu-devel、pango-devel、cairo-develINSTALL.GIT.md 列出的训练工具已知依赖(不含 leptonica)

注意两点:

  • INSTALL.GIT.md 的 autotools 小节写的是 “Tesseract 4.0x 最低需要 Leptonica 1.74.2”,而 CMake 路径检查的是 1.74。本文走 CMake 路径,以 1.74 为准。
  • README.md 提示:从源码构建前,先确认你的编译器在 Tesseract 支持的编译器列表中。

用 CMake 配置并编译

INSTALL.GIT.md 给出的 Linux cmake 构建流程是:

mkdir build cd build cmake .. make

开启训练工具时,在 cmake 命令上显式加上-DBUILD_TRAINING_TOOLS=ON。实际上 CMakeLists.txt 中该选项默认为 ON(option(BUILD_TRAINING_TOOLS "Build training tools" ON)),所以不加参数也会编译训练工具;显式写出是为了确认意图,同时如果构建机缺少 ICU/pango,你能立刻从配置摘要里看出原因:

mkdir build cd build cmake -DBUILD_TRAINING_TOOLS=ON .. make

这里不能把 cmake 直接跑在源码目录里:CMakeLists.txt 检测到源码目录与构建目录相同时会直接报FATAL_ERROR "CMake generation is not possible within the source directory!",并提示在另一个目录(例如build)重新执行。

配置完成后,检查 configure 摘要中的两项关键输出:

  • Found leptonica version: <版本>—— Leptonica 探测成功;
  • Build training tools [BUILD_TRAINING_TOOLS]: ON—— 训练工具子目录会被加入构建。

这两行都来自 CMake 配置阶段打印的 General configuration 摘要块。

确认训练工具被编译出来了

CMakeLists.txt 把CMAKE_RUNTIME_OUTPUT_DIRECTORY设为build/bin,所以编译完成后所有可执行文件(含训练工具)都在build/bin下。具体哪些工具被编译,由 src/training/CMakeLists.txt 中的条件决定:

  • 只要BUILD_TRAINING_TOOLS=ON就会编译:common_training库以及combine_tessdatadawg2wordlistwordlist2dawg
  • 额外要求DISABLED_LEGACY_ENGINE为 OFF(默认即 OFF),才会编译:ambiguous_wordsclassifier_testercntrainingmftrainingshapeclustering
  • 额外要求找到 ICU(通过 pkg-config 查icu-ucicu-i18n,否则回退到find_package(ICU 52.1)),才会编译unicharset_training库以及combine_lang_modellstmevallstmtrainingmerge_unicharsetsset_unicharset_propertiesunicharset_extractor
  • 额外要求找到 pkg-config 且能探测到pango>=1.38.0cairopangoft2pangocairofontconfig,才会编译pango_training库和text2image

验证方式:构建结束后查看build/bin,例如确认lstmtrainingtext2image是否在其中;再对主程序做一次冒烟检查(README.md 给出的方式):

./bin/tesseract --help

能打印出命令行用法说明,说明构建出的tesseract可执行文件可以运行。如果配置阶段打印了>> ICU not found!,则 LSTM 相关的训练工具(lstmtraininglstmeval等)不会出现在build/bin里;同理,pango 相关依赖缺失时text2image不会编译。

安装到系统(可选)

只在本机使用build/bin里的可执行文件的话,可以跳过安装。需要系统级安装时,INSTALL.GIT.md 的流程是:

sudo make install

注意这一步会动用 root 权限把tesseractlibtesseract及训练工具写入系统前缀的binlibinclude等目录,并安装 tesseract 的 CMake 配置与 pkgconfig 文件,会影响系统范围内已有的 Tesseract 版本。

常见配置失败与限制

  • 在源码目录里跑 cmake:直接 FATAL_ERROR,按提示改为在build等独立目录执行。
  • 找不到 Leptonica:configure 报Cannot find required library Leptonica. Quitting!。CMake 先按 CONFIG 方式查找,找不到再退回 pkg-config 的lept检查,两个路径都失败才会报错;可用-DLeptonica_DIR=path给 CMake 提供 leptonica 的查找提示(见 CMakeLists.txt 中的注释)。
  • 缺少 pkg-config:训练工具子目录依赖它探测 ICU 与 pango;没有 pkg-config 时 ICU/pango 相关工具不会编译(src/training/CMakeLists.txt 中有相应说明)。
  • LTO 在 arm/RBPi 上不可用:CMakeLists.txt 在 NEON 环境下会提示LTO build is not supported on arm/RBPi.并自动关闭 LTO,这属于预期行为,不需要处理。

完成构建后,build/bin里的lstmtrainingtext2imageunicharset_extractor等工具就是 Tesseract 训练流程的入口;后续具体训练步骤不在本文范围内,可参考 README.md 中指向的 Tesseract Training 文档。

【免费下载链接】tesseractTesseract Open Source OCR Engine (main repository)项目地址: https://gitcode.com/GitHub_Trending/te/tesseract

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询