菜单

Windows 构建

相关源文件

本页面涵盖了在 Windows 平台上构建 Tesseract OCR 的过程。它提供了 CMake 和 SW 构建系统的详细说明,并解释了如何创建 Windows 安装程序以供分发。有关一般的构建信息,请参阅构建和部署

构建选项概述

Tesseract 在 Windows 平台支持两种主要的构建系统,并可以创建分发安装程序

来源: CMakeLists.txt11-996 sw.cpp1-365

先决条件

在 Windows 上构建 Tesseract 需要以下工具和依赖项

开发工具

  • Visual Studio 2019 或更高版本,并包含 C++桌面开发工作负载
  • CMake 3.10 或更高版本(如 CMakeLists.txt11中所指定)
  • NSIS (仅在创建安装程序包时需要)

依赖项

  • Leptonica 1.74 或更高版本(在 CMakeLists.txt71中所指定)
  • 图像处理库:
    • zlib-ng
    • libpng
    • libjpeg-turbo
    • libtiff
    • jbigkit

来源: CMakeLists.txt11-71 .github/workflows/cmake-win64.yml44-97

使用 CMake 构建

CMake 是 Tesseract 在 Windows 上的主要构建系统。它会生成 Visual Studio 解决方案文件,可用于构建库和可执行文件。

基本构建流程

  1. 克隆仓库:

    git clone https://github.com/tesseract-ocr/tesseract.git
    cd tesseract
    
  2. 使用 CMake 进行配置:

    mkdir build
    cd build
    cmake ..
    
  3. 构建解决方案:

    • 在 Visual Studio 中打开生成的 tesseract.sln 并构建
    • 或使用命令行: cmake --build . --config Release
  4. 安装:

    cmake --build . --config Release --target install
    

Windows 特定的 CMake 选项

选项描述默认参考
SW_BUILD使用 SW 构建ON (Windows)CMakeLists.txt81-85
WIN32_MT_BUILD使用 MT 标志构建(静态 CRT)OFFCMakeLists.txt103-107
OPENMP_BUILD构建时启用 OpenMP 支持OFFCMakeLists.txt86
BUILD_SHARED_LIBS构建 DLL 而非静态库OFFCMakeLists.txt139-141
DISABLE_LEGACY_ENGINE禁用旧版 OCR 引擎OFFCMakeLists.txt88
BUILD_TRAINING_TOOLS构建训练工具ONCMakeLists.txt95
ENABLE_LTO启用链接时优化OFFCMakeLists.txt89

GitHub CI 示例配置

GitHub Actions 工作流程展示了典型的 Windows 构建配置

cmake -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH=${{env.ILOC}} 
  -DCMAKE_INSTALL_PREFIX=${{env.ILOC}} -DSW_BUILD=OFF -DBUILD_SHARED_LIBS=ON 
  -DENABLE_LTO=ON -DBUILD_TRAINING_TOOLS=OFF -DFAST_FLOAT=ON 
  -DGRAPHICS_DISABLED=ON -DOPENMP_BUILD=OFF

来源: CMakeLists.txt79-564 .github/workflows/cmake-win64.yml104-108

Windows 特定编译设置

Tesseract 包含多个 Windows 特定的编译设置

MSVC 编译器选项

对于 MSVC 构建,Tesseract 添加了以下编译器选项

SIMD 优化选项

对于 Windows x86/x64 构建,Tesseract 启用了各种 SIMD 优化

来源: CMakeLists.txt286-308 CMakeLists.txt168-194

使用 SW 构建

SW 是一个专为 Windows 设计的替代构建系统。在 CMake 配置中,它默认启用 Windows 构建。

什么是 SW?

SW 是一个简化 Windows 上依赖管理和配置的构建系统。对于 Tesseract,SW 构建配置在 sw.cpp 中定义,并提供

  • 自动依赖解析
  • MSVC 特定编译器优化
  • Windows 特定的定义(如 NOMINMAX
  • 特定于架构的优化。

使用 SW 构建

使用 CMake 启用 SW 构建

cmake -DSW_BUILD=ON ..

SW 构建系统将

  1. 处理 Leptonica 等必需依赖
  2. 根据架构配置编译器选项
  3. 构建 Tesseract 库和可执行文件

SW 特定的选项定义在 sw.cpp36-56,包括

  • SIMD 指令集编译选项
  • Windows 特定库链接(ws2_32.lib
  • 字符编码设置

来源: CMakeLists.txt81-85 sw.cpp1-119

创建 Windows 安装程序

Tesseract 包含 NSIS 脚本,用于创建 Windows 安装程序以供分发。

构建安装程序

Windows 安装程序可以使用 NSIS 构建

  1. 在您的 Windows 系统上安装 NSIS
  2. 首先构建 Tesseract,可以使用 CMake 或 SW
  3. 运行 NSIS 脚本:
    cd nsis
    makensis -DVERSION=X.Y.Z -DW64 tesseract.nsi
    

自动化安装程序构建

对于自动化构建,项目包含

安装程序内容

安装程序包含以下组件(在 nsis/tesseract.nsi200-488中定义)

  • 核心组件(必需):可执行文件、DLL、配置文件
  • ScrollView:可视化工具
  • 训练工具:用于训练 Tesseract 的工具
  • 语言数据:默认包含英语,其他语言可选
  • 快捷方式:用于文档和实用程序的开始菜单快捷方式

来源: nsis/tesseract.nsi200-488 .github/workflows/installer-for-windows.yml1-28 nsis/build.sh1-112

GitHub Actions CI 构建

Tesseract 的仓库包含一个用于 Windows 构建的 GitHub Actions 工作流,位于 .github/workflows/cmake-win64.yml

工作流

  1. 设置 Windows 环境
  2. 安装依赖项
    • zlib-ng, libpng, libjpeg, jbigkit, libtiff, leptonica
  3. 使用 CMake 构建 Tesseract
  4. 创建包含构建结果的产物
  5. 测试生成的执行文件

此工作流是完整构建过程的绝佳参考。

来源: .github/workflows/cmake-win64.yml1-132

常见问题排查

依赖项问题

  • 确保所有必需的库都已安装并能被 CMake 找到
  • 检查 Leptonica 版本是否至少为 1.74
  • 为所有依赖项和 Tesseract 使用相同的编译器

OpenMP 支持

OpenMP 支持需要 Visual Studio 2019 16.9 或更新版本

VS 2022 中的互斥锁问题

对于 Visual Studio 2022 17.10 或更新版本,Tesseract 添加了针对互斥锁崩溃的变通方法

构建配置问题

  • 如果遇到链接器错误,尝试设置 WIN32_MT_BUILD=ON 进行静态 CRT 链接
  • 对于性能问题,请确保已启用特定于架构的优化

来源: CMakeLists.txt321-325 CMakeLists.txt309-312 CMakeLists.txt168-275