(57)【要約】【課題】辞書データに未登録の文字を精度良く認識すること。【解決手段】演算部１ｂは、手書きの入力に応じて、入力された文字４ａ，４ｂ，４ｃの入力位置を示す情報を検出する。演算部１ｂは、辞書データ３に基づいて、文字４ａ，４ｂ，４ｃに対応する文字コードＡ１，Ａ２，Ａ３を検出する。演算部１ｂは、字型データ２を参照して文字コードＡ１，Ａ２，Ａ３に対応する画像データＸ１，Ｘ２，Ｘ３を取得する。演算部１ｂは、各文字の入力位置を示す情報に基づいて、画像データＸ１，Ｘ２，Ｘ３を組合せることで画像データ５を生成する。演算部１ｂは、字型データ２を参照して、画像データ５に対応する画像データＸ４または画像データＸ４に対応する文字コードＡ４を出力する。【選択図】図１
2014225135.tif 000002
【特許請求の範囲】
【請求項１】
手書きの入力に応じて、入力された複数の文字それぞれの入力位置を示す第１の情報と前記複数の文字に対応する複数の文字コードとを検出し、
文字コードと文字の画像データとを対応付けた第２の情報を参照して前記複数の文字コードに対応する複数の第１の画像データを取得し、前記第１の情報に基づいて前記複数の第１の画像データを組合せることで第２の画像データを生成し、
前記第２の情報を参照して前記第２の画像データに対応する文字の画像データ、または、当該画像データに対応する文字コードを出力する、
処理をコンピュータに実行させるプログラム。
【請求項２】
前記生成では、前記第１の情報に基づいて前記複数の第１の画像データを変形し、
変形後の前記複数の第１の画像データを組合せることで前記第２の画像データを生成する、請求項１記載のプログラム。
【請求項３】
前記変形では、前記第１の情報に基づいて、前記複数の文字が入力された領域を示す複数の矩形を特定し、変形後の前記複数の第１の画像データそれぞれの縦横比を矩形ごとの縦横比に一致させる、請求項２記載のプログラム。
【請求項４】
前記変形では、変形後の前記複数の第１の画像データそれぞれの面積比を前記複数の矩形それぞれの面積比に一致させる、請求項３記載のプログラム。
【請求項５】
前記生成では、前記第１の情報に基づいて前記複数の文字の入力位置の相対的な位置関係を特定し、前記位置関係を維持して前記複数の第１の画像データを組合せる、請求項１乃至４の何れか１項に記載のプログラム。
【請求項６】
前記検出では、手書きによる１ストロークの入力を受け付けるたびに、文字コードと基準のストロークを示す情報との対応が複数登録された辞書データを参照して、入力されたストロークのうち何れの文字を形成するかが未確定のストロークの集合と前記辞書データに含まれる基準のストロークを示す情報とを照合し、照合の結果に基づいて前記複数の文字コードそれぞれを順次検出する、請求項１乃至５の何れか１項に記載のプログラム。
【請求項７】
前記照合では、入力されたストロークのうち何れの文字を形成するかが未確定のストロークの集合と前記辞書データに含まれる複数の基準のストロークとの類似度を算出し、類似度が最大となる基準のストロークに対応する文字コードを取得し、
今回の最大の類似度が前回の最大の類似度以下であり、かつ、前回の最大の類似度が閾値以上であれば、前記未確定のストロークの集合のうち前回までに入力されたストロークの集合に対して前回取得された文字コードを確定する、
請求項６記載のプログラム。
【請求項８】
前記照合では、ストロークの入力を受け付けた後、制限時間内に次のストロークの入力が開始されない場合、前記未確定のストロークの集合に対して最後に取得された文字コードを確定することで、前記複数の文字コードのうちの最後の文字コードを検出する、請求項７記載のプログラム。
【請求項９】
前記第２の情報は、前記コンピュータが予め保持する文字フォントの情報、または、当該文字フォントの情報に基づいて作成された情報である、請求項１乃至８の何れか１項に記載のプログラム。
【請求項１０】
文字コードと文字の画像データとを対応付けた第１の情報を記憶する記憶部と、
手書きの入力に応じて、入力された複数の文字それぞれの入力位置を示す第２の情報と前記複数の文字に対応する複数の文字コードとを検出し、
前記第１の情報を参照して前記複数の文字コードに対応する複数の第１の画像データを取得し、前記第２の情報に基づいて前記複数の第１の画像データを組合せることで第２の画像データを生成し、
前記第１の情報を参照して前記第２の画像データに対応する文字の画像データ、または、当該画像データに対応する文字コードを出力する、演算部と、
を有する情報処理装置。
【請求項１１】
情報処理装置が実行する文字認識方法であって、
手書きの入力に応じて、入力された複数の文字それぞれの入力位置を示す第１の情報と前記複数の文字に対応する複数の文字コードとを検出し、
文字コードと文字の画像データとを対応付けた第２の情報を参照して前記複数の文字コードに対応する複数の第１の画像データを取得し、前記第１の情報に基づいて前記複数の第１の画像データを組合せることで第２の画像データを生成し、
前記第２の情報を参照して前記第２の画像データに対応する文字の画像データ、または、当該画像データに対応する文字コードを出力する、
文字認識方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム、情報処理装置および文字認識方法に関する。
【背景技術】
【０００２】
現在、文字認識の技術が利用されている。文字認識を行う装置は、入力デバイス（例えば、タッチパネルやマウスなど）を用いたユーザによる文字の手書き入力を受け付け、ユーザが意図した文字の文字コードを推定する。候補の文字コードが複数ある場合、ユーザに選択を促すこともできる。文字認識の技術では文字の認識精度の向上が図られている。
【０００３】
例えば、文字の入力領域に複数の入力枠を設けて、漢字１文字を分割した複数の構成部分（編、旁、冠など）を各入力枠に入力させる提案がある。構成部分の組と文字との対応を記憶手段に予め記憶させ、各入力枠に入力された構成部分の組と記憶手段に記憶された構成部分の組とを比較し、入力された構成部分の組を含む文字を表示装置に表示させる。
【０００４】
また、手書き入力された文字の１画を示す１ストロークごとに、以前に入力されたストロークデータと併せて手書きストロークデータを生成し、予め用意されたストロークデータからなる辞書文字データと比較して類似度を判定しながら文字認識を行う提案がある。手書きストロークデータの辞書文字データに対する類似度が０になったときに、１ストローク前の手書き入力によって生成された手書きストロークデータを１文字として切出し、当該手書きストロークデータを含む辞書文字データを候補文字として表示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−１２１６６０号公報
【特許文献２】特開平１１−１３４４３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記の方法では、認識対象とする文字ごとに、構成部分の組やストロークの照合に用いられる辞書データを予め用意することになる。しかし、文字の数は膨大であり、辞書データに全ての文字を網羅するのは容易でない。例えば、辞書データの作成作業は、多数のユーザからサンプルとなるストローク情報を文字ごとに複数採取して登録するなど手間がかかる。このため、文字によっては辞書データに登録されないことがある。例えば、異体字や外字など使用頻度の少ない文字には辞書データに登録されないものも存在する。そこで、辞書データに未登録の文字をどのようにして精度良く認識するかが問題となる。
【０００７】
１つの側面では、本発明は、辞書データに未登録の文字を精度良く認識できるプログラム、情報処理装置および文字認識方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、コンピュータによって実行されるプログラムが提供される。このプログラムは、手書きの入力に応じて、入力された複数の文字それぞれの入力位置を示す第１の情報と複数の文字に対応する複数の文字コードとを検出し、文字コードと文字の画像データとを対応付けた第２の情報を参照して複数の文字コードに対応する複数の第１の画像データを取得し、第１の情報に基づいて複数の第１の画像データを組合せることで第２の画像データを生成し、第２の情報を参照して第２の画像データに対応する文字の画像データ、または、当該画像データに対応する文字コードを出力する、処理をコンピュータに実行させる。
【０００９】
また、１つの態様では、情報処理装置が提供される。この情報処理装置は、記憶部と演算部とを有する。記憶部は、文字コードと文字の画像データとを対応付けた第１の情報を記憶する。演算部は、手書きの入力に応じて、入力された複数の文字それぞれの入力位置を示す第２の情報と複数の文字に対応する複数の文字コードとを検出し、第１の情報を参照して複数の文字コードに対応する複数の第１の画像データを取得し、第２の情報に基づいて複数の第１の画像データを組合せることで第２の画像データを生成し、第１の情報を参照して第２の画像データに対応する文字の画像データ、または、当該画像データに対応する文字コードを出力する。
【００１０】
また、１つの態様では、情報処理装置が実行する文字認識方法が提供される。この文字認識方法では、情報処理装置が、手書きの入力に応じて、入力された複数の文字それぞれの入力位置を示す第１の情報と複数の文字に対応する複数の文字コードとを検出し、文字コードと文字の画像データとを対応付けた第２の情報を参照して複数の文字コードに対応する複数の第１の画像データを取得し、第１の情報に基づいて複数の第１の画像データを組合せることで第２の画像データを生成し、第２の情報を参照して第２の画像データに対応する文字の画像データ、または、当該画像データに対応する文字コードを出力する。
【発明の効果】
【００１１】
１つの側面では、辞書データに未登録の文字を精度良く認識できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態の情報処理装置を示す図である。
【図２】第２の実施の形態のクライアント装置を示す図である。
【図３】クライアント装置のハードウェア例を示す図である。
【図４】クライアント装置の機能例を示す図である。
【図５】字型テーブルの例を示す図である。
【図６】辞書テーブルの例を示す図である。
【図７】入力履歴テーブルの例を示す図である。
【図８】類似度履歴テーブルの例を示す図である。
【図９】組合せテーブルの例を示す図である。
【図１０】文字認識の処理例を示すフローチャートである。
【図１１】文字認識の処理例（続き）を示すフローチャートである。
【図１２】部品文字判定の具体例を示す図である。
【図１３】部品文字判定の具体例（続き）を示す図である。
【図１４】変形画像データの例を示す図である。
【図１５】変形画像データの合成例を示す図である。
【図１６】最終結果の出力例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理装置を示す図である。情報処理装置１は、ユーザにより手書き入力された文字の文字認識を行う。例えば、ユーザは、情報処理装置１が有するタッチパネル、タッチパッドおよびマウスなどの入力デバイスを用いて、情報処理装置１に対する手書きの入力を行える。入力デバイスは、情報処理装置１の外部に接続されるものでもよい。ここで、手書き入力された文字の１画をストロークということがある。また、１文字を形成するストロークの集合や書き順（ストロークの順番）などを含む情報をストローク情報ということがある。
【００１４】
情報処理装置１は、記憶部１ａおよび演算部１ｂを有する。記憶部１ａは、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部１ｂは、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。演算部１ｂは、プログラムを実行するプロセッサであってもよい。“プロセッサ”には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。
【００１５】
記憶部１ａは、文字コードと文字の画像データとを対応付けた字型データ２を記憶する。例えば、字型データ２は次のような対応関係を含む。文字コードＡ１と画像データＸ１（文字“火”を示す）との対応。文字コードＡ２と画像データＸ２（文字“ク”を示す）との対応。文字コードＡ３と画像データＸ３（“臼”を示す）との対応。文字コードＡ４と画像データＸ４（文字“焔”の異体字を示す）との対応。
【００１６】
また、記憶部１ａは、文字コードと基準のストローク情報とを対応付けた辞書データ３を記憶する。例えば、辞書データ３は次のような対応関係を含む。文字コードＡ１とストローク情報Ｐｘとの対応。文字コードＡ２とストローク情報Ｐｙとの対応。文字コードＡ３とストローク情報Ｐｚとの対応。ここで、文字コードＡ４に対するストローク情報は辞書データ３には登録されていない。
【００１７】
演算部１ｂは、ユーザによる手書きの入力に応じて、入力された複数の文字の入力位置を示す位置情報を検出する。例えば、演算部１ｂは、手書き入力されたストローク情報と記憶部１ａに記憶された辞書データ３とに基づいて、入力された複数の文字に対応する複数の文字コードを検出する。
【００１８】
例えば、演算部１ｂは、手書き入力により入力データ４を受け付ける。入力データ４は、文字４ａ，４ｂ，４ｃを含む。文字４ａ，４ｂ，４ｃそれぞれは、ユーザにより入力された複数のストロークによって形成されている。演算部１ｂは、文字４ａ，４ｂ，４ｃを検出し、文字４ａ，４ｂ，４ｃそれぞれの入力位置を示す位置情報を検出する。演算部１ｂは、文字４ａ，４ｂ，４ｃそれぞれのストローク情報を辞書データ３に登録されたストローク情報Ｐｘ，Ｐｙ，Ｐｚと照合することで、文字４ａ，４ｂ，４ｃに対応する文字コードＡ１，Ａ２，Ａ３を検出し得る。
【００１９】
なお、演算部１ｂは、字型データ２から文字４ａ，４ｂ，４ｃに対応する画像データを特定することで、文字４ａ，４ｂ，４ｃに対する文字コードＡ１，Ａ２，Ａ３を取得してもよい。また、演算部１ｂは、字型データ２および辞書データ３により取得した各文字コードの候補をマージして文字４ａ，４ｂ，４ｃに対応する文字コードＡ１，Ａ２，Ａ３を検出してもよい。例えば、文字４ａに対して字型データ２から複数の文字コードの候補が検出され、辞書データ３から複数の文字コードの候補が検出される場合も考えられる。その場合、字型データ２および辞書データ３の両方に対する照合で確度が高いと判断された文字コードの候補を文字４ａに対する文字コードと決定してもよい。
【００２０】
演算部１ｂは、字型データ２を参照して、検出された複数の文字コードに対応する複数の第１の画像データを取得する。例えば、演算部１ｂは、字型データ２を参照して、文字コードＡ１，Ａ２，Ａ３に対して画像データＸ１，Ｘ２，Ｘ３を取得する。
【００２１】
演算部１ｂは、検出された位置情報に基づいて、複数の第１の画像データを組合せることで、第２の画像データを生成する。例えば、演算部１ｂは、検出された文字４ａ，４ｂ，４ｃそれぞれの位置情報に基づいて、文字４ａ，４ｂ，４ｃが入力された相対的な位置関係を維持して画像データＸ１，Ｘ２，Ｘ３を配置し、１つの画像データとすることで、画像データ５を生成する。
【００２２】
このとき、演算部１ｂは、画像データＸ１，Ｘ２，Ｘ３を変形することで、画像データ５ａ，５ｂ，５ｃを生成してもよい。画像データ５ａは画像データＸ１を変形したものである。画像データ５ｂは画像データＸ２を変形したものである。画像データ５ｃは画像データＸ３を変形したものである。
【００２３】
例えば、文字４ａの位置情報に基づいて文字４ａの入力領域を示す矩形を特定し、画像データ５ａの縦横比を当該矩形の縦横比と一致させることが考えられる。同様にして画像データＸ２を画像データ５ｂに変形する。画像データＸ３を画像データ５ｃに変形する。更に、画像データＸ１，Ｘ２，Ｘ３それぞれに対して特定した各矩形の面積比と、画像データ５ａ，５ｂ，５ｃの面積比とを一致させることが考えられる。このように、演算部１ｂは、画像データＸ１，Ｘ２，Ｘ３を変形した画像データ５ａ，５ｂ，５ｃを組合せることで、画像データ５を生成してもよい。
【００２４】
演算部１ｂは、字型データ２を参照して、生成された画像データに対応する文字の画像データまたは当該画像データに対応する文字コードを出力する。例えば、演算部１ｂは、画像データ５に対応する文字の画像データＸ４または画像データＸ４に対応する文字コードＡ４を出力する。例えば、演算部１ｂは、画像データ５と字型データ２に含まれる各画像データとを照合することで、字型データ２の中から画像データ５に最も近似する画像データＸ４を特定し得る。
【００２５】
情報処理装置１によれば、演算部１ｂにより、ユーザによる手書きの入力に応じて、入力された文字４ａ，４ｂ，４ｃそれぞれの入力位置を示す位置情報と文字４ａ，４ｂ，４ｃそれぞれに対応する文字コードＡ１，Ａ２，Ａ３が検出される。演算部１ｂにより、字型データ２が参照されて文字コードＡ１，Ａ２，Ａ３に対応する画像データＸ１，Ｘ２，Ｘ３が取得され、位置情報に基づいて画像データＸ１，Ｘ２，Ｘ３を組合せた画像データ５が生成される。演算部１ｂにより、字型データ２が参照されて、画像データ５に対応する文字の画像データＸ４または画像データＸ４に対応する文字コードＡ４が出力される。
【００２６】
これにより、辞書データに未登録の文字を精度良く認識できる。例えば、文字認識を行うためには、認識対象とする文字ごとに、構成部分の組やストローク情報の照合に用いられる辞書データを予め用意することになる。しかし、文字の数は膨大であり、辞書データに全ての文字を網羅するのは容易でない。
【００２７】
例えば、辞書データ３の作成作業は文字ごとにストローク情報を登録するなど手間がかかる。例えば、１つの文字に対するストロークの配置パターンや書き順などは書き手によって多様である。このため、辞書データ３の作成では、多数のユーザから文字ごとにストロークの入力パターンなどのサンプルを採取し、採取したサンプルを統合・編集して登録するなど、作業コストが大きい。このため、例えば、異体字や外字（旧字体を含む）など使用頻度の少ない文字の辞書データ３への登録を省略することがある。また、ユーザが自身で文字を作成して字型データ２に登録することもある。ユーザが自身で作成した文字については、辞書データ３に予め登録することは困難である。
【００２８】
このため、辞書データ３に未登録の文字を精度良く認識する方法が問題となる。例えば、辞書データ３に未登録の文字を意図して入力された入力データ４が入力された場合に、入力データ４を字型データ２に登録された各画像データと照合することも考えられる。しかし、入力データ４に含まれる各部分の形が崩れていると、入力データ４に対する認識の精度が低下する可能性がある。
【００２９】
そこで、情報処理装置１は、入力データ４を複数の文字の組合せとして扱う。具体的には、情報処理装置１は、当該複数の文字を辞書データ３に基づいて認識することで、当該複数の文字の文字コードを検出する。情報処理装置１は、当該複数の文字コードに対応する複数の画像データを字型データ２から抽出して組合せることで、入力データ４を画像データ５に整形する。そして、画像データ５を字型データ２に含まれる各画像データと照合して、入力データ４に対する画像データＸ４を特定する。これにより、入力データ４に対応する文字が辞書データ３に登録されていなくても、辞書データ３に登録されたストローク情報を用いて、ユーザが入力を意図した文字の画像データＸ４または文字コードＡ４を適切に特定し得る。
【００３０】
このとき、上記のようにユーザによる文字４ａ，４ｂ，４ｃの入力位置に基づいて、画像データＸ１，Ｘ２，Ｘ３を変形して組合せることで、画像データ５を生成してもよい。このようにすれば、編や旁などの部首として入力された部分を画像データＸ１，Ｘ２，Ｘ３により再現して、画像データ５に適切に反映させることができる。
【００３１】
［第２の実施の形態］
図２は、第２の実施の形態のクライアント装置を示す図である。クライアント装置１００は、携帯電話機、タブレット装置およびコンピュータなどの情報処理装置である。クライアント装置１００は文字認識を行う。クライアント装置１００は、ユーザによる手書きの入力を受け付けると、ユーザが入力を意図した文字の文字コードを推定する。クライアント装置１００は、文字コードの推定に辞書データを用いる。辞書データは、文字コードとストローク情報とを対応付けた情報である。
【００３２】
例えば、ユーザは、クライアント装置１００が有するタッチパネルを手２００の何れかの指やスタイラスペンなどでなぞることで手書き入力を行える。例えば、ユーザは、タッチパネルの所定の入力領域Ｒに対して手書き入力することで文字を入力し得る。クライアント装置１００は、文字を入力するための領域として入力領域Ｒをディスプレイに表示させることで、ユーザに提示してもよい。以下の説明では、入力領域Ｒの紙面に向かって左上の頂点を原点Ｏとする。また、原点Ｏに対して右方向の座標軸をＸ軸とする。原点Ｏに対して下方向の座標軸をＹ軸とする。
【００３３】
例えば、クライアント装置１００は、推定された文字コードに対応する文字の画像データをディスプレイに表示させる。例えば、ユーザは、ディスプレイに表示された文字の画像データが、自身が意図したものであれば当該文字の入力を確定する操作を行える。
【００３４】
図３は、クライアント装置のハードウェア例を示す図である。クライアント装置１００は、プロセッサ１０１、ＲＡＭ１０２、フラッシュメモリ１０３、無線部１０４、ディスプレイ１０５およびタッチパネル１０６、通話部１０７および媒体読取部１０８を有する。各ユニットはクライアント装置１００のバスに接続されている。
【００３５】
プロセッサ１０１は、クライアント装置１００の情報処理を制御する。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどの２以上の要素の組合せであってもよい。
【００３６】
ＲＡＭ１０２は、クライアント装置１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００３７】
フラッシュメモリ１０３は、クライアント装置１００の補助記憶装置である。フラッシュメモリ１０３には、ＯＳのプログラム、アプリケーションプログラムおよび各種データが格納される。フラッシュメモリ１０３は、クライアント装置１００に対して着脱可能な可搬型の記録媒体でもよい。
【００３８】
無線部１０４は、無線通信を行えるインタフェースである。無線部１０４は、アクセスポイント１０と通信することで、アクセスポイント１０が接続されたネットワークにアクセスできる。無線部１０４は、当該ネットワークに接続された他のコンピュータとプログラムやデータの送受信を行える。なお、クライアント装置１００は、無線部１０４に代えて、または、無線部１０４と併せて有線で通信を行えるインタフェースを備えてもよい。
【００３９】
ディスプレイ１０５は、プロセッサ１０１からの命令に従って、画像を出力する。例えば、ディスプレイ１０５は、液晶ディスプレイや有機ＥＬ（Electro Luminescence）ディスプレイなどである。
【００４０】
タッチパネル１０６は、タッチ操作を検出する。ユーザは、指やスタイラスペンでタッチパネル１０６にタッチすることができる。タッチパネル１０６は、タッチ操作を検出すると、指やスタイラスペンが接触している位置を検出して、プロセッサ１０１に出力する。指やスタイラスペンによりタッチパネル１０６をなぞる操作が行われると、タッチパネル１０６は、その軌跡に含まれる位置を継続的に検出し、プロセッサ１０１に出力する。
【００４１】
なお、タッチパネル１０６はクライアント装置１００の外部に接続されてもよい。また、クライアント装置１００はタッチパッドやマウスなどの他のポインティングデバイスと接続されて、当該他のポインティングデバイスを用いた手書き入力を受け付けてもよい。
【００４２】
通話部１０７は、通話機能を実現する。例えば、通話部１０７は、マイクやスピーカを備える。マイクにより入力された音声アナログ信号に対して所定の信号変換処理を行って音声データを生成し、プロセッサ１０１に出力する。また、通話部１０７は、プロセッサ１０１から取得した音声データを音声アナログ信号に変換し、スピーカを用いて音声出力する。
【００４３】
媒体読取部１０８は、プロセッサ１０１からの命令に従って、可搬型の記録媒体１１からプログラムやデータを読み取ったり、記録媒体１１に対してプログラムやデータを書き込んだりする。例えば、記録媒体１１は媒体読取部１０８に対して着脱可能なカード型の記録媒体（メモリカード）である。媒体読取部１０８は、記録媒体１１から読み取ったプログラムやデータをＲＡＭ１０２またはフラッシュメモリ１０３に格納する。媒体読取部１０８は、レーザ光などを利用して、光ディスクに記録されたプログラムやデータを読み取る駆動装置でもよい（例えば、クライアント装置１００がコンピュータなどの場合）。
【００４４】
その場合、記録媒体１１として光ディスクを利用できる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などを使用できる。例えば、媒体読取部１０８は、例えば、プロセッサ１０１からの命令に従って、光ディスクから読み取ったプログラムやデータをＲＡＭ１０２またはフラッシュメモリ１０３（あるいは、ＨＤＤなどの他の記憶装置）に格納する。
【００４５】
図４は、クライアント装置の機能例を示す図である。クライアント装置１００は、記憶部１１０、文字判定部１２０、部品文字組合せ部１３０および文字比較部１４０を有する。記憶部１１０は、ＲＡＭ１０２またはフラッシュメモリ１０３に確保した記憶領域として実現できる。文字判定部１２０、部品文字組合せ部１３０および文字比較部１４０は、プロセッサ１０１が実行するソフトウェアのモジュールとして実現できる。
【００４６】
記憶部１１０は、文字判定部１２０、部品文字組合せ部１３０および文字比較部１４０の処理に用いられる各種の情報を記憶する。記憶部１１０に記憶される情報は、字型テーブル、辞書テーブル、入力履歴テーブル、類似度履歴テーブルおよび組合せテーブルを含む。
【００４７】
字型テーブルは、文字コードと文字フォント（字型を示す画像データ）との対応関係を示すテーブルである。辞書テーブルは、文字コードと基準のストローク情報との対応関係を示すテーブルである。入力履歴テーブルは、入力されたストロークに関する情報を格納しておくテーブルである。類似度履歴テーブルは、手書き入力のストロークとストローク情報との類似度の算出履歴を格納しておくテーブルである。組合せテーブルは、画像データの組合せに用いられるテーブルである。
【００４８】
文字判定部１２０は、ユーザによる手書きの入力を受け付ける。文字判定部１２０は、タッチパネル１０６により検出された各ストロークに対応する軌跡を示す座標群を記憶部１１０に記憶された入力履歴テーブルに格納する。文字判定部１２０は、最後に入力されたストロークの後に無入力期間が所定時間以上続いたか否かにより、手書き入力された１文字を特定する。
【００４９】
文字判定部１２０は、手書き入力の情報に基づいて入力された文字を推定し、当該文字に対応する文字コードを特定する。文字判定部１２０は、記憶部１１０に記憶された字型テーブルおよび辞書テーブルに基づいて、手書き入力の情報に応じた文字コードを特定し得る。例えば、辞書テーブルに登録された文字に対して文字認識を行う場合は次の通りである。
【００５０】
文字判定部１２０は、手書きによる１画の入力を受け付ける。文字判定部１２０は、辞書テーブルに登録された各ストローク情報と手書き入力された際のストローク情報とを対比して、ストローク情報の第１の類似度を評価する。ここで、類似度は数値で表され、類似度の数値が大きいほど類似しており、類似度の数値が小さいほど非類似であるとする。文字判定部１２０は、当該第１の類似度が大きいストローク情報に対応する文字コードを、辞書テーブルから１つまたは複数抽出し得る。
【００５１】
また、文字判定部１２０は、字型テーブルに登録された各画像データと手書き入力された画像データとを対比して、画像パターンの第２の類似度を評価する。例えば、文字を２値のドットパターンで示せばドット位置やドットパターンの一致度合いにより第２の類似度を算出し得る。文字判定部１２０は、当該第２の類似度が大きい画像データに対応する文字コードを、字型テーブルから１つまたは複数抽出し得る。
【００５２】
そして、文字判定部１２０は、字型テーブルおよび辞書テーブルから抽出された文字コードの中から、手書き入力に対する文字コードを特定する。具体的には、第１および第２の類似度として求めた結果を総合した類似度を算出し、候補となった文字コードの中から最大の類似度となる文字コードを特定する。例えば、文字判定部１２０は、第１および第２の類似度を同じ文字コードについて平均することで、各文字コードの総合的な類似度を算出してもよい。ただし、文字判定部１２０は、第１の類似度のみにより、手書き入力に対する文字コードを特定してもよい（第２の類似度の算出を省略してもよい）。
【００５３】
一方、ユーザは、辞書テーブルに登録されていない文字を意図して手書き入力を行うこともある。そこで、文字判定部１２０は、１文字の最初のストロークから最後のストロークが入力されるまでの期間において、１ストロークが入力されるごとに類似度を算出する。具体的には、文字判定部１２０は、辞書テーブルに登録されていない文字を複数の文字（以下の説明では部品文字ということがある）の組合せとして扱い、当該複数の部品文字それぞれについて文字認識を行う。後述するように、文字判定部１２０は部品文字１文字を類似度の変化により検出する。文字判定部１２０は、１文字の入力期間中に部品文字を複数検出した場合は、各部品文字の文字コードを部品文字組合せ部１３０に出力する。
【００５４】
部品文字組合せ部１３０は、文字判定部１２０から取得した複数の部品文字の文字コードに基づいて、各部品文字の画像データを字型テーブルから取得する。部品文字組合せ部１３０は、取得した各部品文字の画像データを、各部品文字が入力された位置を示す位置情報に基づいて組合せる。部品文字組合せ部１３０は、記憶部１１０に記憶されたストロークの入力履歴から、各部品文字の位置情報を特定できる。
【００５５】
部品文字組合せ部１３０は、位置情報に基づいて、各部品文字が入力された領域を示す矩形を特定する。部品文字組合せ部１３０は、各部品文字の画像データを変形して、それぞれの矩形に当てはめることで各部品文字を組合せる（以下の説明では変形後の画像データを変形画像データということがある）。そして、部品文字組合せ部１３０は、組合せ結果として、１つの画像データ（以下の説明では合成画像データということがある）を生成し、文字比較部１４０に出力する。
【００５６】
文字比較部１４０は、部品文字組合せ部１３０から合成画像データを取得する。文字比較部１４０は、記憶部１１０に記憶された字型テーブルの各画像データと、合成画像データとを照合して、合成画像データに対応する画像データまたは当該画像データに対応する文字コードを特定し、出力する。例えば、文字比較部１４０は、合成画像データに対応する画像データをディスプレイ１０５に表示させてもよい。また、文字比較部１４０は、当該画像データに対応する文字コードをクライアント装置１００上で動作する所定のソフトウェアやクライアント装置１００と通信する他の装置などに出力してもよい。
【００５７】
図５は、字型テーブルの例を示す図である。字型テーブル１１１は、記憶部１１０に予め格納される。字型テーブル１１１は、クライアント装置１００のオペレーティングシステムによって提供される文字フォントの情報でもよい。あるいは、字型テーブル１１１は、当該文字フォントの情報を用いて（例えば、当該文字フォントの情報を複製して）、文字判定部１２０により作成された情報でもよい。
【００５８】
字型テーブル１１１は、文字コードおよび画像データの項目を含む。文字コードの項目には、文字コードが登録される。画像データの項目には、文字フォントを示す画像データ（例えば、ビットマップデータ）が登録される。
【００５９】
例えば、字型テーブル１１１には、文字コードが“７０６ｂ”、画像データが“Ｇ１（火）”という情報が登録される。これは、文字コード“７０６ｂ”に対して、文字“火”を示す画像データ“Ｇ１”が登録されていることを示す。
【００６０】
字型テーブル１１１の登録内容は、ユーザにより追加可能である。例えば、ユーザは、使用されていない文字コードに対応付けて、異体字や外字などを登録することができる。また、ユーザは、独自の文字の画像データを作成し、使用されていない文字コードに対応付けて字型テーブル１１１に登録することもできる。例えば、字型テーブル１１１には、文字コード“７１３０”に対して、異体字の画像データ“Ｇ７”が登録されている。画像データ“Ｇ７”は、文字“焔”の異体字の文字フォントである。
【００６１】
なお、第２の実施の形態では、文字コードの一例としてユニコード（Unicode）を例示するが、他の文字コード（例えば、ＪＩＳコードおよびＳｈｉｆｔ  ＪＩＳコードなど）を用いてもよい。
【００６２】
図６は、辞書テーブルの例を示す図である。辞書テーブル１１２は、記憶部１１０に予め格納される。辞書テーブル１１２は、文字コードおよびストローク情報の項目を含む。文字コードの項目には、文字コードが登録される。ストローク情報の項目には、基準のストローク情報が登録される。例えば、当該ストローク情報には、１文字に対して、当該１文字を形成する各ストロークの書き出し位置、書き終わり位置、各ストロークの書き終わり位置と次のストロークの書き出し位置との相対的な位置関係および書き順などの複数のパターンが含まれ得る。
【００６３】
例えば、辞書テーブル１１２には、文字コードが“３０ｂｄ”、ストローク情報が“Ｐ１”という情報が登録されている。例えば、辞書テーブル１１２には、文字“焔”の異体字に関するストローク情報は登録されていない。
【００６４】
図７は、入力履歴テーブルの例を示す図である。入力履歴テーブル１１３は、記憶部１１０に格納される。入力履歴テーブルは、順番および検出点の項目を含む。順番の項目には、ストロークが入力された順番が登録される。検出点の項目は、ユーザにより入力されたストローク上の座標群が登録される。例えば、入力履歴テーブル１１３には、順番が“１”、検出点が“Ｎ１，Ｎ２，・・・”という情報が登録される。これは、１回目に入力されたストロークについて、座標“Ｎ１，Ｎ２，・・・”が検出されたことを示す。
【００６５】
入力履歴テーブル１１３に登録された順番により、ストロークの入力順を特定できる。また、あるストロークの最後の検出点および次のストロークの最初の検出点から各ストロークの相対的な位置関係を特定できる。入力履歴テーブル１１３に登録された連続する複数のストロークの集合が、１文字（あるいは１部品文字）を形成する。
【００６６】
図８は、類似度履歴テーブルの例を示す図である。類似度履歴テーブル１１４は、記憶部１１０に格納される。類似度履歴テーブル１１４には、ユーザにより１ストロークが入力されるごとに新たなエントリが追加される。類似度履歴テーブル１１４の登録内容は、１つの部品文字が検出されるとクリアされる。類似度履歴テーブル１１４は、入力画数、文字コードおよび類似度の項目を含む。
【００６７】
入力画数の項目には、入力された画数（部品文字単位のストローク数）が登録される。文字コードの項目には、文字コードが登録される。類似度の項目には、ユーザによる手書き入力に対して、文字判定部１２０により評価された類似度が登録される。ここで、一例として類似度の最大値を“１００”とする。
【００６８】
例えば、類似度履歴テーブル１１４には、入力画数が“１”、文字コードが“３０ｂｄ”、類似度が“１７”という情報が登録されている。これは、１画目のストロークに対して、文字コード“３０ｂｄ”が検出され、そのときの類似度が“１７”であったことを示す。
【００６９】
また、例えば、類似度履歴テーブル１１４には、入力画数が“２”、文字コードが“７０６ｂ”、類似度が“５３”という情報が登録されている。これは、１画目および２画目のストロークの組合せに対して、文字コード“７０６ｂ”が検出され、そのときの類似度が“５３”であったことを示す。
【００７０】
図９は、組合せテーブルの例を示す図である。組合せテーブル１１５は、記憶部１１０に格納される。組合せテーブル１１５は、文字コード、変形画像データ、最小座標および最大座標の項目を含む。
【００７１】
文字コードの項目には、文字コードが登録される。変形画像データの項目には、部品文字の変形画像データが登録される。最小座標の項目には、当該部品文字に対して検出されたＸ，Ｙ軸の最小値の組（最小座標という）が登録される。最大座標の項目には、当該部品文字に対して検出されたＸ，Ｙ軸の最大値の組（最大座標という）が登録される。
【００７２】
例えば、組合せテーブル１１５には、文字コードが“７０６ｂ”、変形画像データが“Ｇ１１”、最小座標が“（３，２５）”、最大座標が“（４２，７８）”という情報が登録される。これは、文字コード“７０６ｂ”に対して変形画像データ“Ｇ１１”が生成されていることを示す。また、当該文字コードに対応する部品文字が入力された際の最小座標が“（３，２５）”であり、最大座標が“（４２，７８）”であったことを示す。なお、最小座標および最大座標は、変形画像データを配置する位置を決定するための情報（他の変形画像データとの相対的な位置関係を示す情報）としても用いられる。
【００７３】
図１０は、文字認識の処理例を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
（Ｓ１１）文字判定部１２０は、文字認識を開始する旨のユーザによる操作入力を受け付ける。文字判定部１２０は、変数ｎに“１”を代入する。また、類似度Ｖ0を“０”とする。終了フラグを“ｆａｌｓｅ”とする。
【００７４】
（Ｓ１２）文字判定部１２０は、ユーザによる手書き入力の１ストローク（１画）を受け付ける。“１ストロークを受け付ける”とは、当該１ストロークの書き終わり点を検出したことを意味する。文字判定部１２０は、入力されたストロークを示す情報（タッチパネル１０６により検出されたストロークの軌跡を示す座標群）を記憶部１１０に格納する。
【００７５】
（Ｓ１３）文字判定部１２０は、記憶部１１０に記憶された入力履歴テーブル１１３から、何れの文字を形成するかが未確定のストロークの集合（未確定ストローク群という）を抽出する。文字判定部１２０は、未確定ストローク群と、記憶部１１０に記憶された字型テーブル１１１および辞書テーブル１１２とに基づいて、未確定ストローク群と各文字との類似度Ｖnを算出する。例えば、文字判定部１２０は、未確定ストローク群と辞書テーブル１１２の各ストローク情報とを照合して、未確定ストローク群と各文字との第１の類似度を算出する。また、文字判定部１２０は、未確定ストローク群が示すドットパターンと字型テーブル１１１の画像データとを照合して、未確定ストローク群と各文字との第２の類似度を算出する。そして、文字判定部１２０は第１および第２の類似度に基づいて、未確定ストローク群と各文字との類似度を総合判断する。例えば、前述のように第１および第２の類似度の平均を未確定ストローク群と各文字との類似度としてもよい。そして、最大の類似度をＶnとし、類似度Ｖnに対応する文字コードを文字コードＣnとする。文字判定部１２０は、入力画数ｎ、文字コードＣnおよび類似度Ｖnを類似度履歴テーブル１１４に登録する。
【００７６】
（Ｓ１４）文字判定部１２０は、ステップＳ１２でストロークの入力を受け付けてから所定の制限時間Ｔ以内に次のストローク（次画）の入力が開始されたか否かを判定する。“次のストロークの入力が開始される”とは、次のストロークの書き出し点を検出したことを意味する。制限時間Ｔ以内に次のストロークの入力が開始された場合、処理をステップＳ１５に進める。制限時間Ｔ以内に次のストロークの入力が開始されなかった場合、処理をステップＳ１９に進める。例えば、制限時間Ｔは、０．２秒〜１秒程度の任意の時間とすることができる。ユーザの入力方法に応じて何れかの時間の設定変更を許容してもよい。
【００７７】
（Ｓ１５）文字判定部１２０は、変数ｎが“１”より大きいか否かを判定する。ｎが“１”より大きい場合、処理をステップＳ１６に進める。ｎが“１”以下の場合、処理をステップＳ１８に進める。
【００７８】
（Ｓ１６）文字判定部１２０は、類似度Ｖnが類似度Ｖn-1以下、かつ、類似度Ｖn-1が閾値Ｑ以上であるか否かを判定する。類似度Ｖnが類似度Ｖn-1以下、かつ、類似度Ｖn-1が閾値Ｑ以上である場合、処理をステップＳ１７に進める。類似度ＶnがＶn-1以下、かつ、類似度Ｖn-1が閾値Ｑ以上でない場合、処理をステップＳ１８に進める。
【００７９】
（Ｓ１７）文字判定部１２０は、文字コードＣn-1を部品文字と特定する。文字判定部１２０は、記憶部１１０に記憶された組合せテーブル１１５に文字コードＣn-1を登録する。文字判定部１２０は、文字コードＣn-1を部品文字組合せ部１３０に出力して、処理を図１１のステップＳ３１に進める。
【００８０】
（Ｓ１８）文字判定部１２０は、変数ｎをインクリメント（ｎの値に１を加算）する。そして、処理をステップＳ１２に進める。
（Ｓ１９）文字判定部１２０は、終了フラグを“ｔｒｕｅ”とする。
【００８１】
（Ｓ２０）文字判定部１２０は、文字コードＣnを部品文字と特定する。文字判定部１２０は、組合せテーブル１１５に文字コードＣnを登録する。
（Ｓ２１）文字判定部１２０は、組合せテーブル１１５を参照して、取得した部品文字が１つであるか否かを判定する。取得した部品文字が１つである場合、処理をステップＳ２２に進める。取得した部品文字が１つでない場合、文字判定部１２０は文字コードＣnを部品文字組合せ部１３０に出力して、処理を図１１のステップＳ３１に進める。
【００８２】
（Ｓ２２）文字判定部１２０は、１つだけ取得された文字コードＣnの画像データを字型テーブル１１１から取得して、ディスプレイ１０５に出力する。あるいは、文字判定部１２０は、文字コードＣnを他のソフトウェアや他の装置などに出力してもよい。例えば、ユーザは、ディスプレイ１０５に表示された文字画像を閲覧して、自身が入力を意図した文字であるかを確認できる。文字判定部１２０は、次の文字の認識に備えて各テーブルの内容をクリアする。そして、１文字の認識処理を終了する。
【００８３】
なお、前述のようにステップＳ１３では、辞書テーブル１１２との照合結果のみを用いて、類似度Ｖnおよび文字コードＣnを取得してもよい。
また、文字の１画目の入力は、横線“−”や縦線“｜”のような場合が多く、文字“一”などとの類似度が比較的大きく算出されてしまう。このため、２画目で類似度が大きく低下すると、ステップＳ１６の判定が真となり部品文字を誤検出してしまうことがある。そこで、ステップＳ１５のように１画目の場合にステップＳ１６の判定を行わないようにすることで、部品文字を誤検出する可能性を低減できる。
【００８４】
図１１は、文字認識の処理例（続き）を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
（Ｓ３１）部品文字組合せ部１３０は、字型テーブル１１１を参照して、ステップＳ１７で取得した部品文字の文字コードＣn-1に対応する画像データ（フォント画像）を取得する。または、部品文字組合せ部１３０は、ステップＳ２０で取得した部品文字の文字コードＣnに対応する画像データを取得する。
【００８５】
（Ｓ３２）部品文字組合せ部１３０は、ステップＳ１７またはステップＳ２０で検出された部品文字について、記憶部１１０に記憶された入力履歴テーブル１１３を参照して、当該部品文字が入力された座標から、最小座標および最大座標を取得する。部品文字組合せ部１３０は、当該部品文字の最小座標および最大座標を、組合せテーブル１１５に登録する。
【００８６】
（Ｓ３３）部品文字組合せ部１３０は、ステップＳ３２で取得した最小座標および最大座標を対頂点（辺を共有しない２頂点）にもつ矩形を特定する。当該矩形の２辺はＸ軸に平行であり、他の２辺はＹ軸に平行である。部品文字組合せ部１３０は、ステップＳ３１で取得した部品文字の画像データを当該矩形に当てはまるように変形することで、変形画像データを生成する。具体的には、部品文字の元の画像データのサイズが当該矩形と同一のサイズになるように、元の画像データのＸ軸方向およびＹ軸方向の長さを変更（伸縮）する。すなわち、変形画像データの縦横比は当該矩形の縦横比と同じ比率になる。なお、必ずしも完全に同一のサイズとしなくてもよく、矩形のサイズよりも縦横について所定の割合だけ大きめ、または、小さめというように所定の幅を許容してもよい。また、部品文字組合せ部１３０は、生成した変形画像データの頂点が、当該矩形の対応する頂点に一致するように、変形画像データの配置位置を決定する。部品文字組合せ部１３０は、当該部品文字の変形画像データを組合せテーブル１１５に登録する。
【００８７】
（Ｓ３４）部品文字組合せ部１３０は、終了フラグが“ｔｒｕｅ”であるか否かを判定する。終了フラグが“ｔｒｕｅ”である場合、処理をステップＳ３７に進める。終了フラグが“ｔｒｕｅ”でない（すなわち、“ｆａｌｓｅ”のままである）場合、処理を文字判定部１２０に委譲してステップＳ３５に進める。
【００８８】
（Ｓ３５）文字判定部１２０は、類似度履歴テーブル１１４のエントリを削除する。
（Ｓ３６）文字判定部１２０は、変数ｎに“１”を代入する。そして、処理を図１０のステップＳ１２に進める。すなわち、次の部品文字を検出するための処理に移る。
【００８９】
（Ｓ３７）部品文字組合せ部１３０は、組合せテーブル１１５に記憶された各変形画像データをステップＳ３３で決定した位置に配置して組合せることで、合成画像データを生成する。部品文字組合せ部１３０は、合成画像データを文字比較部１４０に出力する。
【００９０】
（Ｓ３８）文字比較部１４０は、字型テーブル１１１を参照して、取得した合成画像データに対応する文字フォントの画像データ（フォント画像）を検索する。例えば、文字比較部１４０は、合成画像データに含まれる部首を検出し、字型テーブル１１１の画像データを当該部首によって絞り込んでもよい。文字比較部１４０は字型テーブル１１１に登録された各画像データと合成画像データとの間のドット位置やドットパターンの一致度を類似度として算出し、当該類似度が最大となる画像データを、合成画像データに対応する画像データと特定する。
【００９１】
（Ｓ３９）文字比較部１４０は、ステップＳ３８で特定した画像データを、ディスプレイ１０５に出力する。あるいは、文字比較部１４０は、当該画像データに対応する文字コードを字型テーブル１１１から取得し、他のソフトウェアや他の装置などに出力してもよい。例えば、ユーザは、ディスプレイ１０５に表示された文字画像を閲覧して、自身が入力を意図した文字であるかを確認できる。文字比較部１４０は、次の文字の認識に備えて類似度履歴テーブル１１４および組合せテーブル１１５の内容をクリアする。そして、１文字の認識処理を終了する。
【００９２】
なお、ステップＳ３３をステップＳ３７の直前に実行してもよい。その場合、ステップＳ３２の次にステップＳ３４を実行し、ステップＳ３４の判定で“Ｙｅｓ”となった場合に、ステップＳ３３を実行する。
【００９３】
次に、文字判定部１２０の処理の具体例を説明する。以下の説明では、文字“焔”の異体字を認識する場合を例示する。以下の説明では、入力されたストローク数をいう場合、当該異体字の全体に対するストローク数（以下の例では全部で１２ストローク目まで存在する）として表記する。また、一例として類似度の閾値Ｑを“８０”とする。
【００９４】
図１２は、部品文字判定の具体例を示す図である。図１２（Ａ）は、３ストローク目の入力を受け付けた場合の類似度履歴テーブル１１４ａを例示している。文字判定部１２０は、入力画数“３”、文字コード“７０６ｂ”（文字“火”に対応）および類似度“６８”というエントリを類似度履歴テーブル１１４ａに登録する。ここで、類似度履歴テーブル１１４ａでは、最新のエントリのみを表記し、他のエントリを“・・・”と略記している（以下、同様の表記とすることがある）。
【００９５】
図１２（Ｂ）は、４ストローク目の入力を受け付けた場合の類似度履歴テーブル１１４ｂを例示している。文字判定部１２０は、入力画数“４”、文字コード“７０６ｂ”（文字“火”に対応）および類似度“９１”というエントリを類似度履歴テーブル１１４ｂに登録する。
【００９６】
図１２（Ｃ）は、５ストローク目の入力を受け付けた場合の類似度履歴テーブル１１４ｃを例示している。文字判定部１２０は、入力画数“５”、文字コード“７２ａｃ”（文字“犬”に対応）および類似度“２８”というエントリを類似度履歴テーブル１１４ｃに登録する。ここで、類似度履歴テーブル１１４ｂ，１１４ｃを比較すると、類似度Ｖ5＝２８は類似度Ｖ4＝９１以下である。更に、類似度Ｖ4＝９１は閾値Ｑ＝８０以上である。したがって、文字判定部１２０は、図１２（Ｂ）のストロークまでを１つの部品文字として検出する。当該部品文字の文字コードは“７０６ｂ”である。文字判定部１２０は、類似度履歴テーブル１１４ｃの登録内容をクリアする。
【００９７】
図１３は、部品文字判定の具体例（続き）を示す図である。図１３（Ａ）は、図１２（Ｃ）の６ストローク目（類似度履歴テーブル１１４ｃはクリアされるので管理上は１画目となる）の入力を受け付けた場合の類似度履歴テーブル１１４ｄを例示している。文字判定部１２０は、入力画数“１”、文字コード“３０ａｆ”（文字“ク”に対応）および類似度“８６”というエントリを類似度履歴テーブル１１４ｄに登録する。
【００９８】
図１３（Ｂ）は、７ストローク目の入力を受け付けた場合の類似度履歴テーブル１１４ｅを例示している。文字判定部１２０は、入力画数“２”、文字コード“ｆｆ１７”（文字“７”に対応）および類似度“３９”というエントリを類似度履歴テーブル１１４ｅに登録する。ここで、類似度履歴テーブル１１４ｄ，１１４ｅを比較すると、類似度Ｖ2＝３９は類似度Ｖ1＝８６以下である。更に、類似度Ｖ1＝８６は閾値Ｑ＝８０以上である。したがって、文字判定部１２０は、図１３（Ａ）のストロークまでを１つの部品文字として検出する。当該部品文字の文字コードは“３０ａｆ”である。文字判定部１２０は、類似度履歴テーブル１１４ｅの登録内容をクリアする。
【００９９】
図１３（Ｃ）は、１１ストローク目の入力を受け付けた場合の類似度履歴テーブル１１４ｆを例示している。文字判定部１２０は、入力画数“４”、文字コード“８１ｆｃ”（文字“臼”に対応）および類似度“７２”というエントリを類似度履歴テーブル１１４ｆに登録する。
【０１００】
図１３（Ｄ）は、１２ストローク目の入力を受け付けた場合の類似度履歴テーブル１１４ｇを例示している。文字判定部１２０は、入力画数“５”、文字コード“８１ｆｃ”（文字“臼”に対応）および類似度“８６”というエントリを類似度履歴テーブル１１４ｆに登録する。文字判定部１２０は、１２ストローク目を検出後、所定時間Ｔ以内に次のストロークの入力が開始されなければ当該１２ストローク目までを１文字として検出することになる。部品文字組合せ部１３０は、文字判定部１２０により検出された各部品文字の画像データを変形して組合せることで合成画像データを生成する。次に、部品文字組合せ部１３０による画像データの変形処理を例示する。
【０１０１】
図１４は、変形画像データの例を示す図である。部品文字組合せ部１３０は、字型テーブル１１１を参照して、部品文字（ここでは、文字“火”とする）の文字コード“７０６ｂ”に対応する画像データＧ１を取得する。また、部品文字組合せ部１３０は、図１２（Ｂ）の４ストローク目までの入力履歴から最小座標“（３，２５）”と最大座標“（４２，７８）”を取得する。なお、図１４の例では、入力領域ＲのＸ軸の最大値を“１００”、Ｙ軸の最大値を“１００”と想定している。
【０１０２】
部品文字組合せ部１３０は、最小座標と最大座標とを対頂点にもつ矩形Ｈを特定する。矩形Ｈの横方向の２つの辺はＸ軸に平行である。矩形Ｈの縦方向の２つの辺はＹ軸に平行である。そして、画像データＧ１を矩形Ｈに当てはめて配置できるように、画像データＧ１を変形する。具体的には、画像データＧ１のＸ軸と平行な方向の長さが矩形Ｈの横方向の辺の長さ（ここでは“３９”）と同じ長さになるように伸縮する。また、画像データＧ１のＹ軸と平行な方向の長さが矩形Ｈの縦方向の長さ（ここでは“５３”）と同じ長さになるように伸縮する。これにより、変形画像データＧ１１を生成する。
【０１０３】
すなわち、変形画像データＧ１１の縦横比を矩形Ｈの縦横比に一致させるように画像データＧ１を変形しているといえる。例えば、矩形Ｈの縦横比が縦：横＝“２：１”であれば、画像データＧ１の縦横比も“２：１”とする。ただし、変形後の縦横比を所定の割合の範囲内で調整してもよい。例えば、矩形Ｈの縦横比“２：１”に対して、画像データＧ１の縦横比を“２．２：０．９”のように所定の割合の範囲で変えてもよい。
【０１０４】
このようにして、部品文字組合せ部１３０は画像データＧ１から変形画像データＧ１１を生成する。また、部品文字組合せ部１３０は、入力領域Ｒのうち矩形Ｈの各頂点と、変形画像データＧ１１の各頂点（縦横比を調整する場合は、矩形Ｈの頂点のうち最小座標に対応する頂点と変形画像データＧ１１の対応する頂点）とが重なるように配置すると決定する。
【０１０５】
図１５は、変形画像データの合成例を示す図である。図１５（Ａ）は部品文字“ク”に対する変形画像データＧ２１を例示している。図１５（Ｂ）は部品文字“臼”に対する変形画像データＧ３１を例示している。部品文字組合せ部１３０は、図１４で説明した方法と同様にして、変形画像データＧ２１，Ｇ３１を生成できる。
【０１０６】
図１５（Ｃ）は、変形画像データＧ１１，Ｇ２１，Ｇ３１を合成した合成画像データＧＸを例示している。部品文字組合せ部１３０は、変形画像データＧ１１，Ｇ２１，Ｇ３１それぞれを、決定した位置に配置して１つの画像データとすることで、合成画像データＧＸを得る。変形画像データＧ１１，Ｇ２１，Ｇ３１は、変形画像データＧ１１，Ｇ２１，Ｇ３１の各頂点が各部品文字の入力領域を示す矩形の各頂点と一致するように配置される。よって、配置された変形画像データＧ１１，Ｇ２１，Ｇ３１それぞれの面積は、対応する各矩形の面積に一致する。したがって、変形画像データＧ１１，Ｇ２１，Ｇ３１の面積比を、各部品文字が入力された領域を示す各矩形の面積比と一致するように、画像データＧ１，Ｇ２，Ｇ３を変形しているといえる。例えば、各部品文字が入力された領域を示す各矩形の面積比が“４：３：６”であれば、変形画像データＧ１１，Ｇ２１，Ｇ３１を配置する領域の面積比も“４：３：６”とする。
【０１０７】
ただし、当該面積比を各矩形の面積比に完全に一致させなくてもよく、多少の相違を許容してもよい。例えば、部品文字が入力された領域を示す各矩形の面積比が“４：３：６”であれば、変形画像データＧ１１，Ｇ２１，Ｇ３１を配置する領域の面積比を“３．８：３．１：６．３”のように所定の割合の範囲で変えてもよい。部品文字組合せ部１３０は、合成画像データＧＸを文字比較部１４０に出力する。
【０１０８】
図１６は、最終結果の出力例を示す図である。文字比較部１４０は、合成画像データＧＸと字型テーブル１１１に登録された各文字の画像データとを照合する。そして、最も一致する画像データＧ７を、ユーザにより入力された文字と推定する。文字比較部１４０は、ディスプレイ１０５に画像データＧ７を表示させてユーザによる確認を促してもよい。文字比較部１４０は、字型テーブル１１１から画像データＧ７に対応する文字コードを取得して、クライアント装置１００上で動作する他のソフトウェアに出力してもよい。また、文字比較部１４０は、画像データＧ７に対応する文字コード“７１３０”を他の装置に出力してもよい。
【０１０９】
このように、クライアント装置１００は、１文字に含まれる複数の部品文字を検出し、部品文字を合成した合成画像データＧＸを生成する。そして、合成画像データＧＸを字型テーブル１１１の各文字の画像データと照合し、最終的な文字認識結果を得る。このため、辞書テーブル１１２に未登録の文字であっても、精度良く認識できる。例えば、文字認識を行うためには、認識対象とする文字ごとに、サンプルとなるストローク情報を予め用意することになる。
【０１１０】
しかし、文字の数は膨大であり、全ての文字について手書き入力に対する文字認識用のストローク情報を予め網羅するのは容易でない。一例を挙げれば、異体字は登記の際に利用され得る。異体字によってはごく少数（例えば、一か所）の登記所でしか使用されていないものも存在する。例えば、数万という単位で存在する全ての異体字に対して１０〜３０人程度の被験者からストロークのサンプルを採取するのは困難であるし、登録したとしても作業コストに比べて有用性は低い。このため、異体字や外字など使用頻度の少ない文字については、辞書テーブル１１２にストローク情報が登録されないことがある。
【０１１１】
また、字型テーブル１１１には、ユーザが自身で作成した文字を任意に登録することもできる。そのような文字を想定してサンプルとなるストローク情報を予め用意するのは困難である。
【０１１２】
そこで、辞書テーブル１１２に未登録の文字を精度良く認識する方法が問題となる。例えば、手書き入力された線の組合せを示す画像データを、字型テーブル１１１に登録された各文字の画像データと照合することも考えられる。しかし、手書き入力された線は文字としての形が崩れていることがある。したがって、手書き入力された線の組合せを示す画像データを字型テーブル１１１に登録された各文字の画像データと照合すると、文字認識の精度が低下し得る。
【０１１３】
これに対し、クライアント装置１００は、１文字を複数の部品文字の組合せとして扱う。すなわち、ユーザが１文字の入力を意図して入力領域Ｒに手書き入力した文字が、クライアント装置１００により複数の部品文字の組合せとして検出される。クライアント装置１００は、辞書テーブル１１２に基づいて認識した各部品文字の画像データを組合せることで合成画像データＧＸを得る。このとき、ユーザによって入力された位置を示す情報に基づいて各部品文字の画像データを変形して組合せる。このため、編や旁などの部首として入力された部分を字型テーブル１１１に登録された画像データを用いて再現して、合成画像データＧＸに適切に反映できる。よって、手書き入力された線の組合せをそのまま字型テーブル１１１の画像データと照合するよりも、精度良く認識を行える。
【０１１４】
また、手書き文字の認識用のストローク情報が用意されていない異体字や外字などであっても、既存のストローク情報を用いて、精度の良い文字認識を容易に行える。更に、使用頻度の低い異体字や外字などに対して個別のストローク情報を用意しなくてもよい。よって、サンプルとなるストローク情報を収集および登録するための作業を省力化できる。また、辞書テーブル１１２に登録する文字を軽減でき、ストローク情報の増大を抑えることができる。
【０１１５】
なお、前述のように、第１の実施の形態の情報処理は、演算部１ｂにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体（例えば、光ディスク、メモリ装置およびメモリカードなど）に記録できる。
【０１１６】
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータなどのクライアント装置は、例えば、記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭやＨＤＤなどの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０１１７】
１  情報処理装置
１ａ  記憶部
１ｂ  演算部
２  字型データ
３  辞書データ
４  入力データ
４ａ，４ｂ，４ｃ  文字
５，５ａ，５ｂ，５ｃ，Ｘ４  画像データ
【図１】
2014225135.tif 000003
【図２】
2014225135.tif 000004
【図３】
2014225135.tif 000005
【図４】
2014225135.tif 000006
【図５】
2014225135.tif 000007
【図６】
2014225135.tif 000008
【図７】
2014225135.tif 000009
【図８】
2014225135.tif 000010
【図９】
2014225135.tif 000011
【図１０】
2014225135.tif 000012
【図１１】
2014225135.tif 000013
【図１２】
2014225135.tif 000014
【図１３】
2014225135.tif 000015
【図１４】
2014225135.tif 000016
【図１５】
2014225135.tif 000017
【図１６】
2014225135.tif 000018