各種平台的編譯指南
注意: 此文件假設您已熟悉如何在您的作業系統上編譯軟體。
使用與建置 leptonica相同的工具來建置 tesseract。
從原始碼建置 Tesseract 需要良好 C++17 支援的 C++ 編譯器。有幾個(已知的)工具鏈可以幫助您建置 tesseract:GNU Autotools、CMake、Software 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 作業系統。
相依性
- 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
請依照編譯–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 編譯過程的影片表示
語言資料
- 下載您感興趣的語言的資料檔。
- 將其移至
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
main 分支,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
。
建置訓練工具
如今,可以在 Windows 上使用 Visual Studio 建置完整的 Tesseract 訓練工具集。您需要安裝最新的 VS 編譯器(VS2019/2022 或 light 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 中找到它)。
不使用 Software Network 用戶端時,使用 VS2017 進行 CMake 建置
- 依照 Leptonica 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
)。如果您想要從命令列建置和安裝(例如,發行版本建置),可以使用此命令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.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 套件的 msys2-devel
- 適用於建置 mingw32 套件的 mingw-w64-i686-toolchain
- 適用於建置 mingw64 套件的 mingw-w64-x86_64-toolchain
若要建置 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 | ✔ | ✔ | ✔ | ✔ |
相依函式庫 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 失敗並出現「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 開頭的命令。