(57)【特許請求の範囲】
【請求項１】
文字切り出しアルゴリズムが異なるＮ個の文字切出し部と（但し、Ｎは２以上の整数）、
これらＮ個の文字切出し部が文字読取対象の画像データから切り出す文字を、それぞれ認識し認識結果を出力する文字認識部と、
前記Ｎ個の文字切出し部がそれぞれ切り出した文字中に、互いに文字位置が対応する文字があるか否かを判定し、対応すると判定された文字については、対応する文字それぞれの前記文字認識部での各認識結果から複合的に判定して最終的な認識結果を決める、複合判定部と
を具え、および、
前記複合判定部は、前記文字位置が対応するか否かを判定する前に、同一の前記文字切出し部でそれぞれ切り出された文字および他の文字が重なり合っているか否かを判定し、重なり合う場合には、当該文字の文字位置が、当該他の文字の文字位置と重なり合わない、離間した位置となるように、当該文字および当該他の文字のそれぞれの文字位置を編集すること
を特徴とする文字読取装置。
【請求項２】
請求項１に記載の文字読取装置において、
前記重なり合っているか否かの判定では、同一行内で重なり合っているか否かを判定すること
を特徴とする文字読取装置。
【請求項３】
請求項２に記載の文字読取装置において、
前記複合判定部は、前記同一行内での文字の重なりを判定する前に、前記切り出された文字と、当該文字の属する行とは異なる行に属する文字とが重なり合っているか否かを判定し、かつ、重なり合う場合には、当該文字の文字位置が、当該文字の属する行とは異なる行に属する文字の文字位置と互いに重なり合わない、離間した位置となるように、当該各文字の文字位置を編集すること
を特徴とする文字読取装置。
【請求項４】
請求項２に記載の文字読取装置において、
該文字読取装置は、前記Ｎ個の文字切出し部の各前段に個々に設けられた行切出し部を具え、および、
前記複合判定部は、前記同一行内での文字の重なりを判定する前に、前記切り出された文字と、前記行切出し部でそれぞれ切り出された行であって当該文字の属する行とは異なる行とが重なり合っているか否かを判定し、かつ、重なり合う場合には、当該文字の文字位置が、当該文字の属する行とは異なる行に属する文字の文字位置と互いに重なり合わない、離間した位置となるように、当該文字の文字位置を編集すること
を特徴とする文字読取装置。
【請求項５】
請求項２に記載の文字読取装置において、
該文字読取装置は、前記Ｎ個の文字切り出し部の各前段に個々に設けられた行切出し部を具え、および、
前記複合判定部は、前記同一行内での文字の重なりを判定する前に、前記Ｎ個の行切出し部でそれぞれ切り出された行および他の行が重なり合っているか否かを判定し、重なり合う場合には当該行および他の行のそれぞれの行位置を編集し、該行位置の編集が済んだ行の行位置の情報に基づいて、該行位置の編集が済んだ行中に、互いに行位置が対応する行があるか否かを判定し、かつ、対応すると判定した行それぞれについて、前記文字位置が対応するか否かを判定すること
を特徴とする文字読取装置。
【請求項６】
請求項２に記載の文字読取装置において、
該文字読取装置は、前記画像データから、行よりさらに広い任意の領域をそれぞれ切り出す複数の領域切出し部を具え、
前記複合判定部は、前記同一行内での前記文字の重なりを判定する前に、前記複数の領域切出し部でそれぞれ切り出された領域および他の領域が重なり合っているか否かを判定し、重なり合う場合には当該領域および他の領域のそれぞれの領域位置を編集し、該領域位置の編集が済んだ領域の領域位置の情報に基づいて、該領域位置の編集が済んだ領域中に、互いに領域位置が対応する領域があるか否かを判定し、かつ、対応すると判定した領域それぞれについて、前記文字位置が対応するか否かを判定すること
を特徴とする文字読取装置。
【請求項７】
請求項２に記載の文字読取装置において、
前記複合判定部は、前記文字位置が対応するか否かの判定をしようとする文字の文字位置同士が、マージンを許容する場合も含めて、少しでも重なっている場合に、文字位置が対応すると判定すること
を特徴とする文字読取装置。
【請求項８】
請求項２に記載の文字読取装置において、
前記複合判定部は、前記文字位置が対応するか否かの判定をしようとする文字の一方の文字の文字位置が、マージンを許容する場合も含めて、他方の文字の文字位置に含まれている場合に、文字位置が対応すると判定すること
を特徴とする文字読取装置。
【請求項９】
請求項２に記載の文字読取装置において、
前記複合判定部は、前記文字位置が対応するか否かの判定をしようとする文字の文字位置同士が文字の縦方向および横方向のうちの第１の方向において、マージンを許容する場合も含めて、少しでも重なっており、かつ、文字の縦方向および横方向のうちの第２の方向においてどちらか一方の文字の文字位置が、マージンを許容する場合も含めて、他方の文字の文字位置に含まれる場合に、文字位置が対応すると判定すること
を特徴とする文字読取装置。
【請求項１０】
請求項２に記載の文字読取装置において、
前記複合判定部は、前記文字位置が対応するか否かの判定をしようとする文字の文字位置同士が重なっている面積が、これら文字の一方の文字の面積に対して、マージンを許容する場合も含めて、ある割合範囲の場合に、文字位置が対応すると判定すること
を特徴とする文字読取装置。
【請求項１１】
請求項５に記載の文字読取装置において、
前記複合判定部は、
文字が横書きの場合、
前記行位置が対応するか否かの判定をしようとする行の、行位置同士が行の縦方向で、マージンを許容する場合も含めて、少しでも重なっているか、いずれか一方の行の行位置が他方の行の行位置に、マージンを許容する場合も含めて、行の縦方向で含まれるか、或いは、行位置同士の行の縦方向で重なっている部分の高さが行の縦方向の高さに対して、マージンを許容する場合も含めて、ある割合範囲にあるかの何れかによって、行位置が対応すると判定し、そして、
前記文字位置が対応するか否かの判定をしようとする文字の、文字位置同士が文字の横方向で、マージンを許容する場合も含めて、少しでも重なっているか、いずれか一方の文字の文字位置が文字の横方向で、マージンを許容する場合も含めて、他方の文字の文字位置に含まれるか、或いは、文字位置同士の横方向で重なっている部分の幅がいずれかの文字の横方向の幅に対して、マージンを許容する場合も含めて、ある割合範囲にあるかの何れかによって、文字位置が対応すると判定する、複合判定部であって、および、
文字が縦書きの場合、
前記行位置が対応するか否かの判定をしようとする行の、行位置同士が行の横方向で、マージンを許容する場合も含めて、少しでも重なっているか、いずれか一方の行の行位置が他方の行の行位置に、マージンを許容する場合も含めて、行の横方向で含まれるか、或いは、行位置同士の行の横方向で重なっている部分の幅が行の横方向の幅に対して、マージンを許容する場合も含めて、ある割合範囲にあるかの何れかによって、行位置が対応すると判定し、そして、
前記文字位置が対応するか否かの判定をしようとする文字の、文字位置同士が文字の縦方向で、マージンを許容する場合も含めて、少しでも重なっているか、いずれか一方の文字の文字位置が文字の縦方向で、マージンを許容する場合も含めて、他方の文字の文字位置に含まれるか、或いは、文字位置同士の縦方向で重なっている部分の幅がいずれかの文字の縦方向の高さに対して、マージンを許容する場合も含めて、ある割合範囲にあるかの何れかによって、文字位置が対応すると判定する、
複合判定部であること
を特徴とする文字読取装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、文字読取装置に関する。特に、文字切り出しアルゴリズムが異なる複数の文字切り出し部、およびまたは、文字認識アルゴリズムが異なる複数の文字認識部を具えた文字読取装置によって得られる文字の認識結果から複合的に判断して文字の最終的な認識結果を出力する文字読取装置に関するものである。
【０００２】
【従来の技術】
従来の文字読取装置として、例えば特開平８−２６３５９１号公報に開示された装置がある。
【０００３】
この文字読取装置では、先ず、図２３に示したように、文書画像中の文字画像毎で始点Ｐを見つけ、そして、この始点Ｐから文字の輪郭を辿ることにより、文字を切り出す。なお、図２３においてＬは、１行分の領域を示す（図２４において同じ。）。
【０００４】
この文字読取装置によれば、アルゴリズムの異なる文字認識手法（以下、第１および第２の文字認識手法という。）が用いられる。すなわち、切り出された文字には２つの文字認識手法が適用される。この文字読取装置は、このとき得られる２つの文字認識結果を複合的に判断して最終的な認識結果を出力できる。
【０００５】
【発明が解決しようとする課題】
しかしながら、上記の文字読取装置を用いるときには、図２４（Ａ）に示すように、文字がかすれているため文字が分離されてしまった場合、図２４（Ｂ）に示すように、文書画像に本来の文字以外にノイズ（ゴミ）が含まれてしまった場合、または、図２４（Ｃ）に示すように、隣り合う文字と文字とが接触すると見なされた場合、若しくは、図２４（Ｄ）に示すように、例えば漢字の「小」や平仮名の「い」のようにそもそも文字を構成する部品が分離している文字の場合等において、文字切り出しが正確に行えないことがあった。そのため、誤認識が生じ易いという問題点があった。以下、詳細に説明する。
【０００６】
先ず、図２４（Ａ）は、文字列「ｆｏｒ」中の文字「ｒ」の一部がかすれているため、文字「ｒ」が２文字に分離した文字画像の例を示す図である。この場合、３文字が切り出されて文字認識されるのが理想であるが、上述の従来技術では誤って４文字が切り出される。誤って切り出された文字に第１および第２の文字認識手法を適用して候補文字をそれぞれ得て、これら候補文字から認識結果を決定しても、誤った認識結果しか得られない。
【０００７】
また、図２４（Ｂ）は「ｆｏｒ」という文字列の他にノイズ（ごみ）「・」が含まれた文書画像の例を示す。この場合、ノイズを除去（無視）して３文字として切り出されて文字認識されるのが理想であるが、上述の従来技術では、ノイズ「・」を含む４文字として切り出されてしまう。そのため、ノイズ「・」も認識結果として得られてしまう。
【０００８】
また、図２４（Ｃ）は、「ｆｏｒ」という文字列中の文字「ｏ」と文字「ｒ」とが接触すると見なされた文書画像の例を示す。この場合、文字「ｏ」と文字「ｒ」とを分離して３文字として切り出されるのが理想であるが、上述の従来技術では、２文字として切り出されてしまう。誤って切り出された文字に互いに異なる第１および第２の文字認識手法を適用して候補文字をそれぞれ得て、これら候補文字から認識結果を決定しても、誤った認識結果しか得られない。
【０００９】
また、図２４（Ｄ）は、文字「小」や文字「い」のように文字を構成する部品が分離している文字を含む文字列「小さい」の文書画像の例を示す。この場合、「小」、「さ」、「い」の３文字として切り出されて認識されるのが理想であるが、上述の従来技術では、「ノ」、「｜」、・・の６文字として誤って切り出されてしまう。誤って切り出された文字に第１および第２の文字認識手法を適用して候補文字をそれぞれ得て、これら候補文字から認識結果を決定しても、誤った認識結果しか得られない。
【００１０】
以上のように、従来の文字読取装置は、アルゴリズムが異なる複数の文字認識手法それぞれにより文字を認識したのち、これら各手法による認識結果について複合的に判定して最終的な認識結果を決定する。一般的に言うと、各種の文字認識手法は、それぞれ長所と短所を持つ。そのため、１つの文字認識手法では、正読率を向上させるにも、誤読率を低減させるにも（以下、これらを「文字認識率を高める」と略記する。）限界がある。しかしながら、このように複数の文字認識手法を併用することで、互いの短所を補完して文字認識率を高めることができる。
【００１１】
また、同様なことが文字切り出し手法について当てはまる。すなわち、文字切り出し手法としては様々な手法があるが、それぞれ長所と短所がある。１つの文字切り出し手法では、文字認識率を高めるにも限界がある。そこで、アルゴリズムが異なる複数の文字切り出し手法それぞれで文字を切り出し、これら切り出した文字を認識して認識結果を得て、これら認識結果から複合的に判断して最終的な認識結果を決める手法も考えられる。このようにアルゴリズムが異なる複数の文字切り出し手法を併用する考えを導入した場合、例えば、図２４を用いて説明した上記の問題点も軽減できると考えられる。
【００１２】
従って、アルゴリズムが異なる複数の文字切出し手法を併用し複合的に文字を認識する文字読取装置や、アルゴリズムの異なる複数の文字認識手法を併用して複合的に文字を認識する文字読取装置において、文字認識率をより高める技術が望まれる。
【００１３】
【課題を解決するための手段】
そこで、この発明の文字読取装置は、Ｎ個の文字切出し部と、文字認識部と、複合判定部とを具える。これらＮ個の文字切出し部は、文字切り出しアルゴリズムを異ならせてある。この文字認識部は、Ｎ個の文字切出し部が文字読取対象の画像データから切り出す文字を、それぞれ認識し認識結果を出力する。そして、複合判定部は、Ｎ個の文字切出し部がそれぞれ切り出した文字中に、互いに文字位置が対応する文字が在るか否かを判定し、対応すると判定された文字については、対応する文字それぞれの文字認識部での各認識結果から複合的に判定して最終的な認識結果を決める。なお、この構成は、この出願に係る発明者等の先願である特願平１０−２０２５０６号（未公開）として出願されている。
【００１４】
一方、この出願に係る発明は、以上のような構成（以下第１の構成と称する。）を有する文字読取装置であって、特に前述の複合判定部を次のように構成したものである。
【００１５】
すなわち、この複合判定部は、文字位置の対応判定前に、同一の文字切出し部でそれぞれ切り出された文字および他の文字が重なり合っているか否かを判定し、重なり合う場合には当該文字および当該他の文字のそれぞれの文字位置の編集を行う。
【００１６】
以上の構成を有するこの発明の文字読取装置によれば、２以上の文字切出し部が切り出した文字のうちの、文字位置が対応する文字についてのみ、複合的な認識を行う。なお、互いに文字位置が対応している文字とは、２以上の文字切り出し部が同じように切り出した文字であるといえるので、正規な文字である蓋然性が高い。従って、正規な文字である蓋然性が高い文字に対して、複合的な認識を行えるので、文字認識率を高めることができる。
【００１７】
しかも、この発明の複合判定部は、文字位置の対応判定前に、同一の文字切出し部で切り出された文字間の重なりがあるかどうかについて判定し、重なっている場合には、それぞれの文字位置を編集する。よって、次のような作用効果が得られる。
【００１８】
すなわち、詳細は後述するが、第１の構成によれば、文字読取対象の画像データにおいて文字間に重なりがある場合には、切り出された文字も重なり合うことが多い。そのため、文字位置の対応判定を行うときに文字位置の対応関係を正確に判定できないことがあった。その結果、文字間に重なりがある媒体については文字認識率が低下してしまう。
【００１９】
このような文字間の重なりは、媒体（帳票）が手書きである場合、文字枠内に個々の文字が収まっていない場合、イタリック文字等の斜体文字で記された場合などに顕著となる。
【００２０】
しかしながら、上述のように、切り出された文字のうち互いに重なり合う文字について文字位置を編集しておくと、文字位置の対応判定を精度良く行える。そのため、上述のような文字間の重なりが顕著な媒体に対しても、文字認識率を高めることができる。
【００２１】
【発明の実施の形態】
以下、図面を参照してこの発明の文字読取装置の実施の形態について説明する。しかしながら、説明に用いる各図はこの発明を理解出来る程度に概略的に示してあるにすぎない。また、各図において、同様な構成成分については同一の番号を付して示し、その重複する説明を省略することがある。
【００２２】
１．第１の実施の形態
図１は、第１の実施の形態の文字読取装置１００の構成を示すブロック図である。
【００２３】
この文字読取装置１００は、スキャナ１１０、イメージメモリ１１１、文字領域設定部１２０、第１文字認識エンジン１３０、第２文字認識エンジン１４０および複合判定部１６０を具える。
【００２４】
なお、スキャナ１１０、イメージメモリ１１１および文字領域設定部１２０の一部または全部が、この文字読取装置１００に含まれるものではなく外部装置に含まれる場合があっても良い（以下の他の実施の形態において同じ。）。
【００２５】
スキャナ１１０は、媒体（帳票）を光学的に走査してこの媒体上の画像データ（以下、イメージデータと称することもある。）を読み取る。
【００２６】
イメージメモリ１１１は、スキャナ１１０が読み取ったイメージデータを、格納する。
【００２７】
文字領域設定部１２０は、イメージメモリ１１１に格納されたイメージデータに対して文字領域（複数の文字が記載されている領域であって、読取対象となる領域）を設定、若しくはイメージデータ中から文字領域を抽出する。
【００２８】
文字領域を設定する方法としては、例えば、イメージデータをディスプレイ等（図示せず）に表示し、この表示に対してオペレータが文字領域を設定する方法がある。ただし、これに限られない。また、イメージデータ中から文字領域を抽出する方法としては、例えば、この出願の出願人に係る特開平３−１２６１８１号に開示された方法がある。ただし、これに限られない。
【００２９】
第１文字認識エンジン１３０は、この実施の形態の場合、第１行切出し部１３１と、第１文字切出し部１３２と、第１文字認識部１３３とで構成される。
【００３０】
第１行切出し部１３１は、イメージデータの、文字領域設定部１２０によって設定若しくは抽出された文字領域から、第１の行切り出し手法によって行を切り出す。
【００３１】
第１文字切出し部１３２は、第１行切出し部１３１が切り出した行から、第１の文字切り出し手法によって文字を切り出す。
【００３２】
第１文字認識部１３３は、第１文字切出し部１３２が切り出した文字の位置情報に基づいて、イメージデータから文字パタンを抽出し、さらに第１の文字認識手法によって文字を認識する。
【００３３】
一方、第２文字認識エンジン１４０は、この実施の形態の場合、第２行切出し部１４１と、第２文字切出し部１４２と、第２文字認識部１４３とで構成される。
【００３４】
第２行切出し部１４１は、イメージデータの、文字領域設定部１２０によって設定若しくは抽出された文字領域から、第２の行切り出し手法によって行を切り出す。
【００３５】
第２文字切出し部１４２は、第２行切出し部１４１が切り出した行から、第２の文字切り出し手法によって文字を切り出す。
【００３６】
第２文字認識部１４３は、第２文字切出し部１４２が切り出した文字の位置情報に基づいて、イメージデータから文字パタンを抽出し、さらに第２の文字認識手法によって文字を認識する。
【００３７】
なお、第１の文字切り出し手法および第２の文字切り出し手法は、互いにアルゴリズムが異なる任意の文字切り出し手法とする。例えば特願平６−２６１８８２号（特開平８−１０１８８５号）に開示のように、文字に外接する枠を検出して、その枠から文字ピッチを推定し、このピッチに基づいて文字を切り出す手法や、特開平８−２６３５９１号公報に開示のように、文字の輪郭を辿って文字を切り出す手法など、種々の手法を用いることができる。ただし、これらに限られない。
【００３８】
また、第１の行切り出し手法と第２の行切り出し手法とは、任意好適な方法で良い。然も、第１の行切り出し手法と第２の行切り出し手法とが、同じ場合があっても良い。行切り出し手法としては、例えば、特願平９−２１８９１３号に開示の手法、特開平８−２６３５９１号公報に開示の手法など、種々の手法を用いることができる。ただし、これに限られない。
【００３９】
また、第１の文字認識手法と第２の文字認識手法とは、任意好適な方法で良い。然も、第１の文字認識手法と第２の文字認識手法とが同じ場合があっても良い。文字認識手法としては、例えば、特公昭６０−３８７５６号に開示の手法、特開平８−２６３５９１号公報に開示の手法など、種々の手法を用いることができる。ただし、これらに限られない。
【００４０】
複合判定部１６０は、詳細は後述するが、第１文字認識エンジン１３０によって得られた認識結果（以下、第１の認識結果）と、第２文字認識エンジン１４０によって得られた認識結果（以下、第２の認識結果）とに基づいて、最終的な文字認識結果を決める。
【００４１】
この複合判定部１６０は、複合文字編集部１９０と、複合文字位置判定部１７０と、複合文字認識部１８０とで構成される。
【００４２】
この複合文字編集部１９０は、この実施の形態の場合、第１行内文字編集部１９１と、第２行内文字編集部１９２とで構成される。
【００４３】
第１行内文字編集部１９１は、第１文字切出し部１３２で切り出された文字および他の文字が同一行内で重なり合っているか否かを判定する。重なり合う場合には当該文字および当該他の文字のそれぞれの文字位置を編集する。
【００４４】
第２行内文字編集部１９２は、第２文字切出し部１４２で切り出された文字および他の文字が同一行内で重なり合っているか否かを判定する。重なり合う場合には当該文字および当該他の文字のそれぞれの文字位置を編集する。
【００４５】
複合文字位置判定部１７０は、第１行内文字編集部１９１で文字位置が編集された文字を含む第１文字切出し部１３２で切り出された文字と、第２行内文字編集部１９２で文字位置が編集された文字を含む第２文字切出し部１４２で切り出された文字とのそれぞれの文字について、文字位置が対応する文字を調べ、かつ、対応する文字それぞれの認識結果を、第１文字認識部１３３および第２文字認識部１４３が認識した認識結果の中から抽出し、それを複合文字認識部１８０に出力する。
【００４６】
図２は、文字位置の説明に供する図である。以下、図２を参照して、文字位置につき説明する。図２に示すように、イメージデータの左上を原点とし、横方向をＸ方向、縦方向をＹ方向とした場合、第１文字切出し部１３２が切り出した文字の座標は、左上（ｘｓ１、ｙｓ１）、右下（ｘｅ１、ｙｅ１）で表すことができる。これら（ｘｓ１、ｙｓ１）および（ｘｅ１、ｙｅ１）で囲まれる領域２０１を、例えば、第１文字切出し部１３２が切り出した文字の文字位置とする。同様に、（ｘｓ２、ｙｓ２）および（ｘｅ２、ｙｅ２）で囲まれる領域２０２を、例えば、第２文字切出し部１４２が切り出した文字の文字位置とする。なお、図２は、以下において、注目する文字、行或いは領域若しくはその他の媒体内領域の相対的位置関係を説明するために用いられることもある。そのため、各領域２０１や２０２は、第１文字切出し部１３２および第２文字切出し部１４２が切り出した文字のみを示すものではない。
【００４７】
この複合文字位置判定部１７０は、この実施の形態の場合、文字位置対応判定部１７１と、対応文字抽出部１７２とで構成される。
【００４８】
そして、複合文字位置判定部１７０の文字位置対応判定部１７１は、第１文字切出し部１３２で切り出されかつ互いに重なり合う文字については第１行内文字編集部１９１で位置が編集された文字の文字位置と、第２文字切出し部１４２で切り出されかつ互いに重なり合う文字については第２行内文字編集部１９２で位置が編集された文字の文字位置とから、第１および第２文字認識エンジン１３０、１４０間で文字位置が対応する文字を判定する。なお、この実施の形態では、第１の認識結果の文字位置と、第２の認識結果の文字位置とから、第１および第２文字認識エンジン１３０および１４０がそれぞれ切り出したのち、第１および第２行内文字編集部１９１および１９２がそれぞれ位置編集を済ませた文字間で文字位置が対応するか否かを判定する。文字位置が対応するか否かの判定の方法については、後の動作説明において説明する。
【００４９】
また、複合文字位置判定部１７０の対応文字抽出部１７２は、文字位置対応判定部１７１によって対応すると判定した文字中の、各文字認識エンジン間で文字位置が１対１で対応する文字それぞれの認識結果を、各文字認識エンジンの認識結果中から抽出し、それらを複合文字認識部１８０に出力する。
【００５０】
複合文字認識部１８０は、第１文字認識エンジン１３０で認識した認識結果および第２文字認識エンジン１４０で認識した認識結果中の、文字位置が対応する文字の認識結果から複合的に判定して最終的な認識結果を決める。ただし、文字認識エンジン間で文字位置が対応する文字が無かった文字については、これに限られないが、例えば、リジェクトを出力する。
【００５１】
なお、複合的に判定して最終的な認識結果を決める方法は任意好適な方法で良い。例えば、第１および第２文字認識エンジンがそれぞれ切り出しかつ文字認識して得た認識結果中の文字位置が対応すると判定された文字についての、第１の候補文字同士が同じであった場合に、この第１の候補文字を最終的な認識結果と決める方法を挙げることができる。または、この出願人にかかる特願平１０−９７２３７号で提案している方法を挙げることができる。特願平１０−９７２３７号で提案している方法とは、複数の文字認識部が認識結果として文字コードおよび字形情報を出力する構成とし、最終的な認識結果はこれら文字コードおよび字形情報に基づいて決定するという方法である。
【００５２】
次に、この文字読取装置１００の理解を深めるためにこの装置１００の動作につき説明する。なお、ここでは図１〜図９を主に参照して説明する。
【００５３】
図３は、第１および第２文字切出し部１３２および１４２の動作の説明に供する図である。図４は、第１および第２行内文字編集部１９１および１９２の動作を示すフローチャートである。図５は、第１および第２行内文字編集部１９１および１９２の文字位置を編集した結果の説明に供する図である。図６は、文字位置対応判定部１７１の動作を示すフローチャートである。図７は、文字位置対応判定部において、文字位置が対応しているか否かの判定条件の例の説明に供する図である。図８は、文字位置対応判定の結果の説明に供する図である。図９は、対応文字抽出部１７２の動作を示すフローチャートである。
【００５４】
なお、既に説明したように、媒体（帳票）が手書きである場合、文字枠内に個々の文字が収まっていない場合、イタリック文字等の斜体文字で記された場合などでは切り出された文字同士が互いに重なってしまうことがあるため、文字位置の対応判定は困難となる。この点を特に説明するために、この図３では媒体が手書きである場合を示す。
【００５５】
この文字読取装置１００では、先ず、スキャナ１１０により媒体（図示せず）を走査し、この媒体のイメジデータを取り込む。取り込んだイメージデータをイメージメモリ１１１に格納する。
【００５６】
イメージメモリ１１１に格納したイメージデータに対して、文字領域設定部１２０は、読み取りたい領域（文字領域）を設定する。
【００５７】
図３（Ａ）は、文字読取対象のパタン例３０１を示した図である。ここでは、「小さい」という文字列にごみ（不要なノイズ）「．」が付いてしまったパタンを、文字読取対象のパタン例３０１としてある。
【００５８】
続いて、この文字読取対象のパタン例３０１に対して、第１行切出し部１３１は行の切り出しを行い、第１文字切出し部１３２は、第１行切出し部１３１が切り出した行に対して、文字の切り出しを行う。
【００５９】
図３（Ｂ）は、これら第１行切出し部１３１および第１文字切出し部１３２によって切り出された文字を示した図である。図３（Ｂ）において、Ｌは切り出された行を示し、矩形枠は切り出された文字を示す（図３（Ｃ）において同じ。）。この図３（Ｂ）の場合、ノイズ「．」を除く、「小」、「さ」・・・という４文字が切り出されている。
【００６０】
また、この文字読取対象のパタン例３０１に対して、第２行切出し部１４１は行の切り出しを行い、第２文字切出し部１４２は、第２行切出し部１４１が切り出した行に対して、文字の切り出しを行う。
【００６１】
図３（Ｃ）は、これら第２行切出し部１４１および第２文字切出し部１４２によって切り出された文字を示した図である。この場合、「ノ」、「｜」・・・「・」という６文字が切り出されている。
【００６２】
次に、第１行切出し部１３１および第１文字切出し部１３２によって切り出された各文字は、第１文字認識部１３３でそれぞれ文字認識される。また、第２行切出し部１４１および第２文字切出し部１４２によって切り出された各文字は、第２文字認識部１４３でそれぞれ文字認識される。
【００６３】
続いて、第１行切出し部１３１および第１文字切出し部１３２によって切り出された各文字のうち互いに重なり合う文字は、第１行内文字編集部１９１で、文字位置が編集される。また、第２行切出し部１４１および第２文字切出し部１４２によって切り出された各文字のうち互いに重なり合う文字は、第２行内文字編集部１９２で、文字位置が編集される。
【００６４】
その後、文字位置が編集された文字を含む第１行切り出し部１３１および第１文字切出し部１３２によって切り出された各文字と、文字位置が編集された文字を含む第２行切出し部１４１および第２文字切出し部１４２によって切り出された各文字とに対して、文字位置対応判定部１７１は、文字位置が対応する文字があるか否かを判定する。
【００６５】
なお、この実施の形態では、第１文字認識エンジン１３０の認識結果は第１行内文字編集部１９１に出力され、第２文字認識エンジン１４０の認識結果は第２の行内文字編集部１９２に出力される。第１行内文字編集部１９１および第２行内文字編集部１９２は、各文字認識エンジンから入力された文字が同一行内の他の文字と重なり合うか否かを判定し、重なり合う文字の各文字位置の編集を行う。
【００６６】
ここで、図３、図４および図５を参照して、第１の行内文字編集部１９１および第２行内文字編集部１９２における文字位置の編集につき詳細に説明する。
【００６７】
前述したように、第１文字切出し部１３２で切り出された各文字（ここでは４文字である。）は、図３（Ｂ）に示すように図２で言うｘ方向において、重なり合っている。また、第２文字切出し部１４２で切り出された文字（ここでは６文字である。）は、図３（Ｃ）に示すように互いに重なり合っている。
【００６８】
このように切り出された各文字に対して、後述するような文字位置対応判定を行った場合には、例えば第１文字認識エンジンで認識された文字「さ」と文字位置が対応するのは、第２文字認識エンジンで認識された文字「、」、文字「さ」および文字「い」の３つの文字と判定される場合がある。よって、このとき文字「さ」は正しく認識されないため、文字認識率は低下する。
【００６９】
この発明では、このような文字認識率の低下を抑制するため、文字位置の対応を判定する前に、次のように文字位置を編集する。
【００７０】
ただし、この実施の形態では、第１行内文字編集部１９１および第２行内文字編集部１９２は、それぞれ文字認識エンジン毎に処理を行うが、これらは同様の処理動作を行うもので良い。
【００７１】
第１行内文字編集部１９１および第２行内文字編集部１９２が、同一行内における文字の文字位置の編集を開始する（図４の４０１）。なお、第２行内文字編集部１９２は以下に説明する第１行内文字編集部１９１と同様に動作するため、その説明を省略する。
【００７２】
先ず、第１行内文字編集部１９１は、第１行切出し部１３１で切り出された行の行ＩＤ（行切出し部が切り出した行のうち何番目の行であるかを示す番号）を示す変数ｉに１を代入して初期化したのち（図４の４０２）、第１文字切出し部１３２で切り出された文字の文字ＩＤ（文字切出し部が切り出した文字のうち何番目の文字であるかを示す番号）を示す変数ｊに１を代入して初期化する（図４の４０３）。そして、注目するｊ番目の文字以外の他の文字の文字ＩＤを示す変数ｋに、ｊ＋１を代入して初期化する（図４の４０４）。
【００７３】
各変数を初期化したのち、第１行内文字編集部１９１は着目するｊ番目の文字と、他のｋ番目の文字とが互いに重なっているか否かを判定する（図４の４０５）。この重なり判定は、例えば、次のようにして行う。
【００７４】
ｊ番目の文字およびｋ番目の文字の重なり判定においては、媒体が横書きの場合、各文字の文字位置が次の条件式を満たすときに重なりがあると判定できる。
【００７５】
図２に示すように、ｊ番目の文字の文字位置を、左上（ｘｓ１、ｙｓ１）、右下（ｘｅ１、ｙｅ１）で囲まれる領域２０１とし、ｋ番目の文字の文字位置を、（ｘｓ２、ｙｓ２）および（ｘｅ２、ｙｅ２）で囲まれる領域２０２とする。このとき、各文字位置の座標が、重なり判定条件式：（（（ｘｓ１−Ｐ４１）≦ｘｅ２）かつ（（ｘｅ１＋Ｐ４２）≧ｘｓ２）・・・(1) を満たす場合に、各文字は重なりがあると判定できる。ただし、式中Ｐ４１およびＰ４２は、任意の値を示す。また、媒体が縦書きの場合、ｊ番目の文字およびｋ番目の文字の重なり判定においては、重なり判定条件式：（（ｙｓ１−Ｐ５１）≦ｙｅ２）かつ（（ｙｅ１＋Ｐ５２）≧ｙｓ２））・・・(2) を満たす場合に、各文字は重なりがあると判定できる。ただし、式中Ｐ５１およびＰ５２は、任意の値を示す。
【００７６】
このように、文字の重なり判定においては横書き或いは縦書きのいずれの場合にも、同一行内において少なくとも当該行に沿った方向で見たときの各文字の文字位置が互いに重なり合っているときに、これらの文字は互いに重なり合うと判定しても良い。したがって、この場合、平面パタンで見たときには切り出した文字の文字位置が互いに重なり合わなくとも、行に沿った方向で見たときには重なり合うと判定する。また、重なり判定の手法はこれに限られない。
【００７７】
続いて、第１行内文字編集部１９１は、互いに重なり合う（図４の４０６）と判定されたｊ番目およびｋ番目の文字の各文字位置を編集する（図４の４０７）。このとき、例えば次のように、各文字の文字位置を編集する。
【００７８】
媒体が横書きであって条件式(1) が満たされている場合、ｘｓ＝ＭＡＸ（ｘｓ１、ｘｓ２）およびｘｅ＝ＭＩＮ（ｘｅ１、ｘｅ２）とおく。そして、ｘｓ＝ｘｓ１である場合にはｘｓ１に（ｘｅ＋Ｐ４３）を代入し、ｘｓ＝ｘｓ２である場合にはｘｓ２に（ｘｅ＋Ｐ４３）を代入する。また、ｘｅ＝ｘｅ１である場合にはｘｅ１に（ｘｓ−Ｐ４４）を代入し、ｘｅ＝ｘｅ２である場合にはｘｅ２に（ｘｓ−Ｐ４４）を代入する。なお、式中、ＭＡＸ（Ａ、Ｂ）は、Ａの値とＢの値のうち大きい方の値をとり、ＭＩＮ（Ａ、Ｂ）は、Ａの値とＢの値のうち小さい方の値をとる（ただし、Ａ＝Ｂの場合にはその値をとる）。
【００７９】
また、媒体が縦書きであって条件式(2) が満たされている場合、ｙｓ＝ＭＡＸ（ｙｓ１、ｙｓ２）およびｙｅ＝ＭＩＮ（ｙｅ１、ｙｅ２）とおく。そして、ｙｓ＝ｙｓ１である場合にはｙｓ１に（ｙｅ＋Ｐ５３）を代入し、ｙｓ＝ｙｓ２である場合にはｙｓ２に（ｙｅ＋Ｐ５３）を代入する。また、ｙｅ＝ｙｅ１である場合にはｙｅ１に（ｙｓ−Ｐ５４）を代入し、ｙｅ＝ｙｅ２である場合にはｙｅ２に（ｙｓ−Ｐ５４）を代入する。
【００８０】
図３に示すように、ｊ番目の文字の右側の辺のＸ座標ｘｅ１は、ｋ番目の文字の左側の辺のＸ座標ｘｓ２よりも大きいため、条件式(1) を満たす。また、ｘｓ＝ｘｓ２およびｘｅ＝ｘｅ１であるから、ｘｓ１に（ｘｅ＋Ｐ４３）を代入し、ｘｅ１に（ｘｓ−Ｐ４４）を代入する。よって、ｊ番目の文字の右側の辺のＸ座標は、（ｘｓ２−Ｐ４４）となり、ｋ番目の文字の左側の辺のＸ座標は、（ｘｅ１＋Ｐ４３）となる。また、定数Ｐ４１〜Ｐ４４の値を変更することにより、両文字の重なりを判断し或いは両文字の文字位置を編集するマージンを調節できる。
【００８１】
ｊ番目の文字に対する文字位置の編集は、ｋ＝ｊ＋１からｋ＝ｎ（ただし、ｎは行内文字数である。）まで繰り返し行われる。すなわち、ｊ番目の文字とすべてのｋ番目の文字との文字位置の編集が終了したか否かを判定し（図４の４０８）、終了していない場合には、ｋにｋ＋１を代入して（図４の４１１）、文字位置の編集を行う。
【００８２】
そして、すべてのｊ番目の文字について、ｊ番目の文字の文字位置およびｋ番目の文字の各文字位置の編集が終了したか否かを判定し（図４の４０９）、終了していない場合には、ｊに（ｊ＋１）を代入して（図４の４１２）、（ｊ＋１）番目の文字について各文字位置を編集する。
【００８３】
ｉ番目の行内の文字すべてについて文字位置の編集が終了すると、ｉに（ｉ＋１）を代入して（図４の４１３）、（ｉ＋１）番目の行について文字位置を編集する。また、媒体のすべての行について文字位置の編集が終了すると判定したときには（図４の４１０）、行内文字編集を終了する（図４の４１４）。
【００８４】
図５（Ａ）および（Ｂ）には、それぞれ、図３（Ｂ）および図３（Ｃ）の各文字に対して、上述のように文字位置を編集した状態を示してある。図５に示すように、各文字の文字位置（図中、太線で示す矩形の領域）は、他の文字の文字位置と重なり合わない程度に離間した位置となるように、編集されている。
【００８５】
この図示例の文字位置の編集では、文字切り出し部で切り出された領域を示す文字位置が互いに重なり合わない状態となるように、各文字位置の領域を縮小させることにより、文字位置を編集している。
【００８６】
なお、以上のように複合文字編集部で文字位置が編集された文字を含む文字切り出し部で切り出された文字を、「位置編集済み文字」と称することがある。
【００８７】
続いて、図６〜図９を参照して文字位置対応判定部１７１の動作につき説明する。
【００８８】
なお、この実施の形態では、第１文字認識エンジン１３０を、基準エンジンと仮定して、以下、「基エンジン」と称する。基エンジンが切り出した各文字が、それぞれ基準文字になる。また、基エンジン以外の他の文字認識エンジン（この第１の実施の形態では第２文字認識エンジン１４０）を、以下、「他エンジン」と称する。従って、この実施の形態では、第１文字切出し部１３２が基準の文字切出し部に相当し、この第１文字切出し部１３２が切り出す文字それぞれが基準文字に相当する。
【００８９】
先ず、文字位置対応判定部１７１が処理を開始すると（図６の６０１）、文字位置対応判定部１７１は、第１行内文字編集部１９１で編集された文字を含む第１文字認識エンジン１３０で切り出された文字の文字位置の情報を、基エンジンの文字位置の情報と定め、一方、第２行内文字編集部１９２で編集された文字を含む第２文字認識エンジン１４０で切り出された文字の文字位置の情報を、他エンジンの文字位置の情報と定める。
【００９０】
なお、文字切出し部で切り出されて複合判定部へ出力される文字の文字位置の情報は、文字の認識結果に付加されて利用されても良い。したがって、このとき、この発明でいう文字の文字位置とは、認識結果に含まれる情報と見なせる。
【００９１】
また、この文字位置対応判定部１７１は、基エンジンと他エンジンとの対応文字ＩＤおよび対応文字数を格納するバッファを有する構成としてある。
【００９２】
次に、この文字位置対応判定部１７１では、対応文字ＩＤおよび対応文字数を格納するバッファに０を入力することで、このバッファを初期化する（図６の６０２）。
【００９３】
続いて、基エンジンが切り出した文字の文字ＩＤ（基エンジンが切り出した文字中の何番目かを示す番号）を示す変数ｉに１を代入して初期化したのち（図６の６０３）、他エンジンが切り出した文字の文字ＩＤ（他エンジンが切り出した文字中の何番目かを示す番号）を示す変数ｊに１を代入して初期化する（図６の６０４）。
【００９４】
次に、基エンジンのｉ番目の位置編集済み文字と、他エンジンのｊ番目の位置編集済み文字との各文字位置の対応関係の判定を行う（図６の６０５）。ここで文字位置とは、図２を用いて説明した概念である。また、文字位置が対応するか否かの判定は、例えば、以下のように行う。
【００９５】
図７は、対応判定を説明する図であり、対応関係の存否の判断条件を示す図である。ここでは、その１〜その４の４つの判断条件を示してある。これら４つの条件の何れか１つを満たした場合、文字位置の対応関係があると判定することができる。もちろん、この発明を実施するに当たり、その１〜その４のいずれか１つのみを判断基準として固定しても良いし、２つを判断条件として用いてそのうちの１つを満たしたら対応関係があると判定するようにしても良いし、３つを判断条件として用いてそのうちの１つを満たしたら対応関係があると判定するようにしても良い。また、判断条件は、これら４つに限られない。
【００９６】
その１の条件式は、（（（ｘｓ１−Ｐ１）≦ｘｅ２）かつ（（ｘｅ１＋Ｐ２）≧ｘｓ２）かつ（（ｙｓ１−Ｐ３）≦ｙｅ２）かつ（（ｙｅ１＋Ｐ４）≧ｙｓ２））・・・(3) である。ただし、式中Ｐ１〜Ｐ４は、任意の値を示す。
【００９７】
この条件式(3) であって、Ｐ１〜Ｐ４の値をそれぞれ０とした条件式によれば、基エンジンの位置編集済み文字と、他エンジンの位置編集済み文字とが、少しでも重なっている状態を検出できる。すなわち、両文字が少しでも重なった状態で対応関係を持つことを判定できる。また、Ｐ１〜Ｐ４の値を変更することにより、両文字が重なったと判断するマージンを調整できる。
【００９８】
また、その２の条件式は、（（（ｘｓ１≧（ｘｓ２−Ｐ５））かつ（ｘｅ１≦（ｘｅ２＋Ｐ６））かつ（ｙｓ１≧（ｙｓ２−Ｐ７））かつ（ｙｅ１≦（ｙｅ２＋Ｐ８）））もしくは（（ｘｓ２≧（ｘｓ１−Ｐ９））かつ（ｘｅ２≦（ｘｅ１＋Ｐ１０））かつ（ｙｓ２≧（ｙｓ１−Ｐ１１））かつ（ｙｅ２≦（ｙｅ１＋Ｐ１２））））・・・(4) である。ただし、式中Ｐ５〜Ｐ１２は、任意の値を示す。
【００９９】
この条件式(4) であって、Ｐ５〜Ｐ１２の値をそれぞれ０とした条件式によれば、基エンジンの位置編集済み文字の文字位置が他エンジンの位置編集済み文字の文字位置に含まれる状態、若しくは、その逆の状態を検出できる。すなわち、一方の文字位置が他方の文字位置に含まれる状態で対応関係をもつことを判定できる。また、Ｐ５〜Ｐ１２の値を変更することにより、一方の文字位置が他方の文字位置に包含される判断のマージンを調整できる。
【０１００】
また、その３の条件式は、（（（ｘｓ１≧（ｘｓ２−Ｐ１３））かつ（ｘｅ１≦（ｘｅ２＋Ｐ１４））かつ（（ｙｓ１−Ｐ１５）≦ｙｅ２）かつ（（ｙｅ１＋Ｐ１６）≧ｙｓ２））もしくは（（ｘｓ２≧（ｘｓ１−Ｐ１７））かつ（ｘｅ２≦（ｘｅ１＋Ｐ１８））かつ（（ｙｓ１−Ｐ１９）≦ｙｅ２）かつ（（ｙｅ１＋Ｐ２０）≧ｙｓ２）））・・・(5) である。ただし、式中Ｐ１３〜Ｐ２０は、任意の値を示す。
【０１０１】
この条件式(5) であって、Ｐ１３〜Ｐ２０の値をそれぞれ０とした条件式によれば、基エンジンの位置編集済み文字の文字位置が他エンジンの位置編集済み文字の文字位置にＹ方向（文字の縦方向）において少しでも重なっており、かつ、基エンジンの位置編集済み文字の文字位置が他エンジンの位置編集済み文字の文字位置にＸ方向（文字の横方向）について含まれている状態を、検出できる。若しくは、他エンジンの位置編集済み文字の文字位置が基エンジンの位置編集済み文字の文字位置にＹ方向（文字の縦方向）において少しでも重なっており、かつ、他エンジンの位置編集済み文字の文字位置が基エンジンの位置編集済み文字の文字位置にＸ方向（文字の横方向）について含まれている状態を検出できる。すなわち、一方の文字位置が他方の文字位置に対し、ｙ方向で一部重なりＸ方向で含まれる状態で対応関係をもつことを判定できる。また、Ｐ１３〜Ｐ２０の値を変更することにより、一方の文字位置が他方の文字位置にｙ方向で重なるという判断と、Ｘ方向で含まれるという判断とのマージンをそれぞれ調整できる。
【０１０２】
なお、上記のその３の条件は、文字が横書きの場合の条件である。すなわち、第１の方向を文字の縦方向および横方向のうちの縦方向と考え、および、第２の方向を横方向と考えた例である。また、文字が縦書きの場合は、上記(3) 式中のｘ、ｙを入れ換えた条件式を用いれば良い。
【０１０３】
また、その４の条件式は、（（（ＭＡＸ（ｘｅ１、ｘｅ２）−ＭＩＮ（ｘｓ１、ｘｓ２））×（ＭＡＸ（ｙｅ１、ｙｅ２）−ＭＩＮ（ｙｓ１、ｙｓ２））×Ｐ２１）≧（（ｘｅ１−ｘｓ１）×（ｙｅ１−ｙｓ１）））もしくは（（（ＭＡＸ（ｘｅ１、ｘｅ２）−ＭＩＮ（ｘｓ１、ｘｓ２））×（ＭＡＸ（ｙｅ１、ｙｅ２）−ＭＩＮ（ｙｓ１、ｙｓ２））×Ｐ２２）≧（（ｘｅ２−ｘｓ２）×（ｙｅ２−ｙｓ２）））・・・(6) である。また、Ｐ２１、Ｐ２２は、任意の値を示す。
【０１０４】
この条件式(6) によれば、基エンジンの位置編集済み文字と他エンジンの位置編集済み文字との重なっている部分の面積が、基エンジンの位置編集済み文字の文字位置の面積と比較してある程度の割合（Ｐ２１に依存する。）にあるか、或いは、他エンジンの位置編集済み文字の文字位置の面積と比較してある程度の割合（Ｐ２２に依存する。）にあるかを、検出することができる。すなわち、両文字が重なった部分の面積が、これら文字の何れか一方の文字の面積に対して、ある割合の状態で対応関係を持つことを判定できる。また、Ｐ２１、Ｐ２２の値を変更することにより、上記の割合に関する判断のマージンをそれぞれ調整できる。
【０１０５】
図８（Ａ）および（Ｂ）は、上記の如く対応関係を判断した結果を説明する図である。すなわち、基エンジンの位置編集済み文字のうちｉ番目の文字と、他エンジンの位置編集済み文字のうちｊ番目の文字との文字位置の対応判定を行った結果を説明する図である。
【０１０６】
対応関係があるか否かの判定において（図６の６０６）、対応関係があった場合は、基エンジンのｉ番目の位置編集済み文字の対応文字ＩＤの欄に、これと対応する文字であって他エンジンの位置編集済み文字の文字ＩＤをセットする。さらに、基エンジンのｉ番目の位置編集済み文字の対応文字数の欄に、これと対応する文字であって他エンジンの位置編集済み文字の文字数をセットする。さらに、他エンジンのｊ番目の文字の対応文字ＩＤの欄に、これと対応する文字であって基エンジンの位置編集済み文字の文字ＩＤをセットする。さらに、他エンジンのｊ番目の文字の対応文字数の欄に、これと対応する文字であって基エンジンの位置編集済み文字の文字数をセットする（図６の６０７）。
【０１０７】
すなわち、具体的にいえば、図８（Ａ）の例では、基エンジンの位置編集済み文字の１番目の文字８０１は、他エンジンの位置編集済み文字の１〜３番目までの各文字８１１〜８１３と、文字位置が対応する。そのため、図８（Ｂ）に示すように、基エンジンの１番目の位置編集済み文字の対応文字ＩＤの欄に、他エンジンの位置編集済み文字のうち対応する文字の文字ＩＤとして１、２および３をセットする。さらに、基エンジンの１番目の文字の対応文字数の欄に、他エンジンの位置編集済み文字のうち対応する文字の文字数として３をセットする。また、他エンジンの１、２および３番目の各文字の対応文字ＩＤの欄に、基エンジンの位置編集済み文字のうち対応する文字の文字ＩＤとして１をそれぞれをセットする。さらに、他エンジンの１、２および３番目の文字の対応文字数の欄に、基エンジンの位置編集済み文字のうち対応する文字の文字数として１をそれぞれセットする。
【０１０８】
さらに、図８（Ａ）の例では、基エンジンの位置編集済み文字の２番目の文字８０２は、他エンジンの位置編集済み文字の４番目の文字８１４と、文字位置が対応する。また、基エンジンの位置編集済み文字の３番目の文字８０３は、他エンジンの位置編集済み文字の５番目の文字８１５と、文字位置が対応する。また、基エンジンの位置編集済み文字の４番目の文字８０４は、他エンジンの位置編集済み文字の５番目の文字８１５と、文字位置が対応する。ただし、他エンジンの位置編集済み文字の第６番目の文字８１６と文字位置が対応する文字は、基エンジンの位置編集済み文字中に存在しない。
【０１０９】
対応関係を持つ各文字８０２〜８０４、８１４〜８１５について、文字８０１について説明したのと同様な手法で、対応文字ＩＤおよび対応文字数に関する情報欄に、情報をセットする（図６の６０８〜６１１および図８（Ｂ）参照）。
【０１１０】
基エンジンの位置編集済み文字と他エンジンの位置編集済み文字との間における文字位置についての対応関係の判定が終了すると（図６の６１２）、次に、対応文字抽出部１７２による処理が以下のように行われる。この処理について、図９を参照して説明する。
【０１１１】
対応文字抽出部１７２は、処理を開始すると（図９の９０１）、先ず、基エンジンの文字ＩＤを示す変数ｉに１を代入して初期化する（図９の９０２）。次に、基エンジンのｉ番目の位置編集済み文字の対応文字数（すなわち、他エンジン側に対応文字がいくつあるかを示す数）を取得し（図９の９０３）、この取得した対応文字数が１か否かを判定する（図９の９０４）。対応文字数が１であった場合、基エンジンのｉ番目の位置編集済み文字の対応文字ＩＤ（すなわち、他エンジン側の文字の番号）を取得する（図９の９０５）。次に、この取得した対応文字ＩＤで指定される他エンジンにおける文字の、対応文字数（すなわち基エンジン側に対応文字がいくつかあるかを示す数）を取得する（図９の９０６）。この取得した対応文字数が１か否かを判定する（図９の９０７）。対応文字数が１であった場合、この文字の対応文字ＩＤ（すなわち、基エンジン側の文字の番号）を取得する（図９の９０８）。この取得した対応文字ＩＤが基エンジンの文字ＩＤを示すｉと一致しているならば（図９の９０９）、基エンジンのｉ番目の位置編集済み文字の認識結果と、このｉ番目の位置編集済み文字の対応文字ＩＤで指定される他エンジン側の文字の認識結果とを取得する（図９の９１０）。基エンジンが切り出した文字数分の対応文字抽出が済んだか否かを判断し（図９の９１１）、済んでいなければ、基エンジンの文字ＩＤであるｉを＋１して、処理９０３から繰り返す（図９の９１２）。
【０１１２】
この図９を参照して説明した一連の処理によれば、基エンジンの位置編集済み文字に対して、他エンジン側に文字位置が対応する文字が１つ在った場合（すなわち１対１で対応する文字があった場合）、基エンジン側の当該文字および他エンジン側の当該文字それぞれの認識結果をそれぞれ抽出することができる。
【０１１３】
詳細は後述するが、この抽出した認識結果を用いて、複合文字認識部１８０は、複合的な認識を行い最終的な認識結果を決める。
【０１１４】
また、処理９０４や処理９０７において、対応文字数が１でないと判定された場合、または、処理９０９において対応文字ＩＤがｉでなかった場合は、基エンジンが切り出した文字数分の対応文字抽出が済んだか否かを判断し（図９の９１１）、済んでいなければ、基エンジンの文字ＩＤを＋１して、処理９０３から繰り返す（図９の９１２）。
【０１１５】
ただし、図９を参照して説明した一連の処理において、処理９０８および処理９０９は無くても良い。なぜなら、処理９０７で対応文字数が１と判定されたならば、処理９０８で取得した対応文字ＩＤは基エンジンの文字番号を示すｉと必ず一致するからである。
【０１１６】
図８を用いて説明したような文字位置対応関係を持つ「小さい」という認識対象パタンに対して上記の対応文字抽出部１７２による処理を実施した場合、基エンジンの位置編集済み文字中の第２番目の文字８０２、すなわち「さ」と、他エンジンの位置編集済み文字中の４番目の文字８１４、すなわち「さ」とが、１対１に対応する文字になる。そのため、これら「さ」の文字の認識結果のみが抽出されて、複合文字認識部１８０に出力されることになる。
【０１１７】
なお、基エンジンおよび他エンジンの各文字認識部が出力する候補文字の数は、文字認識手法に応じた任意の数と出来る。すなわち、基エンジンおよび他エンジンの各文字認識部が、１個の候補文字を挙げる場合、複数個の候補文字を挙げる場合いずれもあり得る。
【０１１８】
複合文字認識部１８０は、これら１対１の対応関係にある文字それぞれの認識結果について、各認識結果を複合的に判定して最終的な認識結果を出力する。
【０１１９】
複合的に認識をする際の判断基準は特に限定されない。装置構成の説明において説明したように、例えば、第１および第２文字認識エンジンがそれぞれ切り出しかつ文字認識して得た認識結果中の編集された文字位置が対応すると判定された場合であって、それぞれの第１の候補文字同士が同じであった場合に、この第１の候補文字を最終的な認識結果と決める方法を挙げることができる。または、この出願人にかかる特願平１０−９７２３７号で提案している方法を挙げることができる。特願平１０−９７２３７号で提案している方法とは、複数の文字認識部が認識結果として文字コードおよび字形情報（字形情報以外の他のパラメータの場合があっても良い。）を出力する構成とし、最終的な認識結果はこれら文字コードおよび字形情報（或いは他のパラメータ）に基づいて決定するという方法である。
【０１２０】
この第１の実施の形態の文字読取装置によれば、読取対象の文字列を第１文字切出し部および第２文字切出し部で切り出した後に、それぞれの文字切出し部で切り出された文字が同一行内で互いに重なり合うか否かを判定したのち、重なり合う文字の文字位置を編集し、各文字切出し部の位置編集済み文字の間で文字位置が１対１で対応する文字についてのみ、複合的な認識処理を行える。アルゴリズムが異なる第１および第２文字切出し部が切り出した文字であって、文字位置が１対１で対応する文字は、正常な文字である蓋然性（確率）が高い。逆に言えば、図２４（Ａ）を用いて説明したような、かすれに起因する非文字部分、図２４（Ｂ）を用いて説明したような、ノイズ部分、図２４（Ｃ）を用いて説明したような複数文字が接触により合体した部分、図２４（Ｄ）を用いて説明したような、文字を構成する部品中の分離部分は、各文字切出し部により同様に切り出される確率は低いと考えられる。そのため、上記分離部分は、各文字切出し部間で文字位置の１対１対応が生じにくいと考えられるので、複合文字認識部に送られる確率が低くなる。そのため、複合文字認識での文字認識率を高めることができる。
【０１２１】
また、この第１の実施の形態の文字読取装置は、特に、行内文字編集部を具える。この行内文字編集部は、各文字切出し部が切り出した文字について行内の文字が重なっているか否かを判定し、重なっている場合には重なり合う文字の各文字位置を編集する。そのため、この文字読取装置によれば、行内の文字同士が重なって切り出された場合でも、文字位置が１対１で対応するか否かを正確に判定できる。
【０１２２】
例えば、このような行内文字編集部を有しない場合には、図３（Ｂ）および図３（Ｃ）のごとく切り出された文字について、文字位置の対応判定を行うことになる。そのため、文字位置の対応判定条件によっては、この第１文字認識エンジンの文字「さ」と、第２文字認識エンジンの文字「、」、文字「さ」および文字「い」の３つの文字とが対応すると判定されてしまう場合がある。しかしながら、上述のごとく、文字位置の対応判定前に文字位置を編集しておくと、このような誤判定を低減することができる。
【０１２３】
なお、上述の実施の形態では、横書き１行で表された行を処理対象パタンの例として説明したが、縦書きの場合、また、複数行から文字を切り出す場合、また、別々の行に存在する文字の場合も、この発明は適用でき、同様な効果が得られる（以下の各実施の形態において同じ。）。
【０１２４】
また、この実施の形態では、同一の文字切出し部でそれぞれ切り出された文字および他の文字が重なり合っているか否かを判定し、重なり合う場合にはこれらの文字位置を編集した。言うまでもなく、このように重なりを判定し文字位置を編集することは、同一行内の文字についてのみに限られず、任意の配置形態の文字に対して行うことができる。
【０１２５】
２．第２の実施の形態
上述の第１の実施の形態の文字読取装置１００は、２つの文字認識エンジンを具える装置であった。すなわち、先ず、読取対象の文字領域や行に対して、アルゴリズムが異なる第１および第２文字切出し部によりそれぞれ文字を切り出し、次に、各文字切出し部が切り出した文字について行内の文字同士の重なりを判定して重なり合う文字のそれぞれの文字位置を編集し、その後、第１および第２文字認識エンジンの位置編集済み文字間で文字位置が１対１で対応する文字について、対応する文字それぞれの認識結果から複合的に判定して最終的な認識結果を決める装置であった。しかし、この発明の文字読取装置は、３以上の文字切出し部を具える場合にも勿論適用することができる。この第２の実施の形態はその例である。
【０１２６】
図１０は、この第２の実施の形態の文字読取装置１０００の構成を示すブロック図である。以下、第１の実施の形態の文字読取装置１００との相違点について主に説明する。
【０１２７】
この第２の実施の形態の文字読取装置１０００は、第１および第２文字認識エンジン１３０、１４０の他にさらに、第Ｎ文字認識エンジン１０１０を具える。ただし、Ｎは３以上の整数である。従って、Ｎ＝３であれば、第３文字認識エンジンをさらに具え、Ｎ＝４であれば、第３および第４文字認識エンジンをさらに具える。
【０１２８】
この第Ｎ文字認識エンジン１０１０は、第Ｎ行切り出し部１０１１、第Ｎ文字切出し部１０１２および第Ｎ文字認識部１０１３で構成される。
【０１２９】
ただし、文字切出し部を３個以上持つ場合、各文字切出し部の文字切り出しアルゴリズムが全て異なる必要は必ずしもない。すなわち、３以上の文字切出し部は、文字切り出しアルゴリズムが異なる少なくとも２種類の文字切出し部（例えば、３つの文字切出し部の例で考えれば、第１文字切出し部が第１の文字切り出しアルゴリズムのもの、第２および第３文字切出し部が第２の文字切り出しアルゴリズムのものという具合）で構成してあれば良い。なぜなら、文字読取装置が文字認識アルゴリズムが異なる３以上の文字認識部を具える場合、これら文字認識部に対応する３以上の文字切出し部は、文字切り出しアルゴリズムが異なる少なくとも２種類の文字切出し部で構成してあれば、本発明の効果が得られるためである。
【０１３０】
また、第Ｎ行切出し部１０１１および第Ｎ文字認識部１０１３それぞれは、他のエンジンの行切出し部１３１、１４１および文字認識部１３３、１４３に対し、行切り出しアルゴリズムおよび文字認識アルゴリズムが同じでも、異なっても良い。
【０１３１】
さらに、この第２の実施の形態の文字読取装置１０００では、複合判定部１０２０の構成を、第１の実施の形態とは異ならせてある。具体的には、複合判定部１０２０を、第１の実施の形態とは構成が異なる複合文字編集部１０９０と、第１の実施の形態とは構成が異なる複合文字位置判定部１０３０と、第１の実施の形態と同様な複合文字認識部１８０とで構成してある。
【０１３２】
第２の実施の形態の複合文字編集部１０９０の、第１の実施の形態との相違点は、複合文字編集部１０９０をＮ個の行内文字編集部すなわち第１、第２および第Ｎ行内文字編集部１９１、１９２および１０９３で構成した点である。なお、第Ｎ行内文字編集部１０９３は、第１および第２行内文字編集部１９１および１９２と同様に、第Ｎ文字認識エンジン１０１０から入力された文字が同一行内の文字と重なり合うか否かを判定し、重なり合う文字の各文字位置の編集を行う。そのため、その説明については省略する。
【０１３３】
複合文字位置判定部１０３０の、第１の実施の形態との相違点は、文字位置対応判定部を第１〜第Ｎ−１文字位置対応判定部１０３１〜１０３２で構成した点と、対応文字抽出部として、第１〜第Ｎ−１文字位置対応判定部から対応文字を抽出する対応文字抽出部１０３３で構成した点である。ただし、Ｎは、第１〜第Ｎ文字切出し部１３２〜１０１２でいう値である。
【０１３４】
第１〜第Ｎ−１文字位置対応判定部１０３１〜１０３２それぞれは、２つの文字認識エンジンのそれぞれの位置編集済み文字間に、文字位置が対応する文字が在るか否かを判定する。具体的には、例えば、次のような判定を行う。
【０１３５】
すなわち、基エンジンを第１文字認識エンジン１３０とする場合なら、第１文字位置対応判定部１０３１は、第１文字認識エンジン１３０の位置編集済み文字と第２文字認識エンジン１４０の位置編集済み文字との間で、文字位置が対応する文字がどれかを判定する。第２文字位置対応判定部（図示せず）は、第１文字認識エンジン１３０の位置編集済み文字と第３文字認識エンジン（図示せず）の位置編集済み文字との間で、文字位置が対応する文字がどれかを判定する。第Ｎ−１文字位置対応判定部１０３２は、第１認識エンジン１３０の位置編集済み文字と第Ｎ文字認識エンジン１０１０の位置編集済み文字との間で、文字位置が対応する文字がどれかを判定する。
【０１３６】
第１〜第Ｎ−１文字位置対応判定部１０３１〜１０３２のそれぞれは、文字位置の対応関係を見るエンジンが上述のように異なること以外は、第１の実施の形態で説明した文字位置対応判定部１７１と同様な処理（図６〜図８を参照して説明した処理）を実施するもので実現できるので、その説明を省略する。
【０１３７】
続いて、この第２の実施の形態の文字読取装置１０００の動作につき説明する。ただし、第１の実施の形態で説明したものについては説明を省略する。よって、ここでは対応文字抽出部１０３３につき主に説明する。
【０１３８】
対応文字抽出部１０３３は、第１〜第Ｎ−１文字位置対応判定部によって対応すると判定された文字から文字位置が１対１で対応する文字を抽出して、複合文字認識部１８０に出力する。この対応文字抽出部１０３３の動作について、以下、説明する。
【０１３９】
図１１は対応文字抽出部１０３３の動作を説明する図である。対応文字抽出部１０３３は処理を開始すると（図１１の１１０１）、先ず基エンジン（この例では第１文字認識エンジン）の文字ＩＤを示す変数ｉに１を代入して初期化する（図１１の１１０２）。また、第１〜第Ｎ−１文字位置対応判定部のうちどの判定部の判定結果であるかを示す変数ｎに１を代入して初期化する（図１１の１１０３）。
【０１４０】
次に、第ｎ文字位置対応判定部の結果中の、基エンジンのｉ番目の位置編集済み文字の対応文字数（すなわち、他エンジンの位置編集済み文字にこれと対応する文字がいくつあるかを示す数）を、取得する（図１１の１１０４）。次に、この取得した対応文字数が１か否かを判定する（図１１の１１０５）。
【０１４１】
この対応文字数が１であった場合、このｉ番目の文字の対応文字ＩＤ（すなわ、他エンジンの位置編集済み文字の番号）を、取得する（図１１の１１０６）。
【０１４２】
次に、第ｎ文字位置対応判定部の結果中の、処理１１０６で取得した対応文字ＩＤで指定される文字（すなわち、他エンジン中の特定の位置編集済み文字）の対応文字数（すなわち、基エンジン側の位置編集済み文字に対応文字がいくつあるかを示す数）を取得する（図１１の１１０７）。
【０１４３】
次に、この取得した対応文字数が１か否かを判定する（図１１の１１０８）。
【０１４４】
次に、全ての文字位置対応判定部の結果について１対１に対応する文字の特定が済んだか否かを判定する（図１１の１１０９）。すなわち、この実施の形態の文字読取装置は第１〜第Ｎ−１まで文字位置対応判定部を具えているので、どの文字位置対応判定部の判定結果であるかを示す変数であるｎが、ｎ＝Ｎ−１となったか否かを、判定する。
【０１４５】
ｎ≠Ｎ−１であった場合、すなわち、第Ｎ−１文字位置対応判定部まで対応文字抽出が済んでいない場合、上記変数ｎにｎ＋１を代入し（図１１の１１１２）、処理１１０４に戻る。
【０１４６】
一方、ｎ＝Ｎ−１となった場合、基エンジンのｉ番目の文字（基準文字）の認識結果と、他エンジンの、前記基準文字に文字位置が１対１で対応する文字の認識結果とをそれぞれ取得する（図１１の１１１０）。
【０１４７】
処理１１０５で対応文字数が１でなかった場合、処理１１０８で対応文字数が１でなかった場合、および、処理１１１０が済んだ場合のいずれかの場合には、次に、基エンジンの各位置編集済み文字に対して対応文字抽出の処理が終了したか否かを判定する（図１１の１１１１）。終了している場合は、対応文字抽出を終了し（図１１の１１１４）、終了していない場合は、基エンジンの位置編集済み文字の文字ＩＤを示す変数ｉにｉ＋１を代入し（図１１の１１１３）、処理１１０３に戻る。
【０１４８】
対応文字抽出が終了した場合、複合文字認識部１８０は、対応文字抽出部１０３３から出力される認識結果から複合的に判定して最終的な認識結果を出力する。この複合的な認識を行う際の判断基準は、例えば、第１の実施の形態で説明したものと同様で良い。また、この第２の実施の形態の場合、３以上の文字認識エンジンからそれぞれ候補文字（典型的には文字コード）が得られるので、３個以上の文字コードの中で最も出現頻度の高い文字コード（多数決で決まる文字コード）を最終的な認識結果とする場合があっても良い。
【０１４９】
なお、文字認識エンジン間で文字位置が対応する文字が無かった文字については、これに限られないが、例えばリジェクトを出力する。
【０１５０】
この第２の実施の形態の文字読取装置１０００によれば、第１の実施の形態と同様な効果が得られる。然も、３以上の文字切出し部それぞれが切り出した文字であって、すべての文字切出し部間で文字位置が１対１に対応する文字についてのみ、対応する文字それぞれの認識結果から複合的に判定して最終的な認識結果を決めることができる。したがって、文字認識率を高めることができる。
【０１５１】
３．第３の実施の形態
上述の第１および第２の実施の形態の各文字読取装置１００および１０００は、文字位置の対応判定前に、複数の文字切出し部のそれぞれが切り出した文字中に、同一行内で重なり合う文字があるか否かを判定し、重なり合う場合にはその文字の文字位置を編集する点に着目した装置であった。一方、この第３の実施の形態の文字読取装置では、この同一行内における文字の重なり判定前に、文字切出し部で切り出された文字と、この文字の属する行とは異なる行に属する文字とが重なり合っているか否かを判定し、かつ、重なり合う場合にはこれらの文字の文字位置を編集する。
【０１５２】
図１２は、第３の実施の形態の文字読取装置１２００の構成を示すブロック図である。ここでは、第３の実施の形態の思想を第２の実施の形態の文字読取装置に適用した例を示してあるため、第２の実施の形態の文字読取装置との相違点について主に説明する。なお、この第３の実施の形態の思想を第１の実施の形態の文字読取装置に適用しても良い。
【０１５３】
この第３の実施の形態の文字読取装置１２００は、第２の実施の形態の文字読取装置と同様に、第１、第２および第Ｎ文字認識エンジン１３０、１４０および１０１０を具える。
【０１５４】
この文字読取装置１２００は、第２の実施の形態の文字読取装置とはそれぞれ異なる構成の複合判定部１２１０を具える。
【０１５５】
すなわち、この複合判定部１２１０では、各文字認識エンジン１３０、１４０および１０１０でそれぞれ切り出された文字が、同一行内の文字と重なっているか否かを判定するのみならず、他の行に属する文字と重なっているか否かも判定する。そして、重なり合う場合にはそれらの文字の文字位置を編集する。その後、第２の実施の形態と同様の処理を行うことにより、複合的に最終的な認識結果を得る。
【０１５６】
これを実現するため、この複合判定部１２１０は、第２の実施の形態とは異なる構成の複合文字編集部１２９０を具える。
【０１５７】
この複合文字編集部１２９０は、第１、第２および第Ｎ行内文字編集部１９１、１９２および１０９３の各前段に第１、第２および第Ｎ行外文字編集部１２９１、１２９２および１２９３を具える。この第１、第２および第Ｎ行内文字編集部１９１、１９２および１０９３については、第２の実施の形態のものと同様であるので、説明を省略する。
【０１５８】
また、複合判定部１２１０のその他の構成すなわち複合文字位置判定部１０３０および複合文字認識部１８０については、第２の実施の形態の構成と同様であるので、説明を省略する。
【０１５９】
この第１、第２および第Ｎ行外文字編集部１２９１、１２９２および１２９３は、各文字認識エンジン１３０、１４０および１０１０で切り出された文字と、この文字の属する行とは異なる行に属する文字とが、互いに重なり合っているか否かを判定する。そして、重なり合う場合には当該各文字の文字位置を編集する。
【０１６０】
続いて、第３の実施の形態の文字読取装置１２００の動作につき説明する。ただし、第２の実施の形態にて説明したものについては説明を省略する。よって、以下では、行外文字編集部につき主に説明する。
【０１６１】
図１３は、行外文字編集部の動作を示すフローチャートである。ただし、第１、第２および第Ｎ行外文字編集部１２９１、１２９２および１２９３は、それぞれ文字認識エンジン毎に処理を行うが、これらは同様の処理動作を行うもので良い。
【０１６２】
第１、第２および第Ｎ行外文字編集部１２９１、１２９２および１２９３が処理を開始する（図１３の１３０１）。なお、第２および第Ｎ行外文字編集部１２９２および１２９３は、以下に説明する第１行外文字編集部と同様に動作するため、その説明を省略する。
【０１６３】
先ず、第１行外文字編集部１２９１は、第１行切出し部１３１で切り出された行の行ＩＤを示す変数ｉに１を代入して初期化したのち（図１３の１３０２）、この行とは異なる行の行ＩＤを示す変数ｊにｉ＋１を代入して初期化する（図１３の１３０３）。
【０１６４】
各変数を初期化したのち、第１行外文字編集部１２９１は、ｉ番目の行が、ｊ番目の行と重なっているか否かを判定する（図１３の１３０４）。
【０１６５】
なお、この行の重なり判定は必ず行うべき処理ではない。しかしながら、着目する文字と、この文字の属する行とは異なる行に属するすべての文字とについて重なりを判定したのでは、判定に長時間を要する。そのため、特に、異なる行における文字位置の重なり判定前に、当該異なる行の重なり判定を行っている。これにより、異なる行における文字位置の重なり判定を短時間で行うことができる。この行の重なり判定は、例えば以下のように行う。
【０１６６】
例えば、媒体が横書きの場合には、ｉ番目の行を図２の領域２０１とし、ｊ番目の行を図２の領域２０２と見なす。このとき、各行位置の座標が、重なり判定条件式：（（ｙｓ１−Ｐ６１）≦ｙｅ２）かつ（（ｙｅ１−Ｐ６２）≧ｙｓ２）・・・(7) を満たす場合に、各行は重なり合うと判定できる。ただし、Ｐ６１およびＰ６２は、任意の値を示す。また、媒体が縦書きの場合には、ｊ番目の行およびｋ番目の行の重なり判定においては、重なり判定条件式：（（（ｘｓ１−Ｐ６３）≦ｘｅ２）かつ（（ｘｅ１＋Ｐ６４）≧ｘｓ２）・・・(8) を満たす場合に、各行は重なり合うと判定できる。ただし、Ｐ６３およびＰ６４は、任意の値を示す。
【０１６７】
以上のように重なっているか否かを判定し（図１３の１３０５）、ｉ番目の行とｊ番目の行が重なっていない場合には、そのまま後述の処理１３１３に移行する。
【０１６８】
重なっている場合には、ｉ番目の行の各文字の文字ＩＤを示す変数ｋに１を代入して初期化すると共に（図１３の１３０６）、ｊ番目の行の各文字の文字ＩＤを示す変数ｍに１を代入して初期化する（図１３の１３０７）。
【０１６９】
続いて、ｉ番目の行に属するｋ番目の文字と、ｊ番目の行に属する文字とが互いに重なっているか否かを判定する（図１３の１３０８）。例えば、この重なりの判定においては、媒体が横書きの場合、重なり判定条件式：（（ｙｓ１−Ｐ６５）≦ｙｅ２）かつ（（ｙｅ１−Ｐ６６）≧ｙｓ２）・・・(9) を満たす場合に、各文字は重なり合うと判定できる。ただし、Ｐ６５およびＰ６６は、任意の値を示す。また、媒体が縦書きの場合には、重なり判定条件式：（（（ｘｓ１−Ｐ６７）≦ｘｅ２）かつ（（ｘｅ１＋Ｐ６８）≧ｘｓ２）・・・(10)を満たす場合に、各文字は重なり合うと判定できる。ただし、Ｐ６７およびＰ６８は、任意の値を示す。
【０１７０】
以上のように文字が重なっているか否かを判定し（図１３の１３０９）、ｉ番目の行に属するｋ番目の文字と、ｊ番目の行に属するｍ番目の文字とが重なっていない場合には、そのまま後述の処理１３１１に移行する。
【０１７１】
重なっている場合には、ｉ番目の行に属するｋ番目の文字と、ｊ番目の行に属するｍ番目の文字とのそれぞれの文字位置を編集する（図１３の１３１０）。
【０１７２】
図１４は、第１行外文字編集部で文字位置を編集した結果の説明に供する図である。図１４（Ａ）に示されている媒体の文字列パタン「小さい」および「大きい」は、第１文字認識エンジン１３０で文字毎に切り出される。その結果、図１４（Ｂ）に示すように、行Ｌ１に属する各文字「小」、「さ」、・・の４文字が切り出されて、行Ｌ２に属する各文字「大」、「き」、「い」の３文字が切り出されたとする。
【０１７３】
図１４（Ｂ）では、切り出された文字のうち、文字「小」については行外の文字と重なりがないため、文字位置を編集しない。また、文字「さ」については行外の文字「大」と重なり合うため、文字位置を編集する。この文字位置の編集は、例えば以下のように行う。
【０１７４】
媒体が横書きであって条件式(9) を満たして重なりがあると判定されたとき、ｙｓ＝ＭＡＸ（ｙｓ１、ｙｓ２）とし、ｙｅ＝ＭＩＮ（ｙｅ１、ｙｅ２）とする。ｙｓ＝ｙｓ１である場合にはｙｓ１に（ｙｅ＋Ｐ６４１）を代入し、ｙｓ＝ｙｓ２である場合にはｙｓ２に（ｙｅ＋Ｐ６４２）を代入することにより文字位置を編集する。また、ｙｅ＝ｙｅ１である場合には、ｙｅ１に（ｙｓ−Ｐ６３１）を代入し、ｙｅ＝ｙｅ２である場合には、ｙｅ２に（ｙｓ−Ｐ６３２）を代入することにより文字位置を編集する。
【０１７５】
また、媒体が縦書きであって条件式(10)を満たして重なりがあると判定されたとき、ｘｓ＝ＭＡＸ（ｘｓ１、ｘｓ２）とし、ｘｅ＝ＭＩＮ（ｘｅ１、ｘｅ２）とする。ｘｓ＝ｘｓ１である場合にはｘｓ２に（ｘｅ＋Ｐ６８１）を代入し、ｘｓ＝ｘｓ２である場合にはｘｓ１に（ｘｅ＋Ｐ６８２）を代入することにより文字位置を編集する。また、ｘｅ＝ｘｅ１である場合には、ｘｅ１に（ｘｓ−Ｐ６７１）を代入し、ｘｅ＝ｘｅ２である場合には、ｘｅ２に（ｘｓ−Ｐ６７２）を代入することにより文字位置を編集する。
【０１７６】
その後、着目するｉ番目の行に属するｋ番目の文字と、ｊ番目の行に属するｍ番目の文字との重なり判定が終了したかどうかを判定する（図１３の１３１１）。これが終了したと判定された場合には、ｉ番目の行内の文字すべてが終了したかどうかを判定する（図１３の１３１２）。これが終了したと判定された場合には、ｊ番目の行のすべてが終了したかどうかを判定する（図１３の１３１３）。これが終了したと判定された場合には、着目するｉ番目の行すべてが終了したかどうかを判定する（図１３の１３１４）。これが終了したと判定された場合には、行外文字編集の処理を終了する（図１３の１３１９）。
【０１７７】
なお、処理１３０９において重なりなしと判定した場合には、処理１３１１を次に行う。処理１３１１において終了しないと判定した場合には、ｍにｍ＋１を代入したのち（図１３の１３１５）、処理１３０８を行う。処理１３１２において終了しないと判定した場合には、ｋにｋ＋１を代入したのち（図１３の１３１６）、処理１３０７を行う。処理１３１３において終了しないと判定した場合には、ｊにｊ＋１を代入したのち（図１３の１３１７）、処理１３０４を行う。処理１３１４において終了しないと判定した場合には、ｉにｉ＋１を代入したのち（図１３の１３１８）、処理１３０３を行う。
【０１７８】
図１４（Ｃ）は、第１行外文字編集部における編集結果を示す図である。図１４（Ｃ）に示すように、例えば、第１行外文字編集部は、切り出された文字であって異なる行に属する文字「さ」および文字「大」について重なり合うと判定しそれらの文字位置を編集する。各文字の文字位置（図中、太線で示す矩形の領域）は、他の行に属する文字の文字位置と互いに重なり合わない程度に離間した位置となるように、編集されている。
【０１７９】
また、この実施の形態の複合文字編集部１２９０では、異なる行における文字位置の編集を行ったのち、第２の実施の形態と同様に同一行内における文字位置の編集を行う。また、そののち、第２の実施の形態と同様に、複合文字位置判定部１０３０および複合文字認識部１８０が最終的な文字の認識結果を決める。
【０１８０】
この第３の実施の形態の文字読取装置１２００によれば、各文字切出し部で切り出された文字が、この文字の属する行とは異なる行に属する文字と重なっているか否かを判定できる。そして、重なっている場合にはそれらの文字の文字位置を編集できる。
【０１８１】
そのため、この文字読取装置では、行内の文字同士が重なって切り出された場合でも、第１の実施の形態と同様に、文字位置が１対１で対応するか否かを正確に判定できる。しかも、行外の文字との文字位置の編集を行ったのち、第１或いは第２の実施の形態にて説明したような同一行内における文字位置の編集を行うと、文字位置の対応を、第１或いは第２の実施の形態よりも更に正確に判定できる。したがって、更に、文字認識率を高めることができる。
【０１８２】
４．第４の実施の形態
上述の第３の実施の形態の文字読取装置１２００は、この同一行内における文字の重なり判定前に、切り出された文字と、この文字の属する行とは異なる行に属する文字とが重なり合っているか否かを判定し、かつ、重なり合う場合にはこれらの文字の文字位置を編集する点に着目した装置であった。一方、この第４の実施の形態での文字読取装置では、同一行内での文字の重なり判定前に、文字切出し部で切り出された文字と、行切出し部でそれぞれ切り出された行であって当該文字の属する行とは異なる行とが重なり合っているか否かを判定し、かつ、重なり合う場合には当該文字の文字位置を編集する。
【０１８３】
この第４の実施の形態の装置１５００は、文字切り出し処理の中間処理として行単位の切り出しが行われる場合（一般にはこれが多い）の、この行切り出し情報をも利用する点に特徴を持つ装置である。
【０１８４】
図１５は、第４の実施の形態の文字読取装置１５００の構成を示すブロック図である。ここでは、第４の実施の形態の思想を第２の実施の形態の文字読取装置に適用した例を示してあるため、第２の実施の形態の文字読取装置との相違点について主に説明する。なお、この第４の実施の形態の思想を第１の実施の形態の文字読取装置に適用しても良い。
【０１８５】
この第４の実施の形態の文字読取装置１５００は、第２の実施の形態の文字読取装置と同様に、第１、第２および第Ｎ文字認識エンジン１３０、１４０および１０１０を具える。
【０１８６】
この文字読取装置１５００は、第２の実施の形態の文字読取装置とはそれぞれ異なる構成の複合判定部１５１０を具える。
【０１８７】
すなわち、この複合判定部１５１０では、各文字認識エンジン１３０、１４０および１０１０でそれぞれ切り出された文字が、同一行内の文字と重なっているか否かを判定するのみならず、他の行と重なっているか否かも判定する。そして、重なり合う場合にはその重なる文字の文字位置を編集する。その後、第２の実施の形態と同様の処理を行うことにより、複合的に最終的な認識結果を得る。
【０１８８】
これを実現するため、この複合判定部１５１０は、第２の実施の形態とは異なる構成の複合文字編集部１５９０を具える。
【０１８９】
また、各文字認識エンジン１３０、１４０および１０１０は、それぞれ文字切出し部の各前段に個々に設けられた行切出し部を具える。そのため、各行切出し部１３１、１４１および１０１１は、媒体の領域から行を切り出すと共に、その切り出した行の行位置の情報を生成する。この行位置の情報に基づいて、以下に示すような重なり判定を行うことができる。
【０１９０】
この複合文字編集部１５９０は、第１、第２および第Ｎ行内文字編集部１９１、１９２および１０９３の各前段に第１、第２および第Ｎ対行文字編集部１５９１、１５９２および１５９３を具える。この第１、第２および第Ｎ行内文字編集部１９１、１９２および１０９３については、第２の実施の形態のものと同様であるので、説明を省略する。
【０１９１】
また、複合判定部１５１０のその他の構成すなわち複合文字位置判定部１０３０および複合文字認識部１８０については、第２の実施の形態の構成と同様であるので、説明を省略する。
【０１９２】
この第１、第２および第Ｎ対行文字編集部１５９１、１５９２および１５９３は、各文字認識エンジン１３０、１４０および１０１０で切り出された文字と、この文字の属する行とは異なる行とが、互いに重なり合っているか否かを判定する。そして、重なり合う場合にはその重なる文字の文字位置を編集する。
【０１９３】
続いて、第４の実施の形態の文字読取装置１５００の動作につき説明する。ただし、第２の実施の形態にて説明したものについては説明を省略する。よって、以下では、対行文字編集部につき主に説明する。
【０１９４】
図１６は、対行文字編集部の動作を示すフローチャートである。ただし、第１、第２および第Ｎ対行文字編集部１５９１、１５９２および１５９３は、それぞれ文字認識エンジン毎に処理を行うが、これらは同様の処理動作を行うもので良い。
【０１９５】
第１、第２および第Ｎ対行文字編集部１５９１、１５９２および１５９３が処理を開始する（図１６の１６０１）。なお、第２および第Ｎ対行文字編集部１５９２および１５９３は、以下に説明する第１対行文字編集部と同様に動作するため、その説明を省略する。
【０１９６】
先ず、第１対行文字編集部１５９１は、第１行切出し部１３１で切り出された行の行ＩＤを示す変数ｉに１を代入して初期化したのち（図１６の１６０２）、この行とは異なる行の行ＩＤを示す変数ｊにｉ＋１を代入して初期化する（図１６の１６０３）。
【０１９７】
各変数を初期化したのち、第１対行文字編集部１５９１は、ｉ番目の行が、ｊ番目の行と重なっているか否かを判定する（図１６の１６０４）。
【０１９８】
なお、この行の重なり判定は必ず行うべき処理ではない。しかしながら、着目する文字と、この文字の属する行とは異なるすべての行とについて重なりを判定したのでは、判定に長時間を要する。そのため、特に、着目する行に含まれる文字の文字位置と、それ以外の行の行位置との重なり判定前に、着目する行およびそれ以外の行の行位置の重なり判定を行っている。これにより、文字および行の重なり判定を短時間で行うことができる。なお、この行の重なり判定については、例えば次のように行う。
【０１９９】
例えば、媒体が横書きの場合には、ｉ番目の行を図２の領域２０１とし、ｊ番目の行を図２の領域２０２と見なす。このとき、各行位置の座標が、重なり判定条件式：（（ｙｓ１−Ｐ５１）≦ｙｅ２）かつ（（ｙｅ２＋Ｐ５２）≧ｙｓ２）・・・(11)を満たす場合に、各行は重なり合うと判定できる。ただし、Ｐ５１およびＰ５２は、任意の値を示す。また、媒体が縦書きの場合には、ｊ番目の行およびｋ番目の行の重なり判定においては、重なり判定条件式：（（（ｘｓ１−Ｐ５３）≦ｘｅ２）かつ（（ｘｅ１＋Ｐ５４）≧ｘｓ２）・・・(12)を満たす場合に、各行は重なり合うと判定できる。ただし、Ｐ５３およびＰ５４は、任意の値を示す。
【０２００】
以上のように、行が重なっているか否かを判定し（図１６の１６０５）、ｉ番目の行とｊ番目の行が重なっていない場合には、そのまま後述の処理１６０７に移行する。
【０２０１】
重なっている場合には、ｊ番目の行の行位置に対してｉ番目の行に属する文字の文字位置を編集すると共に、ｉ番目の行の行位置に対してｊ番目の行に属する文字の文字位置を編集する（図１６の１６０６）。このとき、例えば、ｉ番目の行に属する文字は、ｊ番目の行と重なり合わないように文字位置が編集されると共に、ｊ番目の行に属する文字は、ｉ番目の行と重なり合わないように文字位置が編集される。この文字位置の編集は、例えば次のように行う。
【０２０２】
ここで媒体が横書きの場合には、ｉ番目の行に属するｋ番目の文字の文字位置が、左上（ｘｓ（ｋ）、ｙｓ（ｋ））および右下（ｘｅ（ｋ）、ｙｅ（ｋ））で表されるとする。また、ｉ番目の行の行位置はｙｓ１およびｙｅ１であり、ｊ番目の行の行位置はｙｓ２およびｙｅ２であるから、ｙｓ＝ＭＡＸ（ｙｓ１、ｙｓ２）とし、ｙｅ＝ＭＩＮ（ｙｅ１、ｙｅ２）とする。このとき、ｙｓ≦ｙｓ（ｋ）≦ｙｅを満たすならば、ｙｓ（ｋ）に（ｙｅ＋Ｐ５５）を代入し、ｙｓ≦ｙｅ（ｋ）≦ｙｅを満たすならば、ｙｅ（ｋ）に（ｙｓ−Ｐ５６）を代入する。また、ｊ番目の行の文字位置に対しても、同様に文字位置を編集する。また、媒体が縦書きの場合には、横書きの場合にｙ軸に対して文字位置を編集したところを、ｘ軸に対して文字位置を編集すればよい。
【０２０３】
以上のように文字および行が重なっているか否かを判定し、重なっている場合にはその文字位置を編集する（図１６の１６０６）。
【０２０４】
ｉ番目の行内すべての文字およびｊ番目の行の重なり判定と、ｊ番目の行すべての文字およびｉ番目の行の重なり判定とが、すべてのｊについて終了したか否かを判定する。終了していない場合にはｊにｊ＋１を代入して（図１６の１６０９）、処理１６０４を行う。終了した場合には、すべてのｉについて終了したか否かを判定する。終了していない場合にはｉにｉ＋１を代入して（図１６の１６１０）、処理１６０３を行う。すべてのｉについて終了すると、対行文字編集を終了する（図１６の１６１１）。
【０２０５】
図１７は、第１対行文字編集部で文字位置を編集した結果の説明に供する図である。図１７（Ａ）は、図１４（Ａ）に示すものと同じ文字列パタンについて、それぞれ行と文字との位置編集がなされる前の状態を示し、図１７（Ｂ）は、行と文字との位置編集がなされた後の状態を示す。
【０２０６】
図１７（Ｂ）では、切り出された文字のうち、文字「小」については行Ｌ２と重なりがないため、文字位置を編集しない。また、文字「さ」については行Ｌ２と重なり合うため、文字位置を編集する。各文字の文字位置（図中、太線で示す矩形の領域）は、各文字の属する行とは異なる行の行位置と重なり合わない程度に離間した位置となるように、編集されている。
【０２０７】
また、この実施の形態の複合文字編集部１５９０では、異なる行における文字位置の編集を行ったのち、第２の実施の形態と同様に同一行内における文字位置の編集を行う。また、そののち、第２の実施の形態と同様に、複合文字位置判定部および複合文字認識部が最終的な文字の認識結果を決める。
【０２０８】
この第４の実施の形態の文字読取装置１５００によれば、各文字切出し部で切り出された文字が、この文字の属する行とは異なる行と重なっているか否かを判定できる。そして、重なっている場合にはその文字の文字位置を編集できる。
【０２０９】
そのため、この文字読取装置では、行内の文字同士が重なって切り出された場合でも、第１の実施の形態と同様に、文字位置が１対１で対応するか否かを正確に判定できる。しかも、行外の文字との文字位置の編集を行ったのち、第１或いは第２の実施の形態にて説明したような同一行内における文字位置の編集を行うと、文字位置の対応を、第１或いは第２の実施の形態よりも更に正確に判定できる。したがって、更に、文字認識率を高めることができる。また、第４の実施の形態の文字読取装置は、他の行内の文字すべてについて重なり判定を行う第３の実施の形態の文字読取装置と比較して、より速く文字位置を編集することができる。
【０２１０】
５．第５の実施の形態
次に、第５の実施の形態の文字読取装置について説明する。図１８は第５の実施の形態の文字読取装置１８００の構成を示すブロック図である。
【０２１１】
この第５の実施の形態の装置１８００は、第４の実施の形態と同様に行単位の切り出しを行い、この行切り出し情報を利用する点に特徴をもつ装置である。
【０２１２】
すなわち、Ｎ個の文字認識エンジン１３０、１４０、１０１０（もちろん、文字認識エンジンが２個の場合があっても良い。）間で文字位置が対応する文字を検出するという本発明の特徴的な処理を行う前に、先ず、Ｎ個の文字認識エンジンが文字読取対象のデータからそれぞれ切り出した行の位置の情報を得て、この情報によりその後の処理を行うか否かを判断する機能を付加した装置である。
【０２１３】
そのため、この第５の実施の形態の文字読取装置１８００は、これまでの実施の形態とは異なる構成の複合判定部１８１０を具える。
【０２１４】
すなわち、この複合判定部１８１０は、複合行位置判定部１８２０と、複合文字位置判定部１８３０と、複合文字認識部１８０と、複合行／文字編集部１８９０とを具える。
【０２１５】
なお、行切出し部で切り出されて複合判定部へ出力される行の行位置の情報は、文字の認識結果に付加されて利用されても良い。したがって、このとき、この発明で言う行の行位置とは、認識結果に含まれる情報と見なせる。そこで以下の説明では、行の位置を、認識結果中の行の位置と称することもある。
【０２１６】
この複合行／文字編集部１８９０は、第１、第２および第Ｎ行内文字編集部１９１、１９２および１０９３の各前段に第１、第２および第Ｎ領域内行編集部１８９１、１８９２および１８９３を具える。
【０２１７】
この第１、第２および第Ｎ行内文字編集部１９１、１９２および１０９３については、第２の実施の形態のものと同様であるので、説明を省略する。
【０２１８】
この第１、第２および第Ｎ領域内行編集部１８９１、１８９２および１８９３は、各行切出し部１３１、１４１および１０１１でそれぞれ切り出された行および他の行が重なり合っているか否かを判定し、重なり合う場合には当該行および他の行のそれぞれの行位置を編集する。
【０２１９】
なお、このように領域内行編集部で行位置が編集された文字を含む行切出し部で切り出された行を、「位置編集済み行」と称することがある。
【０２２０】
複合行位置判定部１８２０は、位置編集済みの行の行位置の情報に基づいて、位置編集済み行の行中に、互いに行位置が対応する行があるか否かを判定する。なお、詳細は後述の動作説明にて述べるが、複合行位置判定部１８２０では互いに行位置が対応するか否かが判定され、この行位置が対応すると判定された行について、同一行内での文字位置の重なりを判定すると共に必要に応じて文字位置を編集し、この位置編集済みの文字に対して文字位置の対応を判定する。
【０２２１】
典型的に言うと、例えば、行位置が対応すると判定された行のみについて、このような文字位置の対応判定等を行う。
【０２２２】
複合文字位置判定部１８３０は、例えば第２の実施の形態にて説明した複合文字位置判定部１０３０で構成することができる。
【０２２３】
ここで、第５の実施の形態の文字読取装置１８００の動作につき説明する。なお、この文字読取装置１８００の、第１〜第４の実施の形態の装置との相違点は、既に説明したように、特に、複合行／文字編集部１８９０の第１、第２および第Ｎ領域内行編集部１８９１、１８９２および１８９３と、複合行位置判定部１８２０とにあるので、動作の説明もこの部分について主に行う。
【０２２４】
図１９は、領域内行編集部の動作を示すフローチャートである。ただし、第１、第２および第Ｎ領域内行編集部１８９１、１８９２および１８９３は、それぞれ文字認識エンジン毎に処理を行うが、これらは同様の処理動作を行うもので良い。
【０２２５】
第１、第２および第Ｎ領域内行編集部１８９１、１８９２および１８９３が処理を開始する（図１９の１９０１）。なお、第２および第Ｎ領域内行編集部１８９２および１８９３は、以下に説明する第１領域内行編集部と同様に動作するため、その説明を省略する。
【０２２６】
第１領域内行編集部１８９１が処理を開始する（図１９の１９０１）。この第１領域内行編集部１８９１に第１文字認識エンジン１３０によって得られた文字の認識結果によって読みとられた文字の認識結果が入力される。
【０２２７】
先ず、第１領域内行編集部１８９１は、第１行切出し部１３１で切り出された行の行ＩＤを示す変数ｉに１を代入して初期化したのち（図１９の１９０２）、この行とは異なる行の行ＩＤを示す変数ｊにｉ＋１を代入して初期化する（図１９の１９０３）。
【０２２８】
各変数を初期化したのち、第１領域内行編集部１８９１は、ｉ番目の行が、ｊ番目の行と重なっているか否かを判定する（図１９の１９０４）。この重なり判定は、次のように行う。
【０２２９】
例えば、媒体が横書きの場合には、ｉ番目の行を図２の領域２０１とし、ｊ番目の行を図２の領域２０２と見なす。このとき、各行位置の座標が、重なり判定条件式：（（ｙｓ１−Ｐ７１）≦ｙｅ２）かつ（（ｙｅ２＋Ｐ７２）≧ｙｓ２）・・・(13)を満たす場合に、各行は重なり合うと判定できる。ただし、Ｐ７１およびＰ７２は、任意の値を示す。また、媒体が縦書きの場合には、ｊ番目の行およびｋ番目の行の重なり判定においては、重なり判定条件式：（（（ｘｓ１−Ｐ７３）≦ｘｅ２）かつ（（ｘｅ１＋Ｐ７４）≧ｘｓ２）・・・(14)を満たす場合に、各行は重なり合うと判定できる。ただし、Ｐ７３およびＰ７４は、任意の値を示す。
【０２３０】
以上のように、行が重なっているか否かを判定し（図１９の１９０５）、ｉ番目の行とｊ番目の行が重なっていない場合には、そのまま後述の処理１９０７に移行する。
【０２３１】
重なっている場合には、ｊ番目の行の行位置を編集すると共に、ｉ番目の行の行位置を編集する（図１９の１９０６）。例えば、この行位置の編集は以下のように行う。
【０２３２】
媒体が横書きの場合であって条件式(13)を満たす場合には、ｙｓ＝ＭＡＸ（ｙｓ１、ｙｓ２）とし、ｙｅ＝ＭＩＮ（ｙｅ１、ｙｅ２）とする。このとき、ｙｓ＝ｙｓ１ならばｙｓ１に（ｙｅ＋Ｐ７３）を代入し、ｙｓ＝ｙｓ２ならばｙｓ２に（ｙｓ−Ｐ７４）を代入する。また、ｙｅ＝ｙｅ１ならばｙｅ１に（ｙｓ−Ｐ７５）を代入し、ｙｅ＝ｙｅ２ならばｙｅ２に（ｙｓ−Ｐ７６）を代入する。また、媒体が縦書きの場合には、横書きの場合にｙ軸に対して文字位置を編集したところを、ｘ軸に対して文字位置を編集すればよい。
【０２３３】
続いて、ｉ番目の行とｊ番目の行との重なり判定が、すべてのｊについて終了したか否かを判定する（図１９の１９０７）。終了していない場合にはｊにｊ＋１を代入して（図１９の１９０９）、処理１９０４を行う。終了した場合には、全てのｉについて終了したか否かを判定する（図１９の１９０８）。終了していない場合にはｉにｉ＋１を代入して（図１９の１９１０）、処理１９０３を行う。すべてのｉについて終了すると、領域内行編集を終了する（図１９の１９１１）。
【０２３４】
図２０は、領域内編集部で行位置を編集した結果の説明に供する図である。図２０（Ａ）は、図１４（Ａ）に示すものと同じ文字列パタンを含む行について、行位置の編集がなされる前の状態を示し、図２０（Ｂ）は、各行の位置編集がなされた後の状態を示す。図中、太い破線は、行位置が編集された行を示す。
【０２３５】
図２０（Ａ）に示すように第１行切出し部１３１で切り出された行Ｌ１およびＬ２は、互いに重なりあう。そのため、第１領域内行編集部１８９１は、行Ｌ１およびＬ２の行位置を編集する。このとき、図２０（Ｂ）に示すように、行Ｌ１および行Ｌ２の行位置は、少なくとも互いに重なり合わない程度に離間した位置（位置編集済み行Ｌ１ａおよび位置編集済み行Ｌ２ａ参照）となるように、編集される。
【０２３６】
以上のように、各領域内行編集部１８９１、１８９２および１８９３での処理が終了すると、第５の実施の形態の文字読取装置１８００では、各行内文字編集部１９１、１９２および１０９３が同一行内での文字位置の編集を行う。しかる後、複合行位置判定部１８２０が、各行切出し部で切り出された位置編集済み行中に、互いに行位置が対応する行があるか否かを判定する。言い換えれば、複合行位置判定部１８２０は、各文字認識エンジンの認識結果中の、行の位置の情報に基づいて、各文字認識エンジンの位置編集済み行の間で、互いに行位置が対応する行があるか否かを判定する。この判定は、例えば以下に示すように、第２の実施の形態にて説明した複合文字位置判定部１０３０での文字位置の情報に代えて行位置の情報を用いることにより行う。
【０２３７】
また、この行位置は、例えば図２を参照して説明した文字位置の概念を行位置に適用した概念として考えてもよい。このとき、行位置が対応するか否かの判定条件は、例えば、図７を用いて説明した各条件の中の１または複数を用いることができる。
【０２３８】
ただし、予め文字の並び（横／縦）や行の並び（縦／横）が明らかな場合は、判定部１８２０および判定部１８３０の第１〜第Ｎ−１行位置対応判定部および第１〜第Ｎ−１文字位置対応判定部（いずれも図示せず。これらの概念は、図１２中の１２３１、１２３２である。）の判定条件を、他の好適な条件、これに限られないが、例えば以下に図２１を参照して説明する条件に変更することで、当該判定処理の処理速度が速くなる。
【０２３９】
なお、以下に述べる文字の並びや行の並びとは、横書きの文書の場合は、文字の並びは横で行の並びは縦の意味であり、縦書きの文書の場合は、文字の並びは縦で行の並びは横の意味である。
【０２４０】
図２１（Ａ）は、文字が横書き、すなわち、文字の並びが横方向で行の並びが縦方向と、予め分かっている場合の、行位置の対応判定に用いて好適な条件を説明する図である。図２１（Ｂ）は、同じく文字が横書きと予め分かっている場合の、文字位置の対応判定に用いて好適な条件を説明する図である。
【０２４１】
図２１（Ａ）では行位置の対応判定条件として３通りを示し、図２１（Ｂ）では文字位置の対応条件として３通りを示しているが、この限りでない。
【０２４２】
図２１（Ａ）中の、その１の条件は、（（（ｙｓ１−Ｐ２３）≦ｙｅ２）かつ（（ｙｅ１＋Ｐ２４）≧ｙｓ２））・・・(15)である。ただし、Ｐ２３およびＰ２４は任意の値を示す。
【０２４３】
この条件式(15)であってＰ２３およびＰ２４がそれぞれ０である条件式は、基エンジンの位置編集済み行の行位置と、他エンジンの位置編集済み行の行位置とが縦方向（Ｙ方向、図２参照）において少しでも重なっている場合に行位置が対応していると判断できる条件式である。このとき、Ｐ２３およびＰ２４の値を変更することにより、行位置同士の重なりを判断するマージンを調整できる。
【０２４４】
図２１（Ａ）中の、その２の条件は、（（（ｙｓ１≧（ｙｓ２−Ｐ２５））かつ（ｙｅ１≦（ｙｅ２＋Ｐ２６）））若しくは（（ｙｓ２≧（ｙｓ１−Ｐ２７））かつ（ｙｅ２≦（ｙｅ１＋Ｐ２８）））・・・(16)である。ただし、Ｐ２５〜Ｐ２８は任意の値を示す。
【０２４５】
この条件式(16)であってＰ２５〜Ｐ２８がそれぞれ０である条件式は、基エンジンの位置編集済み行の行位置が、他エンジンの位置編集済み行の行位置にＹ方向において全て含まれている場合、若しくは、他エンジンの位置編集済み行の行位置が、基エンジンの位置編集済み行の行位置にＹ方向において全て含まれている場合に、行位置が対応していると判断できる条件式である。このとき、Ｐ２５〜Ｐ２８の値を変更することにより、行位置同士の包含関係を判断するマージンを調整できる。
【０２４６】
図２１（Ａ）中の、その３の条件は、（（（ＭＡＸ（ｙｅ１、ｙｅ２）−ＭＩＮ（ｙｓ１、ｙｓ２））×Ｐ２９）≧（ｙｅ１−ｙｓ１））若しくは（（（ＭＡＸ（ｙｅ１、ｙｅ２）−ＭＩＮ（ｙｓ１、ｙｓ２））×Ｐ３０）≧（ｙｅ２−ｙｓ２）））・・・(17)である。ただし、Ｐ２９およびＰ３０は任意の値を示す。
【０２４７】
この条件式(17)は、Ｙ方向において基エンジンの位置編集済み行の行位置と、他エンジンの位置編集済み行の行位置とが互いに重なり合う部分の高さが、基エンジンの位置編集済み行の行位置のＹ方向の高さと比較してある程度（Ｐ２９に依存する。）の割合の場合に、行位置が対応していると判断できる条件式、若しくは、Ｙ方向において基エンジンの位置編集済み行の行位置と、他エンジンの位置編集済み行の行位置とが互いに重なり合う部分の高さが、他エンジンの位置編集済み行の行位置のＹ方向の高さと比較してある程度（Ｐ３０に依存する。）の割合の場合に、行位置が対応していると判断できる条件式である。
【０２４８】
図２１（Ｂ）中の、その１の条件は、（（（ｘｓ１−Ｐ３１）≦ｘｅ２）かつ（（ｘｅ１＋Ｐ３２）≧ｘｓ２））・・・(18)である。ただし、Ｐ３１およびＰ３２は任意の値を示す。
【０２４９】
この条件式(18)であってＰ３１およびＰ３２がそれぞれ０である条件式は、基エンジンの位置編集済み文字の文字位置と、他エンジンの位置編集済み文字の文字位置とが、横方向（Ｘ方向、図２参照）において少しでも重なっている場合に文字位置が対応していると判断出来る条件式である。このとき、Ｐ２５〜Ｐ２８の値を変更することにより、文字位置同士の対応関係を判断するマージンを調整できる。
【０２５０】
図２１（Ｂ）中の、その２の条件は、（（（ｘｓ１≧（ｘｓ２−Ｐ３３））かつ（ｘｅ１≦（ｘｅ２＋Ｐ３４）））若しくは（（ｘｓ２≧（ｘｓ１−Ｐ３５））かつ（ｘｅ２≦（ｘｅ１＋Ｐ３６）））・・・(19)である。ただし、Ｐ３３およびＰ３４は任意の値を示す。
【０２５１】
この条件式(19)であってＰ３３〜Ｐ３６がそれぞれ０である条件式は、基エンジンの位置編集済み文字の文字位置が、他エンジンの位置編集済み文字の文字位置にＸ方向において全て含まれている場合、若しくは、他エンジンの位置編集済み文字の文字位置が基エンジンの位置編集済み文字の文字位置にＸ方向において全て含まれている場合に、文字位置が対応していると判断出来る条件式である。このとき、Ｐ３３〜Ｐ３６の値を変更することにより、文字位置同士の包含関係を判断するマージンを調整できる。
【０２５２】
図２１（Ｂ）中の、その３の条件は、（（（ＭＡＸ（ｘｅ１、ｘｅ２）−ＭＩＮ（ｘｓ１、ｘｓ２））×Ｐ３７）≧（ｘｅ１−ｘｓ１））若しくは（（ＭＡＸ（ｘｅ１、ｘｅ２）−ＭＩＮ（ｘｓ１、ｘｓ２））×Ｐ３８）≧（ｘｅ２−ｘｓ２）））・・・(20)である。ただし、Ｐ３７およびＰ３８は任意の値を示す。
【０２５３】
この条件式(20)は、Ｘ方向において基エンジンの位置編集済み文字の文字位置と、他エンジンの位置編集済み文字の文字位置とが重なり合う部分の幅が、基エンジンの位置編集済み文字の文字位置のＸ方向の幅と比較してある程度（Ｐ３７に依存する。）の割合の場合に、文字位置が対応していると判断出来る条件式、若しくは、Ｘ方向において基エンジンの位置編集済み文字の文字位置と、他エンジンの位置編集済み文字の文字位置とが重なり合う部分の高さが、他エンジンの位置編集済み文字の文字位置のＸ方向の幅と比較してある程度（Ｐ３８に依存する。）の割合の場合に、文字位置が対応していると判断出来る条件式である。
【０２５４】
上述の説明では予め文字が横書きと分かっている場合の好適な判定条件例を説明したが、文字が縦書き、すなわち、文字の並びが縦方向で行の並びが横方向と、予め分かっている場合については、上述した行の対応関係の判定と文字の対応関係の判定を入れ換える。すなわち、文字が縦書きの場合は、行の対応関係の判定をＸ方向について行い、文字の対応関係の判定をＹ方向について行えば良い。
【０２５５】
Ｎ個の文字認識エンジンの位置編集済み行の間で、対応する行が無かった場合は、例えば、リジェクトを出力する。もちろん、これに限られない。
【０２５６】
一方、Ｎ個の文字認識エンジンの位置編集済み行中に各文字認識エンジン間で互いに対応すると判定された行について、次に、複合文字位置判定部１８３０による処理が行われる。
【０２５７】
この複合文字位置判定部１８３０では、上述の各実施の形態にて説明したような文字位置の対応判定を行う。例えば、この文字位置の対応判定は、各文字認識エンジンの位置編集済み行のうち、１対１に対応すると判定された行についてのみ行っても良い。
【０２５８】
以上説明したように、この第５の実施の形態の文字読取装置１８００によれば、Ｎ個の行切出し部でそれぞれ切り出された行および他の行が重なり合っているか否かを判定し、重なり合う場合にはこの行および他の行のそれぞれの行位置を編集する。そして、行位置の編集が済んだ行の行位置の情報に基づいて、行位置の編集が済んだ行中に、互いに行位置が対応する行があるか否かを判定する。このとき対応すると判定した行同士についてのみ文字位置の対応判定を行う。
【０２５９】
そのため、特に複数行からなる読取対象パタンを文字認識する際に、対応関係の無い行同士について、文字位置が対応する文字が在るか否かの判定が行われることがなくなるので、より処理速度が速くかつ文字認識率が高い文字読取装置を実現できる。
【０２６０】
図２２は、第３、第４或いは第５の実施の形態の文字読取装置の利用形態を説明する図である。図２２（Ａ）に示す文字切り出し結果では、行方向に沿って正しく文字列パタンが切り出されている。一方、図２２（Ｂ）に示す文字切り出し結果では、帳票の傾き等によって、行方向に対して傾いた文字列パタンが切り出されている。すなわち、この図２２（Ｂ）の場合には、切り出された文字がこの文字の属する行とは異なる行に重なっているため、複合的な文字認識を正しく行えない場合がある。しかしながら、第３、第４或いは第５の実施の形態の文字読取装置によれば、文字位置の対応判定を正しく行えるため、正確に文字を認識できる。
【０２６１】
上述においては、この発明の文字読取装置のいくつかの実施の形態について説明した。しかしこの発明は上述した実施の形態に何ら限定されるものではなく、多くの変形または変更を加えることができる。
【０２６２】
たとえば、上述した各実施の形態では、各エンジン間で、位置編集済み文字の文字位置が対応する文字があるか、または、位置編集済み行の行位置が対応する行があるかというように、文字や行に着目した対応関係を判定していた。これらに加えて、行よりさらに広い任意の領域に着目し、このような領域が各エンジン間で対応しているかどうかを判定しこれに基づいて処理を行う場合があっても良い。また、このような領域に対しても、同一行切出し部で切り出される領域が互いに重なりあうか否かを判定し、重なり合う場合には各領域の位置を編集しても良い。具体的には次のような構成となる。
【０２６３】
すなわち、画像データから、行よりさらに広い任意の領域を切り出す領域切出し部を複数具えると共に、領域の重なりを判定し、編集しかつ対応判定する複合判定部を具えていればよい。この複合判定部は、第５の実施の形態では行に対して、行位置の重なり判定、行位置の編集および行の対応判定を行った処理と同様の処理を、領域に対しても行える構成であればよい。
【０２６４】
すなわち、この複合判定部は、複数の領域切出し部でそれぞれ切り出された領域と他の領域とが重なり合っているか否かを判定し、重なり合う場合には当該領域および他の領域のそれぞれの領域位置を編集し、領域位置の編集が済んだ領域の領域位置の情報に基づいて、領域位置の編集が済んだ領域中に、互いに領域位置が対応する領域があるか否かを判定し、かつ、対応すると判定した領域それぞれについて文字位置の対応判定を行う複合判定部として良い。
【０２６５】
こうすれば、各エンジンが抽出する行より広い任意の領域が互いに重なり合わないようにこの領域の位置を編集できる。そして、この編集後の領域のうち、文字位置が対応する文字が含まている確率が高い領域同士に対して、文字位置が対応する文字が在るか否かの処理を行える。なお、行よりさらに広い任意の領域についての対応関係を調べて対応関係があるとされた領域に対し、次に、行位置についての対応関係を調べる処理を実施し、その後、文字位置が対応する文字が在るか否かの処理を行うという具合に、段階的な処理を行う場合があっても良い。
【０２６６】
また、各実施の形態で説明した処理の手順はこの発明の範囲の一例にすぎず、他の好適な処理手順に変更することができる。
【０２６７】
【発明の効果】
上述した説明から明らかなようにこの発明の文字読取装置によれば、アルゴリズムが異なる複数の文字切出し部がそれぞれ切り出した文字の認識結果を用いて複合的な認識を行う際に、文字切出し部間で文字位置が対応する文字の認識結果を用いて複合的な認識を行える。また、アルゴリズムが異なる複数の文字認識部それぞれの認識結果を用いて複合的な認識を行う際に、文字認識部間で文字位置が対応する文字の認識結果を用いて複合的な認識を行える。
【０２６８】
そのため、各文字切出し部（各文字認識部）が同様な文字として切り出した文字同士について複合的な認識を行える。
【０２６９】
しかも、このような文字位置の対応判定前に、同一の文字切出し部で切り出された文字が重なっているか否かを判定する。そして重なっている場合には、その文字の位置を編集する。そのため、上述の文字位置の対応判定を正確に行える。
【０２７０】
したがって、アルゴリズムが異なる複数の文字切り出し手法を併用し複合的な文字認識をする文字読取装置や、アルゴリズムが異なる複数の文字認識手法を併用し複合的な文字認識をする文字読取装置において、文字認識率をより高めることができる。
【図面の簡単な説明】
【図１】第１の実施の形態の文字読取装置のブロック図である。
【図２】文字位置（または行位置）の説明に供する図である。
【図３】文字切出し部の動作の説明に供する図である。
【図４】行内文字編集部の動作を示すフローチャートである。
【図５】文字位置の編集結果の説明に供する図である。
【図６】文字位置対応判定部の動作を示すフローチャートである。
【図７】文字位置対応判定部の判定条件を説明する図である。
【図８】文字位置対応判定の結果を説明する図である。
【図９】対応文字抽出部の動作を示すフローチャートである。
【図１０】第２の実施の形態の文字読取装置のブロック図である。
【図１１】第２の実施の形態の対応文字抽出部の動作を示すフローチャートである。
【図１２】第３の実施の形態の文字読取装置のブロック図である。
【図１３】第３の実施の形態の行外文字編集部の動作を示すフローチャートである。
【図１４】行外文字編集部における文字位置の編集結果の説明に供する図である。
【図１５】第４の実施の形態の文字読取装置のブロック図である。
【図１６】第４の実施の形態の対行文字編集部の動作を示すフローチャートである。
【図１７】対行文字編集部における文字位置の編集結果の説明に供する図である。
【図１８】第５の実施の形態の文字読取装置のブロック図である。
【図１９】第５の実施の形態の領域内行編集部の動作を示すフローチャートである。
【図２０】領域内行編集部における行位置の編集の説明に供する図である。
【図２１】第５の実施の形態の説明図であり、文字が横書きと予め分かっている場合の対応関係を判定する好ましい条件例を説明する図である。
【図２２】第３、第４或いは第５の実施の形態の文字読取装置の利用形態を説明する図である。
【図２３】従来技術を説明する図である。
【図２４】従来技術の問題点を説明する図である。
【符号の説明】
１００：第１の実施の形態の文字読取装置
１３２、１４２：文字切出し部
１３３、１４３：文字認識部
１６０：複合判定部
１０００：第２の実施の形態の文字読取装置
１０１２：第Ｎ文字切出し部
１０１３：第Ｎ文字認識部
１０２０：複合判定部
１２００：第３の実施の形態の文字読取装置
１２１０：複合判定部
１５００：第４の実施の形態の文字読取装置
１５１０：複合判定部
１８００：第５の実施の形態の文字読取装置
１８１０：複合判定部
【図１】
0004320868.tif 000002
【図２】
0004320868.tif 000003
【図３】
0004320868.tif 000004
【図４】
0004320868.tif 000005
【図５】
0004320868.tif 000006
【図６】
0004320868.tif 000007
【図７】
0004320868.tif 000008
【図８】
0004320868.tif 000009
【図９】
0004320868.tif 000010
【図１０】
0004320868.tif 000011
【図１１】
0004320868.tif 000012
【図１２】
0004320868.tif 000013
【図１３】
0004320868.tif 000014
【図１４】
0004320868.tif 000015
【図１５】
0004320868.tif 000016
【図１６】
0004320868.tif 000017
【図１７】
0004320868.tif 000018
【図１８】
0004320868.tif 000019
【図１９】
0004320868.tif 000020
【図２０】
0004320868.tif 000021
【図２１】
0004320868.tif 000022
【図２２】
0004320868.tif 000023
【図２３】
0004320868.tif 000024
【図２４】
0004320868.tif 000025