tesseract-ocr 3.04のインストール(macOS/OSX)※追記あり

今日もtesseract-ocrネタです。当面はブログのネタに困らないように思われます。

[2015/08/28 追記] tesseract-ocrRuby 用のラッパー(ruby-tesseract-ocr)はまだ3.04に対応していないようです。 Ruby経由でtesseract-ocrを使用している場合は、アップグレードしないほうが無難です。 もしくはGoogle Driveより3.03(rc)をダウンロードしてインストールするのが良いかと思います。下記と同じ要領でインストール可能。

Homebrewでも最新のtesseract-ocr 3.04 がインストールできるようになっています。 しかしながら、肝心のcombine_tessdataコマンドを始めとする言語データ(language data)を扱うコマンドがインストールされません。

そこで、MacOSX (Yosemite) にtesseract-ocrソースコードからインストールする手順をメモしておきます。

前提

MacOSX 10.10.5 (Yosemite)、Homebrew のセットアップは完了していることが前提です。

Homebrew ではインストールされないtesseract-ocr の付属コマンドは以下のとおり。

  • text2image
  • unicharset_extractor
  • set_unicharset_properties
  • shapeclustering
  • mftraining
  • cntraining
  • wordlist2dawg
  • dawg2wordlist
  • combine_tessdata

インストール

GitHub からソースコードをダウンロードします。"Source code (tar.gz)"をクリックします。

Releases · tesseract-ocr/tesseract · GitHub

準備

必要なライブラリをインストールします。3.03から新しく追加されたtext2imageコマンド*1の関係で、依存ライブラリが増えています。

$ brew install cairo pango
$ brew install leptonica
$ brew install icu4c

icu4c のインストール後に下記のメッセージが表示されますので、メモしておきます。

This formula is keg-only, which means it was not symlinked into /usr/local.

OS X provides libicucore.dylib (but nothing else).

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/icu4c/lib
    CPPFLAGS: -I/usr/local/opt/icu4c/include

理由は不明ですが、Homebrew経由でicu4cをインストールしても/usr/local/includeへのリンクが作成されないということのようです。 上記の環境変数をセットしてコンパイルするか、コンパイルする前に下記のコマンドを実行しておきます。

$ brew link icu4c --force

コンパイルしてインストール

tarアーカイブを展開。

$ tar zxf tar zxf tesseract-3.04.00.tar.gz
$ cd tesseract-3.04.00

あとは基本的にconfigure してmakeすればいいだけです。

$ ./configure LDFLAGS=-L/usr/local/opt/icu4c/lib CPPFLAGS=-I/usr/local/opt/icu4c/include

問題がなければ下記のようなメッセージが出力されるはず。特に後半のTraining tools...が出力されていない場合は何かライブラリが不足しています。

Configuration is done.
You can now build and install tesseract by running:

$ make
$ sudo make install

Training tools can be build and installed (after building of tesseract) with:

$ make training
$ sudo make training-install

素直に上記のコマンドを入力すればOKです。

$ make 
<skip>
$ sudo make install
<skip>
$ make training
<skip>
$ sudo make training-install

sudoコマンドはログインしているユーザのパスワード入力を要求するので念のため*2

アンインストールする際に必要なので、展開したソース一式はどこか適当な場所に残しておくことをおすすめします。(念のために記載しておくと、アンインストール手順は、上記のディレクトリで、sudo make uninstall とすれば一部コマンドを除いて削除されます*3。)

必要なコマンドが/usr/local 配下の各ディレクトリにインストールされます。

言語データ

tesseract-ocr/tessdata · GitHubから必要な言語データを取得します。 英語、日本語のOCRであれば以下の3つあれば十分かと。

  • eng.eng.traineddata
  • jpn.traineddata
  • osd.traineddata

git cloneすると遅いので、右側の「Download ZIP」で一括取得してごっそり放り込んでもいいかと思います。

言語データを展開して/usr/local/share/tessdata にコピーすれば完了です。

日本語の言語データ(jpn.traineddata)は若干問題があるようなので、下記を参考にjpn.unicharambigsというファイルを修正してください。

a244.hateblo.jp

動作確認

まずは利用可能な言語を確認します。

$ tesseract --list-langs
List of available languages (3):
eng
jpn
osd

また、3.03からパラメータの一覧を取得するオプションが追加されています。

$ tesseract --print-parameters

また、出力も従来からのテキスト、HTMLに加えてpdf形式が追加されています。

基本的な構文は、

$ tesseract <input image > <basename> <option> <config>

です。出力ファイルの拡張子は不要です。とりあえずOCRさせたいのであれば、

$ tesseract input.png output -l jpn

のように-l オプションで対象言語を3文字のアルファベットで指定します。出力はoutputo.txt。対応する画像フォーマットはLeptonicaという画像処理ライブラリのコンパイルオプション次第ですが、一般的なJPEGPNGTIFFBMP、PBMは問題無し。ただしGIFは不可。

例えば下記のようにすると、読み取った文字列がoutput.txt およびoutput.pdfに出力されます。output.pdfは画像+透明テキストというPDFファイルになります。

$ tesseract image.png output -l jpn pdf

同じ要領で、

$ tesseract image.png output -l jpn hocr

とするとHTML形式で出力されます。

他に有用なオプションは-psm--user-wordsでしょうか。前者はページ内のレイアウトのヒントを、後者は単語リストを指定できます。 主なオプションはtesseract -hで確認できます。

その他

ソースコードを展開したディレクトリのtrainng配下に新しいフォント、言語を学習させるための自動化スクリプトがあります。


それでは。

*1:指定されたフォントで学習用の画像とboxファイルを生成するコマンド

*2:想定している読者には完全に余計なお世話でしょうけど何となく

*3:冒頭に挙げたコマンドは削除されないので手で削除されたし