(57)【要約】【課題】精度の高い文字認識を行うことを目的とする。【解決手段】複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置３０において、所定幅を当該ストロークデータの方向に基づいて変更する線幅変更手段３３を有することにより上記課題を解決する。【選択図】　　　　　図５
2004086256.tif 000002
【特許請求の範囲】
【請求項１】
複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、
前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更手段を有することを特徴とする手書き文字認識装置。
【請求項２】
前記線幅変更手段は、前記所定幅を細くする細線化手段を有することを特徴とする請求項１記載の手書き文字認識装置。
【請求項３】
前記所定幅を規定する値を記憶する第一記憶装置と、
所定の値を記憶する第二記憶装置とを更に有し、
前記細線化手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算し、その減算した値に基づいて線幅を決定することを特徴とする請求項２記載の手書き文字認識装置。
【請求項４】
前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、
前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記細線化手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算しないことを特徴とする請求項３記載の文字認識装置。
【請求項５】
前記所定幅を規定する値を記憶する第一記憶装置と、
１未満の所定の値を記憶する第三記憶装置とを更に有し、
前記細線化手段は、前記第一記憶装置に記憶されている値に前記第三装置に記憶されている値を乗算し、その乗算した値に基づいて線幅を決定することを特徴とする請求項２記載の手書き文字認識装置。
【請求項６】
前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、
前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記細線化手段は、前記第一記憶装置に記憶されている値に前記第三記憶装置に記憶されている値を乗算しないことを特徴とする請求項５記載の文字認識装置。
【請求項７】
前記線幅変更手段は、前記所定幅を太くする太線化手段を有することを特徴とする請求項１記載の手書き文字認識装置。
【請求項８】
前記所定幅を規定する値を記憶する第一記憶装置と、
所定の値を記憶する第四記憶装置とを更に有し、
前記太線化手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算し、その加算した値に基づいて線幅を決定することを特徴とする請求項７記載の手書き文字認識装置。
【請求項９】
前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、
前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算しないことを特徴とする請求項８記載の文字認識装置。
【請求項１０】
前記所定幅を規定する値を記憶する第一記憶装置と、
１を超える所定の値を記憶する第五記憶装置とを更に有し、
前記太線化手段は、前記第五記憶装置に記憶されている値に前記第二記憶装置に記憶されている値を乗算し、その乗算した値に基づいて線幅を決定することを特徴とする請求項７記載の手書き文字認識装置。
【請求項１１】
前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、
前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第五記憶装置に記憶されている値を乗算しないことを特徴とする請求項１０記載の文字認識装置。
【請求項１２】
前記線幅変更手段は、
前記所定幅を細くする細線化手段と、
前記所定幅を太くする太線化手段とを有することを特徴とする請求項１記載の手書き文字認識装置。
【請求項１３】
複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、
前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更手段を有することを特徴とする手書き文字認識装置。
【請求項１４】
前記線幅変更手段は、当該ストロークデータから生成された線幅を規定する値及び記憶装置に記憶されている所定の線幅を規定する値のうちどちらか一方、小さい方の値を選択して線幅を決定することを特徴とする請求項１３記載の手書き文字認識装置。
【請求項１５】
前記ストロークデータから生成された線幅は、当該ストロークデータと隣接するストロークデータとの距離の２分の１未満であることを特徴とする請求項１４記載の手書き文字認識装置。
【請求項１６】
当該ストロークデータと隣接するストロークデータとの距離と角度を算出する距離・角度算出手段を更に有し、
該距離・角度算出手段により算出された距離に基づいて、前記ストロークデータから生成された線幅を決めることを特徴とする請求項１４記載の手書き文字認識装置。
【請求項１７】
複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、
前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更段階を有することを特徴とする手書き文字認識方法。
【請求項１８】
複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、
前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更段階を有することを特徴とする手書き文字認識方法。
【請求項１９】
複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、
前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更手順をコンピュータに実行させることを特徴とする手書き文字認識プログラム。
【請求項２０】
複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、
前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更手順をコンピュータに実行させることを特徴とする手書き文字認識プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、手書き文字認識装置、手書き文字認識方法及び手書き文字認識プログラムに係り、特に複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置、手書き文字認識方法及び手書き文字認識プログラムに関する。
【０００２】
【従来の技術】
手書き文字の認識を行うことが従来より行われている。例えば、「特開平９―２６８２２０３号公報」では、手書き文字画像から特徴量を求めた後に、神経回路網を用いて識別を行う文字認識方法について述べられている。文字認識の実行時に文字認識の確からしさ（確信度）が低い場合、認識パラメータを変更して再度文字認識を行うことにより確信度が高くなるような、つまり精度の高い文字認識が可能な構成となっている。
【０００３】
手書き入力装置を用いた従来の文字認識の処理方法を以下に示す。図１は、ビットマップデータ読み取り方式による従来の文字認識装置１０の構成である。従来装置（その１）は、文字認識装置１０と、手書き入力装置１１とから構成され、文字認識装置１０は、通信部１２と、画像作成部１３と、文字認識部１４と、蓄積部１５とから構成される。
【０００４】
手書き入力装置１１は、加筆箇所の座標情報を（ｘ、ｙ）を取得する装置であり、作業者の加筆と同時に加筆箇所の座標情報を取得する。
【０００５】
通信部１２は、手書き入力装置１１から座標情報（ｘ、ｙ）を受信する。画像作成部１３は、加筆情報として前記通信部１２から取り出す座標情報（Ｘ、Ｙ）を基に所定の線幅の文字の文字画像を作成する。文字認識部１４は、前記画像作成部１３が作成した文字画像中の文字を認識する。蓄積部１５は、前記文字認識部１４が認識した文字の認識結果を蓄積する。
【０００６】
図２は、時系列座標データ読み取り方式による従来の文字認識装置２０の構成である。従来装置（その２）は、文字認識装置２０と、手書き入力装置２１とから構成され、文字認識装置２０は、通信部２２と、文字認識部２３と、蓄積部２４とから構成される。
【０００７】
手書き入力装置２１は、一文字入力を行う領域を有する手書き入力装置であって、加筆箇所の座標情報（ｘ、ｙ）を取得して、作業者の加筆と同時に加筆箇所の座標情報を取得する。
【０００８】
通信部２２は、前記手書き入力装置２１から座標情報（ｘ、ｙ）を受信する。文字認識部２３は、一文字に相当する座標情報列から文字を認識する。この際、座標情報列は時系列情報も有するので、筆順の情報を文字認識に利用できる。蓄積部２４は、前記文字認識部２３が認識した文字認識の結果を蓄積する。
【０００９】
【発明が解決しようとする課題】
しかしながら、前記「特開平９―２６８２２０３号公報」に記載された発明では、文字画像に最適な文字認識パラメータを設定することにより、精度の高い文字認識を行うことを目的としており、処理対象の基となる文字画像の品質が悪ければ、おのずとその認識率には限界がある。
【００１０】
また、前記図１に示した手書き入力装置を用いた従来の方式においては、所定の線幅で文字画像を構成している。この線幅が文字の大きさと比較して細ければ図３（ａ）のように「加」という１文字が、「カロ」という２文字に分離されて認識されてしまうと言う問題がある。この問題を解決するためには、図３（ｂ）に示すように、太線で文字画像を作成することにより、「加」として文字が認識される。
【００１１】
ところで、線幅が文字の大きさと比較して太すぎると、隣接する線とつながってしまい、文字が潰れることがある。
【００１２】
図４は、手書きした座標データを基に文字画像を作成して文字認識させる一例を「東」を用いて説明するための図である。図４（ａ）は、細線で文字画像を作成して文字認識させた場合を表しており、図４（ｂ）は、太線で文字画像を作成して文字認識させた場合を表している。図４（ｂ）に示すように線幅を文字と比較して太くすれば隣接する線とつながって「東」という文字が「束」と認識される場合がある。
【００１３】
従って、従来の方法では、「加東」という文字列が線幅によって「カロ東」や「加束」という字に誤認識されてしまうことがある。
【００１４】
更には、前記図２に示した手書き入力装置を用いた従来の方式においては、筆記者の筆順が間違っている場合には認識精度が低下する。
【００１５】
本発明は、上記の点に鑑みなされたもので、より精度の高い文字認識を行うことを目的とする。
【００１６】
【課題を解決するための手段】
そこで、上記問題を解決するため、請求項１記載の発明は、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更手段を有することを特徴とする。
【００１７】
また、請求項２記載の発明は、前記線幅変更手段は、前記所定幅を細くする細線化手段を有することを特徴とする。
【００１８】
また、請求項３記載の発明は、前記所定幅を規定する値を記憶する第一記憶装置と、所定の値を記憶する第二記憶装置とを更に有し、前記細線化手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算し、その減算した値に基づいて線幅を決定することを特徴とする。
【００１９】
また、請求項４記載の発明は、前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記細線化手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算しないことを特徴とする。
【００２０】
また、請求項５記載の発明は、前記所定幅を規定する値を記憶する第一記憶装置と、１未満の所定の値を記憶する第三記憶装置とを更に有し、前記細線化手段は、前記第一記憶装置に記憶されている値に前記第三装置に記憶されている値を乗算し、その乗算した値に基づいて線幅を決定することを特徴とする。
【００２１】
また、請求項６記載の発明は、前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記細線化手段は、前記第一記憶装置に記憶されている値に前記第三記憶装置に記憶されている値を乗算しないことを特徴とする。
【００２２】
また、請求項７記載の発明は、前記線幅変更手段は、前記所定幅を太くする太線化手段を有することを特徴とする。
【００２３】
また、請求項８記載の発明は、前記所定幅を規定する値を記憶する第一記憶装置と、所定の値を記憶する第四記憶装置とを更に有し、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算し、その加算した値に基づいて線幅を決定することを特徴とする。
【００２４】
また、請求項９記載の発明は、前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算しないことを特徴とする。
【００２５】
また、請求項１０記載の発明は、前記所定幅を規定する値を記憶する第一記憶装置と、１を超える所定の値を記憶する第五記憶装置とを更に有し、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第五記憶装置に記憶されている値を乗算し、その乗算した値に基づいて線幅を決定することを特徴とする。
【００２６】
また、請求項１１記載の発明は、前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第五記憶装置に記憶されている値を乗算しないことを特徴とする。
【００２７】
また、請求項１２記載の発明は、前記線幅変更手段は、前記所定幅を細くする細線化手段と、前記所定幅を太くする太線化手段とを有することを特徴とする。
【００２８】
また、請求項１３記載の発明は、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更手段を有することを特徴とする。
【００２９】
また、請求項１４記載の発明は、前記線幅変更手段は、当該ストロークデータから生成された線幅を規定する値及び記憶装置に記憶されている所定の線幅を規定する値のうちどちらか一方、小さい方の値を選択して線幅を決定することを特徴とする。
【００３０】
また、請求項１５記載の発明は、前記ストロークデータから生成された線幅は、当該ストロークデータと隣接するストロークデータとの距離の２分の１未満であることを特徴とする。
【００３１】
また、請求項１６記載の発明は、当該ストロークデータと隣接するストロークデータとの距離と角度を算出する距離・角度算出手段を更に有し、該距離・角度算出手段により算出された距離に基づいて、前記ストロークデータから生成された線幅を決めることを特徴とする。
【００３２】
また、請求項１７記載の発明は、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更段階を有することを特徴とする。
【００３３】
また、請求項１８記載の発明は、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更段階を有することを特徴とする。
【００３４】
また、請求項１９記載の発明は、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更手順をコンピュータに実行させることを特徴とする。
【００３５】
また、請求項２０記載の発明は、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更手順をコンピュータに実行させることを特徴とする。
【００３６】
請求項１記載の発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更手段を有することによって、より精度の高い文字認識を行うことができる。
【００３７】
請求項２記載の発明によれば、前記線幅変更手段は、前記所定幅を細くする細線化手段を有することによって、漢字等のある範囲内のデータが多い文字においても、より精度の高い文字認識を行うことができる。
【００３８】
請求項３記載の発明によれば、前記所定幅を規定する値を記憶する第一記憶装置と、所定の値を記憶する第二記憶装置とを更に有し、前記細線化手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算し、その減算した値に基づいて線幅を決定することによって、簡単な構成で線幅を細くすることができる。
【００３９】
請求項４記載の発明によれば、前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記細線化手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算しないことによって、第一記憶装置に記憶されている値が所定の値より小さければ、それ以上線幅を細くすることを防ぐことができる。
【００４０】
請求項５記載の発明によれば、前記所定幅を規定する値を記憶する第一記憶装置と、１未満の所定の値を記憶する第三記憶装置とを更に有し、前記細線化手段は、前記第一記憶装置に記憶されている値に前記第三装置に記憶されている値を乗算し、その乗算した値に基づいて線幅を決定することによっ７、簡単な構成で線幅を細くすることができる。
【００４１】
請求項６記載の発明によれば、前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記細線化手段は、前記第一記憶装置に記憶されている値に前記第三記憶装置に記憶されている値を乗算しないことによって、第一記憶装置に記憶されている値が所定の値より小さければ、それ以上線幅を細くすることを防ぐことができる。
【００４２】
請求項７記載の発明によれば、前記線幅変更手段は、前記所定幅を太くする太線化手段を有することによって、文字の偏とつくりを分離して文字認識をしないようになり、より精度の高い文字認識を行うことができる。
【００４３】
請求項８記載の発明によれば、前記所定幅を規定する値を記憶する第一記憶装置と、所定の値を記憶する第四記憶装置とを更に有し、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算し、その加算した値に基づいて線幅を決定することによって、簡単な構成で線幅を太くすることができる。
【００４４】
請求項９記載の発明によれば、前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算しないことにより、第一記憶装置に記憶されている値が所定の値より大きければ、それ以上線幅を太くすることを防ぐことができる。
【００４５】
請求項１０記載の発明によれば、前記所定幅を規定する値を記憶する第一記憶装置と、１を超える所定の値を記憶する第五記憶装置とを更に有し、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第五記憶装置に記憶されている値を乗算し、その乗算した値に基づいて線幅を決定することによって、簡単な構成で線幅を太くすることができる。
【００４６】
請求項１１記載の発明によれば、前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、
前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第五記憶装置に記憶されている値を乗算しないことにより、第一記憶装置に記憶されている値が所定の値より大きければ、それ以上線幅を太くすることを防ぐことができる。
【００４７】
請求項１２記載の発明によれば、前記線幅変更手段は、前記所定幅を細くする細線化手段と、前記所定幅を太くする太線化手段とを有することによって、ストロークデータの方向に基づいて、線幅を細くしたり太くしたりすることができる。
【００４８】
請求項１３記載の発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更手段を有することによって、文字認識率を向上することができる。
【００４９】
請求項１４記載の発明によれば、前記線幅変更手段は、当該ストロークデータから生成された線幅を規定する値及び記憶装置に記憶されている所定の線幅を規定する値のうちどちらか一方、小さい方の値を選択して線幅を決定することによって、より最適な線幅で文字画像を生成をすることができる。
【００５０】
請求項１５記載の発明によれば、前記ストロークデータから生成された線幅は、当該ストロークデータと隣接するストロークデータとの距離の２分の１未満であることによって、隣接するストロークと接触しない線幅を得ることができる。
【００５１】
請求項１６記載の発明によれば、当該ストロークデータと隣接するストロークデータとの距離と角度を算出する距離・角度算出手段を更に有し、該距離・角度算出手段により算出された距離に基づいて、前記ストロークデータから生成された線幅を決めることによって、位置関係に応じた最適な線幅を得ることができる。
【００５２】
請求項１７記載の発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更段階を有することによって、品質の良い文字画像を作製して、より精度の高い文字認識を行う文字認識方法を提供することができる。
【００５３】
請求項１８記載の発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更段階を有することによって、品質の良い文字画像を作製して、より精度の高い文字認識を行う文字認識方法を提供することができる。
【００５４】
請求項１９記載の発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更手順をコンピュータに実行させることによって、品質の良い文字画像を作製して、より精度の高い文字認識を行う文字認識プログラムを提供することができる。
【００５５】
請求項２０記載の発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更手順をコンピュータに実行させることによって、品質の良い文字画像を作製して、より精度の高い文字認識を行う文字認識プログラムを提供することができる。
【００５６】
【発明の実施の形態】
（文字認識装置）
以下、本発明の実施の形態について図面に基づいて説明する。図５に本発明による文字認識装置３０の一例を示す。図５の構成図では、説明に必要な構成を表し、説明に必要の無い構成を省略してある。以下の図においても同様である。
【００５７】
文字認識装置３０は、画像作成器３１と、文字認識器３４と、蓄積器３５とから構成される。また、画像作成器３１は、画像生成器３２と、線幅変更器３３とから構成される。
【００５８】
文字認識装置３０は、画像作成器３１を用いて入力されたストロークデータから画像を作成する。全てのストロークデータに対して画像作成の処理を行うと、文字認識装置３０は、文字認識器３４を用いて、上記作成した画像の文字認識を行い、認識結果を蓄積部３５に蓄積する。
【００５９】
画像生成器３２の詳細は、図７及び図１６を用いて後述する。
【００６０】
また、文字認識装置３０の入力データとしてのストロークデータは、電磁誘導方式、超音波方式、静電方式等の２次元の手書き入力装置で得られるデータである。
【００６１】
（ストロークデータのフォーマット）
図６は、ストロークデータのフォーマットである。ストロークデータは、座標の順序を表すシーケンスと、Ｘ座標と、Ｙ座標と、座標を取得した時間を表すタイムスタンプと、筆記中であるか否かを表すペンアップ／ダウン（ペンダウンが筆記中）との５つから構成される。これが一座標を表すデータブロックであり、このデータブロックの集合がストロークデータである。
【００６２】
図５における、画像作成器３１は、入力された前記ストロークデータを用いてストローク画像を構成する。前記ストローク画像は、文字認識器３４に入力され、文字認識器３４は文字認識を行い、認識結果は蓄積器３５に蓄積される。なお、文字認識は例えば「特開平１０―１７１９２７号公報」に記載されている装置を利用することができる。
【００６３】
（画像生成器（その１））
図７に図５の画像生成器３２の構成を説明するための図（その１）を示す。図７は、図５の画像生成器３２の一例である。画像生成器３２は、領域判定器４１と、バッファ４２と、アドレス生成器４３と、画像メモリ４４と、レジスタ４５とから構成されている。
【００６４】
領域判定器４１は、前記ストロークデータのＸ座標、Ｙ座標それぞれの最大値及び最小値を検出し、文字が筆記されている矩形領域を検出する。検出した矩形領域の座標はレジスタ４５へ転送され、文字認識器３４で文字認識を行う際に利用される。
【００６５】
バッファ４２は、一座標を示すデータを一時的に記憶する遅延バッファである。領域判定器４１から転送されてきた前記ストロークデータと、バッファ４２で遅延されたストロークデータは、線幅変更器３３に入力される。
【００６６】
線幅変更器３３は、入力された二つの座標（（ｘ１、ｙ１）、（ｘ２、ｙ２））を基に、前記二つの座標を結ぶ直線の方向を算出し、その方向に基づいて前記二つの座標を結ぶ直線の線幅を変更する。なお、線幅変更器３３の詳細は、図８を用いて後述する。
【００６７】
アドレス生成器４３は、線幅変更器３３により指定された線幅と、領域判定器４１から転送されたストロークデータと、バッファ４２で遅延されたストロークデータとから、前記二つの座標（（ｘ１、ｙ１）、（ｘ２、ｙ２））を結ぶ直線を描く座標を計算し、それに応じたアドレスを生成して画像メモリ４４に書き込む。なお、アドレス生成器４３の詳細は、図１４を用いて後述する。
【００６８】
画像メモリ４４へのストロークデータの書き込みが終了すると、文字認識器３４が動作を開始し、レジスタ４５に格納されているストロークの存在する利用域情報を読み出して、文字認識に必要なデータを画像メモリ４４から読み出して文字認識を行う。
【００６９】
画像生成器３２の動作を以下に説明する。画像生成器３２は、領域判定器４１を用いて、入力されたストロークデータのＸ座標、Ｙ座標それぞれの最大値及び最小値を検出し、文字が筆記されている矩形領域を検出する。また、領域判定器４１は、検出した矩形領域の座標をレジスタ４５に転送する。転送された矩形領域の座標は、文字認識器３４で文字認識を行う際に利用される。
【００７０】
バッファ４２は、一座標を示すデータを一時的に記憶し、データを遅延させる。画像生成器３２入力されたストロークデータと、バッファ４２で遅延されたストロークデータとを、線幅変更器３３に入力する。線幅変更器３３は、入力された二つの座標（（ｘ１、ｙ１）、（ｘ２、ｙ２））を基に、前記二つの座標を結ぶ直線の方向を算出し、その方向に基づいて前記二つの座標を結ぶ直線の線幅を変更する。
【００７１】
アドレス生成器４３は、変更した線幅の値と、ストロークデータとから、画像メモリ４４に書き込むためのアドレスを生成して、画像メモリ４４に書き込む。
【００７２】
画像メモリ４４へのストロークデータの書き込みが終了すると、文字認識器３４が動作を開始し、レジスタ４５に格納されているストロークの存在する利用域情報を読み出して、文字認識に必要なデータを画像メモリ４４から読み出して文字認識を行う。
【００７３】
（線幅変更器）
図８に図７の線幅変更器３３の構成を説明するための図を示す。線幅変更器３３は、方向判定器５１と、線幅演算器５２と、レジスタ５３とから構成される。なお、二つのストロークデータの構成要素である座標データをそれぞれ座標１、座標２とする。
【００７４】
方向判定器５１は、前記座標１、２を用いて座標１、２を結ぶ直線の方向を算出する。線幅演算器５２は、方向判定器５１が算出した方向に基づいて、座標１、２を結ぶ直線の線幅を演算する。レジスタ５３には。線幅の初期値が設定されており、その値を増減させることにより線幅の変更を実現する。変更された線幅はアドレス生成器４３へ入力される。なお、方向判定器５１の詳細は、図９を用いて後述する。また、線幅演算器５２の詳細は、図１０、図１１、図１２、図１３を用いて後述する。
【００７５】
線幅変更器３３の動作例を以下に示す。線幅変更器３３は、方向判定器５１を用いて、入力された座標１と座標２と結ぶ直線の方向を算出する。方向の算出が終了すると線幅変更器３３は、線幅演算器５２を用いて前記算出した方向に基づいてレジスタ５３に設定されている線幅の初期値を増減させることにより変更する。
【００７６】
（方向判定器）
図９に図８の方向判定器５１の詳細な説明をするための図を示す。図９（ａ）は、方向判定器５１の構成を説明するための図である。図９（ｂ）は、角度算出器の角度算出方法の式である。図９（ｃ）は、角度変換表テーブルである。
【００７７】
方向判定器５１は、角度算出器６１と、角度変換器６２とから構成されている。角度算出器６１は、座標１（ｘ１、ｙ１）と、座標２（ｘ２、ｙ２）とが入力され、図９（ｂ）に示される角度算出方法の式を用いて座標１（ｘ１、ｙ１）と座標２（ｘ２、ｙ２）とを結ぶ直線の角度θを算出する。
【００７８】
角度変換器６２は、角度算出器６１で算出された角度θを、傾きの度合いを表す０〜３の値（傾き度合いθｔ）に変換する。角度θから傾き度合いθｔへの変換は図９（ｃ）のテーブルを実現する回路（図示せず）によって実行される。
【００７９】
図９の動作例を以下に示す。方向判定器５１は、入力された座標１（ｘ１、ｙ１）と座標２（ｘ２、ｙ２）とを結ぶ直線の角度θを角度算出器６１を用いて、算出する。算出された角度θは、角度変換器６２によって、傾き度合いθｔ（０〜３）に変更され、方向判定器５１の出力となる。
【００８０】
例えば、座標１（ｘ１、ｙ１）と座標２（ｘ２、ｙ２）とを結ぶ直線の角度が０度であったならば、角度変換器６２は、図９（ｃ）の角度変換表テーブルに基づいて、角度０度を傾き度合い２に変換して、方向判定器の出力とする。同様に、座標１（ｘ１、ｙ１）と座標２（ｘ２、ｙ２）とを結ぶ直線の角度が６０度ならば、方向判定器の出力は１となり、座標１（ｘ１、ｙ１）と座標２（ｘ２、ｙ２）とを結ぶ直線の角度が９０度ならば、方向判定器の出力は０となる。
【００８１】
（線幅演算器５２（その１））
図１０に、図８の線幅演算器５２の構成を説明するための図（その１）を示す。図１０（ａ）は、図８の線幅演算器５２の一例である。図１０（ｂ）は、傾き度合いθｔと前記選択した線幅との関係を説明するための図である。
【００８２】
図１０（ａ）の線幅演算器５２は、レジスタ７１と、レジスタ７２と、加算器７３と、減算器７４と、セレクタ７５とから構成される。
【００８３】
線幅演算器５２には、図８のレジスタ５３より、所定の線幅が初期値として入力される。
【００８４】
加算器７３は、図８のレジスタ５３より取得した線幅の初期値に、レジスタ７１より取得した値を加算して、セレクタ７５へ入力する。
【００８５】
減算器７４は、図８のレジスタ５３より取得した線幅の初期値からレジスタ７２より取得した値を減算して、セレクタ７５へ入力する。
【００８６】
セレクタ７５には、図８のレジスタ５３より入力された線幅の初期値と、加算器７３によって加算された線幅の値と、減算器７４によって減算された線幅の値とが入力される。また、セレクタ７５には、図８の方向判定器５１によって判定された前記傾き度合いθｔの値が入力される。
【００８７】
セレクタ７５は、入力された前記傾き度合いθｔの値を基に、入力された前記３つの線幅の値（初期値と、加算された線幅の値と、減算された線幅の値）の中から１つの線幅を選択して、アドレス生成器４３へ出力する。傾き度合いθｔと選択する線幅との関係を以下、図１０（ｂ）を用いて説明する。
【００８８】
図１０（ｂ）は、傾き度合いθｔと前記選択した線幅との関係を説明するための図である。セレクタ７５は、ストロークが水平（θｔ＝２）に近ければ、減算した線幅（増減なしも含む）を選択する。ストロークが垂直（θｔ＝０）に近ければ、加算した線幅（増減なしも含む）を選択する。上記以外の角度では、線幅の加算、減算を行っていない線幅を選択する。
【００８９】
例えば、前記図１０のセレクタ７５は、θｔ＝２ならば、減算器７４からの入力値を選択して、θｔ＝０ならば、加算器７３からの入力値を選択する。θｔが上記以外の値ならば、レジスタ５３からの入力値を選択する。
【００９０】
以下に図１０（ａ）の線幅演算器５２の動作例を示す。ここで、一例として図８のレジスタ５３に設定されてある線幅の値を１０、レジスタ７１に設定されている値を５、レジスタ７２に設定されている値を５とする。
【００９１】
線幅演算器５２は、図８のレジスタ５３に設定されている線幅の値１０を取得して、加算器７３を用いてレジスタ７１に設定されている値５を、前記線幅の値１０に加算して、値１５をセレクタ７３に入力する。また、線幅演算器５２は、減算器７４を用いてレジスタ７２に設定されている値５を、前記線幅の値１０から減算して、値５をセレクタ７３に入力する。
【００９２】
セレクタ７５には、図８のレジスタ５３に設定されている線幅の値１０と、加算器７３により加算された値１５及び減算器７４により減算された値５が入力される。
【００９３】
セレクタ７５は、図９の方向判定器５１から取得した前記θｔの値が０、つまり図８の例では、座標１（ｘ１、ｙ１）と座標２（ｘ２、ｙ２）とを結ぶ直線の角度が９０度だったならば、加算器７３により加算された値１５を選択して、図８のアドレス生成器４３に出力する。
【００９４】
また、図９の方向判定器５１から取得した前記θｔの値が１、つまり図８の例では、座標１（ｘ１、ｙ１）と座標２（ｘ２、ｙ２）とを結ぶ直線の角度が６０度だったならば、図８のレジスタ５３に設定されている線幅の値１０を選択して、図８のアドレス生成器４３に出力する。
【００９５】
また、図９の方向判定器５１から取得した前記θｔの値が２、つまり図８の例では、座標１（ｘ１、ｙ１）と座標２（ｘ２、ｙ２）とを結ぶ直線の角度が０度だったならば、減算器７４により減算された値５を選択して、図８のアドレス生成器４３に出力する。
【００９６】
（線幅演算器（その２））
図１１に、図８の線幅演算器５２の構成を説明するための図（その２）を示す。図１１は、図８の線幅演算器５２のその他の実施例である。
【００９７】
線幅演算器５２は、レジスタ８１と、レジスタ８２と、加算器８３と、減算器８４と、セレクタ８５と、比較器８６と、比較器８７と、セレクタ８８と、セレクタ８９とから構成されている。
【００９８】
図１１の線幅演算器５２は、図１０において説明した「線幅演算器（その１）」に比べて比較器８６と、比較器８７と、セレクタ８８と、セレクタ８９とが新たに設けられている。
【００９９】
図１１の線幅演算器５２は、図８のレジスタ５３に設定されてある線幅の初期値と、閾値１と、閾値２（閾値１＜閾値２）とを比較して、初期値として図８のレジスタ５３に設定されてある線幅が、初めからある値（閾値２）より太ければ、加算器８３で初期値の線幅にレジスタ８１に設定されてある値を加算せず、初期値の線幅を加算器８３からの出力とする。また、初期値として図８のレジスタ５３に設定されてある線幅が、初めからある値（閾値１）より細ければ、減算器８４で初期値の線幅からレジスタ８２に設定されてある値を減算せず、初期値の線幅を減算器８４からの出力とする。
【０１００】
比較器８６は、レジスタ５３より入力された線幅の初期値と閾値１とを比較して、比較した結果をセレクタ８８及びセレクタ８９に入力する。同様に比較器８７は、レジスタ５３より入力された線幅の初期値と閾値２（閾値１＜閾値２）とを比較して、比較した結果をセレクタ８８及びセレクタ８９に入力する。
【０１０１】
セレクタ８８は、前記入力された比較結果を基に線幅の初期値が閾値１と閾値２との間の値ならば、レジスタ８１の値を選択して加算器８３へ出力する。同様に、線幅の初期値が閾値１より小さい値ならば、レジスタ８１の値を選択して加算器８３へ出力する。一方、線幅の初期値が閾値２より大きい値ならば、０の値を選択して加算器８３へ出力する。
【０１０２】
セレクタ８９は、前記入力された比較結果を基に線幅の初期値が閾値１と閾値２との間の値ならば、レジスタ８２の値を選択して減算器８４へ出力する。同様に、線幅の初期値が閾値２より大きい値ならば、レジスタ８２の値を選択して減算器８４へ出力する。一方、線幅の初期値が閾値１より小さい値ならば、０の値を選択して減算器８４へ出力する。
【０１０３】
加算器８３、減算器８４、セレクタ８５はそれぞれ図１０の加算器７３、減算器７４、セレクタ７５と同等の機能を有する。
【０１０４】
よって、図１１の線幅演算器５２は、図８のレジスタ５３に設定されてある線幅の初期値と、閾値１と、閾値２（閾値１＜閾値２）とを比較して、初期値として図８のレジスタ５３に設定されてある線幅の値が、初めからある値（閾値２）より太ければ、加算器８３で初期値の線幅の値にレジスタ８１に設定されてある値を加算せず、初期値の線幅の値を加算器８３からの出力とする。
【０１０５】
また、初期値として図８のレジスタ５３に設定されてある線幅の値が、初めからある値（閾値１）より細ければ、減算器８４で初期値の線幅の値からレジスタ８２に設定されてある値を減算せず、初期値の線幅の値を減算器８４からの出力とする。
【０１０６】
初期値として図８のレジスタ５３に設定されてある線幅の値が、適切な線幅の範囲（閾値１以上、閾値２未満）にあるならば、加算器８３で初期値の線幅の値にレジスタ８１の値を加算して加算器８３からの出力とする。また、減算器８４では初期値の線幅の値からレジスタ８２の値を減算して減算器８４からの出力とする。
【０１０７】
以下に図１１の線幅演算器５２の動作例を示す。一例として、閾値１の値を８、閾値２の値を１２、レジスタ８１に設定されている値を５、レジスタ８２に設定されている値を５とする。
【０１０８】
図１１の線幅演算器５２は、図８のレジスタ５３に設定されてある初期値の線幅の値を取得する、例えば一例をして、該取得した値が１０の場合、線幅演算器５２は、比較器８６及び比較器８７を用いて、前記初期値の線幅の値１０と、閾値１の値８及び閾値２の値１２と比較する。セレクタ８８は、前記初期値の値１０が閾値１の値８以上閾値２の値１２未満である場合、レジスタ８１に設定されてある値５を取得して、加算器８３に出力する。また、セレクタ８９は、前記初期値の値１０が閾値１の値８以上閾値２の値１２未満である場合、レジスタ８２に設定されてある値５を取得して、減算器８４に出力する。
【０１０９】
加算器８３は、前記初期値の値１０にセレクタ８８より取得した値５を加算して、値１５をセレクタ８５に出力する。減算器８４は、前記初期値の値１０からセレクタ８９より取得した値５を減算して、値５をセレクタ８５に出力する。
【０１１０】
セレクタ８５には、前記初期値の値１０と、加算器８３が出力した値１５及び減算器８４が出力した値５が入力される。セレクタ８５は、図１０のセレクタ７５と同等の機能を有する。
【０１１１】
また、図８のレジスタ５３に設定されてある初期値の線幅の値が５だった場合、線幅演算器５２は、比較器８６及び比較器８７を用いて、前記初期値の線幅の値５と、閾値１の値８及び閾値２の値１２と比較する。セレクタ８８は、前記初期値の値５が閾値１の値８未満である場合、レジスタ８１に設定されている値５を取得して、加算器８３に出力する。一方、セレクタ８９は、前記初期値の値５が閾値１の値８未満である場合、０を減算器８４に出力する。
【０１１２】
加算器８３は、前記初期値の値５にセレクタ８８より取得した値５を加算して、値１０をセレクタ８５に出力する。減算器８４は、前記初期値の値５からセレクタ８９より取得した値０を減算して、値５をセレクタ８５に出力する。
【０１１３】
セレクタ８８には、前記初期値の値５と、加算器８４が出力した値１０及び減算器８４が出力した値５が入力される。上記と同様セレクタ８８は、図１０のセレクタ７５と同等の機能を有する。
【０１１４】
また、図８のレジスタ５３に設定されている初期値の線幅の値が１５だった場合、線幅演算器５２は、比較器８６及び比較器８７を用いて、前記初期値の線幅の値１５と、閾値１の値８及び閾値２の値１２と比較する。セレクタ８８は、前記初期値の値１５が閾値２の値１２より大きい場合、０の値を加算器８３に出力する。一方、セレクタ８９は、前記初期値の値１５が閾値２の値１２より大きい場合、レジスタ８２に設定されている値５を取得して、減算器８４に出力する。
【０１１５】
加算器８３は、前記初期値の値１５にセレクタ８８より取得した値０を加算して、値１５をセレクタ８５に出力する。減算器８４は、前記初期値の値１５からセレクタ８９より取得した値５を減算して、値１０をセレクタ８５に出力する。
【０１１６】
セレクタ８５には、前記初期値の値１５と、加算器８３が出力した値１５及び減算器８４が出力した値１０が入力される。上記と同様セレクタ８５は、図１０のセレクタ７５と同等の機能を有する。
【０１１７】
（線幅演算器（その３））
図１２に、図８の線幅演算器５２の構成を説明するための図（その３）を示す。図１２は、図８の線幅演算器５２のその他の実施例である。線幅演算器５２は、レジスタ９１と、レジスタ９２と、乗算器９３と、乗算器９４と、セレクタ９５とから構成される。
【０１１８】
図１２の線幅演算器５２は、図１０を用いて説明した「線幅演算器（その１）」に比べて、図１０の加算器７３及び減算器７４が、乗算器９３及び乗算器９４に置き換わっている。
【０１１９】
線幅演算器５２には、図８のレジスタ５３より、所定の線幅が初期値として入力される。
【０１２０】
乗算器９３は、図８のレジスタ５３より取得した線幅の初期値に、レジスタ９１より取得した１を超える値を乗算して得た値をセレクタ９５へ入力する。乗算器９３は、図１０の加算器７３と同様に線幅の値を増加させる機能を有する。
【０１２１】
乗算器９４は、図８のレジスタ５３より取得した線幅の初期値に、レジスタ９２より取得した０より大きく１未満の値を乗算して得た値をセレクタ９５へ入力する。乗算器９４は、図１０の減算器７４と同様に線幅の値を減少させる機能を有する。
【０１２２】
セレクタ９５は、図１０のセレクタ７５と同等の機能を有する。
【０１２３】
以下に図１２の線幅演算器５２の動作例を示す。ここで、一例として図８のレジスタ５３に設定されてある線幅の値を１０、レジスタ９１に設定されている値を１．５、レジスタ９２に設定されている値を０．５とする。
【０１２４】
線幅演算器５２は、図８のレジスタ５３に設定されている線幅の値１０を取得して、乗算器９３を用いてレジスタ９１に設定されている値１．５を、前記線幅の値１０に乗算して、値１５をセレクタ９５に入力する。また、線幅演算器５２は、乗算器９４を用いてレジスタ９２に設定されている値０．５を、前記線幅の値１０に乗算して、値５をセレクタ９５に入力する。
【０１２５】
セレクタ９５には、図８のレジスタ５３に設定されている線幅の値１０と、乗算器９３により乗算された値１５及び乗算器９４により乗算された値５が入力される。セレクタ９５は、図１０のセレクタ７５と同等の機能を有する。
【０１２６】
（線幅演算器（その４））
図１３に、図８の線幅演算器５２の構成を説明するための図（その４）を示す。図１３は、図８の線幅演算器５２のその他の実施例である。線幅演算器５２は、レジスタ１０１と、レジスタ１０２と、乗算器１０３と、乗算器１０４と、セレクタ１０５と、比較器１０６と、比較器１０７と、セレクタ１０８と、セレクタ１０９とから構成されている。
【０１２７】
図１３の線幅演算器５２は、図１１を用いて説明した「線幅演算器（その２）」に比べて、図１１の加算器８３及び減算器８４が、乗算器１０３及び乗算器１０４に置き換わっている。
【０１２８】
図１３の線幅演算器５２は、図８のレジスタ５３に設定されてある線幅の初期値と、閾値１と、閾値２（閾値１＜閾値２）とを比較して、初期値として図８のレジスタ５３に設定されてある線幅が、初めからある値（閾値２）より太ければ、乗算器１０３で初期値の線幅に１を乗算して、初期値の線幅を乗算器１０３からの出力とする。また、初期値として図８のレジスタ５３に設定されてある線幅が、初めからある値（閾値１）より細ければ、乗算器１０４で初期値の線幅に１を乗算して、初期値の線幅を乗算器１０４からの出力とする。
【０１２９】
以下に図１３の線幅演算器５２の動作例を示す。一例として、閾値１の値を８、閾値２の値を１２、レジスタ１０１に設定されている値を１．５、レジスタ１０２に設定されている値を０．５とする。
【０１３０】
図１３の線幅演算器５２は、図８のレジスタ５３に設定されてある初期値の線幅の値を取得する、例えば一例をして、該取得した値が１０だった場合、線幅演算器５２は、比較器１０６及び比較器１０７を用いて、前記初期値の線幅の値１０と、閾値１の値８及び閾値２の値１２と比較する。セレクタ１０８は、前記初期値の値１０が閾値１の値８以上閾値２の値１２未満である場合、レジスタ１０１に設定されてある値１．５を取得して、乗算器１０３に出力する。また、セレクタ１０９は、前記初期値の値１０が閾値１の値８以上閾値２の値１２未満である場合、レジスタ１０２に設定されてある値０．５を取得して、乗算器１０４に出力する。
【０１３１】
乗算器１０３は、前記初期値の値１０にセレクタ１０８より取得した値１．５を乗算して、値１５をセレクタ１０５に出力する。乗算器１０４は、前記初期値の値１０にセレクタ１０９より取得した値０．５を乗算して、値５をセレクタ１０５に出力する。
【０１３２】
セレクタ１０５には、前記初期値の値１０と、乗算器１０３が出力した値１５及び乗算器１０４が出力した値５が入力される。セレクタ１０５は、図１０のセレクタ７５と同等の機能を有する。
【０１３３】
また、図８のレジスタ５３に設定されてある初期値の線幅の値が５だった場合、線幅演算器５２は、比較器１０６及び比較器１０７を用いて、前記初期値の線幅の値５と、閾値１の値８及び閾値２の値１２と比較する。セレクタ１０８は、前記初期値の値５が閾値１の値８未満である場合、レジスタ１０１に設定されている値１．５を取得して、乗算器１０３に出力する。一方、セレクタ１０９は、前記初期値の値５が閾値１の値８未満である場合、１を乗算器１０４に出力する。
【０１３４】
乗算器１０３は、前記初期値の値５にセレクタ１０８より取得した値１．５を乗算して、値７．５をセレクタ１０５に出力する。乗算器１０４は、前記初期値の値５からセレクタ１０９より取得した値１を乗算して、値５をセレクタ１０５に出力する。
【０１３５】
セレクタ１０５には、前記初期値の値５と、乗算器１０３が出力した値７．５及び乗算器１０４が出力した値５が入力される。上記と同様セレクタ１０５は、図１０のセレクタ７５と同等の機能を有する。
【０１３６】
また、図８のレジスタ５３に設定されている初期値の線幅の値が１５だった場合、線幅演算器５２は、比較器１０６及び比較器１０７を用いて、前記初期値の線幅の値１５と、閾値１の値８及び閾値２の値１２と比較する。セレクタ１０８は、前記初期値の値１５が閾値２の値１２より大きい場合、１の値を乗算器１０３に出力する。一方、セレクタ１０９は、前記初期値の値１５が閾値２の値１２より大きい場合、レジスタ１０２に設定されている値０．５を取得して、乗算器１０４に出力する。
【０１３７】
乗算器１０３は、前記初期値の値１５にセレクタ１０８より取得した値１を乗算して、値１５をセレクタ１０５に出力する。乗算器１０４は、前記初期値の値１５にセレクタ１０９より取得した値０．５を乗算して、値７．５をセレクタ１０５に出力する。
【０１３８】
セレクタ１０５には、前記初期値の値１５と、乗算器１０３が出力した値１５及び乗算器１０４が出力した値７．５が入力される。上記と同様セレクタ１０５は、図１０のセレクタ７５と同等の機能を有する。
【０１３９】
（アドレス生成器（その１））
図１４に、図８のアドレス生成器４３の構成を説明するための図を示す。アドレス生成器４３は、ペンダウン判定器１１１と、ペンダウン判定器１１２と、ＡＮＤ回路１１３と、描画座標生成器１１４と、エンコーダ１１５とから構成される。
【０１４０】
アドレス生成器４３には、座標１（始点）と、座標２（終点）と、線幅の値が入力される。ペンダウン判定器１１１は、座標１が筆記中のデータかどうかを判定する。同様にペンダウン判定器１１２は、座標２が筆記中のデータかどうかを判定する。例えば、図６に示した如く、ストロークデータにはペンアップ／ペンダウンの情報を現すデータが含まれているため、ペンダウン判定器１１１及びペンダウン判定器１１２は、筆記中のデータかどうかを判定することができる。
【０１４１】
エンコーダ１１５は、前記両座標が筆記中ならば、有効となり画像メモリ４４へのデータの書き込みが可能となる。前記両座標が筆記中でないならば、無効となって画像メモリ４４へのデータの書き込みはできなくなる。
【０１４２】
描画座標生成器１１４は、座標１、座標２、線幅の値を入力データとして、線を書くべき座標を計算する。
【０１４３】
（描画座標生成器）
図１５は、図１４の描画座標生成器１１４の動作例を説明するための図である。図１５では、座標１と座標２との間を線幅の値３の直線で画像を描く場合を例にとって説明を行う。
【０１４４】
描画座標生成器１１４は、座標１（始点）と座標２（終点）とを直線で結び、通過する座標を算出する（図１５における、点線で描かれた枠線）。前記算出された座標を中心として３×３画素の大きさの領域（図１５における、網掛け部分）の座標を始点（座標１）から終点（座標２）までのすべての通過する座標（図１５における、点線で描かれた枠線）に対して算出し、エンコーダ１１５へ出力する。
【０１４５】
図１４のエンコーダ１１５は、入力された座標の値から書き込むべき画像メモリのアドレスを算出して、画像メモリへ値を書き込むためのアドレスをふる。
【０１４６】
（画像生成器（その２））
図１６は、図５の画像生成器３２の構成を説明するための図（その２）である。画像生成器３２は、領域判定器４１と、メモリ１２１と、アドレス生成器１２２と、画像メモリ４４と、レジスタ４５とから構成されている。ここで、図７の画像作成器３２と同一部分には同一番号を付して説明を省略する。
【０１４７】
図７の画像作成器３２は、ストロークデータの方向に基づいて画像を作成したが、図１６の画像作成器３２は、隣接するストロークデータとの位置関係に基づいて画像を作成する。図１６の画像作成器３２は、線幅の値の変更を、アドレス作成器１２２で行っている。
【０１４８】
メモリ１２１には、画像生成器３２に入力される全てのストロークデータが一旦記憶される。また、必要に応じてアドレス生成器１２２から、メモリ１２１に記憶されているストロークデータが読み出される。
【０１４９】
アドレス生成器１２２は、メモリ１２１に記憶されているストロークデータを読み出して、複数のストロークデータの相対的な位置関係から文字を構成する線幅を決定して、画像メモリ４４に書き込むためのアドレスを生成する。アドレス生成器１２２の詳細は、図１７を用いて後述する。
【０１５０】
画像生成器３２の動作を以下に説明する。画像生成器３２は、領域判定器４１を用いて、入力されたストロークデータのＸ座標、Ｙ座標それぞれの最大値及び最小値を検出し、文字が筆記されている矩形領域を検出する。また、領域判定器４１は、検出した矩形領域の座標をレジスタ４５に転送する。転送された矩形領域の座標は、文字認識器３４で文字認識を行う際に利用される。
【０１５１】
また、画像生成器３２は、領域判定器４１を用いて、入力された全てのストロークデータを、一旦メモリ１２１に保存する。画像生成器３２は、アドレス生成器１２２を用いて、メモリ１２１からストロークデータを読み出して、該読み出したストロークデータと他のストロークデータとの相対的な位置関係から文字を構成する線幅を決定する。アドレス生成器１２２は、決定した線幅の値と、ストロークデータとから、画像メモリ４４に書き込むためのアドレスを生成して、画像メモリ４４に書き込む。
【０１５２】
画像メモリ４４へのストロークデータの書き込みが終了すると、文字認識器３４が動作を開始し、レジスタ４５に格納されているストロークの存在する利用域情報を読み出して、文字認識に必要なデータを画像メモリ４４から読み出して文字認識を行う。
【０１５３】
（アドレス生成器（その２））
図１７は、図１６のアドレス生成器１２２の構成を説明するための図である。アドレス生成器１２２は、データ読み出し器１３０と、ペンダウン判定器１３１と、ペンダウン判定器１３２と、ＡＮＤ回路１３３と、ペンダウン判定器１３４と、ペンダウン判定器１３５と、ＡＮＤ回路１３６と、平行・距離判定器１３７と、レジスタ１３８と、１／３器１３９と、最小値セレクタ１４０と、描画座標生成器１４１と、エンコーダ１４２とから構成されている。
【０１５４】
アドレス生成器１２２は、図６に示されるストロークデータの座標情報、タイムスタンプ情報及びペンアップ／ダウン情報を用いてｉ番目のストロークデータ（座標ｉ１と座標ｉ２）とその他の全てのストロークデータとの位置関係を調べて、ｉ番目のストロークデータの線幅を決定する。また、アドレス生成器１２２は、線幅の決定後、描画する座標を生成して、該生成した座標に応じた画像メモリ４４のアドレスを生成して、画像メモリ４４に値を書き込む。
【０１５５】
データ読み出し器１３０は、図１６に示したメモリ１２１に記憶されているストロークデータを読み出す。ｉ番目のストロークデータ（座標ｉ１と座標ｉ２）と、ｊ番目のストロークデータ（座標ｊ１と座標ｊ２）とが読み出される。
【０１５６】
ペンダウン判定器１３１、１３２、１３４、１３５は、それぞれ座標ｉ１、ｉ２、ｊ１、ｊ２がペンダウン（筆記中）かどうかを調べて全ての座標においてペンダウンであるならば、平行・距離判定器１３７を有効にする。
【０１５７】
平行・距離判定器１３７は、二つのストローク（座標ｉ１から座標ｉ２へのストロークと、座標ｊ１から座標ｊ２へのストローク）が平行かどうかを判定し、平行と判定されたならば、二つのストロークの距離を計算する。平行・距離判定器１３７は、ｉ＝ｊでない全てのｊに対して距離の計算を行って、その内の最小の距離を出力する。平行・距離判定器１３７の詳細は、図１８を用いて後述する。
【０１５８】
１／３器１３９は、平行・距離判定器１３７が出力した二つのストローク間の距離の最小値を１／３にする。最小値セレクタ１４０は、前記１／３にされた距離か、レジスタ１３８に記憶されている線幅の初期値かどちらか小さいほうを選択して取得する。
【０１５９】
描画座標生成器１４１は、最小値セレクタ１４０に選択された線幅と、座標ｉ１と、座標ｉ２とを用いてストローク画像の描画に用いる座標を生成する。なお、描画座標生成器１４１は、図１４の描画座標生成器１１４と同等の機能を有する。
【０１６０】
エンコーダ１４２は、描画座標生成器１４１で生成された座標から画像メモリ４４に書き込むためのアドレスを生成する。
【０１６１】
アドレス生成器１２２の動作例を以下に示す。アドレス生成器１２２は、データ読み出し器１３０を用いてｉ番目のストロークデータ（座標ｉ１と座標ｉ２）と、ｊ番目のストロークデータ（座標ｊ１と座標ｊ２）とを図１６に示したメモリ１２１から読み出す。
【０１６２】
アドレス生成器１２２は、ペンダウン判定器１３１、１３２、１３４、１３５を用いて、前記読み出した座標ｉ１、ｉ２、ｊ１、ｊ２がそれぞれペンダウン（筆記中）かどうかを調べて全ての座標においてペンダウンであるならば、平行・距離判定器１３７を有効にする。
【０１６３】
平行・距離判定器１３７は、二つのストローク（座標ｉ１から座標ｉ２へのストロークと、座標ｊ１から座標ｊ２へのストローク）が平行かどうかを判定し、平行と判定されたならば、二つのストロークの距離を計算する。平行・距離判定器１３７は、ｉ＝ｊでない全てのｊに対して距離の計算を行って、その内の最小の距離を出力する。
【０１６４】
出力された最小の距離は、１／３器１３９によって１／３にされ、最小値セレクタ１４０は、前記１／３にされた距離とレジスタ１３８に記憶されている値とを比較して、小さいほうの値を線幅として描画座標生成器に入力する。
【０１６５】
描画座標生成器１４１は、最小値セレクタ１４０に選択された線幅と、座標ｉ１と、座標ｉ２とを用いてストローク画像の描画に用いる座標を生成する。アドレス生成器１２２は、座標の生成後、エンコーダ１４２を用いて該生成した座標に応じた画像メモリ４４のアドレスを生成して、画像メモリ４４に値を書き込む。
【０１６６】
（平行・距離判定器）
図１８に、図１７の平行・距離判定器１３７の構成を説明するための図を示す。平行・距離判定器１３７は、角度算出器１５１と、角度算出器１５２と、減算器１５３と、比較器１５４と、距離算出器１５５と、距離算出器１５６と、距離算出器１５７と、距離算出器１５８と、最小値算出器１５９と、レジスタ１６０と、比較器１６１と、ＡＮＤ回路１６２とから構成されている。
【０１６７】
角度算出器１５１は、座標ｉ１と、座標ｉ２とを結ぶ直線の傾き（角度）θｉを計算する。同様に角度算出器１５２は、座標ｊ１と、座標ｊ２とを結ぶ直線の傾き（角度）θｊを計算する。角度算出器１５１と、角度算出器１５２とは、図９の角度算出器６１と同等の機能を有する。
【０１６８】
減算器１５３は、前記θｉとθｊとの差分、｜θｉ―θｊ｜を算出する。比較器１５４は、減算器１５３で算出された差分と所定の閾値とを比較する。比較器１５４は、前記差分（｜θｉ―θｊ｜）の方が閾値より小さければ平行を、そうでなければ非平行を表す信号を出力する。
【０１６９】
距離算出器１５５は、座標ｉ１と座標ｊ１との距離を、距離算出器１５６は、座標ｉ１と座標ｊ２との距離を、距離算出器１５７は、座標ｉ２と座標ｊ１との距離を、距離算出器１５８は、座標ｉ２と座標ｊ２との距離をそれぞれ算出する。
【０１７０】
最小値算出器１５９は、前記算出した４つの距離の内、最小の距離を出力する。
【０１７１】
比較器１６１は、最小値算出器１５９より算出された距離の最小値とレジスタ１６０に記憶されている現時点での最小値とを比較する。比較器１６１は、最小値算出器１５９で算出した距離の方がレジスタ１６０の記憶されている値より小さく、且つＡＮＤ回路１６２を用いて平行であるという判定がなされれば、最小値算出器１５９で算出された距離で、レジスタ１６０の値を更新する。レジスタ１６０の値は、平行・距離判定器１３７の出力値となる。
【０１７２】
平行・距離判定器１３７の動作例を以下に示す。平行・距離判定器１３７は、角度算出器１５１を用いて、座標ｉ１と、座標ｉ２とを結ぶ直線の傾き（角度）θｉを計算する。同様に、平行・距離判定器１３７は、角度算出器１５２を用いて、座標ｊ１と、座標ｊ２とを結ぶ直線の傾き（角度）θｊを計算する。
【０１７３】
続いて平行・距離判定器１３７は、減算器１５３を用いて、前記θｉとθｊとの差分、｜θｉ―θｊ｜を算出する。また比較器１５４では、減算器１５３で算出された差分と所定の閾値とを比較する。比較器１５４は、前記差分（｜θｉ―θｊ｜）の方が閾値より小さければ平行を、そうでなければ非平行を表す信号を出力する。
【０１７４】
例えば、閾値を角度５度とした場合、前記θｉとθｊとの差分、｜θｉ―θｊ｜が５度より小さければ、二つのストロークデータは、平行であると判定し、５度以上であれば二つのストロークデータは非平行である判定する。
【０１７５】
また、平行・距離判定器１３７は、距離算出器１５５、１５６、１５７、１５８を用いて、それぞれ、座標ｉ１と座標ｊ１との距離、座標ｉ１と座標ｊ２との距離、座標ｉ２と座標ｊ１との距離、座標ｉ２と座標ｊ２との距離を算出する。続いて、平行・距離判定器１３７は、最小値算出器１５９を用いて前記算出した距離の最小値を出力する。
【０１７６】
平行・距離判定器１３７の動作例を以下に示す。平行・距離判定器１３７は、比較器１６１を用いて、最小値算出器１５９より算出された距離の最小値とレジスタ１６０に記憶されている現時点での最小値とを比較する。比較器１６１は、最小値算出器１５９で算出した距離の方がレジスタ１６０の記憶されている値より小さく、且つＡＮＤ回路１６２を用いて平行であるという判定がなされれば、最小値算出器１５９で算出された算出された距離で、レジスタ１６０の値を更新する。レジスタ１６０の値は、平行・距離判定器１３７の出力値となる。
【０１７７】
（画像作成器における画像作成処理のフローチャート（その１））
以下では、画像生成処理の一例を、フローチャートを用いて説明する。図１９は、図７の画像作成器３２における画像生成処理の一例を、フローチャートを用いて説明するための図である。
【０１７８】
図１９において、ステップＳ１では、図７の画像作成器３２はストロークの始点である座標１を取得する。ステップＳ１に引き続きステップＳ２に進み、ステップＳ２では、図７の画像作成器３２は、ストロークの終点である座標２を取得する。
【０１７９】
ステップＳ２に引き続き、ステップＳ３に進み、ステップＳ３では、図７の領域判定器４１が、前記座標１と前記座標２とのＸ座標、Ｙ座標それぞれの最大値及び最小値を検出し、前記座標１と前記座標２とを包含する矩形領域を算出する。
【０１８０】
ステップＳ３に引き続き、ステップＳ４に進み、ステップＳ４では、図７の線幅変更器３３が、前記座標１と前記座標２とを結ぶ直線の方向に基づいて、線幅を変更する。なお、本ステップの詳細は、図２０を用いて後述する。
【０１８１】
ステップＳ４に引き続き、ステップＳ５に進み、ステップＳ５では、図７のアドレス生成器４３が、前記座標１と、前記座標２と、前記線幅とより、ストローク画像の生成を行う。
【０１８２】
ステップＳ５に引き続き、ステップＳ６に進み、ステップＳ６では、全ての座標に対して処理が終了したかどうかを判定する。処理が終了したと判定すると（ステップＳ６においてＹＥＳ）、ステップＳ７に進み、処理が終了していないと判定すると（ステップＳ６においてＮＯ）、ステップＳ８に進む。
【０１８３】
ステップＳ７では、図７の文字認識装置３４が、文字認識を行って、終了する。ステップＳ８では、前記座標１と前記座標２とを置き換えて前記ステップＳ２からの処理を繰り返す。なお、ステップＳ７は、例えば、「特開平４―２０５５２８１号公報」「文字認識方法」や、「特開平４―４７４８６号公報」「文字認識方法」等の方法を用いて文字認識を行う。
【０１８４】
（線幅変更器における線幅変更処理のフローチャート）
図２０に図８の線幅変更器３３における線幅変更処理（前記ステップＳ４）の一例を、フローチャートを用いて説明するための図を示す。
【０１８５】
図２０において、ステップＳ１１では、図８の方向判定器５１が、ストロークの方向を算出する。なお、本ステップの詳細は、図２１を用いて後述する。
【０１８６】
ステップＳ１１に引き続き、ステップＳ１２に進み、ステップＳ１２では、図８の線幅演算器５２が、前記ステップＳ１１にて算出した方向に基づいて線幅の変更を行う。なお、本ステップの詳細は、図２２、図２３、図２４及び図２５を用いて後述する。
【０１８７】
（方向判定器における方向判定処理のフローチャート）
図２１に、図９の方向判定器５１における方向判定処理（前記ステップＳ１１）の一例を、フローチャートを用いて説明するための図を示す。図２１において、ステップＳ２１では、図９の方向判定器５１が座標１（ｘ１、ｙ１）と、座標２（ｘ２、ｙ２）とを取得する。
【０１８８】
ステップＳ２１に引き続き、ステップＳ２２に進み、ステップＳ２２では、図９の角度算出器６１が、前記ステップＳ２１にて入力された座標１（ｘ１、ｙ１）と、座標２（ｘ２、ｙ２）とを結ぶ直線の角度θを、図９（ｂ）で示した角度算出方法の式を用いて算出する。
【０１８９】
ステップＳ２２に引き続き、ステップＳ２３に進み、ステップＳ２３では、図９の角度変換器６２が、前記ステップＳ２１にて算出した角度θを、図９（ｃ）に示した角度変換表テーブルを用いて傾き度合いθｔ（０〜３の整数値）に変換する。
【０１９０】
（線幅演算器における線幅演算処理のフローチャート（その１））
図２２に、図１０の線幅演算器５２における線幅演算処理（前記ステップＳ１２）の一例を、フローチャートを用いて説明するための図を示す。
【０１９１】
図２２において、ステップＳ３１では、図８のレジスタ５３より、線幅演算器５２に線幅の初期値が入力される。ステップＳ３１に引き続きステップＳ３２に進み、ステップＳ３２では、図８の方向判定器５１より、線幅演算器５２に前記傾き度合いθｔが入力される。
【０１９２】
ステップＳ３２に引き続き、ステップＳ３３に進み、ステップＳ３３では、図１０のセレクタ７５が、前記θｔが０（ゼロ）かどうかを判定する。θｔが０であると判定すると（ステップＳ３３においてＹＥＳ）、ステップＳ３５に進み、θｔが０でないと判定すると（ステップＳ３３においてＮＯ）、ステップＳ３４に進む。
【０１９３】
ステップＳ３４では、図１０の加算器７３が、所定の値を線幅に加算して、前記線幅を増加させて線幅演算処理を終了する。
【０１９４】
ステップＳ３５では、図１０のセレクタ７５が、前記θｔが２かどうかを判定する。θｔが２であると判定すると（ステップＳ３５においてＹＥＳ）、ステップＳ３６に進み、θｔが２でないと判定すると（ステップＳ３５においてＮＯ）、線幅演算処理を終了する。
【０１９５】
ステップＳ３６では、図１０の減算器７４が、前記線幅から所定の値を減算して（減算結果の下限値を１とする）、前記線幅を減少させて線幅演算処理を終了する。
【０１９６】
（線幅演算器における線幅演算処理のフローチャート（その２））
図２３に、図１１の線幅演算器５２における線幅演算処理（前記ステップＳ１２）の他の例を、フローチャートを用いて説明するための図を示す。
【０１９７】
図２３において、ステップＳ４１では、図８のレジスタ５３より、図１１の線幅演算器５２に線幅の初期値が入力される。ステップＳ４１に引き続きステップＳ４２に進み、ステップＳ４２では、図８の方向判定器５１より、図１１の線幅演算器５２に前記傾き度合いθｔが入力される。
【０１９８】
ステップＳ４２に引き続き、ステップＳ４３に進み、ステップＳ４３では、図１１の比較器８６及び比較器８７が、図８のレジスタ５３より取得した線幅の初期値が所定の範囲内（閾値１以上、閾値２以下）にあるかどうかを判定する。前記線幅の初期値が所定の範囲内にあると判定すると（ステップＳ４３においてＹＥＳ）、ステップＳ４４に進み、前記線幅の初期値が所定の範囲内にないと判定すると（ステップＳ４３においてＮＯ）、ステップＳ４８に進む。
【０１９９】
ステップＳ４４では、図１１のセレクタ８５が、前記θｔが０（ゼロ）かどうかを判定する。前記θｔが０であると判定すると（ステップＳ４４においてＹＥＳ）、ステップＳ４５に進み、前記θｔが０でないと判定すると（ステップＳ４４においてＮＯ）、ステップＳ４６に進む。
【０２００】
ステップＳ４５では、加算器８３が、前記線幅に所定の値を加算して、前記線幅を増加させて線幅演算処理を終了する。
【０２０１】
ステップＳ４６では、図１１のセレクタ８５が、前記θｔが２かどうかを判定する。前記θｔが２であると判定すると（ステップＳ４６においてＹＥＳ）、ステップＳ４７に進み、前記θｔが２ではないと判定すると（ステップＳ４６においてＮＯ）、線幅演算処理を終了する。
【０２０２】
ステップＳ４７では、図１１の減算器８４が、前記線幅の初期値から所定の値を減算して、線幅を減少させて線幅演算処理を終了する。
【０２０３】
ステップＳ４８では、比較器８６が、前記線幅の初期値が所定の範囲より大きいかどうかを判定する。前記線幅の初期値が所定の範囲より大きいと判定すると（ステップＳ４８においてＹＥＳ）、ステップＳ４９に進み、前記線幅が所定の範囲より大きくないと判定すると（ステップＳ４８においてＮＯ）、ステップＳ５１に進む。
【０２０４】
ステップＳ４９では、図１１のセレクタ８５が、前記θｔが２かどうかを判定する。前記θｔが２であると判定すると（ステップＳ４９においてＹＥＳ）、ステップＳ５０に進み、前記θｔが２ではないと判定すると（ステップＳ４９においてＮＯ）、線幅演算処理を終了する。
【０２０５】
ステップＳ５０では、図１１の減算器８４が、前記線幅の初期値から所定の値を減算して、線幅を減少させて線幅演算処理を終了する。
【０２０６】
ステップＳ５１では、図１１のセレクタ８５が、前記θｔが０（ゼロ）かどうかを判定する。前記θｔが０であると判定すると（ステップＳ５１においてＹＥＳ）、ステップＳ５２に進み、前記θｔが０でないと判定すると（ステップＳ５１においてＮＯ）、線幅演算処理を終了する。
【０２０７】
ステップＳ５２では、図１１の加算器８３が、前記線幅の初期値に所定の値を加算して、線幅を増加させて線幅演算処理を終了する。
【０２０８】
（線幅演算器における線幅演算処理のフローチャート（その３））
図２４に、図１２の線幅演算器５２における線幅演算処理（前記ステップＳ１２）の一例を、フローチャートを用いて説明するための図を示す。
【０２０９】
図２４において、ステップＳ６１では、図８のレジスタ５３より、図１２の線幅演算器５２線幅の初期値が入力される。ステップＳ６１に引き続きステップＳ６２に進み、ステップＳ６２では、図８の方向判定器５１より、図１２の線幅演算器５２に前記傾き度合いθｔが入力される。
【０２１０】
ステップＳ６２に引き続き、ステップＳ６３に進み、ステップＳ６３では、図１２のセレクタ前記θｔが０（ゼロ）かどうかを判定する。θｔが０であると判定すると（ステップＳ６３においてＹＥＳ）、ステップＳ６５に進み、θｔが０でないと判定すると（ステップＳ６３においてＮＯ）、ステップＳ６４に進む。
【０２１１】
ステップＳ６４では、図１２の乗算器９３が、１より大きい所定の値を前記線幅の初期値に乗算して、線幅を増加させて線幅演算処理を終了する。
【０２１２】
ステップＳ６５では、図１２のセレクタ９５が、前記θｔが２かどうかを判定する。θｔが２であると判定すると（ステップＳ６５においてＹＥＳ）、ステップＳ６６に進み、θｔが２でないと判定すると（ステップＳ６５においてＮＯ）、線幅演算処理を終了する。
【０２１３】
ステップＳ６６では、図１２の乗算器９４が、１より小さい所定の値を前記線幅の初期値に乗算して（乗算結果の下限値を１とする）、線幅を減少させて線幅演算処理を終了する。
【０２１４】
（線幅演算器における線幅演算処理のフローチャート（その４））
図２５に、図１３の線幅演算器５２における線幅演算処理（前記ステップＳ１２）の一例を、フローチャートを用いて説明するための図を示す。
【０２１５】
図２５において、ステップＳ７１では、図８のレジスタ５３より、図１３の線幅演算器５２に線幅の初期値が入力される。ステップＳ７１に引き続きステップＳ７２に進み、ステップＳ７２では、図８の方向判定器５１より、図１３の線幅演算器５２に前記傾き度合いθｔが入力される。
【０２１６】
ステップＳ７２に引き続き、ステップＳ７３に進み、ステップＳ７３では、図１３の比較器１０６及び比較器１０７が、前記線幅の初期値が所定の範囲内（閾値１以上閾値２以下）にあるかどうかを判定する。前記線幅の初期値が所定の範囲内にあると判定すると（ステップＳ７３においてＹＥＳ）、ステップＳ７４に進み、前記線幅が所定の範囲内にないと判定すると（ステップＳ７３においてＮＯ）、ステップＳ７８に進む。
【０２１７】
ステップＳ７４では、図１３のセレクタ１０５が、前記θｔが０（ゼロ）かどうかを判定する。前記θｔが０であると判定すると（ステップＳ７４においてＹＥＳ）、ステップＳ７５に進み、前記θｔが０でないと判定すると（ステップＳ７４においてＮＯ）、ステップＳ７６に進む。
【０２１８】
ステップＳ７５では、図１３の乗算器１０３が、前記線幅の初期値に１より大きい所定の値を乗算して、線幅を増加させて線幅演算処理を終了する。
【０２１９】
ステップＳ７６では、図１３のセレクタ１０５が、前記θｔが２かどうかを判定する。前記θｔが２であると判定すると（ステップＳ７６においてＹＥＳ）、ステップＳ７７に進み、前記θｔが２ではないと判定すると（ステップＳ７６においてＮＯ）、線幅演算処理を終了する。
【０２２０】
ステップＳ７７では、図１３の乗算器１０４が、前記線幅の初期値に１より小さい所定の値を乗算して、線幅を減少させて線幅演算処理を終了する。
【０２２１】
ステップＳ７８では、図１３の比較器１０７が、前記線幅の初期値が所定の範囲（閾値２）より大きいかどうかを判定する。前記線幅が所定の範囲より大きいと判定すると（ステップＳ７８においてＹＥＳ）、ステップＳ７９に進み、前記線幅が所定の範囲より大きくないと判定すると（ステップＳ７８においてＮＯ）、ステップＳ８１に進む。
【０２２２】
ステップＳ７９では、図１３のセレクタ１０５が、前記θｔが２かどうかを判定する。前記θｔが２であると判定すると（ステップＳ７９においてＹＥＳ）、ステップＳ８０に進み、前記θｔが２ではないと判定すると（ステップＳ７９においてＮＯ）、線幅演算処理を終了する。
【０２２３】
ステップＳ８０では、図１３の乗算器１０４が、前記線幅に１より小さい所定の値を乗算して、前記線幅を減少させて線幅演算処理を終了する。
【０２２４】
ステップＳ８１では、図１３のセレクタ１０５が、前記θｔが０（ゼロ）かどうかを判定する。前記θｔが０であると判定すると（ステップＳ８１においてＹＥＳ）、ステップＳ８２に進み、前記θｔが０でないと判定すると（ステップＳ８１においてＮＯ）、線幅演算処理を終了する。
【０２２５】
ステップＳ８２では、図１３の乗算器１０３が、前記線幅の初期値に１より大きい所定の値を乗算して、前記線幅を増加させて線幅演算処理を終了する。
【０２２６】
（アドレス生成器におけるストローク画像生成処理のフローチャート）
図２６に図１４のアドレス生成器４３におけるストローク画像生成処理（前記ステップＳ５）の一例を、フローチャートを用いて説明するための図を示す。
【０２２７】
図２６において、ステップＳ９１では、ペンダウン判定器１１１とペンダウン判定器１１２とが前記座標１と前記座標２とが共にペンダウン（筆記中）であるかどうかを判定する。ペンダウンであると判定すると（ステップＳ９２においてＹＥＳ）、ステップＳ９２に進み、ペンダウンでないと判定すると（ステップＳ９２においてＮＯ）、ストローク画像生成処理を終了する。
【０２２８】
ステップＳ９２では、描画座標生成器１１４が描画座標を生成する。ステップＳ９２に引き続いて、ステップＳ９３に進み、ステップＳ９３では、エンコーダ１１５が、前記ステップＳ９２において生成した座標の値から画像メモリ４４に書き込むべきアドレスを算出して、アドレスをふる。
【０２２９】
ステップＳ９３に引き続いて、ステップＳ９４に進み、ステップＳ９４では、前記ステップＳ９３においてふったアドレスに値を書き込む。
【０２３０】
（画像生成器における画像生成処理のフローチャート（その２））
図２７に、図１６の画像生成器３２における画像生成処理の一例を、フローチャートを用いて説明するための図を示す。
【０２３１】
図２７において、ステップＳ１０１では、図１６の領域判定器４１が、ストロークデータから、全座標のＸ座標及びＹ座標の最小値、最大値を求める。
【０２３２】
ステップＳ１０１に引き続き、ステップＳ１０２に進み、ステップＳ１０２では、図１６の領域判定器４１が、前記ステップＳ１０１において算出した全座標データを前記メモリ１２１に一旦保存する。
【０２３３】
ステップＳ１０２に引き続き、ステップＳ１０３に進み、ステップＳ１０３では、図１６のアドレス生成器１２２が、前記ステップＳ１０２において、保存した全画像データを読み出して、ストローク画像の生成を行う。
【０２３４】
ステップＳ１０３に引き続き、ステップＳ１０４に進み、ステップＳ１０４では、図１６の文字認識装置３４が、前記ステップＳ１０３において作成したストローク画像の文字認識を行う。なお、ステップＳ１０４における文字認識は上述した如く、「特開平　４―２０５５２８１号公報」又は「特開平　４―４７４８６号公報」等の記載されている方法を用いて行う。
【０２３５】
（アドレス生成器におけるストローク画像生成処理のフローチャート）
図２８に図１７のアドレス生成器１２２におけるストローク画像生成処理（前記ステップＳ１０３）の一例を、フローチャートを用いて説明するための図を示す。
【０２３６】
図２８において、ステップＳ１１１では、変数ｉに１を代入する。ステップＳ１１１に引き続き、ステップＳ１１２に進み、ステップＳ１１２では、図１７のデータ読み出し器１３０が、メモリ１２１に記憶されているｉ番目と（ｉ＋１）番目の座標データ（ストローク１）を読み出す。
【０２３７】
ステップＳ１１２に引き続き、ステップＳ１１３に進み、ステップＳ１１３では、図１７のペンダウン判定器１３１とペンダウン判定器１３２とが、前記読み出したｉ番目の座標と、（ｉ＋１）番目の座標とが共にペンダウン（筆記中）であるかどうかを判定する。共にペンダウンであると判定すると（ステップＳ１１３においてＹＥＳ）、ステップＳ１１６に進み、どちらか一方でもペンダウンでないと判定すると（ステップＳ１１３においてＮＯ）、ステップＳ１１４に進む。
【０２３８】
ステップＳ１１４では、図１７の描画座標生成器１４１が、処理すべき前記ストローク１の画像生成処理が終了したかどうかを判定する。終了したと判定すると（ステップＳ１１４においてＹＥＳ）、ストローク画像生成処理を終了して、終了していないと判定すると（ステップＳ１１４においてＮＯ）、ステップＳ１１５に進む。ステップＳ１１５では、変数ｉをインクリメントして、前記ステップＳ１１２からの処理を再び繰り返す。
【０２３９】
ステップＳ１１６では、変数ｊに１を代入する。ステップＳ１１６に引き続きステップＳ１１７に進み、ステップＳ１１７では、図１７のデータ読み出し器１３０が、図１６のメモリ１２１に記憶されているｉ＝ｊでないｊ番目と（ｊ＋１）番目の座標データ（ストローク２）を読み出す。
【０２４０】
ステップＳ１１７に引き続き、ステップＳ１１８に進み、ステップＳ１１８では、図１７のペンダウン判定器１３４と、ペンダウン判定器１３５とが、前記読み出したｊ番目の座標と、（ｊ＋１）番目の座標とが共にペンダウン（筆記中）であるかどうかを判定する。共にペンダウンであると判定すると（ステップＳ１１８においてＹＥＳ）、ステップＳ１１９に進み、どちらか一方でもペンダウンでないと判定すると（ステップＳ１１８においてＮＯ）、ステップＳ１２１に進む。
【０２４１】
ステップＳ１１９では、図１７の平行・距離判定器１３７が、前記ストローク１と前記ストローク２とが平行かどうかを判定する。平行であると判定すると（ステップＳ１１９においてＹＥＳ）、ステップＳ１２０に進み、平行でないと判定すると（ステップＳ１１９においてＮＯ）、ステップＳ１２１に進む。
【０２４２】
ステップＳ１２０では、図１７の平行・距離判定器１３７が、前記ストローク１と前記ストローク２との距離を算出して、ストローク１と他のストロークとの最小距離の更新を行う。
【０２４３】
ステップＳ１２１では、処理すべき前記ストローク２の画像生成処理が終了したかどうかを判定する。終了したと判定すると（ステップＳ１２１においてＹＥＳ）、ステップＳ１２３に進み、終了していないと判定すると（ステップＳ１２１においてＮＯ）、ステップＳ１２２に進む。ステップＳ１２２では、変数ｊをインクリメントして、前記ステップＳ１１７からの処理を再び繰り返す。
【０２４４】
ステップＳ１２３では、図１７の１／３器１３９が、線幅を前記ストローク１と他のストロークとの最小距離の１／３とする。ここで、前記ストローク１に平行なストロークが存在しない場合は、前記ステップＳ１２０を実行していないので、最小距離を算出することができないが、図１７のレジスタ１３８等に予め所定の値を最小距離の初期値として設定しておくことで、この値を最小距離とすることができる。
【０２４５】
ステップＳ１２３に引き続き、ステップＳ１２４に進み、ステップＳ１２４では、図１７の描画座標生成器１４１が、前記ストローク１の描画座標を生成する。ステップＳ１２４に引き続き、ステップＳ１２５に進み、ステップＳ１２５では、図１７のエンコーダ１４２が、前記ステップＳ１２３にて生成した描画座標から、画像メモリ４４に書き込むためのアドレスを生成する。
【０２４６】
ステップＳ１２５に引き続き、ステップＳ１２６に進み、ステップＳ１２６では、図１７のエンコーダ１４２が、前記ステップＳ１２５で生成したアドレスにストローク画像を書き込む。
【０２４７】
ステップＳ１２６に引き続き、ステップＳ１２７に進み、ステップＳ１２７では、図１７の描画座標生成器１４１が、処理すべき前記ストローク１の画像生成処理が終了したかどうかを判定する。終了したと判定すると（ステップＳ１２７においてＹＥＳ）、ストローク画像生成処理を終了して、終了していないと判定すると（ステップＳ１２７においてＮＯ）、前記ステップＳ１１５に進む。
【０２４８】
（平行・距離判定器における平行判定処理のフローチャート）
図２９に、図１８の平行・距離判定器１３７における平行判定処理（前記ステップＳ１２０）の一例を、フローチャートを用いて説明するための図を示す。
【０２４９】
図２９において、ステップＳ１３１では、図１８の平行・距離判定器１３７が、座標ｉと座標（ｉ＋１）とを取得する。ステップＳ１３１に引き続き、ステップＳ１３２に進み、ステップＳ１３２では、図１８の角度算出器１５１が、前記ステップＳ１３１において取得した両座標、座標ｉと座標（ｉ＋１）とを結ぶ直線の傾き（角度）θｉを算出する。なお、角度θｉは、図９（ｂ）で示した角度算出方法の式を用いて算出する。
【０２５０】
ステップＳ１３２に引き続き、ステップＳ１３３に進み、ステップＳ１３３では、図１８の平行・距離判定器１３７が、座標ｊと座標（ｊ＋１）とを取得する。ステップＳ１３３に引き続き、ステップＳ１３４に進み、ステップＳ１３４では、図１８の角度算出器１５２が、前記ステップＳ１３３において取得した両座標、座標ｊと座標（ｊ＋１）とを結ぶ直線の傾き（角度）θｊを算出する。なお、角度θｊも同様に、図９（ｂ）で示した角度算出方法の式を用いて算出する。
【０２５１】
ステップＳ１３４に引き続き、ステップＳ１３５に進み、ステップＳ１３５では、図１８の減算器１５３が、前記角度θｉと、前記角度θｊとの角度差｜θｉ−θｊ｜を算出する。
【０２５２】
ステップＳ１３５に引き続き、ステップＳ１３６に進み、ステップＳ１３６では、図１８の比較器１５４が、前記ステップＳ１３５にて算出した前記角度差｜θｉ−θｊ｜が所定の角度より小さいかどうかを判定する。角度より小さいと判定すると（ステップＳ１３６においてＹＥＳ）、前記２つの直線は平行であるとし、角度より大きいと判定すると（ステップＳ１３６においてＮＯ）、前記２つの直線は非平行であるとする。
【０２５３】
（平行・距離判定器における距離算出処理のフローチャート）
図３０に、図１８の平行・距離判定器１３７における距離算出処理（前記ステップＳ１２０）の一例を、フローチャートを用いて説明するための図を示す。
【０２５４】
図３０において、ステップＳ１４１では、図１８の平行・距離判定器１３７が、座標ｉと座標（ｉ＋１）とを取得する。ステップＳ１４１に引き続き、ステップＳ１４２に進み、ステップＳ１４２では、図１８の平行・距離判定器１３７が、座標ｊと座標（ｊ＋１）とを取得する。
【０２５５】
ステップＳ１４２に引き続き、ステップＳ１４３に進み、ステップＳ１４３では、図１８の距離算出器１５５が、前記座標ｉと前記座標ｊとの距離を計算する。ステップＳ１４３に引き続き、ステップＳ１４４に進み、ステップＳ１４４では、図１８の距離算出器１５６が、前記座標ｉと前記座標（ｊ＋１）との距離を計算する。ステップＳ１４４に引き続き、ステップＳ１４５に進み、ステップＳ１４５では、図１８の距離算出器１５７が、前記座標（ｉ＋１）と前記座標ｊとの距離を計算する。ステップＳ１４５に引き続き、ステップＳ１４６に進み、ステップＳ１４６では、図１８の距離算出器１５８が、前記座標（ｉ＋１）と前記座標（ｊ＋１）との距離を計算する。
【０２５６】
ステップＳ１４６に引き続き、ステップＳ１４７に進み、ステップＳ１４７では、図１８の最小値算出器１５９が、前記それぞれ計算した４つの距離の内、最小値を算出する。
【０２５７】
ステップＳ１４７に引き続き、ステップＳ１４８に進み、ステップＳ１４８では、図１８の比較器１６１が、前記ステップＳ１４７において算出した距離の最小値と、図１８のレジスタ１６０に記憶されている現時点での最小値とを比較する。前記ステップＳ１４７において算出した距離の最小値の方が小さいと判断すると（ステップＳ１４８においてＹＥＳ）、ステップＳ１４９に進み、レジスタ１６０に記憶されている現時点での最小値の方が小さいと判断すると（ステップＳ１４８においてＮＯ）、距離算出処理を終了する。
【０２５８】
ステップＳ１４９では、図１８の比較器１６１が、前記ステップＳ１４７において算出した距離の最小値を、レジスタ１６０に代入して、レジスタ１６０の値を更新する。
【０２５９】
【発明の効果】
上述の如く、本発明によれば、精度の高い文字認識を行うことができる。
【０２６０】
【図面の簡単な説明】
【図１】ビットマップデータ読み取り方式による従来の文字認識装置の構成図である。
【図２】時系列座標データ読み取り方式による従来の文字認識装置の構成図である。
【図３】手書きした座標データを基に文字画像を作成して文字認識させる一例を「加」の文字を用いて説明するための図である。
【図４】手書きした座標データを基に文字画像を作成して文字認識させる一例を「東」の文字を用いて説明するための図である。
【図５】本発明による文字認識装置の一例を示す図である。
【図６】ストロークデータのフォーマットを示す図である。
【図７】画像生成器の構成を説明するための図（その１）である。
【図８】線幅変更器の構成を説明するための図である。
【図９】方向判定器の詳細な説明をするための図である。
【図１０】線幅演算器の構成を説明するための図（その１）である。
【図１１】線幅演算器の構成を説明するための図（その２）である。
【図１２】線幅演算器の構成を説明するための図（その３）である。
【図１３】線幅演算器の構成を説明するための図（その４）である。
【図１４】アドレス生成器の構成を説明するための図（その１）である。
【図１５】描画座標生成器の動作例を説明するための図である。
【図１６】画像生成器の構成を説明するための図（その２）である。
【図１７】アドレス生成器の構成を説明するための図（その２）である。
【図１８】平行・距離判定器の構成を説明するための図である。
【図１９】画像生成器における画像生成処理の一例を、フローチャートを用いて説明するための図である。
【図２０】線幅変更器における線幅変更処理（ステップＳ４）の一例を、フローチャートを用いて説明するための図である。
【図２１】方向判定器における方向判定処理（ステップＳ１１）の一例を、フローチャートを用いて説明するための図である。
【図２２】線幅演算器における線幅演算処理（ステップＳ１２）の一例を、フローチャートを用いて説明するための図（その１）である。
【図２３】線幅演算器における線幅演算処理（ステップＳ１２）の一例を、フローチャートを用いて説明するための図（その２）である。
【図２４】線幅演算器における線幅演算処理（ステップＳ１２）の一例を、フローチャートを用いて説明するための図（その３）である。
【図２５】線幅演算器における線幅演算処理（ステップＳ１２）の一例を、フローチャートを用いて説明するための図（その４）である。
【図２６】アドレス生成器におけるストローク画像生成処理（ステップＳ５）の一例を、フローチャートを用いて説明するための図である。
【図２７】画像生成器における画像生成処理の一例を、フローチャートを用いて説明するための図である。
【図２８】アドレス生成器におけるストローク画像生成処理（ステップＳ１０３）の一例を、フローチャートを用いて説明するための図である。
【図２９】平行・距離判定器における平行判定処理（ステップＳ１２０）の一例を、フローチャートを用いて説明するための図である。
【図３０】平行・距離判定器における距離算出処理（ステップＳ１２０）の一例を、フローチャートを用いて説明するための図である。
【符号の説明】
１０　　文字認識装置
１１　　手書き入力装置
１２　　通信部
１３　　画像形成部
１４　　文字認識部
１５　　蓄積部
２０　　文字認識装置
２１　　手書き入力装置
２２　　通信部
２３　　文字認識部
２４　　蓄積部
３０　　文字認識装置
３１　　画像作成器
３２　　画像生成器
３３　　線幅変更器
３４　　文字認識器
３５　　蓄積部
４１　　領域判定器
４２　　バッファ
４３　　アドレス生成器
４４　　画像メモリ
４５　　レジスタ
５１　　方向判定器
５２　　線幅演算器
５３　　レジスタ
６１　　角度算出器
６２　　角度変換器
７１　　レジスタ
７２　　レジスタ
７３　　加算器
７４　　減算器
７５　　セレクタ
８１　　レジスタ
８２　　レジスタ
８３　　加算器
８４　　減算器
８５　　セレクタ
８６　　比較器
８７　　比較器
８８　　セレクタ
８９　　セレクタ
９１　　レジスタ
９２　　レジスタ
９３　　乗算器
９４　　乗算器
９５　　セレクタ
１０１　　レジスタ
１０２　　レジスタ
１０３　　乗算器
１０４　　乗算器
１０５　　セレクタ
１０６　　比較器
１０７　　比較器
１０８　　セレクタ
１０９　　セレクタ
１１１　　ペンダウン判定器
１１２　　ペンダウン判定器
１１３　　ＡＮＤ回路
１１４　　描画座標生成器
１１５　　エンコーダ
１２１　　メモリ
１２２　　アドレス生成器
１３０　　データ読み出し器
１３１　　ペンダウン判定器
１３２　　ペンダウン判定器
１３３　　ＡＮＤ回路
１３４　　ペンダウン判定器
１３５　　ペンダウン判定器
１３６　　ＡＮＤ回路
１３７　　平行・距離判定器
１３８　　レジスタ
１３９　　１／３器
１４０　　最小値セレクタ
１４１　　描画座標生成器
１４２　　エンコーダ
１５１　　角度算出器
１５２　　角度算出器
１５３　　減算器
１５４　　比較器
１５５　　距離算出器
１５６　　距離算出器
１５７　　距離算出器
１５８　　距離算出器
１５９　　最小値算出器
１６０　　レジスタ
１６１　　比較器
【図１】
2004086256.tif 000003
【図２】
2004086256.tif 000004
【図３】
2004086256.tif 000005
【図４】
2004086256.tif 000006
【図５】
2004086256.tif 000007
【図６】
2004086256.tif 000008
【図７】
2004086256.tif 000009
【図８】
2004086256.tif 000010
【図９】
2004086256.tif 000011
【図１０】
2004086256.tif 000012
【図１１】
2004086256.tif 000013
【図１２】
2004086256.tif 000014
【図１３】
2004086256.tif 000015
【図１４】
2004086256.tif 000016
【図１５】
2004086256.tif 000017
【図１６】
2004086256.tif 000018
【図１７】
2004086256.tif 000019
【図１８】
2004086256.tif 000020
【図１９】
2004086256.tif 000021
【図２０】
2004086256.tif 000022
【図２１】
2004086256.tif 000023
【図２２】
2004086256.tif 000024
【図２３】
2004086256.tif 000025
【図２４】
2004086256.tif 000026
【図２５】
2004086256.tif 000027
【図２６】
2004086256.tif 000028
【図２７】
2004086256.tif 000029
【図２８】
2004086256.tif 000030
【図２９】
2004086256.tif 000031
【図３０】
2004086256.tif 000032