Help us understand the problem. What is going on with this article?

Tesseract OCRをビルドしよう

概要

Tesseract OCRの4.xバージョン以降はLSTMを使っているようです。以下のように2回に分けて今自分が持っている知識を共有したいと思います。
1. ソースからビルド
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読み取りまでを学びました。次回は転移学習について書きたいと思います。

_dakc_
外国人SEです。ウエブやAIあたりに記事を書いていきます。 好きな言葉 ☞ Accept the challenges so that you can feel the exhilaration of victory.
https://github.com/dakc
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした