さまざまなプラットフォーム向けのコンパイルガイド
注:このドキュメントは、あなたがオペレーティングシステム上でソフトウェアをコンパイルすることに精通していることを前提としています。
leptonicaのビルドに使用したのと同じツールを使って、tesseractをビルドしてください。
ソースからTesseractをビルドするには、C++17を適切にサポートしたC++コンパイラが必要です。Tesseractのビルドに役立つツールチェーンはいくつか(既知の)あります:GNU Autotools、CMake、Software Network (a.k.a. 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 |
1つのオプションは、ディストリビューションの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の手順に従ってください。
インストール手順も読んでください。
他の場所にインストールする/ルートなしでインストールする
Tesseractは任意の場所にインストールするように構成できるため、ルートアクセスなしでインストールできます。
$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
Ubuntu 16.xxでのTesseract 4.0およびLeptonica 1.7.4のコンパイルプロセスのビデオ表現
言語データ
- 興味のある言語のデータファイルをダウンロードしてください。
- それを
tessdata
ディレクトリに移動します(例:mv tessdata $TESSDATA_PREFIX
が定義されている場合は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クライアントを使用)
- 最新のSW(Software Network
https://software-network.org/
)クライアントをhttps://software-network.org/client/
からダウンロードします。 sw setup
を実行します(管理者アクセスが必要な場合があります)。sw build org.sw.demo.google.tesseract.tesseract
を実行します。
トレーニングツールをビルドする
現在、Visual StudioでWindows上でTesseractトレーニングツールのフルセットをビルドすることが可能です。最新のVSコンパイラ(VS2019/2022または軽量VS 2019/2022ビルドツールディストリビューションがインストールされている必要があります)。
これを行うには
- 最新のSW(Software Network
https://software-network.org/client/
)クライアントをhttps://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ビルド)
- Visual C++パッケージマネージャーであるVcpkgを設定します。
- 64ビットの場合は
vcpkg install tesseract:x64-windows
を実行します。mainブランチの場合は --head を使用します。
静的リンク
自己完結型の tesseract.exe
実行ファイル(DLLやランタイム依存関係なし)をビルドするには、上記のVcpkgを次のコマンドで使用します。
- 64ビットの場合は
vcpkg install tesseract:x64-windows-static
- 32ビットの場合は
vcpkg install tesseract:x86-windows-static
mainブランチの場合は --head を使用します。OpenMPランタイム用に1つの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
これにより、ほとんどのトレーニングツールが作成されます(Pangoライブラリの要件がWindowsでビルドおよびインストールが容易ではないため、text2imageは除きます)。詳細については、https://github.com/tesseract-ocr/tesseract/blob/main/.github/workflows/cmake-win64.yml を参照してください。
Tesseractを開発する
Tesseract自体の開発目的では、次の手順を実行します
- Git、CMakeをダウンロードしてインストールし、PATHに配置します。
- 最新のSW(Software Network
https://software-network.org/
)クライアントをhttps://software-network.org/client/
からダウンロードします。SWはソースパッケージ配布システムです。 - SWクライアントをPATHに追加します。
sw setup
を実行します(管理者アクセスが必要な場合があります)。- リリースアーカイブがある場合は、
tesseract
ディレクトリに解凍します。
mainブランチを使用している場合は、次を実行します
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をお持ちの場合は、Tesseractと依存関係のVisual Studio 2015プロジェクトについてはhttps://github.com/peirick/VS2015_Tesseractリポジトリをチェックアウトし、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用の英語言語ファイル(または他の言語トレーニングファイルをダウンロード)
それらを1つのディレクトリ(例:tesseract-3.01
)に解凍します。tesseract-ocr-3.01.eng.tar.gz
はルートディレクトリの名前を 'tesseract-3.01'
ではなく'tesseract-ocr'
にしていることに注意してください。
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をビルドする方法を参照してください。
3.04.00以降のTesseractおよびトレーニングユーティリティは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 Command Line Toolsは、xcode-select --install
を実行することでインストールできます。
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向けにビルド
クロスコンパイルについては、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も含まれており、処理されます。
NDKを使用したLinuxでのクロスコンパイル
コンパイルの別の方法は、Android NDK r22(22.1.7171670)を使用してLinuxマシンで行うことです。この方法は、次のバージョンとアーキテクチャ向けにコンパイルします。
アーキテクチャ \ バージョン | 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
を実行することを忘れないでください。このエラーは、autoconf-archive
が不足していてパッケージが利用できないCentOSでよく発生することに注意してください。いくつかのプロジェクトがインストールを支援します。
GitHubの最新のコードは、autoconf-archive
を必要としません。
-
「configure: error: Leptonica 1.74 or higher is required.」というエラーでconfigureが失敗する場合は、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から始まる上記のコマンドを再実行する必要があります。