概要
Tesseract OCRの4.xバージョン以降はLSTMを使っているようです。以下のように2回に分けて今自分が持っている知識を共有したいと思います。
- ソースからビルド
- 転移学習
今回は、githubに公開されているソースをビルドし、実行ファイルを作ります。そして画像の中からテキストを読み取ります。
Ubuntu18.04 LTSを使います。
Installation
Important Tools
必要なツールをインストールします。結構時間かかります。
apt-get update
apt-get install git wget curl \
automake ca-certificates g++ libtool make pkg-config \
asciidoc docbook-xsl xsltproc \
libpango1.0-dev \
libgif-dev libjpeg-dev libpng-dev libtiff-dev zlib1g-dev -y
コマンドの説明
1行目:パッケージリストの更新
2行目:色々ダウンロードするために使うパッケージのインストール
3行目:ビルドするために使うパッケージのインストール
4行目:tesseractのマニュアルが必要とするパッケージのインストール
5行目:tesseractの学習用の機能を使うために必要とするパッケージのインストール
6行目:leptonicaが必要とするパッケージがインストール。leptonicaはtesseractを使うために必要です。
※一回のコマンドでインストールが失敗した場合は、1行ずつインストールしてください。
Build Leptonica
ソースのダウンロード
leptonicaのソースをダウンロードします。今回は/optにしていますが、別に/optではなくてもいいです。
cd /opt
wget http://www.leptonica.org/source/leptonica-1.78.0.tar.gz
次は、圧縮されたファイルを解凍します。
tar -zxvf /opt/leptonica-1.78.0.tar.gz
ビルド
configure
「configure」とは,これからインストールを行うOSのCPUや
,必要な関連ツールの調査を行い,それらの状況を記述したMakefileファイルを作成するステップです。最後にできるバイナリファイルたちは「make install」するとデフォルトで設定したディレクトリにインストールされますが、configureの実行の際に「--prefix=/好きな場所のパス」を指定する事でインストール先の変更ができます。
./configure --prefix=/opt/leptonica
make
「make」とは,configureで作成されたMakefileを基にしてソースコードをコンパイルし、バイナリファイルを作ります。
make
make install
「make install」は,makeで生成されたバイナリファイルなどを指定のディレクトリにインストールします。
make install
ちなみに、上記で6回にして実行したコマンドをまとめて1回で行う事もできます。
wget http://www.leptonica.org/source/leptonica-1.78.0.tar.gz --directory-prefix=/opt && \
tar -zxvf /opt/leptonica-1.78.0.tar.gz -C /opt && \
cd /opt/leptonica-1.78.0 && \
./configure --prefix=/opt/leptonica && \
make && \
make install
Build Tesseract
ソースのダウンロード
cd /opt
git clone https://github.com/tesseract-ocr/tesseract.git tesseract_src
ビルド
ビルドのやり方は上記で実装したleptonicaと同様ですので今回は1回のコマンドで行います。かなり時間かかります。
cd /opt/tesseract_src && \
./autogen.sh && \
./configure --prefix=/opt/tesseract --with-extra-libraries=/opt/leptonica/lib --disable-openmp --disable-debug --disable-opencl --disable-graphics --disable-shared && \
make && \
make install && \
make training && \
make training-install
tesseractを/opt/tesseractの直下にインストールされます。
自分で学習を行わないのであれば、最後の2行が不要です。
精度のいいモデルのダウンロード
ソースコードと別のレポジトリに認識精度がいいモデルが公開されています。英語と日本語(横書き)のモデルをダウンロードします。日本語縦書きの場合は「jpn_vert.traineddata」を別当公開されていますが、今回は使わないためダウンロードしません。
wget https://github.com/tesseract-ocr/tessdata_best/raw/master/eng.traineddata --directory-prefix=/opt/tesseract/share/tessdata
wget https://github.com/tesseract-ocr/tessdata_best/raw/master/jpn.traineddata --directory-prefix=/opt/tesseract/share/tessdata
環境変数の設定
最後に以下のように環境変数の設定を行います。
export TESSDATA_PREFIX=/opt/tesseract/share/tessdata
export PATH=$PATH:/opt/tesseract/bin
export LD_LIBRARY_PATH=/opt/leptonica/lib:/opt/tesseract/lib:$LD_LIBRARY_PATH
今の設定は一時的なものであり、タミナルを閉じると消えます。永遠に残したい場合は、~/.bash_profileの最後に上記の3行を追加し再起動します。
Run
まずは、tesseractのどのバージョンインストールされたか確認します。tesseractが正しくインストールされた場合は、バージョン番号が表示されるでしょう。
tesseract -v
テスト用の画像をダウンロードします。他の方法で用意してもOKです。
wget https://pbs.twimg.com/media/EIIOocMUUAIAUFa?format=png -O test.png
いよいよtesseractの出番。
以下のコマンドで認識依頼かけます。
tesseract test.png stdout -l eng
結果は如何でしたか?
補足
■ -l jpnを指定すると日本語のテキストを認識してくれます。
tesseract test.png stdout -l jpn
■ --psm 7を指定すると1行のテキストしかないイメージの制度があがります。複数行ある場合は--psm 6を指定します。tesseract --help-psmを実行するとその詳細を確認する事が出来ます。
tesseract test.png stdout -l jpn --psm 7
最後に
今回はソースからのビルドとOCR読み取りまでを学びました。次回は転移学習について書きたいと思います。