今日も微速転進

ここではないどこかへ

Tesseract-OCR 3.04 を試してみる


スポンサーリンク

久しぶりに技術系の話題を。

オープンソースOCRエンジン、Tesseract-OCRの新バージョンがリリースされているので試してみました。 比較対象は3.02.02。既存環境を破壊したくないので、対照実験になっていませんが勘弁してやってください。

開発元のwebサイトですが、GoogleCode から GitHubに移転しています。

tesseract-ocr · GitHub

準備など

比較条件

手元の旧版(3.02.02)と簡単に認識結果を比較してみたいと思います。

  1. ver. 3.02.02 (Homebrew / Yosemite)
  2. ver. 3.02.02 + 日本語向け設定
  3. ver. 3.04 (Arch Linux 公式パッケージ)
  4. ver. 3.04 + 日本語向け設定
  5. ver. 3.04 + 最新言語データ

環境構築

Yosemite

Homebrewでインストールしたものを使います。7/27時点で安定版は3.02.02。

$ brew install tesseract

依存関係でleptonicaと画像関係のライブラリがインストールされます。

日本語の認識には日本語用の言語辞書データ(?)が必要なので、旧ダウンロードサイトから3.02用をダウンロードします。 正確に言うと言語用の学習結果?あるいはパターン辞書?

https://code.google.com/p/tesseract-ocr/downloads/list

tesseract-ocr-3.02.jpn.tar.gz とtesseract-ocr-3.02.eng.tar.gz があればOKかと。

最新版は以下から入手可能。

https://github.com/tesseract-ocr/langdata

Arch Linux

さくらのクラウド上に構築したArch Linux環境を使っています。pacman 経由でインストールできます。

$ pacman -S tesseract tesseract-data-eng tesseract-data-jpn

将来使かもしれないということでcairo、pangoもインストールしておきます。無くても問題はないはず。

$ pacman -S freeglut cairo pango icu

テスト画像の生成のためにImagemagickをインストールします。 各種パッケージも面倒なのでまとめて放り込んでおきます。なくても良さそうですが。

$ pacman -S imagemagick
$ pacman -S libpng libwebp libxml2 librsvg openjpeg2 ghostscript otf-ipafont

認識対象データ

convert で文字列を埋め込んだ画像を適当に作ります。

convert - font フォント名 -pointsize 文字サイズ label:"文字列" 出力ファイル名

画像1

$ convert -font IPAMincho -pointsize 28 label:"これは日本語の文章です。いろはにほへと" test.pbm

f:id:atuyosi:20150728042445j:plain:w533

画像2(IPA明朝)

f:id:atuyosi:20150728042556j:plain:w940

画像3(画像2のIPAP明朝版:プロポーショナルフォント

IPAMinchoの代わりにIPAPMinchoを指定した画像です。

f:id:atuyosi:20150728042647j:plain:w888

※ 実際の画像はpbm形式です。

注意点

今回作成した画像データの場合、文字領域の判定に失敗するため*1、画像2および画像3についてpagesegmode: psm パラメータを指定します。この場合、画像内に存在する文字領域を、単一のブロックからなる文章とみなします。-psmに続けて0から10の整数を指定することで 認識率が改善する場合もあります。詳細はtesseract -hで表示されるヘルプを参照。

評価結果

(a) 3.02.02

画像1

$ tesseract test.pbm output -l jpn

こ れ儚ま 日本語の文章です。 阻 丶ろ 儚ま(こ 繍まヘ と

微妙。「は」とか「ほ」が苦手ですね。

画像2

$ tesseract test2.pbm output2 -l jpn  -psm 6

ォープンソースの光学文字言忍言哉ライプラー丿 を言式してみます。 _ Tesseractv0CR 姦まG。。gーeの資金援助を受るナて開発されてし丶るりしし丶です。 英数字の毒慧言哉率繍ま97%とカゝ。 シ菓字や平イ反名縄まどうでしよっヵゝ。

「へん」と「つくり」で構成される漢字の認識に問題がありますね。まあこれはご愛嬌というか、想定の範囲内

画像3

$ tesseract teste.pbm output3 -l jpn  -psm 6

オープンソースの光学文字壽忍識ライブラー丿を言式してみます。 〝
Tesseract^〇CR 縄まG。。gーeの資金援助壺受縄ナて〝開発さわてし 丶るりしし 丶です。
英数字の言忍言哉率膠ま97%とカゝ繍諸莫字や平イ及名縄まどっでしよつカゝ。

あまりプロポーショナルフォントかどうかによって影響はないのかな。若干マシなぐらいでしょうか。

(b) 3.02.02 + 日本語向け設定

以下の内容を含むjapan.configを作成し、コマンドライン引数に追加します。

chop_enable  T
use_new_state_cost  F
segment_segcost_rating  F
enable_new_segsearch    0
language_model_ngram_on     0
textord_force_make_prop_words   F
edges_max_children_per_outline  40

参考にさせていただいたURL: tesseract-ocr 3.0.2 の日本語解析のパラメーターが腐ってる…。 - haskerlの日記

$ tesseract test.pbm output -l jpn japan.config

こ れは 日本語の文章です。 \繍 丶ろ はに ほヘ と

大幅改善です。

画像2

$ tesseract test2.pbm output2 -l jpn  -psm 6 japan.config

ォープンソースの光学文字認識ライプラリ を試してみます。 _
鵬離帥肬レ伽R は肺嗜托の資金援助を受けて開発されているりしいです。
英数字の認識率は9胱とか。 漢字や平仮名はどうでしよっか。

漢字の認識は良くなっています。2行目は逆に英単語がダメダメです。

画像3

プロポーショナルフォントの場合です。

オープンソース光学文字認識ライブラリを試してみます。 〝
Tesseract^〇CR はG。。gーeの資金援助壺受けて〝開発さ量印てし 丶るりしし 丶です。
英数字の認識率は97%とカゝ繍漢字や平仮名はどっでしよつカゝ。

結構いい感じですね。ただOCRの「O」は記号の丸になっている。ところどころミラクルな結果に…。

(c) 3.04

画像1

こ れは 日本語の文章です。 粗 丶ろ はに ほへ と

ほう、パラメータの設定なしでも問題なさそう。認識ミスは一文字だけか。

画像2

ォープンソースの光学文字認識ライブラリ を試してみます。 ゝ
Tesseractv0CR は600gーeの資金援助を受けて開発されているりしいです。
英数字の認識率は97%とか。 漢字や平仮名はどうでしょっか。

スポンサーの社名を完全に認識ミスしていますが、ちょっとどうなんでしょうか。1行目は冒頭の「ォ」と行末のゴミ。3行目についてははミスは「う」だけです。 どうも英字で構成された単語が存在するとキョドるようですね。英単語の大文字小文字が??? ですし、平仮名の「け」「れ」「い」を認識できていないですね。

どうも平仮名の「れ」が苦手みたいですね。

画像3

オープンソース光学文字認識ライブラリを試してみます。 ゝ
Tesseract^〇CR はG。。gーeの資金援助壺受けてゝ開発さわてし丶るりしし丶です。
英数字の認識率は97%とか。漢字や平仮名はどっでしよつか。

漢字は問題無しで、平仮名の認識ミスが問題ですね。

(d) 3.04 + 日本語向け設定

画像1

こ れは 日本語の文章です。 粗 丶ろ はに ほへ と

変化なし。

画像2

ォープンソースの光学文字認識ライブラリ を試してみます。 ゝ
鵬離帥肬レ伽R は伽鮑ぬの資金援助を受けて開発されているりしいです。
英数字の認識率は9囃とか。 漢字や平仮名はどうでしょっか。

ところどころ悪化していますね。平仮名は改善、英数字はダメダメ。

画像3

オープンソース光学文字認識ライブラリを試してみます。 ゝ
Tesseractー。CR はG。。gーeの資金援助壺受けてゝ開発さわてし丶るりしし丶です。
英数字の認識率は97%とカゝ。漢字や平仮名はどっでしよつカゝ。

Google」以外は大きな影響無し。3.04だと余計なオプションは必要ないようです。

(e) 3.04 + 最新言語辞書

上記のGitHubからjpn.traineddataを入手し、/usr/share/tessdataにある同名のファイルをバックアップしておいて差し替えます。

画像1

こ れは 日本語の文章です。 随 ヽろ はに ほへ と

あれ、従来通りか。

画像2

ォープンソースの光学文字認識ライプラリ を試してみます。 )
Tesseract}QCR は600gーeの資金援助を受けて開発され哲いるりしいです。
英数字の認識率は97%とか。 漢字や平仮名はどうでしよっか。

なんとも言えませんね。わりといい感じかも.

画像3

オープンソース光学文字認識ライブラリを試してみます。 )
Tesseractー〇CR は600gーeの資金援助宣受けてゝ開発されてしヽるりししヽです。
英数字の認識率は97%とか。漢字や平仮名はどっでしよつか。

それほど傾向は変わっていいませんでした。

その他

複数の言語を同時に識別させたいときは以下のように指定できます。

$ tesseract test3.pbm output3 -l eng+jpn -psm 6

engjpnは逆順でもOKです。

結果は(ver. 3.04)...

オープンソースの光学文字昆忍識ライブラリを言式してみますc ゝ
Tesseract—OCR 縄まG。。gーeの資金援助壺受隷ナてゝ開発さわてし 丶るりしし 丶です 。
英数字の認識率は97%とか。 漢字ゃ平仮名はどつでしよつかc

漢字の認識ミスが発生しています。 逆順にすると、

オープンソース光学文字認識ライブラリを試してみます。 ゝ
Tesseract^〇CR はG。。gーeの資金援助壺受けてゝ開発さわてし丶るりしし丶です。
英数字の認識率は97%とか。漢字や平仮名はどっでしよつか。

英単語を含む日本語の文章という条件ではありがたみがないようです。

まとめ

どうやら日本語に関して言えば、3.04は初期設定でも日本語を意識したパラメータが設定された状態になっているようです。 従来の日本語向けの設定は意味がないようなので、もっと文字数の多い画像データでパラメータを変えてみる必要がありそうです。

真面目にコミットログを追いかけてみる方が早いのか。

それではまた。

参考URLなど

*1:2行目だけ長いのがまずいっぽい

広告