(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
まず、本実施の形態を説明する前に、その前提又は本実施の形態を利用する画像処理装置について説明する。なお、この説明は、本実施の形態の理解を容易にすることを目的とするものである。
手書き文字又は活字文字、例えば、ホワイトボードや、ノート、印字した紙等を撮影した画像を文字認識し、認識した文字をPDF(Portable Document Format)、ワープロ文書等において活字に置き換える清書機能がある。
この清書機能によってユーザーの視認性や文字検索性、また再利用性が高まるが、自由に記載された文字列を認識して、活字(文字認識結果の文字を描画した文字画像)で置き換える場合、文字列の始点から活字を描画すると位置が合わない文字が出てくる。例えば、
図10(a)に示すように手書き文字の原画像1010を清書化して、原画像1010の文字列の始点(「A」の最左端)から文字認識結果を描画した場合、
図10(b)に示すような清書処理結果画像1020になり、文字列の最後の文字「C」が原画像1010の位置とずれてしまう。
また、原画像の文字(文字認識対象の文字)の位置にそのまま活字を当てはめると、文字同士が重なり合ってしまう場合がある。例えば、
図10(a)に示すように原画像1010を清書化して、原画像1010の文字列内の各文字の位置に、文字認識した活字を埋め込む清書化を行うと、
図10(c)に示すように、文字「C」の位置へ文字「B」が入り込み、2文字が重なってしまう。
また、原画像の各文字矩形の大きさを用いて、活字の文字サイズを決定すると、
図10(a)の例に示す手書きの「A」と「B」のような場合、1つの文字列内の文字であるにもかかわらず、置き換えた活字の文字サイズが異なることになる。
【0015】
以下、図面に基づき本発明を実現するにあたっての好適な各種の実施の形態の例を説明する。
<第1の実施の形態>
図1は、第1の実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア(コンピュータ・プログラム)、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム(コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム)、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するの意である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、1モジュールを1プログラムで構成してもよいし、複数モジュールを1プログラムで構成してもよく、逆に1モジュールを複数プログラムで構成してもよい。また、複数モジュールは1コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって1モジュールが複数コンピュータで実行されてもよい。なお、1つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続(データの授受、指示、データ間の参照関係等)の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じて定まることの意を含めて用いる。「予め定められた値」が複数ある場合は、それぞれ異なった値であってもよいし、2以上の値(もちろんのことながら、全ての値も含む)が同じであってもよい。また、「Aである場合、Bをする」という意味を有する記載は、「Aであるか否かを判断し、Aであると判断した場合はBをする」の意味で用いる。ただし、Aであるか否かの判断が不要である場合を除く。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク(一対一対応の通信接続を含む)等の通信手段で接続されて構成されるほか、1つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」(社会システム)にすぎないものは含まない。
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、RAM(Random Access Memory)、外部記憶媒体、通信回線を介した記憶装置、CPU(Central Processing Unit)内のレジスタ等を含んでいてもよい。
【0016】
第1の実施の形態である画像処理装置100は、文字認識結果の文字画像を描画する清書処理を行うものであって、
図1の例に示すように、フォント情報決定モジュール110、フォント描画モジュール120、フォント重なり検出モジュール130、フォント描画モジュール140を有している。
なお、清書後の文字列内の文字の大きさ(以下、フォントサイズともいう)は、1つの文字列内の文字についてフォントサイズは同じとする。
【0017】
フォント情報決定モジュール110は、フォント描画モジュール120、フォント重なり検出モジュール130、フォント描画モジュール140と接続されている。フォント情報決定モジュール110は、文字列情報106、文字コード・文字矩形座標108を受け付け、フォント描画モジュール120にフォントサイズ・フォントタイプ・文字位置112を渡し、フォント重なり検出モジュール130より重なり情報132を受け取り、フォント描画モジュール140に清書フォントサイズ・フォントタイプ・文字位置138を渡す。
文字列情報106は、文字認識装置の出力情報であり、内容は手書き文字画像又は活字文字画像に対する文字認識結果であり、文字コード・文字矩形座標108を含む。つまり、文字列毎に、各文字画像(1文字分の文字画像)の文字コード、各文字画像(認識対象の文字画像)を囲む外接矩形の位置が含まれている。また、これら以外の情報(例えば、各文字の色を示す情報、認識した文字画像そのもの等)を含んでいてもよい。なお、文字列とは、横書きの場合は1行を指し、縦書きの場合は1列を指す。また、文字コード・文字矩形座標108は文字列情報106と同じデータであってもよい。例えば、文字列情報106は文字情報テーブル200のようなデータ構造であってもよい。
図2は、文字情報テーブル200のデータ構造例を示す説明図である。文字情報テーブル200は、文字列毎に文字コード欄210、文字矩形座標欄220の組を文字数分だけ有している。文字コード欄210は、文字認識結果である文字コードを記憶している。文字矩形座標欄220は、その文字コードに対応する文字画像(認識対象の文字画像)の外接矩形の位置を記憶している。なお、文字認識装置は、文字画像の認識のほかに、オンライン文字認識を行うものであってもよい。
【0018】
フォント情報決定モジュール110は、文字認識結果である文字コード・文字矩形座標108を受け付ける。そして、文字認識結果の文字画像同士が重なり合う場合は、その文字画像が重ならないように、描画する文字画像の大きさを決定する。そのために、「文字認識結果の文字画像同士が重なるか否か」の判断を行う。その判断は、文字認識結果の文字コードに対応する文字画像を、原文字画像の位置に描画して、その文字画像同士が重なり合うか否かによって判断する。なお、「文字コードに対応する文字画像」とは、原文字画像の位置に文字コードの文字画像を描画することである。ただし、この描画は、実際に描画してもよいし、実際には描画せずに、その描画を行ったとした場合の文字画像の外接矩形を生成して、重なりを判断するようにしてもよい。この判断のために、フォント情報決定モジュール110は、フォント描画モジュール120、フォント重なり検出モジュール130を用いる。フォント描画モジュール120に渡すフォントサイズ・フォントタイプ・文字位置112は、例えば、文字フォント情報テーブル300のようなデータ構造であってもよい。
図3は、文字フォント情報テーブル300のデータ構造例を示す説明図である。文字フォント情報テーブル300は、文字列毎に文字コード欄310、位置座標欄320、フォントサイズ欄330、フォントタイプ欄340の組を文字数分だけを有している。文字コード欄310は、文字認識結果である文字コードを記憶している。位置座標欄320は、その文字コードを描画する位置を記憶している。フォントサイズ欄330は、その文字コードの描画の際のフォントサイズを記憶している。フォントタイプ欄340は、その文字コードの描画の際のフォントタイプを記憶している。フォント情報決定モジュール110が、最初にフォントサイズ・フォントタイプ・文字位置112に渡す場合は、文字コード・文字矩形座標108のデータをそのままフォントサイズ・フォントタイプ・文字位置112に入れて渡せばよい。2回目以降のフォントサイズ・フォントタイプ・文字位置112は、
図5の例を用いて後述するように、文字サイズを小さくしたものにする。なお、フォントタイプは、予め定められたフォントタイプであってもよいし、文字列情報106内に含まれているフォントタイプを用いるようにしてもよい。また、文字サイズと同様に、1つの文字列内のフォントタイプは同じとしてもよい。
また、フォント情報決定モジュール110は、文字サイズを小さくすること、及び文字幅を小さくすることによって、フォント描画モジュール140が描画する文字画像の大きさを小さくするようにしてもよい。
【0019】
フォント描画モジュール120は、フォント情報決定モジュール110、フォント重なり検出モジュール130と接続されている。フォント描画モジュール120は、フォント情報決定モジュール110よりフォントサイズ・フォントタイプ・文字位置112を受け取り、フォント重なり検出モジュール130に文字画像情報122を渡す。フォント描画モジュール120は、フォントサイズ・フォントタイプ・文字位置112にしたがって文字画像を描画し、文字画像情報122を生成して、フォント重なり検出モジュール130に渡す。なお、フォント重なり検出モジュール130に渡す文字画像情報122には、フォントサイズ・フォントタイプ・文字位置112を含めてもよい。なお、フォント描画モジュール120は、処理量を減らすため、重なりの検出を可能にする描画座標情報(文字画像が描かれる座標群)のみを算出し、実際の描画処理は行わなくてもよい。
フォント重なり検出モジュール130は、フォント情報決定モジュール110、フォント描画モジュール120と接続されている。フォント重なり検出モジュール130は、フォント描画モジュール120より文字画像情報122を受け取り、フォント情報決定モジュール110に重なり情報132を渡す。フォント重なり検出モジュール130は、文字画像情報122を検証することによって、その文字列内で文字画像同士が重なり合っているか否かを判断する。その判断結果としての重なり情報132をフォント情報決定モジュール110に渡す。重なり合っているか否かの判断は、対象としている文字画像とその隣にある文字画像との外接矩形が、重なり合っているか否かを判断する。例えば、横書きの場合は、対象としている文字画像の外接矩形の右端の座標が、右隣の文字画像の外接矩形の左端の座標よりも右側にある場合は重なり合っていると判断する。同様に、縦書きの場合は、対象としている文字画像の外接矩形の下端の座標が、下にある文字画像の外接矩形の上端の座標よりも下側にある場合は重なり合っていると判断する。
【0020】
フォント描画モジュール140は、フォント情報決定モジュール110と接続されている。フォント描画モジュール140は、文字列情報106を受け付け、フォント情報決定モジュール110より清書フォントサイズ・フォントタイプ・文字位置138を受け取り、清書文字列142を出力する。フォント描画モジュール140は、フォント情報決定モジュール110によって決定された大きさに応じて、文字認識結果を描画する。具体的には、清書フォントサイズ・フォントタイプ・文字位置138のフォントサイズの各文字を、清書フォントサイズ・フォントタイプ・文字位置138内の文字位置に描画して清書文字列142を生成して出力する。清書文字列142を出力するとは、例えば、プリンタ等の印刷装置で印刷すること、ディスプレイ等の表示装置に表示すること、PDFやワープロ文書等に埋め込むこと、その文書を文書記憶装置へ書き込むこと、メモリーカード等の記憶媒体に記憶すること、他の情報処理装置へ渡すこと等が含まれる。
【0021】
図4は、第1の実施の形態による処理例を示すフローチャートである。
ステップS402では、フォント情報決定モジュール110が、文字コード・文字矩形座標108を受け付ける。
ステップS404では、フォント情報決定モジュール110が、文字コード・文字矩形座標108からフォントサイズ・フォントタイプ・文字位置112を決定する。例えば、文字コード・文字矩形座標108をそのままフォントサイズ・フォントタイプ・文字位置112としてもよい。
ステップS406では、フォント情報決定モジュール110が、フォントサイズ・フォントタイプ・文字位置112をフォント描画モジュール120に渡す。
ステップS408では、フォント描画モジュール120が、フォントサイズ・フォントタイプ・文字位置112にしたがってフォントを描画する。なお、ここでの描画は、実際に文字画像を描画してもよいし、描画する座標だけを算出するだけで、実際には文字画像を描画しなくてもよい。
ステップS410では、フォント描画モジュール120が、描画した文字画像情報122をフォント重なり検出モジュール130に渡す。
ステップS412では、フォント重なり検出モジュール130が、文字画像情報122を解析して、文字の重なりを判定する。前述したように、文字画像の外接矩形を利用すればよい。
【0022】
ステップS414では、フォント重なり検出モジュール130が、判定結果である重なり情報132をフォント情報決定モジュール110に渡す。
ステップS416では、フォント情報決定モジュール110が、フォントが重なるか否かを判断し、重なる場合はステップS418へ進み、それ以外の場合はステップS420へ進む。
ステップS418では、フォント情報決定モジュール110が、以前のフォントサイズ・フォントタイプ・文字位置112からフォントサイズ・フォントタイプ・文字位置112を決定し、ステップS406からの処理を行う。ステップS418等の処理の詳細については、
図5の例に示すフローチャートを用いて後述する。
ステップS420では、フォント情報決定モジュール110が、清書フォントサイズ・フォントタイプ・文字位置138をフォント描画モジュール140に渡す。
ステップS422では、フォント描画モジュール140が、清書フォントサイズ・フォントタイプ・文字位置138にしたがって清書文字列142を生成する。
ステップS424では、フォント描画モジュール140が、清書文字列142を出力する。
【0023】
図5は、第1の実施の形態(フォント情報決定モジュール110)による処理例を示すフローチャートである。
ステップS502では、文字列内で最も縦長が高い文字にフォントサイズを合わせる。この処理は、ステップS418で行ってもよいし、ステップS404で行ってもよい。
ステップS504では、フォント重なり検出モジュール130からの重なり情報132によって文字画像が重なるか否かを判断し、重なる場合はステップS506へ進み、それ以外の場合は処理を終了する(ステップS599)。この処理は、ステップS416と同等のものである。
ステップS506では、フォントサイズを予め定められた値だけ下げる。
ステップS508では、フォントサイズが閾値以下であるか否かを判断し、閾値以下である場合はステップS510へ進み、それ以外の場合はステップS504へ戻る。
【0024】
ステップS510では、フォントタイプを幅が狭いものとする。
ステップS512では、幅の狭いフォントタイプがないか否かを判断し、ない場合はステップS514へ進み、それ以外の場合はステップS502へ戻る。
ステップS514では、文字列情報から同じフォントで文字列矩形内に入るように、アフィン変換で幅を狭くしたフォントを生成する。
なお、ステップS506、S508の処理とステップS510、S512の処理を入れ替えてもよい。
【0025】
<第2の実施の形態>
図6は、第2の実施の形態の構成例についての概念的なモジュール構成図である。
第2の実施の形態である画像処理装置600は、文字認識結果の文字画像を描画する清書処理を行うものであって、
図6の例に示すように、フォント情報決定モジュール610、フォント描画モジュール620、フォント重なり検出モジュール630、文字列周辺探索モジュール640、フォント描画モジュール650を有している。
例えば、
図9(a)に示す原画像910のように、異なる文字列(2つの文字列)同士が近接している場合は、清書化された場合に文字が重なる可能性がある。
図9(a)の例の場合、「C」と「私」の文字画像が重なってしまう。これは、1つの文字列内の重なりだけでは判断できない。
【0026】
フォント情報決定モジュール610は第1の実施の形態のフォント情報決定モジュール110と対応し、この他にフォント描画モジュール620はフォント描画モジュール120と対応し、フォント重なり検出モジュール630はフォント重なり検出モジュール130と対応し、フォント描画モジュール650はフォント描画モジュール140と対応している。第1の実施の形態とは異なる。
フォント情報決定モジュール610は、フォント描画モジュール620、フォント重なり検出モジュール630、文字列周辺探索モジュール640、フォント描画モジュール650と接続されている。フォント情報決定モジュール610は、文字列情報606、文字コード・文字矩形座標608を受け付け、フォント描画モジュール620にフォントサイズ・フォントタイプ・文字位置612、文字列周辺探索モジュール640に文字コード・文字矩形座標608を渡し、フォント重なり検出モジュール630より重なり情報632を受け取り、フォント描画モジュール650に清書フォントサイズ・フォントタイプ・文字位置638を渡す。ここで、フォント情報決定モジュール610は、複数列における文字認識結果である文字コード・文字矩形座標608を受け取る。そして、フォント描画モジュール620に渡すフォントサイズ・フォントタイプ・文字位置612は、対象とする1つの文字列内の文字認識結果を含むものである。複数の文字列における文字認識結果は、文字コード・文字矩形座標608として文字列周辺探索モジュール640に渡す。そして、フォント情報決定モジュール610は、対象とする列の文字認識結果の文字画像と隣り合う列の文字認識結果の文字画像との間で重なり合う場合は、その対象とする列の文字画像と重ならないように隣り合う行の位置を変更する。詳細は、
図8の例に示すフローチャートを用いて後述する。
【0027】
フォント描画モジュール620は、フォント情報決定モジュール610、フォント重なり検出モジュール630と接続されている。フォント描画モジュール620は、フォント情報決定モジュール610よりフォントサイズ・フォントタイプ・文字位置612を受け取り、フォント重なり検出モジュール630に文字画像情報622を渡す。
フォント重なり検出モジュール630は、フォント情報決定モジュール610、フォント描画モジュール620、文字列周辺探索モジュール640と接続されている。フォント重なり検出モジュール630は、フォント描画モジュール620より文字画像情報622を受け取り、フォント情報決定モジュール610に重なり情報632を渡す。
文字列周辺探索モジュール640は、フォント情報決定モジュール610、フォント重なり検出モジュール630と接続されている。文字列周辺探索モジュール640は、フォント情報決定モジュール610より文字コード・文字矩形座標608を受け取り、フォント重なり検出モジュール630に周辺文字情報642を渡す。
文字列周辺探索モジュール640は、フォント情報決定モジュール610から文字コード・文字矩形座標608を受け取って、対象としている文字列と隣り合っている文字列を抽出する。そして、対象としている文字列内の文字と予め定められた距離内に存在する文字が、隣り合っている文字列内に存在しているか否かを判断する。存在している場合は、隣り合っている文字列内の文字情報(フォントサイズ・フォントタイプ・文字位置612と同等の情報)を周辺文字情報642としてフォント重なり検出モジュール630に渡す。フォント重なり検出モジュール630は、周辺文字情報642を受け取った場合は、再度、フォント描画モジュール620に対象としている文字列と隣り合っている文字列内の文字画像を描画させる。フォント描画モジュール620は、対象としている文字列と隣り合っている文字列内の文字画像を描画して、フォント重なり検出モジュール630に渡す。フォント重なり検出モジュール630は、文字列内の文字画像の重なり合いと、対象としている文字列と隣り合っている文字列内の文字画像の重なり合いを検出する。
【0028】
フォント描画モジュール650は、フォント情報決定モジュール610と接続されている。フォント描画モジュール650は、文字列情報606を受け付け、フォント情報決定モジュール610より清書フォントサイズ・フォントタイプ・文字位置638を受け取り、清書文字列652を出力する。例えば、
図9(a)に示した原画像910の文字列情報606を受け付けた場合は、清書文字列652として
図9(b)に示した清書処理結果画像920を出力する。清書処理結果画像920では、2列目の文字列である「私の」は、原画像910と比較するとその位置が下になり、1列目の文字列「ABC」との重なりがない。
【0029】
図7は、第2の実施の形態による処理例を示すフローチャートである。
図4の例に示したフローチャート内の処理と同等のものは、その旨を記す。
ステップS702では、フォント情報決定モジュール610が、文字コード・文字矩形座標608を受け付ける。ステップS402と同等の処理である。
ステップS704では、フォント情報決定モジュール610が、文字コード・文字矩形座標608からフォントサイズ・フォントタイプ・文字位置612を決定する。ステップS404と同等の処理である。
ステップS706では、フォント情報決定モジュール610が、文字コード・文字矩形座標608を文字列周辺探索モジュール640に渡す。つまり、対象としている文字列以外の文字列内の文字情報を渡す。
ステップS708では、フォント情報決定モジュール610が、フォントサイズ・フォントタイプ・文字位置612をフォント描画モジュール620に渡す。ステップS406と同等の処理である。
ステップS710では、フォント描画モジュール620が、フォントサイズ・フォントタイプ・文字位置612にしたがってフォントを描画する。ステップS408と同等の処理である。
ステップS712では、フォント描画モジュール620が、描画した文字画像情報622をフォント重なり検出モジュール630に渡す。ステップS410と同等の処理である。
【0030】
ステップS714では、文字列周辺探索モジュール640が、対象としている文字列の周辺にある文字を探索する。前述したように、隣り合う文字列内の文字との距離を利用する。
ステップS716では、フォント重なり検出モジュール630が、文字画像情報622、周辺文字情報642を解析して、文字の重なりを判定する。フォント重なり検出モジュール630は必要であれば(周辺文字があれば)フォント描画モジュール620に周辺にある文字を描画させて、その描画結果の文字画像情報622を用いる。
ステップS718では、フォント重なり検出モジュール630が、判定結果である重なり情報632をフォント情報決定モジュール610に渡す。ステップS414と同等の処理である。
ステップS720では、フォント情報決定モジュール610が、フォントが重なるか否かを判断し、重なる場合はステップS722へ進み、それ以外の場合はステップS724へ進む。ステップS416と同等の処理である。ステップS722等の処理の詳細については、
図8の例に示すフローチャートを用いて後述する。
ステップS722では、フォント情報決定モジュール610が、以前のフォントサイズ・フォントタイプ・文字位置612からフォントサイズ・フォントタイプ・文字位置612を決定し、ステップS708からの処理を行う。
ステップS724では、フォント情報決定モジュール610が、清書フォントサイズ・フォントタイプ・文字位置638をフォント描画モジュール650に渡す。ステップS420と同等の処理である。
ステップS726では、フォント描画モジュール650が、清書フォントサイズ・フォントタイプ・文字位置638にしたがって清書文字列652を生成する。ステップS422と同等の処理である。
ステップS728では、フォント描画モジュール650が、清書文字列652を出力する。ステップS424と同等の処理である。
【0031】
図8は、第2の実施の形態による処理例を示すフローチャートである。
図5の例に示したフローチャート内の処理と同等のものは、その旨を記す。
ステップS802では、文字列内で最も縦長が高い文字にフォントサイズを合わせる。ステップS502と同等の処理である。
ステップS804では、重なりは周辺文字との重なりがあるか否かを判断し、ある場合はステップS818へ進み、それ以外の場合はステップS806へ進む。重なりの態様としては、(1)1つの文字列内の文字画像同士の重なり合いと、(2)対象としている文字列内の文字画像と隣り合う文字列内の文字画像との重なり、の2つがある。ここでは態様(2)の場合を判断対象としている。
ステップS818では、周辺文字の文字列を対象文字列と重ならないように下げる。具体的には、文字列全体の位置を下に移動するものである。その移動距離は、対象としている文字列内の文字画像と重ならない程度の距離であり、さらに、文字列間の間隔を予め定められた距離とするようにしてもよい。
【0032】
ステップS806では、対象文字列内の文字画像が重なるか否かを判断し、重なる場合はステップS808へ進み、それ以外の場合は処理を終了する(ステップS899)。ここでは重なりの態様(1)の場合を判断対象としている。
ステップS808では、フォントサイズを予め定められた値だけ下げる。ステップS506と同等の処理である。
ステップS810では、フォントサイズが閾値以下であるか否かを判断し、閾値以下である場合はステップS812へ進み、それ以外の場合はステップS806へ戻る。ステップS508と同等の処理である。
ステップS812では、フォントタイプを幅が狭いものとする。ステップS510と同等の処理である。
ステップS814では、幅の狭いフォントタイプがないか否かを判断し、ない場合はステップS816へ進み、それ以外の場合はステップS802へ戻る。ステップS512と同等の処理である。
ステップS816では、文字列情報から同じフォントで文字列矩形内に入るように、アフィン変換で幅を狭くしたフォントを生成する。ステップS514と同等の処理である。
【0033】
図11を参照して、本実施の形態の画像処理装置のハードウェア構成例について説明する。
図11に示す構成は、例えばパーソナルコンピュータ(PC)などによって構成されるものであり、スキャナ等のデータ読み取り部1117と、プリンタなどのデータ出力部1118を備えたハードウェア構成例を示している。
【0034】
CPU(Central Processing Unit)1101は、前述の実施の形態において説明した各種のモジュール、すなわち、フォント情報決定モジュール110、フォント描画モジュール120、フォント重なり検出モジュール130、フォント描画モジュール140、フォント情報決定モジュール610、フォント描画モジュール620、フォント重なり検出モジュール630、文字列周辺探索モジュール640、フォント描画モジュール650等の各モジュールの実行シーケンスを記述したコンピュータ・プログラムにしたがった処理を実行する制御部である。
【0035】
ROM(Read Only Memory)1102は、CPU1101が使用するプログラムや演算パラメータ等を格納する。RAM(Random Access Memory)1103は、CPU1101の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を格納する。これらはCPUバスなどから構成されるホストバス1104により相互に接続されている。
【0036】
ホストバス1104は、ブリッジ1105を介して、PCI(Peripheral Component Interconnect/Interface)バスなどの外部バス1106に接続されている。
【0037】
キーボード1108、マウス等のポインティングデバイス1109は、操作者により操作される入力デバイスである。ディスプレイ1110は、液晶表示装置又はCRT(Cathode Ray Tube)などがあり、各種情報をテキストやイメージ情報として表示する。
【0038】
HDD(Hard Disk Drive)1111は、ハードディスクを内蔵し、ハードディスクを駆動し、CPU1101によって実行するプログラムや情報を記録又は再生させる。ハードディスクには、文字列情報106、文字コード・文字矩形座標108、フォントサイズ・フォントタイプ・文字位置112、文字画像情報122、重なり情報132、清書フォントサイズ・フォントタイプ・文字位置138、清書文字列142等が格納される。さらに、その他の各種のデータ処理プログラム等、各種コンピュータ・プログラムが格納される。
【0039】
ドライブ1112は、装着されている磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体1113に記録されているデータ又はプログラムを読み出して、そのデータ又はプログラムを、インタフェース1107、外部バス1106、ブリッジ1105、及びホストバス1104を介して接続されているRAM1103に供給する。リムーバブル記録媒体1113も、ハードディスクと同様のデータ記録領域として利用可能である。
【0040】
接続ポート1114は、外部接続機器1115を接続するポートであり、USB、IEEE1394等の接続部を持つ。接続ポート1114は、インタフェース1107、及び外部バス1106、ブリッジ1105、ホストバス1104等を介してCPU1101等に接続されている。通信部1116は、通信回線に接続され、外部とのデータ通信処理を実行する。データ読み取り部1117は、例えばスキャナであり、ドキュメントの読み取り処理を実行する。データ出力部1118は、例えばプリンタであり、ドキュメントデータの出力処理を実行する。
【0041】
なお、
図11に示す画像処理装置のハードウェア構成は、1つの構成例を示すものであり、本実施の形態は、
図11に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア(例えば特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)等)で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続しているような形態でもよく、さらに
図11に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、複写機、ファックス、スキャナ、プリンタ、複合機(スキャナ、プリンタ、複写機、ファックス等のいずれか2つ以上の機能を有している画像処理装置)などに組み込まれていてもよい。
【0042】
また、前述の実施の形態の説明において、予め定められた値との比較において、「以上」、「以下」、「より大きい」、「より小さい(未満)」としたものは、その組み合わせに矛盾が生じない限り、それぞれ「より大きい」、「より小さい(未満)」、「以上」、「以下」としてもよい。
【0043】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通などのために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク(DVD)であって、DVDフォーラムで策定された規格である「DVD−R、DVD−RW、DVD−RAM等」、DVD+RWで策定された規格である「DVD+R、DVD+RW等」、コンパクトディスク(CD)であって、読出し専用メモリ(CD−ROM)、CDレコーダブル(CD−R)、CDリライタブル(CD−RW)等、ブルーレイ・ディスク(Blu−ray(登録商標) Disc)、光磁気ディスク(MO)、フレキシブルディスク(FD)、磁気テープ、ハードディスク、読出し専用メモリ(ROM)、電気的消去及び書換可能な読出し専用メモリ(EEPROM(登録商標))、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)、SD(Secure Digital)メモリーカード等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、あるいは無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して
記録されていてもよい。また、圧縮や暗号化など、復元可能であればどのような態様で記録されていてもよい。