不同平台的编译指南
注意: 此文档假定您熟悉在您的操作系统上编译软件。
使用与您构建 Leptonica 相同的工具来构建 Tesseract。
构建 Tesseract 源代码需要 具有良好 C++17 支持的 C++ 编译器。以下几种(已知的)工具链可以帮助您构建 Tesseract:GNU Autotools、CMake、Software 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 操作系统。
依赖项
- C 和 C++ 的编译器:GCC 或 Clang
- GNU Autotools:autoconf、automake、libtool
- pkg-config
- Leptonica
- (可选)zlib、libpng、libjpeg、libtiff、giflib、openjpeg、webp、archive、curl
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 上的编译过程的视频演示
语言数据
- 下载您感兴趣的语言的 数据文件。
- 将其移动到
tessdata
目录(例如,如果定义了TESSDATA_PREFIX
,则为mv tessdata $TESSDATA_PREFIX
)
您也可以使用
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 客户端)
- 从
https://software-network.org/client/
下载最新 SW(Software Networkhttps://software-network.org/
)客户端 下载。 - 运行
sw setup
(可能需要管理员权限) - 运行
sw build org.sw.demo.google.tesseract.tesseract
。
构建训练工具
如今,可以使用 Visual Studio 在 Windows 上构建完整的 Tesseract 训练工具集。您需要安装最新的 VS 编译器(VS2019/2022 或轻量级 VS 2019/2022 构建工具发行版)。
为此
- 从
https://software-network.org/client/
下载最新 SW(Software Networkhttps://software-network.org/client/
)客户端 下载。 - 检出 Tesseract 源代码
git clone https://github.com/tesseract-ocr/tesseract tesseract && cd tesseract
。 - 运行
sw build
。 - 二进制文件将在 .sw\out\some hash dir... 下可用。
使用 Tesseract 的 Visual Studio 项目(vcpkg 构建)
- 设置 Vcpkg(Visual C++ 包管理器)。
- 对于 64 位,运行
vcpkg install tesseract:x64-windows
。对于主分支,使用 –head。
静态链接
要构建一个自包含的 tesseract.exe
可执行文件(没有任何 DLL 或运行时依赖项),请使用上面的 Vcpkg 以及以下命令
- 对于 64 位,运行
vcpkg install tesseract:x64-windows-static
- 对于 32 位,运行
vcpkg install tesseract:x86-windows-static
对于主分支,使用 –head。它可能仍然需要一个用于 OpenMP 运行时的 DLL,vcomp140.dll
(您可以在 Visual C++ Redistributable 2015 中找到它)。
使用 VS2017 的 CMake 构建,不使用 Software Network 客户端
- 按照其 wiki 中的说明构建和安装 Leptonica。
- 安装 用于 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 本身的目的,请执行以下步骤
- 下载并安装 Git、CMake 并将其放入 PATH 中。
- 从
https://software-network.org/client/
下载最新 SW(Software Networkhttps://software-network.org/
)客户端 下载。SW 是一个源代码包分发系统。 - 将 SW 客户端添加到 PATH 中。
- 运行
sw setup
(可能需要管理员权限) - 如果您有发行版存档,请将其解压缩到
tesseract
目录。
如果您使用的是主分支,请运行
git clone https://github.com/tesseract-ocr/tesseract tesseract
-
运行
cd tesseract mkdir build && cd build cmake ..
-
在您的 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.tar.gz
- Tesseract 源代码tesseract-3.01-win_vs.zip
- 包含必要库的 Visual studio(2008 & 2010)解决方案tesseract-ocr-3.01.eng.tar.gz
- Tesseract 的英语语言文件(或下载其他语言训练文件)
将它们解压缩到一个目录(例如 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.rd
或 tesseract-3.01\vs2008\bin.dbg
中,具体取决于构建配置)。
Mingw+Msys
对于 Mingw+Msys,请查看博客 使用 Mingw+Msys 编译 Leptonica 和 Tesseract-ocr。
Msys2
从 https://msys2.github.io/ 下载并安装 MSYS2 安装程序。
如果您想从 PKGBUILD 构建,则需要安装的核心包组如下
- base-devel 用于任何构建
- msys2-devel 用于构建 msys2 包
- mingw-w64-i686-toolchain 用于构建 mingw32 包
- mingw-w64-x86_64-toolchain 用于构建 mingw64 包
要构建 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 | ✔ |
您将需要这些先决条件
- libjpeg - GitHub 分支 2.1.1 - https://github.com/libjpeg-turbo/libjpeg-turbo
- libpng - GitHub 分支 v1.6.37 - https://github.com/glennrp/libpng
- libtiff - 版本 4.0.10 下载 - https://download.osgeo.org/libtiff/
- leptonica - 版本 1.74.4 下载 - https://github.com/DanBloomberg/leptonica
使用以下命令编译 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
常见错误
- 要解决此错误
./configure: line 4237: syntax error near unexpected token `-mavx,' ./configure: line 4237: `AX_CHECK_COMPILE_FLAG(-mavx, avx=1, avx=0)'
请确保已安装
autoconf-archive
。 在安装autoconf-archive
后,不要忘记运行./autogen.sh
。 请注意,此错误通常发生在 CentOS 上,因为autoconf-archive
丢失,并且没有可用的软件包。 某些项目 可以帮助安装。
GitHub 上的最新代码不需要 autoconf-archive
。
-
如果配置失败,出现“configure: error: Leptonica 1.74 or higher is required.” 这样的错误,请尝试安装 libleptonica-dev 包。
-
如果您确定已经安装了 leptonica(例如,在 /usr/local 中),那么 pkg-config 可能没有查看您的安装文件夹(使用
pkg-config --variable pc_path pkg-config
检查)。
一种解决方案是设置 PKG_CONFIG_PATH:例如:PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
- 在某些系统上,autotools 不会自动创建 m4 目录(出现错误:“configure: error: cannot find macro directory ‘m4’”。)
在这种情况下,您必须创建 m4 目录(mkdir m4
),然后重新运行从 ./configure 开始的上述命令。