3

この記事は最終更新日から1年以上が経過しています。

@_dakc_

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読み取りまでを学びました。次回は転移学習について書きたいと思います。

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
_dakc_
外国人SEです。

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
記事投稿イベント開催中
BitriseでCI/CDを実現したモバイルアプリ開発の成果を共有しよう!
~
自社サービスの技術スタック公開
~