首页
/ Tesseract OCR 源码编译安装指南:Autotools 与 CMake 双构建系统、训练工具与 tessdata 部署

Tesseract OCR 源码编译安装指南:Autotools 与 CMake 双构建系统、训练工具与 tessdata 部署

2026-09-03 15:24:07作者:龚格成

本文基于 Tesseract 仓库中的 INSTALL.GIT.md 展开,系统讲解从 Git 源码克隆后构建 Tesseract OCR 5.5.x 的完整流程:包括 Autotools(Linux/UNIX/MSYS)与 CMake 两套构建方式的命令序列、编译依赖(Leptonica、Pango、Cairo、ICU)的底层检查逻辑、训练工具的独立构建与安装,以及语言数据 traineddataTESSDATA_PREFIX 目录的部署方法,并补充 ScrollView 图形调试视图(Java 组件)的构建细节。读完后,你可以在任意支持 C++17 的平台上完成从源码到可用 OCR 引擎(含训练工具)的落地部署。

一、构建前准备:依赖与版本前提

INSTALL.GIT.md 开篇给出了三个必须满足的前提,本文结合仓库源码逐一印证:

  1. 源码必须来自 Git 克隆:克隆后的仓库不包含生成好的 configure 脚本,必须先生成(见下文 autogen.sh 一节)。
  2. 旧版本需先移除:如果系统中已安装 Tesseract 4.0x,在新构建前应将其卸载,避免新旧二进制与 libtesseract 动态库混用。
  3. Leptonica 最低版本:Tesseract 4.0x 起要求 Leptonica 1.74.2(当前仓库 VERSION 为 5.5.0,要求不变)。

从源码结构看,构建脚本将 Leptonica 版本下限设为 1.74:configure.ac 中通过 PKG_CHECK_MODULES([LEPTONICA], [lept >= 1.74]) 检查,未找到时会直接报错 Leptonica 1.74 or higher is required. Try to install libleptonica-dev package;CMake 路径同样在 CMakeLists.txt 定义了 MINIMUM_LEPTONICA_VERSION 1.74。此外 README.md 建议安装带 zlib、png、tiff 支持的 Leptonica,以获得完整的输入图像格式(含多页 TIFF)能力。

1.1 训练工具的已知依赖

INSTALL.GIT.md 列出的训练工具编译依赖(不含 Leptonica)为:

  • 支持 C++17 的编译器
  • automake
  • pkg-config
  • pango-devel
  • cairo-devel
  • icu-devel

这些依赖不是"建议项"而是"门槛项",configure.ac 中的检查逻辑如下:

检查项 源码位置 缺失时的行为
C++17(-std=c++17 configure.ac 直接终止:Your compiler does not have the necessary C++17 support!
ICU(icu-uc/icu-i18n >= 52.1 configure.ac 警告并关闭训练工具构建(ENABLE_TRAINING 置 false)
Pango >= 1.38.0 configure.ac 警告并关闭训练工具构建
Cairo configure.ac 警告并关闭训练工具构建

也就是说,缺少 Pango/Cairo/ICU 时核心 OCR 引擎仍可以正常编译,但 make training 会退化为提示 Need to reconfigure project, so there are no errors(见 Makefile.am 中的 else 分支)。若你的目标是完整构建 LSTM 语言模型训练链(lstmtrainingcombine_tessdata 等),务必先安装齐 pango-devel、cairo-devel、icu-devel。

二、Autotools 构建流程(LINUX/UNIX、MSYS)

2.1 生成 configure 脚本:autogen.sh

从 GitHub 克隆 Tesseract 后,第一步必须运行 ./autogen.sh 生成 configure 脚本。查看 autogen.sh 源码可知它依次执行五步 autotools 流程:

./autogen.sh
# 内部顺序:
# 1. aclocal -I config            # 生成 aclocal.m4
# 2. libtoolize -f -c && libtoolize --automake
# 3. aclocal -I config(第二次,因 libtoolize 新增了 m4 文件)
#    autoconf                     # 生成 configure
# 4. autoheader -f               # 生成 config.h.in
# 5. automake --add-missing --copy --warnings=all

两个实用的实现细节:

  • 脚本会优先使用 libtoolize,找不到时回退到 glibtoolize(常见于 macOS 的 automake 环境),两者都缺失则报错退出;
  • autoconf 生成后会检查 configure 中是否包含 PKG_CHECK_MODULES,若不含说明系统缺少 pkg-config,脚本会删除残缺的 configure 并提示 Missing pkg-config. Check the build requirements——这解释了为何依赖列表中 pkg-config 是硬性要求。

2.2 标准构建与安装序列

INSTALL.GIT.md 给出的完整命令序列为:

./autogen.sh
./configure
make
sudo make install
sudo ldconfig
make training
sudo make training-install

各步骤含义:

  1. ./configure:探测编译器、Leptonica、可选库(libarchive、libcurl、TIFF)、SIMD 指令集(AVX/AVX2/AVX512F/FMA/SSE4.1/NEON/RVV),并生成分目录的 Makefile。末尾会打印后续操作提示,包括训练工具的构建方式(configure.ac)。
  2. make:编译 libtesseract 动态库与 tesseract 命令行程序。从源码结构看,库由 Makefile.am 组织为多个子库(libtesseract_ccutil.lalibtesseract_lstm.lalibtesseract_native.la 及各 SIMD 变体库)再聚合链接。
  3. sudo make install:安装二进制、共享库、公共头文件(baseapi.hcapi.hrenderer.h 等,见 Makefile.ampkginclude_HEADERS)及 pkgconfig 文件 tesseract.pc
  4. sudo ldconfig:刷新动态库缓存,使新安装的 libtesseract 可被其他程序链接。
  5. make trainingsudo make training-install:单独构建并安装训练工具集(下一节详述)。

2.3 常用 configure 选项

./configure --help 可列出全部选项,结合 configure.ac 源码,与部署最相关的有:

选项 作用 源码依据
--prefix=PATH 安装前缀,默认 /usr/local configure.ac
--disable-legacy 关闭传统 OCR 引擎,减小体积(同时减少训练工具数量) configure.ac
--disable-graphics 关闭 ScrollView 图形调试视图 configure.ac
--disable-tessdata-prefix 不在编译期写入 TESSDATA_PREFIX 默认值 configure.ac
--disable-float32 LSTM 计算使用 double 而非 float configure.ac
--enable-debug 打开调试编译(-g -DDEBUG,GCC 用 -Og,Clang 用 -O0 configure.ac
--with-curl / --with-archive 启用 libcurl(URL 图像输入)/ libarchive(压缩模型文件) configure.ac
--with-extra-includes=DIR / --with-extra-libraries=DIR 追加头文件/库搜索目录 configure.ac

三、构建与安装训练工具(make training)

Tesseract 的命令行 OCR 引擎之外,仓库还附带一整套语言模型训练工具,源码位于 src/training/Makefile.am 定义了 trainingtools 变量,默认启用 Legacy 引擎时的完整清单为:

工具 源码入口 用途概要
lstmtraining src/training/lstmtraining.cpp LSTM 网络训练主程序
lstmeval src/training/lstmeval.cpp 用训练好的模型评估数据
combine_lang_model src/training/combine_lang_model.cpp 合并各语言模型组件
combine_tessdata src/training/combine_tessdata.cpp 打包生成最终 .traineddata
unicharset_extractor src/training/unicharset_extractor.cpp 从标注文本提取字符集
set_unicharset_properties src/training/set_unicharset_properties.cpp 设置字符属性(方向、大小等)
text2image src/training/text2image.cpp 用 Pango/Cairo 渲染文本图像
wordlist2dawg / dawg2wordlist src/training/wordlist2dawg.cppsrc/training/dawg2wordlist.cpp 词表与 DAWG 互转
merge_unicharsets src/training/merge_unicharsets.cpp 合并多个 unicharset
mftrainingshapeclusteringcntrainingclassifier_testerambiguous_words 对应同名 .cpp Legacy 引擎训练链(--disable-legacy 时不构建)

安装目标见 Makefile.amtraining-install 会将上述工具以 libtool --mode=install 方式装入 $(bindir)。对应的手页文档源文件(如 doc/lstmtraining.1.ascdoc/combine_lang_model.1.asc)在 asciidoc 环境下随 make install 生成 man 页。

四、部署语言数据:TESSDATA_PREFIX 与 traineddata

4.1 最低可用数据

INSTALL.GIT.md 明确要求:至少安装 English(eng)OSD 两个 traineddata 文件到 TESSDATA_PREFIX 目录。这是引擎能运行的最低数据配置:OSD 模型支撑方向与布局检测,eng 提供基础语言识别能力。

从源码结构看,TESSDATA_PREFIX 的默认值是在编译期写入的:Makefile.am 中对 libtesseract_ccutil.la 注入 -DTESSDATA_PREFIX='"@datadir@"'(即安装前缀下的 share/tessdata)。因此自编译安装后,数据文件应放入 $prefix/share/tessdata/;也可以在运行时通过 tesseract --tessdata-dir 参数或 TESSDATA_PREFIX 环境变量覆盖该默认值。

4.2 获取数据文件的两种方式

  • 单文件下载:用 wget、curl、GitHub 下载器或浏览器直接抓取所需的 eng.traineddataosd.traineddata,是最省事的方式。
  • 整库克隆(仅打包者适用):仓库中注明 tessdata 全量仓库体积超过 1.2 GB,且没有必要下载所有语言,此方式只适合分发打包场景:
git clone https://github.com/tesseract-ocr/tessdata.git tesseract-ocr.tessdata

4.3 内置配置文件随源码安装

.traineddata 外,仓库自带 tessdata/configs/(如 pdfhocrtsvaltoquiet 等输出格式配置)与 tessdata/tessconfigs/(如 batchnobatchsegdemo)。Autotools 路径经 tessdata/Makefile 安装,CMake 路径则在 CMakeLists.txt 中由 INSTALL_CONFIGS 选项(默认 ON)控制安装到 $(dataroot)/tessdata/configstessconfigs 目录。这些文件正是 tesseract img out pdf 中第三参数字典的来源。

五、构建 ScrollView.jar 图形调试视图

Tesseract 的命令行程序可弹出 Java 图形视图逐行调试识别结果,其 Java 组件源码在 java/com/google/scrollview/INSTALL.GIT.md 指出:编译 ScrollView.jar 需要联网与 curl,因为构建过程会自动从 Maven 仓库下载三个依赖 jar 并放入 tesseract/java 目录:

  • piccolo2d-core-3.0.1.jar
  • piccolo2d-extras-3.0.1.jar
  • jaxb-api-2.3.1.jar

查看 java/Makefile.am 可确认这一机制:fetch-jars 目标用三条 curl -sSLO 命令拉取上述 jar。完整流程:

make ScrollView.jar     # 编译 Java 类并打包 jar(自动 fetch 依赖)
make install-jars       # 将三个依赖 jar + ScrollView.jar 装入 $(datadir)/tessdata

Makefile.am 将顶层的 ScrollView.jar 目标委派到 java 子目录执行;install-jars 装入后会提示设置环境变量 SCROLLVIEW_PATH 指向 $(datadir)/tessdata(见 java/Makefile.am)。注意若 configure 时用了 --disable-graphics,该目标不存在(对应 configure.acGRAPHICS_DISABLED 条件)。jar 就位后,即可按官方文档的 Viewer Debugging 流程用 tesseract 弹出图形视图检查每行识别。

六、CMake 备选构建系统

INSTALL.GIT.md 指出仓库提供跨平台的 CMake 构建作为替代方案。Linux 下三步即可:

mkdir build
cd build && cmake .. && make
sudo make install

CMake 侧的关键事实(对照 CMakeLists.txt):

  • 最低 CMake 版本 3.10(CMakeLists.txt),且禁止源码内构建——在源码目录直接运行 cmake . 会触发 FATAL_ERROR 并给出 mkdir build && cd build && cmake .. 的提示(CMakeLists.txt)。
  • Leptonica 通过 find_package(Leptonica 1.74 CONFIG) 或 pkg-config 回退方式查找,找不到即 FATAL_ERROR 终止(CMakeLists.txt)。
  • 未指定构建类型时默认 ReleaseCMakeLists.txt)。
  • 可选开关与 Autotools 选项语义对应,常用者包括:
CMake 选项 默认值 说明
BUILD_TRAINING_TOOLS ON 构建训练工具(对应 autotools 的 make training,源码子目录 src/training/CMakeLists.txt
GRAPHICS_DISABLED OFF 关闭 ScrollView(对应 --disable-graphics
DISABLED_LEGACY_ENGINE OFF 关闭 Legacy 引擎,会从库中剔除对应源文件(CMakeLists.txt
FAST_FLOAT ON LSTM 使用 float(对应 --disable-float32 的反向)
ENABLE_NATIVE OFF -march=native 优化本机 CPU(可能牺牲跨机器兼容性)
ENABLE_LTO OFF 链接期优化
USE_SYSTEM_ICU OFF 训练工具使用系统 ICU
BUILD_TESTS OFF 构建 googletest 单元测试(unittest/
DISABLE_TIFF / DISABLE_ARCHIVE / DISABLE_CURL OFF 关闭对应可选库

Windows 平台 CMake 构建的细节(Visual Studio 生成器等)INSTALL.GIT.md 指引读者查阅官方 tessdoc 文档,本文不展开;另注意 CMake 在 Windows 下默认开启 SW_BUILD(依赖 SW 包管理器,见 CMakeLists.txt),普通 VS 构建应显式 -DSW_BUILD=OFF

七、小结:一条可复现的部署路径

综合 INSTALL.GIT.md 与源码实现,从 Git 源码得到一个可运行、可训练的 Tesseract 5.5.x 的推荐路径为:

  1. 安装依赖:C++17 编译器、automake、pkg-config、libtool、Leptonica(>=1.74)及 libleptonica 开发包;如需训练工具再加 pango-devel、cairo-devel、icu-devel;
  2. ./autogen.sh && ./configure(按需加 --prefix--disable-graphics 等);
  3. make && sudo make install && sudo ldconfig 安装核心引擎;
  4. 需要训练能力时 make training && sudo make training-install
  5. 下载 eng.traineddataosd.traineddata 放入 TESSDATA_PREFIX(默认 $prefix/share/tessdata);
  6. 需要图形调试视图时 make ScrollView.jar && make install-jars 并设置 SCROLLVIEW_PATH
  7. Windows/跨平台场景改用 mkdir build && cd build && cmake .. && make

排查构建问题时,优先阅读 config.log(configure 产生的编译器探测日志),并对照 configure.ac 中对应检查的告警信息定位缺失的依赖包。

登录后查看全文
热门项目推荐
相关项目推荐