Entry

プログラミングメモ - 日本語 OCR の処理方式とか

2010年08月13日

メディアドライブのサイトに,OCR の主要な処理方式が少しだけ説明されていて,ほうほうと読んでました(参照:OCR技術解説6:様々な文字認識方式)。こんなに種明かししてしまっていいのかしらんとも思うのだけれど,ま,こゆのは外に出しても良いところで,実際のソフトウェアには外に出せないノウハウが詰まっているんだと思います。

で,読んだところ,基本的には特徴抽出器で特徴ベクトル(feature vector)を構成して,クラス分類器(classifier)で検出した特徴ベクトルがどのクラス(文字コード)に属するのかを当てる,という処理になるそうです。おそらく,OCR の基本的なフレームワークとして,この処理手順は固まっているんだと思います。

問題は,「どのように特徴を抽出するか」と「特徴をどのように分類するのか」という点。前者については,スペック表をよーく読むと書いてあるんですけれど,メディアドライブの eTypist の場合,処理方式に「新・拡張セル特徴方式」と書かれています。Fujitsu だか Richo だかの OCR も,この方式を採用しているようなので,方式としては割とメジャーな部類に入るのだと思います(OEM ということもあるが)。ぐぐれば大まかな発想は分かるはず。

e.Typist NEO v.12.0
e.Typist NEO v.12.0
posted with amazlet at 10.08.13
メディアドライブ (2009-11-27)
売り上げランキング: 388
おすすめ度の平均: 4.0
4 文字認識精度は良いです。

一方,問題なのは,後者「特徴をどのように分類するのか」という点です。実のところ,今時,特徴抽出はあまり問題にはなっていなくて,この点が文字認識のミソなんですね。冒頭のサイトでは,ユークリッド距離とかベイズ識別とかふにゃふにゃ……と書かれているけれども,商売的にはあまり詳しく書いちゃうといけないところ。ふにゃふにゃと書くのがいいところ。

で,少し識別関数について踏み込んだ話をしておくと,最近はユークリッド距離やニューラルネットワークのようなもんを「そのまま直接」使っているわけじゃありません。「ありません」とか言い切ってるは,そうじゃないとあの精度は出ないから,そう考えざるをえないということなんですが。あたしゃメディアドライブの人間ではないので,どんな方式を使っているかは知らないんですけれど,ニューラルネットワークを使うにしても,マルコフ過程なんかと組み合わせた確率的な処理を行っていそうだし,非線形識別になりがちな OCR で,線形識別器をそのまま使うことも考えられません。線形識別器を使っているとするなら,SVM や RVM が扱える空間に写像していると見た方が良さそうです。

また,昔は,特徴抽出処理に職人芸的なパラメタ設定を行うのが普通だったけれども,最近は特徴という特徴を特に抽出しなくても,線形分類できるしくみが提案されていたりもします。そう考えると,処理方式に「新・拡張セル特徴方式」と書いてあっても,実はあまり大したこといってないんですね。

ま,この分野で他業者さんがやってることを当てるのは難しくて,ほとんど憶測になっているんですけど,とりあえずはそんな感じ。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN