跳至内容。

不同平台的编译指南

注意: 此文档假定您熟悉在您的操作系统上编译软件。

使用与您构建 Leptonica 相同的工具来构建 Tesseract。

构建 Tesseract 源代码需要 具有良好 C++17 支持的 C++ 编译器。以下几种(已知的)工具链可以帮助您构建 Tesseract:GNU AutotoolsCMakeSoftware Network(又称 sw)以及 vcpkg。如果您对以下说明不清楚,请查看 Tesseract Github Action 工作流

目录

Linux

要安装 Tesseract 4.x,您可以在您的 Ubuntu 18.xx bionic 上简单地运行以下命令

sudo apt install tesseract-ocr

如果您希望安装可用于训练的 开发工具,请运行以下命令

sudo apt install libtesseract-dev

以下说明适用于在 Linux 上构建,也可以应用于其他类 UNIX 操作系统。

依赖项

Ubuntu

如果它们尚未安装,您需要以下库(Ubuntu 16.04/14.04)

sudo apt-get install g++ # or clang++ (presumably)
sudo apt-get install autoconf automake libtool
sudo apt-get install pkg-config
sudo apt-get install libpng-dev
sudo apt-get install libjpeg8-dev
sudo apt-get install libtiff5-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libwebpdemux2 libwebp-dev
sudo apt-get install libopenjp2-7-dev
sudo apt-get install libgif-dev
sudo apt-get install libarchive-dev libcurl4-openssl-dev

如果您计划安装训练工具,您还需要以下库

sudo apt-get install libicu-dev
sudo apt-get install libpango1.0-dev
sudo apt-get install libcairo2-dev

Leptonica

您还需要安装 Leptonica。确保在编译 Tesseract 之前安装 Leptonica 的开发头文件。

Tesseract 版本和所需的 Leptonica 最小版本

Tesseract Leptonica Ubuntu
4.00 1.74.2 Ubuntu 18.04
3.05 1.74.0 必须从源代码构建
3.04 1.71 Ubuntu 16.04
3.03 1.70 Ubuntu 14.04
3.02 1.69 Ubuntu 12.04
3.01 1.67  

一种选择是安装发行版的 Leptonica 包

sudo apt-get install libleptonica-dev

但是,如果您使用的是较旧的 Linux 版本,Leptonica 版本可能太旧,因此您需要从源代码构建。

源代码位于 https://github.com/DanBloomberg/leptonica。构建说明在 Leptonica README 中给出。

请注意,如果从源代码构建 Leptonica,您可能需要确保 /usr/local/lib 在您的库路径中。这是一个标准的 Linux 错误,Stackoverflow 上的信息非常有用。

从 Git 安装 Tesseract

请按照 Compiling–GitInstallation 中的说明操作。

另请阅读 安装说明

在其他地方安装/无需 root 权限

Tesseract 可以配置为安装在任何地方,这使得它可以在没有 root 权限的情况下安装。

要将其安装在 $HOME/local 中

./autogen.sh
./configure --prefix=$HOME/local/
make
make install

要将其安装在 $HOME/local 中,并使用也安装在 $HOME/local 中的 Leptonica 库

./autogen.sh
LIBLEPT_HEADERSDIR=$HOME/local/include ./configure \
  --prefix=$HOME/local/ --with-extra-libraries=$HOME/local/lib
make
make install

在某些系统中,您可能还需要在运行 configure 脚本之前指定 pkg-config 的路径

export PKG_CONFIG_PATH=$HOME/local/lib/pkgconfig

Tesseract 4.0 和 Leptonica 1.7.4 在 Ubuntu 16.xx 上的编译过程的视频演示

语言数据

您也可以使用

export TESSDATA_PREFIX=/some/path/to/tessdata

指向您的 tessdata 目录(例如:如果您的 tessdata 路径为 ‘/usr/local/share/tessdata’,则您必须使用 ‘export TESSDATA_PREFIX=’/usr/local/share/tessdata/’)。

Windows

主分支,3.05 及更高版本

使用 Tesseract

!!!重要!!! 要在您的应用程序中使用 Tesseract(包含 Tesseract 或将其链接到您的应用程序),请查看这个非常简单的 示例

构建最新库(使用 Software Network 客户端)

  1. https://software-network.org/client/ 下载最新 SW(Software Network https://software-network.org/)客户端 下载
  2. 运行 sw setup(可能需要管理员权限)
  3. 运行 sw build org.sw.demo.google.tesseract.tesseract

构建训练工具

如今,可以使用 Visual Studio 在 Windows 上构建完整的 Tesseract 训练工具集。您需要安装最新的 VS 编译器(VS2019/2022 或轻量级 VS 2019/2022 构建工具发行版)。

为此

  1. https://software-network.org/client/ 下载最新 SW(Software Network https://software-network.org/client/)客户端 下载
  2. 检出 Tesseract 源代码 git clone https://github.com/tesseract-ocr/tesseract tesseract && cd tesseract
  3. 运行 sw build
  4. 二进制文件将在 .sw\out\some hash dir... 下可用。

使用 Tesseract 的 Visual Studio 项目(vcpkg 构建)

  1. 设置 Vcpkg(Visual C++ 包管理器)。
  2. 对于 64 位,运行 vcpkg install tesseract:x64-windows。对于主分支,使用 –head。

静态链接

要构建一个自包含的 tesseract.exe 可执行文件(没有任何 DLL 或运行时依赖项),请使用上面的 Vcpkg 以及以下命令

对于主分支,使用 –head。它可能仍然需要一个用于 OpenMP 运行时的 DLL,vcomp140.dll(您可以在 Visual C++ Redistributable 2015 中找到它)。

使用 VS2017 的 CMake 构建,不使用 Software Network 客户端

  1. 按照其 wiki 中的说明构建和安装 Leptonica。
  2. 安装 用于 Visual Studio 的 ICU 库
chdir tesseract
cmake -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=%INSTALL_DIR% -DCMAKE_INSTALL_PREFIX=%INSTALL_DIR% -DSW_BUILD=OFF -DBUILD_SHARED_LIBS=ON -DENABLE_LTO=ON -DBUILD_TRAINING_TOOLS=ON -DFAST_FLOAT=ON -DGRAPHICS_DISABLED=ON -DOPENMP_BUILD=OFF
cmake --build build --config Release --target install

这将创建大多数训练工具(不包括 text2image,因为其要求的 Pango 库在 Windows 上不易构建和安装)。有关更多详细信息,请查看 https://github.com/tesseract-ocr/tesseract/blob/main/.github/workflows/cmake-win64.yml。

开发 Tesseract

出于开发 Tesseract 本身的目的,请执行以下步骤

  1. 下载并安装 Git、CMake 并将其放入 PATH 中。
  2. https://software-network.org/client/ 下载最新 SW(Software Network https://software-network.org/)客户端 下载。SW 是一个源代码包分发系统。
  3. 将 SW 客户端添加到 PATH 中。
  4. 运行 sw setup(可能需要管理员权限)
  5. 如果您有发行版存档,请将其解压缩到 tesseract 目录。

如果您使用的是主分支,请运行

   git clone https://github.com/tesseract-ocr/tesseract tesseract
  1. 运行

     cd tesseract
     mkdir build && cd build
     cmake ..
    
  2. 在您的 Visual Studio 版本中构建解决方案(tesseract.sln)。如果您想从命令行构建和安装(例如 Release 构建),您可以使用以下命令

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

    如果您想安装到 C:\Program Files 以外的目录(您将需要管理员权限才能执行此操作),则需要在配置期间指定安装路径

    cmake .. -G "Visual Studio 15 2017 Win64" -DCMAKE_INSTALL_PREFIX=inst
    

出于开发训练工具的目的,在从上一段克隆存储库后,请运行

sw build

您将在 Tesseract 的根目录中看到一个解决方案链接。

构建 x64 平台

sw

如果您使用 sw+cmake 构建,请按如下方式运行 cmake

mkdir win64 && cd win64
cmake .. -G "Visual Studio 14 2015 Win64"

如果您使用 sw 构建,请运行 sw generate,它将为您创建一个解决方案链接(尚未实现!)。

3.05

如果您有 Visual Studio 2015,请查看 https://github.com/peirick/VS2015_Tesseract 存储库以获取 用于 Tessearct 和依赖项的 Visual Studio 2015 项目,并点击 build_tesseract.bat。之后,您还需要下载语言包。

3.03rc-1

查看博客 如何使用 Visual Studio 2013 构建 Tesseract 3.03

3.02

对于 tesseract-ocr 3.02,请按照 Tesseract-OCR 的 Visual Studio 2008 开发者说明 中的说明操作。

3.01

SourceForge 上的下载存档 页面下载这些包

将它们解压缩到一个目录(例如 tesseract-3.01)。请注意,tesseract-ocr-3.01.eng.tar.gz 将根目录命名为 'tesseract-ocr' 而不是 'tesseract-3.01'

与 Windows 相关的文件位于 vs2008 目录(例如 tesseract-3.01\vs2008)中。与往常一样,适用相同的构建过程:使用 VC++Express 2008 打开 tesseract.sln 并构建所有项目(或仅构建 Tesseract)。它应该编译(至少在发行版模式下),无需进一步安装任何内容。DLL 依赖项和 Leptonica 已包含在内。输出将在 tesseract-3.01\vs2008\bin(或 tesseract-3.01\vs2008\bin.rdtesseract-3.01\vs2008\bin.dbg 中,具体取决于构建配置)。

Mingw+Msys

对于 Mingw+Msys,请查看博客 使用 Mingw+Msys 编译 Leptonica 和 Tesseract-ocr

Msys2

从 https://msys2.github.io/ 下载并安装 MSYS2 安装程序。

如果您想从 PKGBUILD 构建,则需要安装的核心包组如下

要构建 tesseract-ocr 发行版包,请使用来自 https://github.com/Alexpux/MINGW-packages/tree/master/mingw-w64-tesseract-ocr 的 PKGBUILD。

Cygwin

要构建 Cygwin,请查看博客 如何在 Cygwin 上构建 Tesseract

Tesseract 以及 3.04.00 及更高版本的训练实用程序均可作为 Cygwin 包使用。

Tesseract specific packages to be installed:

tesseract-ocr                           3.04.01-1
tesseract-ocr-eng                       3.04-1
tesseract-training-core                 3.04-1
tesseract-training-eng                  3.04-1
tesseract-training-util                 3.04.01-1

Mingw-w64

Mingw-w64 允许为 Windows 构建 32 位或 64 位可执行文件。它可用于在 Windows 上进行原生编译,也可用于在 Linux 上进行交叉编译(比原生编译更容易且更快)。大多数大型 Linux 发行版中已经包含了进行交叉构建所需的工具包。在构建 Tesseract 之前,有必要构建一些先决条件。

对于 Debian 和类似发行版(例如 Ubuntu),可以按如下方式安装交叉工具

# Development environment targeting 32- and 64-bit Windows (required)
apt-get install mingw-w64
# Development tools for 32- and 64-bit Windows (optional)
apt-get install mingw-w64-tools

您将需要这些先决条件

macOS

除了 Apple 的 Xcode 之外,通常还需要 Fink、Homebrew 或 MacPorts 等包管理器。Xcode 和相关的命令行工具提供了编译器(llvm-gcc)和链接器,以及 zlib 等库。包管理器提供了 Xcode 中没有的自由软件包。

可以通过运行 xcode-select --install 来安装 Xcode 命令行工具。

请注意,Tesseract 4 可以使用 OpenMP 支持进行构建,但这需要额外的安装。

使用 Fink 的 macOS

Fink(截至 2017 年 4 月)既不提供 Leptonica,也不提供构建 Tesseract 训练工具所需的包,因此不建议用于构建 Tesseract。

使用 MacPorts 的 macOS

准备对 OpenMP 的支持(可选)

安装 OpenMP

sudo port install libomp

以下获取、编译和手动安装 OpenMP 的方法不再需要

# Install cmake if it is not available.
sudo port install cmake
git clone https://github.com/llvm-mirror/openmp.git
cd openmp
mkdir build
cd build
cmake ..
make
sudo make install

安装所需的包

sudo port install autoconf \
                  automake \
                  libtool \
                  pkgconfig \
                  leptonica

编译

编译本身依赖于 Autotools 套件

  git clone https://github.com/tesseract-ocr/tesseract.git
  cd tesseract
  ./autogen.sh
  ./configure
  make
  sudo make install

如果您想支持多线程,则必须先安装 OpenMP(见上文),并告诉编译器和链接器如何激活 OpenMP 支持。这可以通过将该信息添加到 configure 的选项中来实现

  ./configure CXXFLAGS="-Xpreprocessor -fopenmp -I/opt/local/include/libomp -Wall -O2" LDFLAGS=-L/opt/local/lib/libomp LIBS=-lomp

如果编译在 make 命令处失败,并且 libtool 由于缺少指令而报错,您可能正在使用 MacPort 的 g++ 编译器,并且遇到了 已知问题。社区建议使用 clang,但对于 g++,一个解决方法是重新配置构建

./configure CXXFLAGS=-Wa,-q

然后继续执行 make

安装带训练工具的 Tesseract

在上面的方法中,训练工具没有安装。您可以按如下方式安装 Tesseract 以及训练工具。

安装训练工具所需的包

sudo port install cairo pango
sudo port install icu +devel

构建和安装

git clone https://github.com/tesseract-ocr/tesseract/
cd tesseract
./autogen.sh
./configure
make training
sudo make install training-install

使用 Homebrew 的 macOS

安装依赖项

# Packages which are always needed.
brew install automake autoconf libtool
brew install pkgconfig
brew install icu4c
brew install leptonica
# Packages required for training tools.
brew install pango
# Optional packages for extra features.
brew install libarchive
# Optional package for builds using g++.
brew install gcc

编译

截至 2017 年 1 月,clang 可以构建,但 OpenMP 仅使用单线程,可能会降低性能。如果您确实需要 OpenMP,请安装并使用 gcc。

git clone https://github.com/tesseract-ocr/tesseract/
cd tesseract
./autogen.sh
mkdir build
cd build
# Optionally add CXX=g++-8 to the configure command if you really want to use a different compiler.
../configure PKG_CONFIG_PATH=/usr/local/opt/icu4c/lib/pkgconfig:/usr/local/opt/libarchive/lib/pkgconfig:/usr/local/opt/libffi/lib/pkgconfig
make -j
# Optionally install Tesseract.
sudo make install
# Optionally build and install training tools.
make training
sudo make training-install

macOS:构建 arm-apple-darwin64

有关交叉编译,请查看 问题 2334 中的讨论。您需要按如下方式指定目标

./configure CXX="g++ --target=arm-apple-darwin64"

Android

Tesseract 可以为 Android 构建为静态命令行可执行文件 tesseract,或者您可以使用 Java 绑定 在您的 Android 应用程序中使用 libtess

目前,最简单的构建方法可以在 tess-two 分支 中找到。此分支包含 Tesseract 和 Leptonica 源代码,因此只需下载存储库即可。要构建命令行可执行文件,您不需要 Android SDK 或 Android Studio,只需要安装 Android NDK(已测试 r.20)并运行 ndk-build 命令,例如

ndk-build -C tess-two-git/tess-two tesseract APP_ABI=arm64-v8a

也可以使用 4.1 分支。请注意,性能可能会有很大差异

> adb shell time tess3 --tessdata-dir tessdata3 eurotext.png txt3
Tesseract Open Source OCR Engine v3.05.00 with Leptonica
    0m05.95s real     0m05.77s user     0m00.17s system

> adb shell time tess4 --tessdata-dir tessdata4 eurotext.png txt4
Tesseract Open Source OCR Engine v4.1.0 with Leptonica
    0m59.07s real     0m58.56s user     0m00.45s system

> adb shell time tess4 --tessdata-dir tessdata3 eurotext.png txt42
Tesseract Open Source OCR Engine v4.1.0 with Leptonica
    0m05.61s real     0m05.37s user     0m00.23s system

替代方法

另一种编译方法是使用项目 使用 Docker 构建 Android,在撰写本文时,该项目可以为以下版本和体系结构生成共享库

架构 \ 版本 3.02.02 3.05.02 4.0.0 4.1.0
armv7-a
arm64-v8a
x86

依赖库的编译,包括 **leptonica** 和 **tiff**,也包含在内并被处理。

在 Linux 上使用 NDK 交叉编译

另一种编译方法是在 Linux 机器上使用 Android NDK r22 (22.1.7171670) 进行编译。 此方法为以下版本和架构编译

架构 \ 版本 4.1.0
armv7-a
arm64-v8a
x86
x86_64

您将需要这些先决条件

使用以下命令编译 Leptonica

./autobuild
./configure \
    --host=$TARGET \
    --disable-programs \
    --without-giflib \
    --without-libwebp \
    --without-zlib \
    --without-libopenjpeg \
    --prefix $ROOT/output/$OUTARCH/

make -j && make install

使用以下命令编译 Tesseract

export API=23

export TOOLCHAIN=$ANDROID_NDK_HOME_22/toolchains/llvm/prebuilt/linux-x86_64

export ABI_CONFIGURE_HOST=$NDKTARGET
export AR=$TOOLCHAIN/bin/$NDKTARGET-ar
export CC=$TOOLCHAIN/bin/$TARGET$API-clang
export CXX=$TOOLCHAIN/bin/$TARGET$API-clang++
export AS=$CC
export LD=$TOOLCHAIN/bin/$TARGET-ld
export RANLIB=$TOOLCHAIN/bin/$NDKTARGET-ranlib
export STRIP=$TOOLCHAIN/bin/$NDKTARGET-strip

export LEPTONICA_LIBS="-L$ROOT/output/$OUTARCH/lib -llept"
export LEPTONICA_CFLAGS="-I$ROOT/output/$OUTARCH/include/leptonica"
export PKG_CONFIG_PATH="$ROOT/output/$OUTARCH/lib/pkgconfig"

export LIBS="-L$ROOT/output/$OUTARCH/lib"

make clean
./autogen.sh
./configure \
    --host=$TARGET \
    --disable-doc \
    --without-archive \
    --disable-openmp \
    --without-curl \
    --prefix $ROOT/output/$OUTARCH/

make -j
make install

常见错误

GitHub 上的最新代码不需要 autoconf-archive

一种解决方案是设置 PKG_CONFIG_PATH:例如:PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

在这种情况下,您必须创建 m4 目录(mkdir m4),然后重新运行从 ./configure 开始的上述命令。

其他