2011年10月21日金曜日

TesseractOCR トレーニング その2

さて、前回の続き。
ここからは、フォント毎にまとめられた「trファイル」を使ってTesseractに学習させる。

  1. mftrainingの実行.(その1)
    mftraining -F font_properties -U unicharset [フォント名].tr
    もし複数の[フォント名].trがある場合、半角空白でつないで実行。
    mftraining -F font_properties -U unicharset [フォント名].tr [フォント名].tr [フォント名].tr ...以下略

    そうすると、以下のファイルが出来上がるみたい。(あとで使う)
    • mfunicharset
    • pffmtable
    • inttemp
    • Microfeat

  2. mftrainingの実行.(その2)
    その1と似てるけど出力されるファイルが違う。
    mftraining -F font_properties -U unicharset -O jpn.unicharset unicharset [フォント名].tr
    これももし複数の[フォント名].trがある場合、半角空白でつないで実行。

    そうすると、以下のファイルが出来上がるみたい。(あとで使う)
    • jpn.unicharset

  3. cntrainingの実行.
    cntraining [フォント名.tr]
    これももし複数の[フォント名].trがある場合、半角空白でつないで実行。

    以下のファイルが出来上がる。(あとで使う)
    • normproto

  4. ファイル名変更.
    上記の手順で出来た以下のファイル名を変更(言語コードを付与する)。
    • mfunicharset
    • pffmtable
    • inttemp
    • Microfeat
    • normproto
    変更後↓
    • jpn.mfunicharset
    • jpn.pffmtable
    • jpn.inttemp
    • jpn.Microfeat
    • jpn.normproto
  5. トレーニングデータファイルの作成.
    今までの手順で作成された各種ファイルを合成し、一つの言語トレーニングデータを作成する。
    combine_tessdata [言語.]
    最後の[.](ドット)は必要みたい。日本語の場合なら、
    combine_tessdata jpn.
    こんな感じ。
    出来上がりはこれ。
    • [言語].traineddata(※上記の例の場合 jpn.traineddata)
  6. 実際の言語データと入れ替え
    出来上がったファイルを TesseractOCRが使う言語データのディレクトリに移動。
    cp [言語].traineddata /usr/local/share/tessdata/

done!!!

TesseractOCR トレーニング その1

とりあえずココを読む。

なるほど。結構めんどくさい...。
以下にまとめ。

  1. トレーニング用の画像の準備
  2. .boxファイルの作成.
    tesseract [画像ファイル名] [作成するboxファイル名(拡張子なし)]  -l jpn batch.nochop makebox
    TessractOCRが、トレーニング用の画像から大体の枠を読み取り、boxファイル(1文字毎の枠を定義したテキストファイル)を作成してくれるみたい。
  3. 作成されたboxファイルの確認・調整
  4. unicharsetファイルの作成
    前手順までに作成されたboxファイル(複数可 半角スペース区切り)を指定
    unicharset_extractor [boxファイル名] [boxファイル名] [boxファイル名]
  5. font_propertiesファイルの作成. ver3.01から必須(?)
    tesseractが、trainingに使用するフォントの概要を知るためのファイル。...多分。
    ファイルの内容:
    [フォント名] [italic] [bold] [fixed] [serif] [fraktur]
    サンプル:IPAexゴシック、IPAex明朝なら:
    ipaexg 0 0 0 0 0
    ipaexm 0 0 0 0 0 
  6. trファイルの作成.
    tesseract [画像ファイル名] [boxファイル名(拡張子なし)] nobatch box.train.stderr
    例:
    tesseract jpn.ipaexg.exp19.TIF jpn.ipaexg.exp19 nobatch box.train.stderr
    これにより、xxxx.trファイルができる。

    これ、結構つまづいた。
    とりあえず、フォントサイズ大きめに作ろうと思ってやっていたら、
    なんだか
    FAILURE! Couldn't find a matching blob
    がでる。。ようわからん。

    部首ごとにマッチしちまってるのか、サイズがでかすぎるだけなのか・・・。
    (そのときは、1文字あたりのサイズを40ptで作成した画像で実行した)
    ためしに、20ptで画像作成&実行しなおしたら、見事解決。
    16ptとかがベストかも。(根拠無いけど。なんとなく。)文字の間隔とかもかなり影響するかと。
  7. trファイルの結合.
    前手順までに作成されたtrファイル(複数可 半角スペース区切り)を指定
    cat [trファイル] [trファイル] [trファイル] … > [フォント名].tr
    こんなかんじ。
    cat jpn.ipaexg.exp1.tr jpn.ipaexg.exp2.tr jpn.ipaexg.exp3.tr >ipaexg.tr
ふぅ。
ここまでで一段落。
(フォント別の)学習データ作成準備が完了。
次の段階は、フォント毎にまとめられた「trファイル」を使ってTesseractに学習させる。

2011年10月11日火曜日

TesseractOCRを使ってみる。

仕事と関係ないんだけど、
画像認識やら音声認識やらの「ほにゃらら認識」に興味が沸いたのでちょっと手を出してみた。
GoogleのOCRプロジェクト:TesseractOCR
http://code.google.com/p/tesseract-ocr/


現在のバージョンは3.0.
どうやら日本語にも対応しているみたい。しかもトレーニング次第で認識率が上がるとか。
ほぅ。

せっかくさくらVPSもあることだし、とりあえずインスコ。

特に気をつけることもなくあっさりインストールできた。

気をつけるべきトコとしては、先に以下のライブラリを入れとくくらい。
yum install libpng-devel
yum install libjpeg-devel
yum install libtiff-devel
yum install zlib-devel
※ これだけで準備できてるんだけど、とりあえずLeptonicaも。画像処理のライブラリ.
wget http://www.leptonica.com/source/leptonica-1.68.tar.gz
tar -xvzf leptonica-1.68.tar.gz
cd leptonica-1.68
./configure
make
make install
さてと。準備は出来た。
ここからスタート。 Teseract本体、言語データのダウンロード。
  1. ここから適当なところにソースを持ってくる。
    こんな感じ。
    $ wget http://tesseract-ocr.googlecode.com/files/tesseract-3.00.tar.gz
    $ wget http://tesseract-ocr.googlecode.com/files/jpn.traineddata.gz
  2. 展開.
    $ tar xvzf tesseract-3.00.tar.gz
    $ gzip -d jpn.traineddata.gz

  3. 言語データを移動..
    $ mv jpn.traineddata tesseract-3.00/tessdata
  4. tesseract本体のディレクトリに移動し、インストール開始。
    $ cd tesseract-3.00
    $ ./configure
    $ make
    # make install 
使い方は、こんな感じ。(日本語)
$ tesseract hoge.tiff aaaa -l jpn
hoge.tiffから読み取った文字列をaaaa.txtに出力してくれる様子。

むむ・・・。とりあえず、トレーニングしてみるか。