跳至內容。

各種平台的編譯指南

注意: 此文件假設您已熟悉如何在您的作業系統上編譯軟體。

使用與建置 leptonica相同的工具來建置 tesseract。

從原始碼建置 Tesseract 需要良好 C++17 支援的 C++ 編譯器。有幾個(已知的)工具鏈可以幫助您建置 tesseract:GNU AutotoolsCMakeSoftware Network (又名 sw) 和 vcpkg。如果以下說明對您來說不夠清楚,請查看tesseract Github Action Worklows

目錄

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

請依照編譯–Git安裝中的指示

另請閱讀 安裝說明

安裝在其他地方/沒有 root 權限

可以將 Tesseract 設定為安裝在任何地方,這使得在沒有 root 存取權限的情況下安裝成為可能。

要將其安裝在 $HOME/local 中

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

要使用也安裝在 $HOME/local 中的 Leptonica 程式庫將其安裝在 $HOME/local 中

./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

Ubuntu 16.xx 上 Tesseract 4.0 和 Leptonica 1.7.4 編譯過程的影片表示

語言資料

您也可以使用

export TESSDATA_PREFIX=/some/path/to/tessdata

指向您的 tessdata 目錄(例如:如果您的 tessdata 路徑是 '/usr/local/share/tessdata',您必須使用 'export TESSDATA_PREFIX='/usr/local/share/tessdata/')。

Windows

main 分支,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

建置訓練工具

如今,可以在 Windows 上使用 Visual Studio 建置完整的 Tesseract 訓練工具集。您需要安裝最新的 VS 編譯器(VS2019/2022 或 light 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 中找到它)。

不使用 Software Network 用戶端時,使用 VS2017 進行 CMake 建置

  1. 依照 Leptonica 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)。如果您想要從命令列建置和安裝(例如,發行版本建置),可以使用此命令

    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 存放庫,取得 適用於 Tesseract 及相依性的 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 命令列工具可以透過執行 xcode-select --install 來安裝。

請注意,Tesseract 4 可以使用 OpenMP 支援來建置,但這需要額外的安裝。

macOS 與 Fink

Fink(截至 2017-04)既沒有提供 Leptonica,也沒有提供 Tesseract 訓練工具所需的套件,因此不建議使用它來建置 Tesseract。

macOS 與 MacPorts

準備 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

macOS 與 Homebrew

安裝相依性

# 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 建置

對於交叉編譯,請參閱 issue 2334 中的討論。您需要以下方式指定目標

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

Android

Tesseract 可以作為靜態命令列執行檔 tesseract 為 Android 建置,或者您可以使用 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

相依函式庫 leptonicatiff 的編譯也包含在內並進行處理。

在 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 開頭的命令。

其他