News | 2003年8月8日 02:26 PM 更新 |
(認識する必要のある)漢字は何千種類もあるため、適合する文字を探し出す手間がラテン文字に比べるとはるかにかかります。そこで、認識のアルゴリズムをスピードアップさせる必要がありました。また、文字の数が多いと言うことはそれだけメモリを消費しますから、メモリを効率よく使用することも重要になります。
Decumaでは漢字自体が持つ構造を利用し、さらに一般的な圧縮技術も使ってテンプレートのデータサイズを圧縮しています。また、この作業を行うことで計算時間の高速化にも成功しています。
――文字は文字として、つまり、書き終えたパターンだけを見て判断しているのでしょうか? それとも、書いている過程なども情報として利用しているのでしょうか。
書く順序などの情報も取得し、認識の際に使用しています。
ただ、最初に言っておきたいのは、人が字を書く場合、正しい書き順では書かないケースがよくあるということです。特にコンポーネント(漢字の一部分)を正しい順序で書かないことがよくあります。時には書き順と全く逆の書き方をする場合さえあります。
もちろん、すべての書き順を調べ、これら全部をサポートするようなアルゴリズムも数学的に可能ではありますが、いくつかの理由からこれはあまりよい方法とは言えないと思います。
一つ目の理由は認識精度が落ちることです。似ている文字が増える可能性があるからです。
二つ目の理由は、認識の速度が落ちるということです。
そして、三つ目の理由は、可能な限りの書き順をサポートするのは、エンジニアリング的(ちから技的)なソリューションであるということです。書き方の情報すべてをテンプレートデータベースに収納した場合のメモリ容量もPDAでは問題となります。以上のような理由から、すべての書き方をサポートすることは、あまり得策とは言えないと思います。
結論としてDecumaの手書き文字認識では、アルゴリズムとテンプレートデータベースが分担し、すべての書き順ではないものの、認識に必要なだけの書き順をサポートするようにしています。実際にどのようにやっているかは公表できませんが、これをいかにして効率よく行うかが開発の最も重要な点であると考えています。
――アルゴリズムは同一であっても、実際のDecuma LatinとDecuma ChineseあるいはDecuma Japaneseという製品ではかなりチューニングが違うということでしょうか?
コアとなる部分は同じですが、各言語ごとの最適化はそれぞれ違いますし、また、GUIの部分もそれぞれの言語に応じて研究開発されています。
――GUIというと?
Decumaではアルゴリズムだけではなく、いかにトータルで効率よく入力できるかを考えており、GUIを非常に重視しています。
というのも、キーを押せば文字が入力されるキーボードと違い、手書き文字認識ではユーザーインタラクションが重視されるからです。手書き文字認識は、簡単で素早く操作でき、しかも楽しいものであるべきだと思います。これを実現するためにGUIが重要な役割を担っているのです。
また、ユーザービヘイヴィアとの関係も重要です。手書き文字認識を初めて使用したユーザーは、認識率をそのエンジンが実現できる最大限の認識率よりもずっと低めに感じてしまうことが多いのです。手書き文字認識では、このことを理解しなくてはなりません。
例えば、欧州や米国では小文字の「u」と小文字の「n」をほとんど同じか、時にはまったく同じ書き方で書く人がいます。日本語で言えば、ひらがなの「ろ」と数字の「3」、漢字の「了」が手書きされた文字ではそっくりな場合があります。
つまり、認識を間違えるケースは、次のような2種類に分けられるのです。
上記のことを考えれば、手書き文字認識において誤認識は避けることができないことがお分かりいただけるでしょう。われわれは、手書き認識ソフトではこのような誤認識を“否定する”のではなく、“念頭に置いて”処理すべきだと考えています。
[河野寿, ITmedia]
Copyright © ITmedia, Inc. All Rights Reserved.