Git から Tesseract をインストールする
目次
これらは、Git リポジトリから Tesseract をインストールするための手順です。予期せぬ問題に直面する覚悟が必要です。C++17 を十分にサポートする C++ コンパイラが、ソースから Tesseract をビルドするために必要です。
Autoconf ツールを使ったインストール
これを行うには、automake、libtool、leptonica、make、pkg-config がインストールされている必要があります。さらに、Git と C++ コンパイラが必要です。
Debian または Ubuntu では、必要なすべてのパッケージを次のようにインストールできる可能性があります。
apt-get install automake ca-certificates g++ git libtool libleptonica-dev make pkg-config
オプションの man ページは asciidoc でビルドされます
apt-get install --no-install-recommends asciidoc docbook-xsl xsltproc
Tesseract トレーニングツールもビルドする場合は、Pango も必要になります
apt-get install libpango1.0-dev
その後、master ブランチをコンピュータにクローンするには、次のようにします。
git clone https://github.com/tesseract-ocr/tesseract.git
または、コミット履歴を最新のコミットのみに切り捨てた shallow クローンを作成するには、次のようにします。
git clone --depth 1 https://github.com/tesseract-ocr/tesseract.git
または、異なるブランチ/バージョンをクローンするには、次のようにします。
git clone https://github.com/tesseract-ocr/tesseract.git --branch <branchName> --single-branch
注意: GitHub の最新バージョンのビルドで問題が発生する場合があります。その場合は、ここ (https://github.com/tesseract-ocr/tesseract/releases) から、最新のリリースバージョンのいずれかを代わりにダウンロードしてください。
注意: Tesseract には Leptonica v1.74 以降が必要です。システムに Leptonica の古いバージョンしかない場合は、DanBloomberg/leptonica から入手できるソースから手動でコンパイルする必要があります。
最後に、以下を実行します。
cd tesseract
./autogen.sh
./configure
make
sudo make install
sudo ldconfig
重要: 下記の 「インストール後の指示」のセクションを参照してください。
このエラーが表示された場合
make all-recursive
Making all in ccstruct
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -
I.. -I../ccutil -I../cutil -I../image -I../viewer -I/opt/local/
include -I/usr/local/include/leptonica -g -O2 -MT blobbox.lo -MD -MP -
MF .deps/blobbox.Tpo -c -o blobbox.lo blobbox.cpp
mv -f .deps/blobbox.Tpo .deps/blobbox.Plo
mv: rename .deps/blobbox.Tpo to .deps/blobbox.Plo: No such file or
directory
make[3]: *** [blobbox.lo] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
./autogen.sh
の実行後、autoreconf -i
を実行してみてください。
トレーニングツールを使ったビルド
上記では、Tesseract トレーニングツールはビルドされません。トレーニングツールをインストールする場合は、次のライブラリも必要です。
sudo apt-get install libicu-dev
sudo apt-get install libpango1.0-dev
sudo apt-get install libcairo2-dev
トレーニングツールを使用して Tesseract をビルドするには、次を実行します。
cd tesseract
./autogen.sh
./configure
make
sudo make install
sudo ldconfig
make training
sudo make training-install
必要に応じて、configure に追加のオプションを指定できます。例:
./configure --disable-openmp --disable-debug --disable-opencl --disable-graphics --disable-shared 'CXXFLAGS=-g -O2 -Wall -Wextra -Wpedantic'
インストール後の指示
Tesseract をインストールするには、エンジン自体と、言語の traineddata の 2 つの部分があります。
上記のインストールコマンドは、Tesseract エンジンとトレーニングツールをインストールします。また、pdf, tsv, hocr, alto
などの出力に必要なものや、lstmbox, wordstrbox
などのボックスファイルを作成するために必要な構成ファイルもインストールします。これらに加えて、画像内のテキストを認識するには、言語のtraineddataが必要です。
130 を超える言語と 35 を超えるスクリプトに対応した 3 種類の traineddata ファイル (tessdata、tessdata_best、および tessdata_fast) が、tesseract-ocr GitHub リポジトリで入手できます。
Linux でソースからビルドする場合、./configure --prefix=/usr
を使用した場合を除き、tessdata の構成は /usr/local/share/tessdata
にインストールされます。Tesseract のインストールが完了したら、必ず必要な言語の traineddata ファイルをダウンロードし、この tessdata ディレクトリ (/usr/local/share/tessdata
) に配置してください。
レガシー (–oem 0) エンジンと LSTM (–oem 1) エンジンの両方をサポートする場合は、tessdata から traineddata ファイルをダウンロードしてください。
LSTM エンジン (–oem 1) のみをサポートする場合は、tessdata_best または tessdata_fast の traineddata ファイルを使用してください。
必ずダウンロードリンクを使用するか、raw
ファイルを wget してください。例: tesseract のレガシーエンジンと LSTM エンジンの両方をサポートする tessdata リポジトリの eng.traineddata の直接ダウンロードリンクは次のとおりです。
これで、tesseract
を使用する準備ができました。
traineddata ファイルをダウンロードするための python3 スクリプトは、https://github.com/zdenop/tessdata_downloader から入手できます。
インストール時に定義されたディレクトリ (つまり、/usr/local/share/tessdata
) とは異なるディレクトリに traineddata ファイルを配置する場合は、Tesseract の tessdata
ディレクトリを指すローカル変数 TESSDATA_PREFIX
を設定する必要があります。
-
例: Linux Ubuntu では、
~/.bashrc
ファイルの末尾に次を追加して変更します。状況に応じてパスを変更してくださいexport TESSDATA_PREFIX="/home/$USER/Downloads/tesseract/tesseract-4.1.0/tessdata"
-
次に、ターミナルを閉じて再度開き、有効にするか、
. ~/.bashrc
またはexport ~/.bashrc
(同じこと) を呼び出して、現在のターミナルで直ちに有効にします。 -
必要な言語トレーニングデータもこの
tessdata
フォルダーに配置します。たとえば、英語のものはeng.traineddata
と呼ばれます。ここから tessdata リポジトリからダウンロードし、上記のTESSDATA_PREFIX
変数で指定したtessdata
ディレクトリに移動します。
TensorFlow を使ったビルド
TensorFlow を使用したビルドには、Protocol Buffers と TensorFlow 用の追加パッケージが必要です。Debian または Ubuntu では、次のようにインストールできる可能性があります。
apt-get install libprotoc-dev libtensorflow-dev
必要な開発ファイルが見つかると、すべてのビルドで Tesseract とトレーニングツールが TensorFlow で自動的にビルドされます。これは上書きできます
# Enforce build with TensorFlow (will fail if requirements are not met).
./configure --with-tensorflow [...]
# Don't build with TensorFlow.
./configure --without-tensorflow [...]
TensorFlow を使用したビルドのサポートは、Git master の新機能です。結果として得られるコードはまだテストされていません。
単体テストのビルド
このようなビルドは、自動回帰テストを実行するために使用できます。これには、(上記で説明した) トレーニングツール用の追加の依存関係と、すべての git サブモジュール、およびモデルリポジトリ (*.traineddata
) のダウンロードが含まれます。
# Clone the Tesseract source tree:
git clone https://github.com/tesseract-ocr/tesseract.git
# Clone repositories with model files (from the same directory):
git clone https://github.com/tesseract-ocr/tessdata.git
git clone https://github.com/tesseract-ocr/tessdata_best.git
git clone https://github.com/tesseract-ocr/tessdata_fast.git
git clone https://github.com/tesseract-ocr/langdata_lstm.git
# Change to the Tesseract source tree and get all submodules:
cd tesseract
git submodule update --init
# Build the training tools (see above). Here we use a release built with sanitizers:
./autogen.sh
mkdir -p bin/unittest
cd bin/unittest
../../configure --disable-shared 'CXXFLAGS=-g -O2 -Wall -Wextra -Wpedantic -fsanitize=address,undefined -fstack-protector-strong -ftrapv'
make training
# Run the unit tests:
make check
cd ../..
これにより、bin/unittest/unittest
の下に、個別の単体テストと累積的な単体テストの両方のログファイルが作成されます。スタンドアロンで実行することもできます。例:
bin/unittest/unittest/stringrenderer_test
失敗したテストは、(プラットフォームに応じて) セグメンテーション違反または SIGILL ハンドラーとして目立つように表示されます。
デバッグビルド
このようなビルドでは、非常に遅く実行される Tesseract バイナリが生成されます。本番環境では役に立ちませんが、ソフトウェアの問題を見つけたり分析したりするのに適しています。これは実績のあるビルドシーケンスです
cd tesseract
./autogen.sh
mkdir -p bin/debug
cd bin/debug
../../configure --enable-debug --disable-shared 'CXXFLAGS=-g -O0 -Wall -Wextra -Wpedantic -fsanitize=address,undefined -fstack-protector-strong -ftrapv'
# Build tesseract and training tools. Run `make` if you don't need the training tools.
make training
cd ../..
これにより、デバッグコードがアクティブになり、共有 Tesseract ライブラリが使用されず (これにより、インストールなしで tesseract
を実行できます)、コンパイラの最適化が無効になり (gdb
でより良いデバッグが可能になります)、多数のコンパイラ警告が有効になり、いくつかの実行時チェックが有効になります。
プロファイリングビルド
このようなビルドは、パフォーマンスの問題を調査するために使用できます。Tesseract はプロファイリングなしの場合よりも遅くなりますが、許容できる速度で実行されます。これは実績のあるビルドシーケンスです
cd tesseract
./autogen.sh
mkdir -p bin/profiling
cd bin/profiling
../../configure --disable-shared 'CXXFLAGS=-g -p -O2 -Wall -Wextra -Wpedantic'
# Build tesseract and training tools. Run `make` if you don't need the training tools.
make training
cd ../..
これにより、共有 Tesseract ライブラリが使用されず (tesseract
をインストールなしで実行できます)、プロファイリングコードが有効になり、コンパイラの最適化が有効になり、多数のコンパイラ警告が有効になります。
オプションで、--enable-debug
を追加し、-O2
を -O0
に置き換えることで、デバッグコードでも使用できます。
プロファイリングコードは、Tesseract が終了すると、現在のディレクトリに gmon.out
という名前のファイルを作成します。GNU gprof は、そのファイルからプロファイリング情報を表示するために使用されます。
量産向けリリースビルド
デフォルトのビルドでは、単一の画像の処理に適した Tesseract 実行可能ファイルが作成されます。その後、Tesseract は 4 つの CPU コアを使用して、可能な限り高速に OCR 結果を取得します。
数百または数千の画像を大量生産する場合、デフォルトは、マルチスレッド実行のオーバーヘッドが非常に大きいため、適切ではありません。Tesseract のシングルスレッドインスタンスを実行する方が優れています。これにより、使用可能なすべての CPU コアが異なる画像を処理します。
これは実績のあるビルドシーケンスです
cd tesseract
./autogen.sh
mkdir -p bin/release
cd bin/release
../../configure --disable-openmp --disable-shared 'CXXFLAGS=-g -O2 -fno-math-errno -Wall -Wextra -Wpedantic'
# Build tesseract and training tools. Run `make` if you don't need the training tools.
make training
cd ../..
これにより、OpenMP (マルチスレッド) が無効になり、共有 Tesseract ライブラリが使用されず (これにより、インストールなしで tesseract
を実行できます)、コンパイラの最適化が有効になり、数学関数に対する errno
の設定が無効になり (実行が高速になります)、多数のコンパイラ警告が有効になります。
ファジング用ビルド
ファジングは、Tesseract API のバグをテストするために使用されます。Tesseract は OSS-Fuzz を使用しますが、ファジングはローカルで実行することもできます。新しい Clang++ コンパイラが必要です。
ビルド例 (使用可能な clang++ の CXX の値を修正してください)
cd tesseract
./autogen.sh
mkdir -p bin/fuzzer
cd bin/fuzzer
../../configure --disable-openmp --disable-shared CXX=clang++-7 CXXFLAGS='-g -O2 -Wall -Wextra -Wpedantic -D_GLIBCXX_DEBUG -fsanitize=fuzzer-no-link,address,undefined'
# Build the fuzzer executable.
make fuzzer-api
cd ../..
例 (ヘルプ情報を表示)
bin/fuzzer/fuzzer-api -help=1
例 (既知のテストケースでファザーを実行)
bin/fuzzer/fuzzer-api clusterfuzz-testcase-minimized-fuzzer-api-5670045835853824
例 (新しいバグを見つけるためにファザーを実行)
nice bin/fuzzer/fuzzer-api -jobs=16 -workers=16
Windows Visual Studio を使用したビルド
Windows 用のコンパイルを参照してください。