(57)【要約】【課題】対で用いられる住所名、郵便番号が登録された複数のデータベースの登録内容を効率的に統合する。【解決手段】本発明のデータベース合成装置３は、住所名を階層的に区分して表す住所文字列階層データと、この住所文字列階層データに対応付けられた郵便番号データとのうちの、少なくとも一方が記憶された複数のデータベースを取得するデータベース取得部２と、取得された複数のデータベースから、住所文字列階層データ中の階層毎の要素をそれぞれ表す複数の部分文字列データと符号文字列データとを互いの対応関係と共に抽出する抽出部６と、抽出された抽出結果に基づいて、個々の部分文字列データとそれらの階層の関係を示す階層情報と符号文字列データとを互いに関連付けて記憶させた合成データベース１８を生成する合成部８とを備える。【選択図】図２０
2010134828.tif 000002
【特許請求の範囲】
【請求項１】
所在名を階層的に区分して表す所在文字列階層データと、この所在文字列階層データに対応付けられた符号列を含む符号文字列データとのうちの、少なくとも一方が記憶された複数のデータベースを取得する取得部と、
前記取得部により取得された前記複数のデータベースから、前記所在文字列階層データ中の階層毎の要素をそれぞれ表す複数の部分文字列データと前記符号文字列データとを互いの対応関係と共に抽出する抽出部と、
前記抽出部により抽出された抽出結果に基づいて、個々の前記部分文字列データとそれらの階層の関係を示す階層情報と前記符号文字列データとを互いに関連付けて記憶させた合成データベースを生成するデータベース生成部と、
を具備することを特徴とするデータベース合成装置。
【請求項２】
前記階層情報に基づいて前記合成データベース内の関連する部分文字列データどうしを、階層順に連結するように配列させた連結所在文字列データと、この連結所在文字列データの構成要素となった部分文字列データに対応する符号文字列データと、を互いに関連付けて記憶させた再合成データベースを生成するデータベース再合成部、
をさらに具備することを特徴とする請求項１記載のデータベース合成装置。
【請求項３】
前記合成データベースは、前記部分文字列データを各々含む一つのデータ単位をそれぞれノードとして表し、このノードどうしを辺で結んだツリー構造で表現されることを特徴とする請求項１又は２記載のデータベース合成装置。
【請求項４】
前記データベース生成部は、
前記抽出部による抽出元の前記所在文字列階層データを構成していた最下位の階層の部分文字列データを表す子ノードに、当該抽出元の所在文字列階層データに対応付けられていた符号文字列データを、対応付ける第１のデータ更新部と、
前記符号文字列データが対応付けされているノードのその親ノードに対し、対応付けさている符号文字列データが存在するか否かを検出する検出部と、
前記親ノードに対応付けされた符号文字列データが存在しないことを前記検出部が検出した場合、当該親ノードのその子ノードとその兄弟ノードに各々対応付けられた符号文字列データどうしを一文字毎に比較し、一文字単位の一致／不一致を判別する判別部と、
前記判別部による判別結果に基づいて、一致した全ての文字の配列を含む符号文字列データを新たに生成し、生成したこの符号文字列データを前記親ノードに対応付ける第２のデータ更新部と、
を具備することを特徴とする請求項３記載のデータベース合成装置。
【請求項５】
前記検出部は、複数の異なる符号文字列データが対応付けされる同一のノードが存在するか否かを検出し、
前記判別部は、前記複数の異なる符号文字列データが存在することを前記検出部が検出した場合、当該複数の異なる符号文字列データどうしを一文字毎に比較して、一文字単位の一致／不一致を判別し、
前記第２のデータ更新部は、前記判別部によるこの判別結果に基づいて、一致した全ての文字の配列を含む符号文字列データを新たに生成し、生成したこの符号文字列データを前記同一のノードに対応付ける、
ことを特徴とする請求項４記載のデータベース合成装置。
【請求項６】
前記第２のデータ更新部は、前記判別部による符号文字列データどうしの比較により不一致となった全ての文字を特定の代替文字と置き換え、この代替文字の配列と前記一致した全ての文字の配列とを組み合わせることにより、符号文字列データを新たに生成する、
ことを特徴とする請求項４又は５記載のデータベース合成装置。
【請求項７】
前記データベース生成部は、
前記抽出部による抽出元の前記所在文字列階層データ中の互いに階層が一つ異なる各部分文字列データをそれぞれ表す子ノード及びその親ノードに対し、それぞれ対応付けさている符号文字列データが存在するか否かを検出する第２の検出部と、
前記親ノードに対応付けされた符号文字列データが存在し且つ前記子ノードに対応付けされた符号文字列データが存在しないことを前記第２の検出部が検出した場合、前記親ノードに対応付けされた符号文字列データを、前記子ノードにも対応付ける第３のデータ更新部と、
を具備することを特徴とする請求項４ないし６のいずれか１項に記載のデータベース合成装置。
【請求項８】
前記所在文字列階層データと前記連結所在文字列データとは、住所名、又はインターネット上で特定されるドメイン名を、前記所在名として表していることを特徴とする請求項１ないし７のいずれか１項に記載のデータベース合成装置。
【請求項９】
前記符号文字列データは、前記住所名と対の、郵便番号、全国地方公共団体コード、若しくは緯度と経度とで示される地球上の位置座標、又は、前記ドメイン名と対のＩＰアドレスを表していることを特徴とする請求項８記載のデータベース合成装置。
【請求項１０】
請求項１ないし９のいずれか１項に記載のデータベース合成装置と、所在名全体を示す文字列のデータ及び前記符号文字列データに対応する文字イメージの対を、文字認識した結果を修正する認識結果修正装置と、を備えた文字認識支援システムであって、
前記認識結果修正装置が、
前記データベース生成部により生成された前記合成データベースと、
前記文字イメージの対を文字認識した文字認識結果を入力する入力部と、
前記階層情報に基づいて前記合成データベース内の関連する部分文字列データどうしを、階層順に連結するように配列させた連結所在文字列データと、この連結所在文字列データの構成要素となった部分文字列データに対応する符号文字列データと、を互いに関連付けて記憶させたレコードの配列を生成するレコード配列生成部と、
前記入力部により入力された前記文字認識結果として表される文字列の対と、前記レコードの配列内で対応付けられた全ての前記連結所在文字列データ及び前記符号文字列データの対が各々表す文字列の対と、を一文字単位で照合し、一文字単位の一致／不一致の結果を含む文字列の対どうしの照合結果を得る照合部と、
前記照合部による照合結果に基づいて、前記文字認識結果を補正する補正部と、
を具備することを特徴とする文字認識支援システム。
【請求項１１】
請求項２ないし１０のいずれか１項に記載のデータベース合成装置と、前記連結所在文字列データ及び前記符号文字列データに対応する文字イメージの対を文字認識した結果を修正する認識結果修正装置と、を備えた文字認識支援システムであって、
前記認識結果修正装置が、
前記データベース再合成部により生成された前記再合成データベースと、
前記文字イメージの対を文字認識した文字認識結果を入力する入力部と、
前記入力部により入力された前記文字認識結果として表される文字列の対と、前記再合成データベース内で対応付けられた全ての前記連結所在文字列データ及び前記符号文字列データの対が各々表す文字列の対と、を一文字単位で照合し、一文字単位の一致／不一致の結果を含む文字列の対どうしの照合結果を得る第２の照合部と、
前記第２の照合部による照合結果に基づいて、前記文字認識結果を補正する補正部と、
を具備することを特徴とする文字認識支援システム。
【請求項１２】
前記合成データベースの内容に基づき照合を行う前記照合部又は前記再合成データベースの内容に基づき照合を行う前記第２の照合部は、前記符号文字列データ中に前記代替文字が含まれていた場合、当該代替文字との照合による文字単位の一致／不一致の結果を強制的に一致とする、
ことを特徴とする請求項１０又は１１記載の文字認識支援システム。
【請求項１３】
所在名を階層的に区分して表す所在文字列階層データと、前記所在文字列階層データに対応付けられた符号列を含む符号文字列データとのうちの、少なくとも一方が記憶された複数のデータベースを取得部が取得するステップと、
前記取得部により取得された前記複数のデータベースから、前記所在文字列階層データ中の階層毎の要素をそれぞれ表す複数の部分文字列データと前記符号文字列データとを互いの対応関係と共に抽出部が抽出するステップと、
前記抽出部により抽出された抽出結果に基づいて、個々の前記部分文字列データとそれらの階層の関係を示す階層情報と前記符号文字列データとを互いに関連付けて記憶させた合成データベースをデータベース生成部が生成するステップと、
を有することを特徴とするデータベースの合成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースのデータ内容を合成するデータベース合成装置、文字認識に関する処理を支援する文字認識支援システム、及びデータベースの合成方法に関する。
【背景技術】
【０００２】
帳票上の記載項目を文字認識する場合、住所と郵便番号（又は市町村コード）や、商品名と商品コードなど、名称とそれに対応する番号などを対で読み取ることが多い。すなわち、名称と番号が互いに対応している場合、それらの対応関係を予め反映させた文字認識処理や、また、文字認識処理による文字認識結果を先に得た後、上記の対応関係に基づいて文字認識結果を補正する処理などが行われている。これらの方法で文字認識処理を行うことで、より高い文字認識精度が得られるため、同様の技術思想を適用した処理が従来からいくつか提案されている。
【０００３】
例えば、第１の方法は、住所と郵便番号との対を複数登録した辞書の中から、文字認識結果との一致文字数に基づき類似度が最大となる対を検索し、この検索された住所と郵便番号との対を基に文字認識結果を修正する方法である（例えば特許文献１参照）。
【０００４】
また、第２の方法として、例えば商品名と中間コードとを対応させて記憶する第１辞書と、第１辞書内の商品名に対応する商品コードを同一の中間コードと関連付けて記憶する第２辞書と、を設けておくことで、中間コードで紐付けされた第１及び第２辞書内の情報に基づいて、商品名及び商品コードを表す対の文字列の文字認識結果を補正する技術が知られている（例えば特許文献２参照）。
【特許文献１】特開２０００−９０１９２号公報
【特許文献２】特許第２６５５０８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、近年では、市町村合併などに伴う住所の廃止や新設が比較的多く生じており、市町村名などと郵便番号との対応関係が逐次更新されている。したがって、これに伴い、上述した住所と郵便番号との対を登録した文字認識結果補正用のデータベース（辞書）の内容なども更新する必要性が生じている。
【０００６】
そこで、例えば既に存在する複数のデータベースの内容を統合して新しいデータベースを作成することによって、データベース更新の労力を軽減することなどが考えられている。しかしながら、既存のデータベースには、登録されている住所名自体が古く住所名と郵便番号との対応関係が古いものや、また、住所名の登録件数が多くしかもその登録時期なども比較的新しいものの郵便番号の登録がなく住所名のみが登録されているものなど、種々の内容のデータベースが存在する。したがって、このような複数の態様のデータベースを効率的に合成できる装置の開発が求められている。
【０００７】
本発明は、上記課題を解決するためになされたものであり、対で用いられる文字列が登録された複数のデータベースの登録内容を効率的に統合できるデータベース合成装置、文字認識支援システム、及びデータベースの合成方法の提供を目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明に係るデータベース合成装置は、所在名を階層的に表す所在文字列階層データと、この所在文字列階層データに対応付けられた符号列を含む符号文字列データとのうちの、少なくとも一方が記憶された複数のデータベースを取得する取得部と、前記取得部により取得された前記複数のデータベースから、前記所在文字列階層データ中の階層毎の要素をそれぞれ表す複数の部分文字列データと前記符号文字列データとを互いの対応関係と共に抽出する抽出部と、前記抽出部により抽出された抽出結果に基づいて、個々の前記部分文字列データとそれらの階層の関係を示す階層情報と前記符号文字列データとを互いに関連付けて記憶させた合成データベースを生成するデータベース生成部と、を具備することを特徴とする。
【０００９】
本発明では、合成元の複数のデータベースから例えば別々に抽出された同一内容の複数の部分文字列データを単一の部分文字列データとして統一し、この統一した部分文字列データを、下位の階層のデータ内容の異なる複数の部分文字列データに例えば共有させるかたちでデータベースを構築することが可能なので、合成元の複数のデータベースに登録された登録内容を効率的に統合することができる。
【００１０】
また、本発明のデータベース合成装置は、前記階層情報に基づいて前記合成データベース内の関連する部分文字列データどうしを、階層順に連結するように配列させた連結所在文字列データと、この連結所在文字列データの構成要素となった部分文字列データに対応する符号文字列データと、を互いに関連付けて記憶させた再合成データベースを生成するデータベース再合成部、をさらに備えるものであってもよい。
【００１１】
また、本発明に係る文字認識支援システムは、前述したデータベース合成装置と、所在名全体を示す文字列のデータ及び前記符号文字列データに対応する文字イメージの対を、文字認識した結果を修正する認識結果修正装置と、を備えた文字認識支援システムであって、前記認識結果修正装置が、前記データベース生成部により生成された前記合成データベースと、前記文字イメージの対を文字認識した文字認識結果を入力する入力部と、前記階層情報に基づいて前記合成データベース内の関連する部分文字列データどうしを、階層順に連結するように配列させた連結所在文字列データと、この連結所在文字列データの構成要素となった部分文字列データに対応する符号文字列データと、を互いに関連付けて記憶させたレコードの配列を生成するレコード配列生成部と、前記入力部により入力された前記文字認識結果として表される文字列の対と、前記レコードの配列内で対応付けられた全ての前記連結所在文字列データ及び前記符号文字列データの対が各々表す文字列の対と、を一文字単位で照合し、一文字単位の一致／不一致の結果を含む文字列の対どうしの照合結果を得る照合部と、前記照合部による照合結果に基づいて、前記文字認識結果を補正する補正部と、を具備することを特徴とする。
【００１２】
さらに、本発明に係るデータベースの合成方法は、所在名を階層的に区分して表す所在文字列階層データと、前記所在文字列階層データに対応付けられた符号列を含む符号文字列データとのうちの、少なくとも一方が記憶された複数のデータベースを取得部が取得するステップと、前記取得部により取得された前記複数のデータベースから、前記所在文字列階層データ中の階層毎の要素をそれぞれ表す複数の部分文字列データと前記符号文字列データとを互いの対応関係と共に抽出部が抽出するステップと、前記抽出部により抽出された抽出結果に基づいて、個々の前記部分文字列データとそれらの階層の関係を示す階層情報と前記符号文字列データとを互いに関連付けて記憶させた合成データベースをデータベース生成部が生成するステップと、を有することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、対で用いられる文字列が登録された複数のデータベースの登録内容を効率的に統合可能なデータベース合成装置、文字認識支援システム、及びデータベースの合成方法を提供することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明を実施するための最良の形態を図面に基づき説明する。
［第１の実施形態］
図１は、本発明の第１の実施形態に係る文字認識支援システム１を示す機能ブロック図である。図１に示すように、本実施形態の文字認識支援システム１は、認識結果修正装置として機能する知識処理装置５とデータベース合成装置３とから構成される。
【００１５】
ここで、本実施形態のデータベース合成装置３及び知識処理装置５は、コンピュータに本実施形態の各処理に対応するソフトウェアを組み込むことによって実現可能であるため、以下ではそのような構成を想定して説明を行う。ただし、これらデータベース合成装置３及び知識処理装置５は、電子部品を組み合わせた専用のハードウェアやその集合体、又は分散処理用のコンピュータネットワークなどを用いて構成されるものであってもよい。なお、本実施形態では、まず、知識処理装置５の構成を説明し、その後に、データベース合成装置３の構成を説明する。
【００１６】
本実施形態の知識処理装置５は、互いに関連付けられた、後述する住所文字列データ（連結所在文字列データ）で表される所在名としての住所名（住所文字列）と、郵便番号データ（符号文字列データ）で表される郵便番号と、にそれぞれ対応する文字イメージの対を、文字認識した文字認識結果を修正する。すなわち、この知識処理装置５は、図１に示すように、データベース合成装置３により合成された再合成データベースとしての知識データベース７と、文字認識結果入力部９と、検索部１２と、選択部１５と、補正部としての適用部１６と、知識処理結果出力部１７と、を備えて構成される。
【００１７】
図２は、住所名の文字認識結果２８のデータ構造を示す概念図であり、図３は、郵便番号の文字認識結果２９のデータ構造を示す概念図である。ここで、これら文字認識結果２８、２９は、例えば帳票からイメージスキャナなどで読み取られた住所名及び郵便番号の対の文字イメージを、例えば比較照合用の辞書データ（文字コードと比較照合用の文字イメージとを対応付けたテーブルデータ）により、パターンマッチングして得られた出力結果である。
【００１８】
上記検索部１２及び選択部１５は、互いに協働しつつ、文字認識結果として表される文字列の対（住所名及び郵便番号を文字認識した結果得られた後述する各候補リストが総合的に表す文字列との対）と、知識データベース７内で対応付けられた全ての住所文字列データ及び郵便番号データの対が各々表す文字列の対と、を実質的に一文字単位で照合し、一文字単位の一致／不一致の結果を含む文字列の対どうしの照合結果を得る第２の照合部として機能する。また、後述する適用部１６は、文字認識結果入力部９が入力する文字認識結果２８、２９を、上記照合結果に基づいて補正する。
【００１９】
住所名の文字認識結果２８は、図２に示すように、文字数及びオフセットを有するヘッダ部２８ｔと、候補リスト２８ａ、２８ｂ…とで構成される。また、図３に示すように、郵便番号の文字認識結果２９は、同様に、文字数及びオフセットを有するヘッダ部２９ｔと、候補リスト２９ａ、２９ｂ…とで構成される。これら文字認識結果２８、２９は、図２、図３に示すように、整数データで表される文字認識された文字数と、一文字毎（文字列先頭から１、２…ｎ文字目）の候補リスト２８ａ、２８ｂ…（及び候補リスト２９ａ、２９ｂ…）へのオフセットと、上記一文字毎の候補リスト２８ａ、２８ｂ…（２９ａ、２９ｂ…）と、の配列として実装される。
【００２０】
ここで、オフセットとは、あるデータの位置を、基準点からの差(距離)で表した値であり、上記候補リストのオフセットは、当該文字認識結果２８、２９を各々構成するデータ本体の先頭アドレス（基準のアドレス位置）から、一文字毎の候補リスト２８ａ、２８ｂ…（及び候補リスト２９ａ、２９ｂ…）の始まる先頭のアドレス位置まで、の差を表したデータである。各候補リスト２８ａ、２８ｂ…、２９ａ、２９ｂ…は、当該リストに含まれる認識候補の個数を示す認識候補数と、認識候補毎にそれぞれ対応する文字コード及びその類似度の対と、の配列で実装される。各候補リスト２８ａ、２８ｂ…、２９ａ、２９ｂ…は、文字認識の類似度（パターンマッチングによる文字認識の確からしさ）の高いものから順に、第１候補、第２候補…となるように配列される。
【００２１】
各候補リスト中の文字コードとしてはＪＩＳコードが適用されている。また、文字コードとしては、文字認識の対象となる文字列の種類やその他の実装の都合に応じて、ＡＳＣＩＩコードや、その他の文字コードを適用することも可能である。上述した文字認識結果入力部９は、このようなデータ構造を持つ文字認識結果２８、２９の入力を受け付ける。
【００２２】
図４は、知識データベース７に記憶された知識レコード７ａ，７ｂ〜７ｎのデータ構造を示す図である。知識データベース７には、住所文字列（所在文字列）で構成された複数の住所名を各々表す複数の住所文字列データ（連結所在文字列データ）と、これら複数の住所文字列データに各々対応付けられた郵便番号（符号列［数字列］のみで表現される符号文字列）を表す郵便番号データ（符号文字列データ）と、が対で記憶されている。この知識データベース７は、図４に示す複数の知識レコード７ａ，７ｂ〜７ｎを連結したかたちで実装されている。
【００２３】
図４に示すように、知識レコード７ａ，７ｂ〜７ｎは、レコードヘッダ３０ｔ、住所名データ構成部３０ｘ、及び郵便番号データ構成部３０ｙから構成される。住所名データ構成部３０ｘは、住所名の文字の個数を整数データで表す文字数と、住所名を構成する各文字に各々対応する複数の文字コードとの配列として実装されている。郵便番号データ構成部３０ｙは、郵便番号を構成している文字数と、郵便番号を構成する文字毎に各々対応する複数の文字コードとの配列として実装されている。
【００２４】
レコードヘッダ３０ｔは、レコード長と、住所名のオフセットと、郵便番号のオフセットと、から構成される。レコード長は、知識レコードの長さ（レコード本体の長さ）を整数で表している。住所名のオフセットは、知識レコードの先頭から住所名データ構成部３０ｘの先頭へのオフセットを整数で表している。郵便番号のオフセットは、知識レコードの先頭から住所名データ構成部３０ｘの先頭へのオフセットを整数で表している。ここで、上記文字コードには、後述するデータベース合成装置３による処理により、ワイルドカードとしての代替文字が含まれている場合がある。このワイルドカードとしては、ＪＩＳコードの例えば「？」に対応する文字コード「0x2129」が適用されている。
【００２５】
図５は、検索部１２により行われた検索結果３１のデータ構造を示す図である。検索部１２は、知識データベース７内から、後述する検索結果第１（又は第２）列挙条件を満たす、知識レコード（住所名と郵便番号との対）を検索し、検索結果として、該当する知識レコードの検出数を示す検索結果数３１ｔに加え、知識レコードを特定する識別子と、住所名の不適合文字数と、郵便番号の不適合文字数と、からなる検索データ本体３１ａ、３１ｂ…を列挙する。検索部１２は、検索された知識レコードの識別子の配列ｒ、及び列挙された検索結果数３１ｔを表す変数ｎｒを記憶する。検索された知識レコードの識別子の配列ｒを記憶するための記憶領域としては、知識データベース７中の知識レコード数分の領域を確保する。
【００２６】
図６は、検索部１２が行う検索処理を示すフローチャートである。検索部１２は、図６に示すように、まず、知識データベース７で現在参照している知識レコードの位置を示す変数ｏを、最初の知識レコードのオフセットで初期化する（Ｓ［ステップ］１）。次に、検索部１２は、列挙された検索結果数３１ｔ（検索された個数）を示す変数ｎｒを、０で初期化する（Ｓ２）。
【００２７】
さらに、検索部１２は、知識データベース７の末端に達しているか否かを確認する（Ｓ３）。ここで、検索部１２は、知識データベース７の末端に達していると判定するまで（Ｓ４の真［ＹＥＳ］）、以下の知識レコード確認処理（Ｓ３〜Ｓ８の一連の処理）を繰り返す。
【００２８】
すなわち、知識レコード確認処理では、まず、現在参照している知識レコードの位置を示す変数ｏが知識データベース７の末端に達しているか否かを確認する（Ｓ３）。末端に達しているか否かは、変数ｏが知識データベース７のサイズ（データサイズ）以上になっているか否かで判定する。検索部１２は、末端に達していると判定した場合（Ｓ４の真）、知識レコード確認処理を打ち切り、検索処理自体を終了させる。
【００２９】
知識レコード確認処理において、検索部１２は、知識データベース７の末端に達していないと判定した場合（Ｓ４の偽）、まず、現在参照中の知識レコードが検索結果第１（又は第２）列挙条件を満たしているか否かを検索用第１（又は第２）比較処理により判定する（Ｓ５）。
【００３０】
検索部１２は、現在参照中の知識レコードが検索結果第１（又は第２）列挙条件を満たしていると判定した場合（Ｓ６の真）、現在参照中の知識レコードの位置を示す変数ｏの現在の値を、検索の結果得られた知識レコードの識別子として列挙（出力）する。また、新しい検索結果が得られた際には、知識レコードの識別子の配列ｒのｎｒ番目のエントリに、図５に示すように、検索の結果得られた知識レコードの識別子を記憶し、上記ｎｒを１増加させる。
【００３１】
さらに、知識レコード確認処理において、検索部１２は、上記配列ｒのｎｒ番目のエントリに、検索用第１（又は第２）比較処理により求めた住所名不適合文字数Ｅ１及び郵便番号適合文字数Ｅ２を記憶する（Ｓ７）。最後に、検索部１２は、次の知識レコードのオフセットを算出し、現在参照中の知識レコードの位置を示す変数ｏを更新（代入）する（Ｓ８）。
【００３２】
図７は、検索部１２が行う検索用第１比較処理を示すフローチャートである。すなわち、図７に示すように、検索部１２は、まず、図２及び図３に示す住所名及び郵便番号における文字認識結果２８、２９の文字数（例えば住所名及び郵便番号の総文字数）が、図４に示す知識レコード中の住所名及び郵便番号の文字数（例えば住所名及び郵便番号の総文字数）以上であることを検出した場合（Ｓ１１の真）、検索結果第１列挙条件が満たされていないと判定する。
【００３３】
また、検索部１２は、図２及び図３に示す住所名及び郵便番号における文字認識結果２８、２９の文字数が、知識レコード中の住所名及び郵便番号の文字数以上でない場合（Ｓ１１の偽）、後述する図８の不適合文字数算出処理によって、住所名の不適合文字数Ｅ１を計数する（Ｓ１２）。次に、検索部１２は、上記不適合文字数算出処理によって、郵便番号における不適合文字数Ｅ２を計数する（Ｓ１３）。さらに、検索部１２は、不適合文字数Ｅ１、Ｅ２の各々が、それぞれについて予め定めた閾値ε１、閾値ε２以下である場合（Ｓ１４の真）、検索結果第１列挙条件が満たされていると判定し、それ以外の場合（Ｓ１４の偽）、検索結果第１列挙条件が満たされていないと判定する。
【００３４】
図８は、検索部１２が行う不適合文字数算出処理を示すフローチャートである。検索部１２は、この不適合文字数算出処理において、前述した図１０、図１１の候補リスト第１（又は第２）適合条件を満たさない文字の個数（不適合文字数Ｅ）を計数する。すなわち、図８に示すように、検索部１２は、図２、図３に示す文字認識結果２８、２９の先頭アドレスＲを取得した後（Ｓ２１）、この先頭アドレスＲから文字認識結果の文字数ｍを取得する（Ｓ２２）。さらに、検索部１２は、文字認識結果２８、２９における現在参照中の文字の番号ｉを０に初期化し（Ｓ２３）、また不適合文字数Ｅを０に初期化する（Ｓ２４）。
【００３５】
次に、検索部１２は、文字認識結果２８、２９における現在参照中の文字の番号ｉが、上記先頭アドレスＲから取得した文字数ｍ以上になった場合に（Ｓ２５の真）、不適合文字数Ｅを出力する（Ｓ３０）。一方、検索部１２は、参照中の文字の番号ｉが、文字数ｍ未満である場合（Ｓ２５の偽）、候補リスト第１（又は第２）適合条件を満足するか否かを判定する（Ｓ２６）。候補リスト第１（又は第２）適合条件を満たしていない場合（Ｓ２７の偽）、検索部１２は、不適合文字数Ｅに１を加算し（Ｓ２８）、さらに、参照中の文字の番号ｉに１を加算して上記Ｓ（ステップ）２５の処理に戻る（Ｓ２９）。また、候補リスト第１（又は第２）適合条件を満たしている場合（Ｓ２７の真）、検索部１２は、不適合文字数Ｅに１を加算せずに、参照中の文字の番号ｉに１を加算してＳ２５の処理に戻る。
【００３６】
続いて、検索結果第２列挙条件を適用する検索用第２比較処理について説明する。ここで、検索部１２は、検索用第１比較処理と検索用第２比較処理とを選択的に切り替えて実行することが可能である。検索用第１比較処理と検索用第２比較処理との切り替えは、オペレータによる外部から切替情報の入力により人為的に行われるものであってもよいし、文字認識結果入力部９に入力される文字認識結果２８、２９の種別（例えば文字列の種別）などを検索部１２が検出し、この検出結果に基づいて検索部１２が自動で切り替えるものであってもよい。
【００３７】
図９は、検索部１２が行う検索用第２比較処理を示すフローチャートである。図９に示すように、検索部１２は、まず、検索用第１比較処理と同様に、図２、図３に示す住所名及び郵便番号における文字認識結果２８、２９の文字数が、図４に示す知識レコード中の住所名及び郵便番号の文字数以上であることを検出した場合（Ｓ３１の真）、検索結果第２列挙条件が満たされていないと判定する。
【００３８】
また、検索部１２は、文字認識結果２８、２９の文字数が、知識レコード中の住所名及び郵便番号の文字数以上でない場合（Ｓ３１の偽）、図８の不適合文字数算出処理によって、郵便番号における不適合文字数Ｅ２を計数する（Ｓ３２）。この際、検索部１２は、郵便番号における不適合文字数Ｅ２が、閾値ε２以下の場合（Ｓ３３の真）、検索結果第２列挙条件が満たされていると判定する。
【００３９】
これに対して、郵便番号における不適合文字数Ｅ２が、閾値ε２以下でない場合（Ｓ３３の偽）、検索部１２は、図８の不適合文字数算出処理によって、住所名における不適合文字数Ｅ１を計数する（Ｓ３４）。住所名における不適合文字数Ｅ１が、閾値ε１以下の場合（Ｓ３５の真）、検索結果第２列挙条件が満たされていると判定する（Ｓ３６）。それ以外の場合（Ｓ３５の偽）、検索部１２は、検索結果第２列挙条件が満たされていないと判定する。
【００４０】
すなわち、検索結果第２列挙条件を基に検索結果を列挙するか否かを決める上記の検索用第２比較処理では、文字認識結果２８、２９が示す文字列と参照中の知識レコード中の文字列との照合において、住所名における一文字単位の一致／不一致の結果よりも、郵便番号における一文字単位の一致／不一致の結果が、優先的に判断される。したがって、郵便番号の文字認識結果２９の信頼性（文字認識の確からしさ）が高い場合、検索結果第２列挙条件を適用することで、当該文字認識結果の修正（補正）の精度を向上させることが可能である。
【００４１】
また、検索部１２は、上述した不適合文字数Ｅ（不適合文字数Ｅ１、Ｅ２）を計数するために次のような判断を行う。すなわち、検索部１２は、文字認識結果２８、２９の住所名及び郵便番号を示す文字列中の一文字毎の各認識候補（第１候補、第２候補…）と、各知識レコード内で互いに対の住所名及び郵便番号を示す文字列中の文字（文字認識結果に対応する並び順の文字）と、を実質的に比較し、候補リスト第１（又は第２）適合条件を満たしていない文字（文字認識結果２８、２９中の候補リスト２８ａ、２８ｂ…、２９ａ、２９ｂ…）を、不適合文字（不適合文字数Ｅとして計数される文字）として判別する。
【００４２】
図１０は、検索部１２が行う候補リスト第１適合条件の適否の判定処理を示すフローチャートである。検索部１２が候補リスト第１適合条件に適合すると判定するのは、知識レコードの文字列中の対応する文字がワイルドカード（代替文字）である場合である。これに加えて、検索部１２が候補リスト第１適合条件に適合すると判定するのは、図２、図３に示す文字認識結果２８、２９内の候補リスト２８ａ、２８ｂ…、２９ａ、２９ｂ中の認識候補（第１候補、第２候補…）と図４に示す知識レコード７ａ、７ｂ…７ｎ中の文字列を構成する文字とが一致し、且つ一致した認識候補（文字）の類似度が予め定めた閾値θ以上の場合である。
【００４３】
すなわち、図１０に示すように、検索部１２は、まず、知識レコード中の住所名及び郵便番号を表す全文字列中のｉ番目の文字の文字コードＣ１を取得する（Ｓ４１）。次に、検索部１２は、文字コードＣ１が、ワイルドカードを示す文字コードであるか否かを判定する（Ｓ４２）。文字コードＣ１が、ワイルドカードを示す文字コードである場合（Ｓ４２の真）、検索部１２は、候補リスト第１適合条件を満たしていると判定する。つまり、照合部としての機能を一部有する検索部１２は、知識データベース７（再合成データベース）内の郵便番号データ（符号文字列データ）中に、ワイルドカード（代替文字）が含まれていた場合、当該ワイルドカードとの照合による文字単位の一致／不一致の結果を強制的に一致とする。
【００４４】
また、検索部１２は、文字コードＣ１が、ワイルドカードを示す文字コードではないと判定した場合（Ｓ４２の偽）、文字認識結果２８、２９内の参照中の候補リストの先頭アドレスＬを（図２、図３に示すオフセットＲ＋［文字認識結果の文字数を示す記憶領域１＋文字の順番ｉ］で表現できる演算式により）算出して（Ｓ４３）、先頭アドレスＬから候補リスト中の認識候補数ｎを取得する（Ｓ４４）。さらに、検索部１２は、参照中の候補（認識候補の文字）の番号ｊを０に初期化する（Ｓ４５）。参照中の候補の番号ｊが認識候補数ｎ以上である場合（Ｓ４６の真）、検索部１５は、候補リスト第１適合条件に不適合であると判定する。
【００４５】
また、参照中の候補の番号ｊが認識候補数ｎ以上でない場合（Ｓ４６の偽）、検索部１２は、番号ｊ（ｊ番目）の候補の文字コードＣ２を取得する（Ｓ４７）。さらに、検索部１２は、文字コードＣ２が文字コードＣ１と一致した場合（Ｓ４８の真）、番号ｊ（ｊ番目）の候補の類似度Ｓを取得する（Ｓ４９）。取得した類似度Ｓが閾値θ以上の場合（Ｓ５０の真）、検索部１２は、候補リスト第１適合条件に適合すると判定する。また、検索部１２は、取得した類似度Ｓが閾値θ以上でなかった場合（Ｓ５０の偽）、及び上記の文字コードＣ２が文字コードＣ１と一致しない場合（Ｓ４８の偽）、番号ｊに１を加算してＳ４６の処理に戻る（Ｓ５１）。
【００４６】
続いて、検索部１２が行う候補リスト第２適合条件の適否の判定処理について説明する。ここで、検索部１２は、候補リスト第１適合条件の適否の判定処理と候補リスト第２適合条件の適否の判定処理とを選択的に切り替えて実行することが可能である。これらの判定処理の切り替えは、例えばオペレータによる外部から切替情報の入力により人為的に行われるものであってもよいし、文字認識結果入力部９に入力される文字認識結果２８、２９の種別（例えば文字列の種別）などを検索部１２が検出し、この検出結果に基づいて検索部１２が自動で切り替えを行うものであってもよい。
【００４７】
図１１は、検索部１２が行う候補リスト第２適合条件の適否の判定処理を示すフローチャートである。ここで、検索部１２が候補リスト第２適合条件に適合すると判定するのは、知識レコードの文字列中の対応する文字がワイルドカードである場合である。これに加えて、検索部１２が候補リスト第２適合条件に適合すると判定するのは、図２、図３に示す文字認識結果２８、２９内の候補リスト２８ａ、２８ｂ…、２９ａ、２９ｂ中の認識候補（第１候補、第２候補…）を対象とし、当該候補リストにおけるｍ番目までの候補の中に、図４に示す知識レコード７ａ、７ｂ…７ｎが記憶する文字列中の文字と、一致する文字が存在する場合である。
【００４８】
すなわち、図１１に示すように、まず、検索部１２は、上述した候補リスト第１適合条件の適否の判定処理におけるＳ４１〜Ｓ４５と同様に、Ｓ６１〜Ｓ６５までの一連の処理を行う。次に、検索部１２は、参照中の候補の番号ｊが認識候補数ｎ以上であるか、若しくは当該参照中の番号ｊ（ｊ番目）の候補が、予め定めたｍ番目までの候補に入っていない場合（Ｓ６６の真）、検索部１５は、候補リスト第２適合条件に不適合であると判定する。
【００４９】
また、参照中の候補の番号ｊが認識候補数ｎ以上でなく、しかも番号ｊの候補が、ｍ番目までの候補に入っている場合（Ｓ６６の偽）、検索部１２は、番号ｊ（ｊ番目）の候補の文字コードＣ２を取得する（Ｓ６７）。文字コードＣ２が文字コードＣ１と一致した場合（Ｓ６８の真）、検索部１２は、候補リスト第２適合条件に適合すると判定する。また、検索部１２は、文字コードＣ２が文字コードＣ１と一致しなかった場合（Ｓ６８の偽）、番号ｊに１を加算して、Ｓ６６の処理に戻る（Ｓ６９）。
【００５０】
次に、選択部１５について説明する。図１２は、選択部１５により図５に示す検索結果３１中から選択された選択結果３２のデータ構造を示す図である。図１２に示すように、選択結果３２は、選択された知識レコードの数を示す選択結果数３２ｔと、選択された全ての知識レコードの識別子を示すデータ本体部３２ａと、から構成される。選択部１５は、データ本体部３２ａを構成する各知識レコード（の識別子）を、図５に示す検索結果３１中の検索データ本体部３１ａ、３１ｂ…の中から選択し、この選択した全ての知識レコード（の識別子）を所定の順序で並べ替える。具体的には、選択部１５は、図１２に示すように、データ本体部３２ａを構成する全ての知識レコードの識別子の配列ｓ、及び選択結果数３２ｔを表す変数ｎｓとして、当該選択結果３２を記憶する。
【００５１】
図１３は、選択部１５が行う検索結果選択処理を示すフローチャートである。図１３に示すように、選択部１５は、まず、図５に示す検索結果３１中の（検索データ本体部３１ａ、３１ｂ…が含む）知識レコードの識別子の配列ｒを同サイズの配列ｒ1として複写し（Ｓ８１）、複写したこの識別子の配列ｒ1を、後述する知識レコード（第１／第２）比較処理に基づき降順に整列させる（Ｓ８２）。次に、予め閾値で取り決めた個数分の知識レコード（の識別子）を先頭から抽出し、これを図１２に示す選択結果３２として列挙する（Ｓ８３）。ここで、上記Ｓ８２で用いる整列のアルゴリズムとしては、例えばマージソート法や、ヒープソート法などのアルゴリズムを適用することができる。
【００５２】
図１４は、選択部１５が行う知識レコード第１比較処理を示すフローチャートである。選択部１５は、図１４に示すように、知識レコードの識別子ａと識別子ｂとについて、識別子ａが示す知識レコードＡと識別子ｂが示す知識レコードＢとを以下の１〜３のように判定する。
【００５３】
１．知識レコードＡが知識レコードＢより妥当であると評価した場合、「ａ＞ｂ」
２．知識レコードＢが知識レコードＡより妥当であると評価した場合、「ｂ＞ａ」
３．知識レコードＡ、Ｂが同程度に妥当であると評価した場合、「ａ＝ｂ」
ここで、このような妥当性の評価は、知識レコードＡ、Ｂのうちで、実質的に、どちらの知識レコードの内容が、図２、図３に示す文字認識結果２８、２９の内容に対して、類似性が高いかを評価するものである。
【００５４】
選択部１５は、上記知識レコードＡ（ａ）、Ｂ（ｂ）の妥当性の評価を次の二つの比較結果から判定する。すなわち、知識レコード第１比較処理を行う選択部１５は、図５に示すように、知識レコードＡ中の住所名を対象とした不適合文字数を表す住所名不適合文字数Ｅ１ａと、知識レコードＢ中の住所名を対象とした不適合文字数を表す住所名不適合文字数Ｅ１ｂと、を比較する。次に、選択部１５は、知識レコードＡ中の郵便番号を対象とした不適合文字数を表す郵便番号不適合文字数Ｅ２ａと、知識レコードＢ中の郵便番号を対象とした不適合文字数を表す郵便番号不適合文字数Ｅ２ｂと、を比較する。
【００５５】
より具体的には、図１４に示すように、選択部１５は、まず、知識レコードＡの住所名不適合文字数Ｅ１ａと知識レコードＢの住所名不適合文字数Ｅ１ｂとを比較する。この際、Ｅ１ａ＞Ｅ１ｂならば（Ｓ９１の真）、ａ＞ｂと判定し、Ｅ１ａ＜Ｅ１ｂならば（Ｓ９２の真）、ａ＜ｂと判定する。
【００５６】
次に、選択部１５は、知識レコードＡの郵便番号不適合文字数Ｅ２ａと知識レコードＢの郵便番号不適合文字数Ｅ２ｂとを比較する。この際、選択部１５は、Ｅ２ａ＞Ｅ２ｂならば（Ｓ９３の真）、ａ＞ｂと判定し、Ｅ２ａ＜Ｅ２ｂならば（Ｓ９４の真）、ａ＜ｂと判定する。さらに、選択部１５は、住所名不適合文字数Ｅ１ａと知識レコードＢの住所名不適合文字数Ｅ１ｂとの比較においても、知識レコードＡの郵便番号不適合文字数Ｅ２ａと知識レコードＢの郵便番号不適合文字数Ｅ２ｂとの比較においても判定がつかない場合（Ｓ９４の偽）、ａ＝ｂと判定する。
【００５７】
次に、選択部１５が行う知識レコード第２比較処理について説明する。ここで、選択部１５は、上述した知識レコード第１比較処理と知識レコード第２比較処理とを選択的に切り替えて実行することが可能である。これらの比較処理の切り替えは、例えばオペレータによる外部から切替情報の入力により人為的に行われるものであってもよいし、文字認識結果入力部９に入力される文字認識結果２８、２９の種別（例えば文字列の種別）などを選択部１５が検出し、この検出結果に基づいて選択部１５が自動で切り替えを行うものであってもよい。
【００５８】
図１５は、選択部１５が行う知識レコード第２比較処理を示すフローチャートである。図１５に示すように、選択部１５は、まず、知識レコードＡの郵便番号不適合文字数Ｅ２ａと知識レコードＢの郵便番号不適合文字数Ｅ２ｂとを比較する。選択部１５は、Ｅ２ａ＞Ｅ２ｂならば（Ｓ１０１の真）、ａ＞ｂと判定し、Ｅ２ａ＜Ｅ２ｂならば（Ｓ１０２の真）、ａ＜ｂと判定する。
【００５９】
次に、選択部１５は、知識レコードＡの住所名不適合文字数Ｅ１ａと知識レコードＢの住所名不適合文字数Ｅ１ｂとを比較する。この際、選択部１５は、Ｅ１ａ＞Ｅ１ｂならば（Ｓ１０３の真）、ａ＞ｂと判定し、Ｅ１ａ＜Ｅ１ｂならば（Ｓ１０４の真）、ａ＜ｂと判定する。さらに、選択部１５は、知識レコードＡの郵便番号不適合文字数Ｅ２ａと知識レコードＢの郵便番号不適合文字数Ｅ２ｂとの比較、及び、知識レコードＡの住所名不適合文字数Ｅ１ａと知識レコードＢの住所名不適合文字数Ｅ１ｂとの比較においても、判定がつかない場合（Ｓ１０４の偽）、ａ＝ｂと判定する。
【００６０】
ここで、知識レコード第２比較処理における知識レコード第１比較処理との相違点は、郵便番号不適合文字数の比較を先に行っている点である。したがって、郵便番号の文字認識結果の信頼性が高い場合、知識レコード第２比較処理を選択部１５に行わせることで、文字認識結果の修正（補正）の精度を向上させることが可能である。
【００６１】
さらに、図１３に示したように、選択部１５は、このような知識レコード第１（又は第２）比較処理に基づいて、知識レコードの識別子の（複写した）配列ｒ1を、妥当性の高い知識レコードを表す識別子（文字認識結果の内容に対して類似性が高い内容を持つ知識レコード）から順に、降順に整列させる。さらに、選択部１５は、上記整列させた知識レコードの識別子の配列ｒ1の先頭から、予め閾値で決められた個数の識別子を順に抽出し、抽出した（知識レコードの）識別子を図１２に示す選択結果３２として列挙する。
【００６２】
ここで、図１２に示すように、選択結果３２の選択データ本体部３２ａに所定個数列挙された識別子が表す知識レコードのうちで、その最上段に位置する（最上段の識別子が表す）知識レコード中の住所名及び郵便番号の対は、図２、図３に示す文字認識結果２８、２９中の住所名及び郵便番号の対に対し、最も類似性の高いものとして選択部１５に認識される。
【００６３】
次に、適用部１６について説明する。適用部１６は、選択結果個別適用処理を行うことによって、図２、図３に示す文字認識結果２８、２９を、選択部１５が選択した図１２に示す選択結果３２に基づき補正する。図１６は、適用部１６が行う選択結果個別適用処理を示すフローチャートである。図１６に示すように、適用部１６は、選択結果３２の選択データ本体部３２ａに列挙された（識別子で表される）各知識レコードについて、選択結果個別適用処理を行う。
【００６４】
より具体的には、図１６に示すように、適用部１６は、図１２に示す選択結果３２中の知識レコードの個数（選択結果数）Ｕを取得する（Ｓ１１１）。選択結果３２において現在参照中の知識レコード（の識別子）の番号ｕを０に初期化する（Ｓ１１２）。知識レコードの番号ｕが個数Ｕ以上になるまで（Ｓ１１３の真）、次のＳ１１４〜１１７の処理を繰り返す。つまり、適用部１６は、後述する知識未適用処理（Ｓ１１４）、住所名知識適用処理（Ｓ１１５）、郵便番号知識適用処理（Ｓ１１６）、を順に行った後、番号ｕに１を加算してＳ１１３に戻る（Ｓ１１７）
【００６５】
このような適用部１６は、知識未適用処理を行うことで、図２、図３に示す文字認識結果２８、２９を基に知識未適用住所名及び知識未適用郵便番号を生成する。また、適用部１６は、住所名知識適用処理を行うことで、知識未適用住所名を補正した住所名知識適用処理結果（住所名補正結果）を生成する。さらに、適用部１６は、郵便番号知識適用処理を行うことで、知識未適用郵便番号を補正した郵便番号知識適用処理結果（郵便番号補正結果）を生成する。
【００６６】
図１７は、適用部１６が図１６のＳ１１４で行う知識未適用処理を示すフローチャートである。図１７に示すように、適用部１６は、まず、図２、図３に示す文字認識結果２８、２９中の文字数（住所名及び郵便番号の総文字数）Ｌを取得し（Ｓ１２１）、さらに処理中の文字の番号ｉを０に初期化する（Ｓ１２２）。次に、適用部１６は、処理中の文字の番号ｉが、取得した文字数Ｌ以上になるまで（Ｓ１２３）、以下のＳ１２４〜１２６の処理を繰り返す。
【００６７】
つまり、適用部１６は、まず、図２、図３に示す文字認識結果２８、２９における候補リスト２８ａ、２８ｂ…（２９ａ、２９ｂ…）中のｉ番目の文字の第１候補の文字コードを取得する（Ｓ１２４）。次に、適用部１６は、取得した文字コードｃを出力文字列（出力対象の住所名、郵便番号を表す文字列の対）のｉ番目の文字コードに設定し（Ｓ１２５）、この後、番号ｉに１を加算にしてＳ１２３に戻る（Ｓ１２６）。
【００６８】
図１８は、適用部１６が図１６のＳ１１５で行う住所名知識適用処理を示すフローチャートである。図１７に示すように、適用部１６は、図１２に示す選択結果３２の選択データ本体部３２ａに列挙された例えば最上段に位置する（最上段の識別子が表す）知識レコード中の住所名の文字数Ｌｓを取得し（Ｓ１３１）、処理中の文字の番号ｉを０に初期化する（Ｓ１３２）。次に、適用部１６は、処理中の文字の番号ｉが、取得した文字数Ｌｓ以上になるまで（Ｓ１３３の真）、以下のＳ１３４〜１３６の処理を繰り返す。
【００６９】
すなわち、適用部１６は、選択結果３２として列挙された例えば最上段に位置した（識別子が示す）知識レコード中の住所名を表すｉ番目の文字の文字コードｃを取得する（Ｓ１３４）。次に、適用部１６は、取得した文字コードｃを知識未適用文字列（知識未適用文字列における住所名に対応する文字列）のｉ番目の文字と置き換えることにより、当該文字コードｃを住所名知識処理結果のi番目の文字コードとして設定する（Ｓ１３５）。この設定後、番号ｉに１を加算にしてＳ１３３に戻る（Ｓ１３６）。
【００７０】
図１９は、適用部１６が図１６のＳ１１６で行う郵便番号知識適用処理を示すフローチャートである。図１９に示すように、適用部１６は、図１２に示す選択結果３２の選択データ本体部３２ａに列挙された例えば最上段に位置する（最上段の識別子が表す）知識レコード中の郵便番号の文字数Ｌｃを取得し（Ｓ１４１）、処理中の文字の番号ｉを０に初期化する（Ｓ１４２）。次に、適用部１６は、処理中の文字の番号ｉが、取得した文字数Ｌｓ以上になるまで（Ｓ１３３の真）、以下のＳ１４４〜１４７の処理を繰り返す。
【００７１】
つまり、適用部１６は、選択結果３２として列挙された例えば最上段に位置した（識別子が示す）知識レコード中の郵便番号を表すｉ番目の文字の文字コードｃを取得する（Ｓ１４４）。ここで、取得した文字コードｃがワイルドカードを示す文字コードであるか否かを判定する（Ｓ１４５）。取得した文字コードｃがワイルドカードを示す文字コードでない場合（Ｓ１４５の偽）、適用部１６は、取得した文字コードｃを知識未適用文字列（知識未適用文字列における郵便番号に対応した文字列）のｉ番目の文字と置き換えることにより、当該文字コードｃを郵便番号知識処理結果のi番目の文字コードとして設定する（Ｓ１４６）。
【００７２】
ただし、上記取得した文字コードｃがワイルドカードを示す文字コードである場合（Ｓ１４５の真）、当該取得した文字コードｃを知識未適用文字列（の郵便番号に対応した文字列）のｉ番目の文字と置き換えないようにする。この後、適用部１６は、番号ｉに１を加算にしてＳ１４３の処理に戻る（Ｓ１４７）。このような住所名知識適用処理や郵便番号知識適用処理などを行うことにより、文字認識結果２８、２９中の候補リストとして１文字毎に複数あった認識候補が一つに絞り込まれ、これにより、文字認識結果２８、２９を補正した補正結果として、一組の住所名（住所文字列）及び郵便番号が得られる。修正結果出力部１７は、文字認識結果２８、２９を補正したこのような補正結果（文字認識の修正結果）を例えば表示装置などに対して出力する。
【００７３】
なお、上記Ｓ１３４及びＳ１４４に関する処理に代えて、適用部１６は、図１２に示す選択結果３２として列挙された最上段、２段目、３段目…に位置した（識別子がそれぞれ示す）知識レコード中の住所名及び郵便番号の各文字コードを順に取得し、この取得した各文字コードで表される（最上段、２段目、３段目…に対応した）複数組の住所名及び郵便番号を、住所名知識処理結果及び郵便番号知識処理結果として得るようにしてもよい。
【００７４】
この場合、適用部１６により、文字認識結果２８、２９を補正した補正結果（住所名及び郵便番号に対応した文字認識の修正結果）が、複数組得られることになるが、この複数組の補正結果を、妥当性の高い順（文字認識の確からしい上記の最上段、２段目、３段目…の順）に並べたかたちで、修正結果出力部１７が例えば表示出力するようにし、これをユーザ側に選択させるようにしてもよい。また、これに代えて、適用部１６が、上記のように複数組の補正結果を生成した場合、修正結果出力部１７が、妥当性の最も高い（文字認識の最も確からしい）選択結果３２の最上段の知識レコードに対応した補正結果（一組の住所名及び郵便番号）のみを例えば表示装置などに対して出力させるようにしてもよい。
【００７５】
次に、本実施形態の文字認識支援システム１が備えるデータベース合成装置３の構成を詳細に説明する。ここで、図２０は、データベース合成装置３の構成を示す機能ブロック図である。図２０に示すように、データベース合成装置３は、データベース取得部２と、記憶部３ａと、抽出部６と、互いに協働してデータベース生成部として機能する合成部８及び補完部１０と、データベース再合成部として機能する出力部１４と、から構成される。本実施形態のデータベース合成装置３は、図１及び図２０に示すように、上述した知識処理装置５が、図２、図３に示した文字認識結果２８、２９の補正に用いる知識データベース（再合成データベース）７を生成（合成）し、この知識データベース７を上記出力部１４を通じて出力する。
【００７６】
データベース取得部２は、複数の合成元のデータベース（合成元データベース２２、２３、２４…）を取得する（データベースの内容をそのデータ構造ごと入力する）。データベース取得部２により取得される合成元データベース２２、２３、２４、２５…は、所在名としての住所名を階層的に表わす（表現する）複数の住所文字列階層データ（所在文字列階層データ）と、これら複数の住所文字列データに各々対応付けられた符号列を含む（数字列を記憶した）複数の郵便番号データ（符号文字列データ）と、のうちの少なくとも一方（上記複数の住所文字列階層データ）を記憶する。郵便番号データは、７桁の整数値の数字列（符号列）で構成される。
【００７７】
抽出部６は、データベース取得部２により取得された複数の合成元データベース２２、２３、２４、２５…から、各住所文字列階層データ中の階層毎の要素をそれぞれ表す複数の部分文字列データと、郵便番号データと、を互いの対応関係と共に抽出結果レコード２１ａ、２１ｂ…２１ｎとして抽出する。抽出部６は、抽出した抽出結果レコード２１ａ、２１ｂ…２１ｎを一時的に記憶部３ａに記憶させる。
【００７８】
ここで、階層とは、概念の大小関係で住所名（所在名）を区分したものであって、住所文字列階層データで表現される住所名（所在名）が、東京都府中市武蔵台である場合、「東京都」、「府中市」、「武蔵台」が階層毎の要素となる。また、データベース合成装置３では、「東京都」を第１階層の要素、「府中市」を第２階層の要素、「武蔵台」を第３階層の要素として取り扱う。したがって、部分文字列データで表わされる部分住所名（部分文字列）は、上記「東京都」、「府中市」、「武蔵台」などを示すことになる。なお、後述するルートノードに対応する「日本国」は、第０階層の要素として位置付けられる。また、上記のルートノードに対応する「日本国」は、住所名（住所文字列）の構成要素からは、実質的には除外される。
【００７９】
図２１は、抽出部６が行うデータベースの抽出処理を示すフローチャートである。すなわち、抽出部６は、図２１に示すように、まず、Ｎｄ個の合成元データベースのうち、抽出中の合成元データベースの番号ｉを０に初期化する（Ｓ１６１）。さらに、抽出部６は、番号ｉが、Ｎｄ個以上になるまで（Ｓ１６２の真）、ｉ番目の合成元データベースについてデータベース個別抽出処理を実行する（Ｓ１６３）。データベース個別抽出処理の実行後、抽出部６は、合成元データベースの番号に１を加算しＳ１６２に戻る（Ｓ１６４）。
【００８０】
図２２は、抽出部６により抽出された抽出結果レコード２１ａ、２１ｂ…２１ｎのデータ構造を示す図である。抽出部６は、合成元データベース２２、２３、２４、２５…から抽出した複数の抽出結果レコード２１ａ、２１ｂ…２１ｎを記憶部３ａに記憶する。個々の抽出結果レコード２１ａ、２１ｂ…２１ｎは、図２２に示すように、ヘッダ部２１ｔと文字データ本体部２１ｘとを有する。
【００８１】
文字データ本体部２１ｘは、各階層の部分住所名を一文字毎に表す文字コードの配列（部分住所名を示す文字列順に配列された複数の文字コード）と、郵便番号を一文字毎に表す文字コードの配列（郵便番号を示す文字列順に配列された複数の文字コード）とから構成されている。
【００８２】
ヘッダ部２１ｔは、郵便番号（郵便番号文字列）の文字数と、郵便番号のオフセットと、部分住所名（部分文字列）の個数と、階層毎（第１階層、第２階層…）の部分住所名の文字数と、階層毎の部分住所名のオフセットと、から構成される。郵便番号（又は部分住所名）のオフセットは、抽出結果レコード自体の先頭アドレスと、郵便番号（又は階層毎の部分住所名）を表す文字コードの配列と、の相対位置の差を示すデータ値である。
【００８３】
また、抽出部６は、合成元データベースが郵便番号データを持たず、住所文字列階層データのみで構成されていた場合、郵便番号に関するデータを未指定に設定する。未指定に設定する場合、上記ヘッダ部２１ｔ中の郵便番号の文字数を「−１」に設定する。また、抽出部６は、抽出処理を行う際に、郵便番号を表す文字コードの配列として、後に、郵便番号の指定の有無や（文字コードの配列の）長さなどを適宜変更できるように一定の要素数の配列を確保する。
【００８４】
また、抽出部６は、このようなデータ構造を持つ抽出結果レコード２１ａ、２１ｂ…２１ｎを、後述するデータベース個別抽出処理によって、合成元データベース２２、２３、２４、２５…から抽出する。ここで、抽出部６が行うデータベース個別抽出処理の方法は、合成元データベース２２、２３、２４、２５…のデータ形式によって互いに異なるので、各データベースのデータ形式と共に順次説明を行う。なお、合成元のデータベースの形式は、後述する第１データ形式〜第４データ形式の他、前述した図２２に示す抽出結果レコード２１ａ、２１ｂ…２１ｎが持つデータ構造にて抽出可能であれば、いかなるデータ形式のものを適用してもよい。また、第１データ形式〜第４データ形式の合成元データベース２２、２３、２４、２５には、互いのデータ形式の違いを識別するための例えば識別情報などが付与されており、抽出部６は、例えばこの識別情報を検出することにより、第１データ形式〜第４データ形式にそれぞれ対応するデータベース個別抽出処理を切り換えて実行する。
【００８５】
図２３は、第１データ形式（ノードデータ形式）で構築された合成元データベース２２の構成を表す模式図である。第１データ形式の合成元データベース２２は、住所文字列階層データ（所在文字列階層データ）中に階層毎に埋め込まれたかたちの部分文字列データと郵便番号文字列（符号文字列データ）とを互いに関連付けたデータ単位を、それぞれノードとして表し、このノードどうしを辺で結んだツリー構造（木構造）で表現されている。合成元データベース２２の先頭のノードは、ツリーのルートノード（根ノード）である。
【００８６】
図２４は、第１データ形式の合成元データベース２２のデータ構造を示す概念図である。図２４に示すように、ツリー構造内の各ノード２２ａ、２２ｂ、２２ｃ…は、ヘッダ部２２ｔと文字データ本体部２２ｘとを有する。文字データ本体部２２ｘは、各階層の部分住所名（部分文字列）を一文字毎に表す文字コードの配列（部分住所名を示す文字列順に配列された複数の文字コード）と、郵便番号を一文字毎に表す文字コードの配列（郵便番号を示す文字列順に配列された複数の文字コード）とから構成されている。
【００８７】
ヘッダ部２２ｔは、整数値で表される住所名（住所文字列）の有無と、次ノードの識別子と、最初の子ノードの識別子と、郵便番号（郵便番号文字列）の文字数と、郵便番号のオフセットと、部分住所名の文字数と、部分住所名のオフセットと、から構成される。郵便番号（又は部分住所名）のオフセットは、ノード自体の先頭アドレスと、郵便番号（又は階層毎の部分住所名）を表す文字コードの配列と、の相対位置の差を示すデータ値である。
【００８８】
図２３（及び図２４）に示すように、各ノードの最初の子ノードの識別子を記憶する記憶エリアには、自身のノードからみて直接の子供のノードに該当するノードの識別子が記憶されている。つまり、図２３に示すように、ノード２２ａの最初の子ノードの識別子の記憶エリアには、ノード２２ｂの識別子が記憶され、また同様に、ノード２２ｂの最初の子ノードの識別子には、ノード２２ｃの識別子が記憶される。
【００８９】
図２３（及び図２４）に示すように、各ノードの最初の次（兄弟）ノードの識別子を記憶する記憶エリアには、自身のノードからみて直接の兄弟のノードに該当するノードの識別子が記憶されている。つまり、図２３に示すように、ノード２２ｂの最初の子ノードの識別子の記憶エリアには、ノード２２ｆの識別子が記憶され、また同様に、ノード２２ｄの最初の子ノードの識別子の記憶エリアには、ノード２２ｅの識別子が記憶される。
【００９０】
ここで、各ノード２１ａ、２１ｂ、２２ｃ…の識別子には、合成元データベース２２本体の先頭アドレスからのオフセットが適用されている。また、自身のノードからみて最初の子ノードや最初の次ノードに該当するノードが存在しない場合、値「−１」を、自身のノード中の識別子の記憶エリアに記憶させる。また、自身のノードが、ある住所名（住所文字列）を構成する最下位の階層の部分住所名（部分文字列）を表す場合には、自身のノードの住所名の有無を示す記憶エリアに整数値「１」が記憶されている。一方、自身のノードが、ある住所名を構成する最下位の階層の部分住所名を表わさない場合には、自身のノードの住所名の有無を示す記憶エリアに整数値「０」が記憶されている。
【００９１】
より具体的には、図２３に例示される第１段目（第０階層）のノード２２ａは、ルートノードであり、例えば「日本国」に該当するノードである。また、図２３中の第２段目（第１階層）のノードは、都道府県名に対応するノードであって、ノード（ルートノード）２２ａの最初の子ノードとなるノード２２ｂは、例えば「東京都」に該当するノードである。また、さらに、図２３中の第３段目（第２階層）のノードは、「区」や「市」などに対応するノードであり、ノード２２ｂの最初の子ノードとなるノード２２ｃは、例えば「府中市」などに該当するノードである。
【００９２】
図２３中の第４段目（第３階層）のノードは、「町名」などに対応するノードであって、ノード２２ｃの最初の子ノードとなるノード２２ｄは、例えば「武蔵台」に該当するノードである。また、このノード２２ｄの最初の次ノード（兄弟ノード）となるノード２２ｅは、例えば「東芝町」などに該当するノードである。
【００９３】
つまり例えば、前述した図２３中の第３段目のノード２２ｃには、住所名（住所文字列）の有無として「有」、郵便番号として「１８３００００」、部分住所名として「府中市」、最初の子ノードを示す識別子の記憶エリアには「ノード２２ｄの識別子」が記憶されている。また例えば、ノード２２ｄには、住所名（住所文字列）の有無として「有」、郵便番号として「１８３００４２」、部分住所名として「武蔵台」、最初の次ノード（兄弟ノード）を示す識別子の記憶エリアには「ノード２２ｅの識別子」が記憶されている。
【００９４】
図２５は、抽出部６が行う第１データ形式階層読込処理（第１データ形式の合成元データベース２２に対応したデータベース個別抽出処理）を示すフローチャートである。図２５（及び図２３）に示すように、抽出部６は、住所文字列（住所名全体）を構成するための部分文字列（部分住所名）の配列Ｓｘを、当該第１データ形式階層読込処理の再帰的呼び出しで更新しながら処理を行う。つまり、抽出部６による第１データ形式階層読込処理は、ツリー構造の合成元データベース２２における階層の番号ｖとして０を指定しかつ親ノードの識別子ｐとしてルートノード（先頭ノード）の識別子を指定することで開始され、さらに以下のＳ１５１〜Ｓ１５７の処理を繰り返すことによって実現される。
【００９５】
１．抽出部６は、識別子ｐで示される親ノードから最初の子ノードの識別子ｃ０を取得する（Ｓ１５１）。
２．次に、抽出部６は、取得したこの識別子ｃ０で子ノードの識別子ｃを初期化する（Ｓ１５２）。
３．さらに、抽出部６は、識別子ｃが−１になる（最初の子ノード、次ノードに該当するノードが存在しなくなる）まで（Ｓ１５３の真）、以下のＳ１５４〜Ｓ１５７の処理を繰り返す。
［１］すなわち、抽出部６は、現在の子ノードに記憶されている郵便番号と、第０番目〜第ｖ番目までのいずれかの要素として、現在の子ノード中の部分文字列（部分住所名）を登録可能な部分文字列の配列Ｓｘと、を格納した抽出結果レコードを生成する（Ｓ１５４）。
［２］次に、抽出部６は、現在の子ノードに記憶されている部分住所名を、部分住所名（部分文字列）の配列Ｓｘの第ｖ番目の要素としてコピーする（Ｓ１５５）。
［３］続いて、抽出部６は、第１データ形式階層読込処理を再帰的に呼び出す。つまり、再帰呼び出しの階層の番号ｖ1としては、「ｖ＋１」を指定し、親ノードの識別子ｐ1としては、処理中の子ノードの識別子「ｃ」を指定する（Ｓ１５６）。言い換えれば、このＳ１５６の処理では、さらに一つ下の階層のノードを基準としたデータの抽出を行う。
［４］さらに、抽出部１４は、識別子ｃで示される現在の子ノードから、次ノード（兄弟ノード）の識別子を取得し、取得した識別子の値でｃを更新する（Ｓ１５７）。
【００９６】
抽出部６は、このような第１データ形式階層読込処理を行うことにより、第１データ形式の合成元データベース２２から全てのデータをその構造ごと抽出し、図２２に示す構造の複数の抽出結果レコード２１ａ、２１ｂ…２１ｎを生成する。
【００９７】
図２６は、第２データ形式の合成元データベース２３の構成を示す概念図である。第２データ形式の知識データベース２３は、図２６に示すように、各行（１行毎）に、郵便番号と、住所名全体（住所文字列）を各々が構成する部分住所名（部分文字列）の「個数」と、その個数分の「部分住所名」と、がカンマで区切って記録されたテキストデータで構成される。
【００９８】
図２７は、抽出部６が行う第２データ形式の合成元データベース２３に対応したデータベース個別抽出処理を示すフローチャートである。すなわち、抽出部６は、合成元データベース２３におけるテキストデータの終端（最終行）に達するまで（Ｓ１６１の真）、各行について以下のＳ１６１〜Ｓ１６７の処理を繰り返すことによって得られた結果を基に、図２２に示す複数の抽出結果レコード２１ａ、２１ｂ…２１ｎを生成する。
【００９９】
１．まず、抽出部６は、例えば改行マークなどを検出しつつ、１行分のテキストデータを読み込む（Ｓ１６１）。
２．抽出部６は、１行分のテキストデータをカンマの位置で区切り（分離し）、区切られた文字列の配列ｆ（ｆ［０］、ｆ［１］、ｆ［２］…ｆ［ｎ］）を生成する。さらに区切られた文字列の個数Ｎｆを記憶する（Ｓ１６３）。
３．抽出部６は、カンマで区切った文字列先頭のｆ［０］を、郵便番号Ｄとする（Ｓ１６４）。
４．抽出部６は、住所名ｆ［１］を十進数で記述された整数としてデコードし、部分住所名の個数Ｎｘとする（Ｓ１６５）。
５．抽出部６は、ｆ［２］から先の、ｆ［２］、ｆ［３］…と続くＮｘ個分の文字列の配列を、部分住所名（部分文字列）の配列Ｓｘに設定する（Ｓ１６６）。
６．抽出部６は、郵便番号Ｄ、部分住所名の個数Ｎｘ、部分住所名の配列（個々の部分住所名を表す文字コード及びその並び順などを含むデータ）Ｓｘ、を格納した抽出結果レコードを生成する（Ｓ１６７）。
【０１００】
図２８は、第３データ形式の合成元データベース２４の構成を示す概念図である。第３データ形式の知識データベース２４は、図２８に示すように、郵便番号を記述した行と、部分住所名（部分文字列）の個数を記述（指定）した行と、指定した行数分の部分住所名を記述した行と、からなるレコードの繰り返しとして記録されたテキストデータで構成される。
【０１０１】
図２９は、抽出部６が行う第３データ形式の合成元データベース２４に対応したデータベース個別抽出処理を示すフローチャートである。すなわち、抽出部６は、（レコード毎に）テキストデータの終端に達するまで（Ｓ１７１の真）、以下のＳ１７２〜Ｓ１７７の処理を繰り返すことによって得られた結果を基に、図２２に示す複数の抽出結果レコード２１ａ、２１ｂ…２１ｎを生成する。
【０１０２】
１．まず、抽出部６は、例えば改行マークなどを検出しつつ、１行分（図２８中の所定のレコードの１行目）のテキストデータを読み込み、郵便番号Ｄとする（Ｓ１７２）。
２．抽出部６は、１行分（図２８中の所定のレコードの２行目）のテキストデータを読み込んで、十進数で記述された整数としてデコードし、部分住所名（部分文字列）の個数Ｎｘとする（Ｓ１７３）。
３．抽出部６は、部分住所名の番号ｉを０に初期化し、ｉ≧Ｎｘとなるまで（Ｓ１７４）、以下のＳ１７５、Ｓ１７６の処理を順に繰り返す。
［１］抽出部６は、１行分（図２８中の所定のレコードの３行目、４行目…）のテキストデータを読み込んで、ｉ番目の部分文字列Ｓｘ［ｉ］とする（Ｓ１７５）。
［２］抽出部６は、番号ｉに１を加算する（Ｓ１７６）。
４．抽出部６は、郵便番号Ｄと、部分住所名の個数Ｎｘと、部分住所名の配列（個々の部分住所名を表す文字コード及びその並び順などを含むデータ）Ｓｘと、を格納した抽出結果レコードを生成する（Ｓ１７７）。
【０１０３】
図３０は、第４データ形式の合成元データベース２５の構成を示す概念図である。第４データ形式の合成元データベース２５は、図３０に示すように、第３データ形式の合成元データベース２４とほぼ同等のデータ構造を有するものの、郵便番号を記述した行が存在しない点において、合成元データベース２４とは構成が異なる。つまり、合成元データベース２５は、所在名としての住所名を階層的に表す複数の住所文字列階層データ（所在文字列階層データ）のみが記憶されている。具体的には、第４データ形式の知識データベース２５は、図３０に示すように、部分住所名（部分文字列）の個数を記述（指定）した行と、指定した行数分の部分住所名を記述した行と、からなるレコードの繰り返しとして記録されたテキストデータで構成される。
【０１０４】
図３１は、抽出部６が行う第４データ形式の合成元データベース２４に対応したデータベース個別抽出処理を示すフローチャートである。すなわち、抽出部６は、（レコード毎に）テキストデータの終端に達するまで（Ｓ１８１の真）、以下のＳ１８２〜Ｓ１８６の処理を繰り返すことによって得られた結果を基に、図２２に示す複数の抽出結果レコード２１ａ、２１ｂ…２１ｎを生成する。
【０１０５】
１．まず、抽出部６は、例えば改行マークなどを検出しつつ、１行分（図３０中の所定のレコードの１行目）のテキストデータを読み込んで、十進数で記述された整数としてデコードし、照合対象文字列の部分文字列の個数Ｎｘとする（Ｓ１８２）。
２．抽出部６は、部分住所名（部分文字列）の番号ｉを０に初期化し、ｉ≧Ｎｘとなるまで（Ｓ１８３）、以下、Ｓ１８４、Ｓ１８５の処理を順に繰り返す。
［１］抽出部６は、１行分（図３０中の所定のレコードの２行目、３行目…）のテキストデータを読み込んで、ｉ番目の部分住所名Ｓｘ［ｉ］とする（Ｓ１８４）。
［２］抽出部６は、番号ｉに１を加算する（Ｓ１８５）。
３．抽出部６は、郵便番号を未指定とし（郵便番号の文字数に「−１」を指定し）、部分住所名の個数Ｎｘと、部分住所名の配列（個々の部分住所名を表す文字コード及びその並び順などを含むデータ）Ｓｘと、を格納した抽出結果レコードを生成する（Ｓ１８６）。
【０１０６】
次に、合成部８及び補完部１０並びに出力部１４について説明する。図２０に示すように、合成部８は、補完部１０と協働しつつ、抽出部６により抽出された（記憶部３ａに一時的に記憶された）図２２に示す抽出結果レコード２１ａ、２１ｂ…２１ｎに基づいて、個々の部分文字列データ（実質的に住所文字列階層データ中の階層毎の要素を表していたデータ）とそれらの階層の関係を示す階層情報と郵便番号データ（符号文字列データ）とを互いに関連付けて記憶させた合成データベース１８を生成する。合成部８は、生成した合成データベース１８を一時的に記憶部３ａに記憶させる。
【０１０７】
一方、データベース再合成部としての機能を有する出力部１４は、記憶部３ａ内に記憶された上記合成データベース１８内の階層情報に基づいて、当該合成データベース１８内の関連する部分文字列データどうしを、階層順に連結するように配列させた住所文字列データ（連結所在文字列データ）と、この住所文字列データの構成要素となった部分文字列データに対応する郵便番号データ（符号文字列データ）と、を互いに関連付けて記憶させた知識データベース（再合成データベース）７を生成して出力する。ここで、図１、図２０に示すように、出力部１４が出力する知識データベース７を用いて、上述した知識処理装置５は、図２、図３に示した住所名及び郵便番号の文字認識結果２８、２９を修正（補正）する。
【０１０８】
まず、合成部８及び補完部１０の構成について詳述する。補完部１０及び合成部８は、図２３、図２４に示す合成元データベース２２を構築していた第１データ形式（ノードデータ形式）で、合成データベース１８を生成する。つまり、上記した部分文字列データどうしの階層の関係を示す階層情報は、自身のノードの最初の子ノードの識別子を記憶する記憶エリア内の情報と、自身のノードの最初の次ノード（兄弟ノード）の識別子を記憶する記憶エリア内の情報と、上述した住所名（住所文字列）の有無を示す記憶エリア内の情報と、から主に実現される。なお、合成部８（及び補完部１０）は、ノードどうしを辺で結んだツリー構造で合成データベース１８が表現されるという主旨を逸脱しない限り、いかなる形式の合成データベースを生成してもよい。
【０１０９】
図３２は、合成部８が行う合成処理を示すフローチャートである。合成部８が備える第１登録処理部８ａ又は（補完部と協働する）第２登録処理部８ｂは、図２２に示す抽出結果レコード２１ａ、２１ｂ…２１ｎのデータ内容を、後述する個別抽出結果（第１／第２）登録処理によって順次登録することで、合成データベース１８を構築する。
【０１１０】
すなわち、第１登録処理部８ａ又は第２登録処理部８ｂは、図３２に示すように、まず、ルートノードのみを備えた空のデータベースを生成し（Ｓ１９１）、現在登録中の抽出結果レコード２１ａ、２１ｂ…２１ｎの番号ｉを０に初期化する（Ｓ１９２）。さらに、第１登録処理部８ａ又は第２登録処理部８ｂは、抽出結果レコードの番号ｉが、抽出結果レコードの総数Ｎｅ以上になるまで（Ｓ１９３）、個別抽出結果（第１／第２）登録処理によって、ｉ番目の抽出結果レコードを登録し（Ｓ１９４）、登録後、番号ｉに１を加算してＳ１９３の処理に戻る（Ｓ１９５）。
【０１１１】
図３３は、合成部８の第１登録処理部８ａが行う個別抽出結果第１登録処理を示すフローチャートである。第１登録処理部８ａは、図３３に示すように、Ｓ２０１〜Ｓ２１７の処理を行うことにより、概略的には、まずルートノードのみを備えた空のデータベースを生成し、その後、内部ノードを順次生成しながら、図２２に示す抽出結果レコード２１ａ、２１ｂ…２１ｎのデータ内容を順次登録して行くことで実現される。
【０１１２】
１．第１登録処理部８ａは、まず、カレントノード（処理中の現在のノード）の識別子ｐをルートノードの識別子で初期化する（Ｓ２０１）。
２．カレントノードが位置する階層の番号ｖを０に初期化する（Ｓ２０２）。
３．階層の番号ｖが図２２に示す登録中の抽出結果レコードの部分住所名（部分文字列）の個数に達するまで（Ｓ２０５の真）、以下のＳ２０３〜Ｓ２１５の処理を繰り返す。
［１］ｐが指すカレントノードから、最初の子ノードの識別子ｃ０を取得する（Ｓ２０３）。
［２］処理中の子ノードの識別子ｃをｃ０で、新規ノードの登録先のノードを示す識別子ｅをカレントノードの識別子ｐで初期化し（Ｓ２０４）、ｃが−１すなわち、該当ノードが存在しないことを示す識別子となるまで（Ｓ２０５の真）、主に以下のＳ２０７〜Ｓ２１５の処理を繰り返す。
＜１＞ｃが指すノードに格納された部分住所名（部分文字列）が、登録中の抽出結果レコードの第ｖ番目の階層の部分住所名と一致するか否かを判定し（Ｓ２０７）、一致した場合（Ｓ２０８の真）、後述するＳ２１４の処理に進む。
＜２＞一致しなかった場合（Ｓ２０８の偽）、 現在cが指すノードの識別子をeに代入する一方で、現在cが指すノードの次ノード（兄弟ノード）の識別子をｃに代入する（Ｓ２０９）。
＜３＞ｃが−１になった場合（Ｓ２０６の真）、新しいノードを生成し、そのノードを以下の内容で初期化し（Ｓ２１０）、後述するＳ２１１の処理に進む。
・住所名（住所文字列）の有無を、「無し」を示す「０」に初期化。
・最初の子ノードと次ノードの識別子を、該当ノード無しを示す「−１」に初期化。
・郵便番号の文字数を、郵便番号の未指定を示す「−１」に初期化。
・部分住所名（部分文字列）を、登録中の抽出結果レコードの第ｖ番目の部分住所名で初期化。
・ｅ＝ｐである場合（Ｓ２１１の真）、ｅの子ノードの識別子として新しいノードの識別子を記憶し（Ｓ２１２）、ｅ＝ｐでなかった場合（Ｓ２１１の偽）、ｅの次ノードの識別子として新しいノードの識別子を記憶する（Ｓ２１３）。
［３］カレントノードの識別子ｐにｃを代入する（Ｓ２１４）。
［４］階層の番号ｖを１増加させる（Ｓ２１５）。
４．識別子ｃが示すカレントノードに登録中（登録対象）の抽出結果レコードの郵便番号を登録する（Ｓ２１６）。
５．識別子cが示すカレントノードの住所名（住所文字列）の有無を設定する記憶エリアに、住所名（住所文字列）部分住所名の「有り」を表わす整数値１を設定する（Ｓ２１７）。
【０１１３】
このようにして、第１登録処理部８ａは、図２３、図２４に示す合成元データベース２２が構築されていた第１データ形式で（ツリー構造の）合成データベース１８を生成する。第１登録処理部８ａは、生成した合成データベース１８を記憶部３ａに記憶させる。ここで、第１登録処理部８ａは、上述したＳ２１６、Ｓ２１７の処理において、実質的に、抽出元の抽出結果レコード中の住所名（住所文字列）を構成していた最下位の階層の部分住所名（部分文字列）を表す子ノード（後記の終端ノード）に、当該抽出元の抽出結果レコード中の郵便番号（符号文字列データ）を、対応付ける第１のデータ更新部としての機能を有する。なお、後述する個別抽出結果第２登録処理の説明のために、Ｓ２１７の時点で識別子ｃが指しているカレントノードを「終端ノード」と以降記述する。
【０１１４】
次に、上記第１のデータ更新部としての機能も持つ第２登録処理部８ｂが、補完部１０と協働して行う個別抽出結果第２登録処理について説明する。合成部８は、上述した個別抽出結果第１登録処理と個別抽出結果第２登録処理とを選択的に切り替えて実行することが可能である。これらの登録処理の切り替えは、例えばオペレータによる外部から切替情報の入力により人為的に行われるものであってもよいし、登録対象の文字列の種別などを合成部８自体が検出し、この検出結果に基づいて合成部８が自動で切り替えを行うものであってもよい。
【０１１５】
図３４は、第２登録処理部８ｂが補完部１０と協働して行う個別抽出結果第２登録処理を示すフローチャートである。
【０１１６】
１．（補完部１０と協働とする）第２登録処理部８ｂは、まず、カレントノード（処理中の現在のノード）の識別子ｐをルートノードの識別子で初期化する（Ｓ２２１）。
２．カレントノードが位置する階層の番号ｖを０に初期化する（Ｓ２２２）。
３．階層の番号ｖが図２２に示す登録中の抽出結果レコードの部分住所名（部分文字列）の個数に達するまで（Ｓ２２５の真）、以下のＳ２２３〜Ｓ２３６の処理を繰り返す。
［１］ｐが指すカレントノードから、最初の子ノードの識別子ｃ０を取得する（Ｓ２２３）。
［２］処理中の子ノードの識別子ｃをｃ０で、新規ノードの登録先のノードを示す識別子ｅをカレントノードの識別子ｐで初期化し（Ｓ２２４）、ｃが−１すなわち、該当ノードが存在しないことを示す識別子となるまで（Ｓ２２５の真）、主に以下のＳ２２７〜Ｓ２３６の処理を繰り返す。
＜１＞ｃが指すノードに格納された部分住所名（部分文字列）が、登録中の抽出結果レコードの第ｖ番目の階層の部分住所名と一致するか否かを判定し（Ｓ２３７）、一致した場合（Ｓ２３２の真）、後述する郵便番号合成処理により、識別子cが指すカレントノードに格納された郵便番号と登録中の抽出結果に格納された郵便番号とから、新しい郵便番号を生成してカレントノードに登録し（Ｓ２３３）、後述するＳ２３５の処理に進む。
＜２＞一致しなかった場合（Ｓ２３２の偽）、 現在cが指すノードの識別子をeに代入する一方で、現在cが指すノードの次ノード（兄弟ノード）の識別子をｃに代入する（Ｓ２３４）。
＜３＞ｃが−１になった場合（Ｓ２２６の真）、新しいノードを生成し、そのノードを以下の内容で初期化し（Ｓ２２８）、後述するＳ２２９の処理に進む。
・住所名（住所文字列）の有無を、「有り」を示す「０」に初期化。
・最初の子ノードと次ノードの識別子を、該当ノード無しを示す「−１」に初期化。
・郵便番号を、登録中の抽出結果レコードの郵便番号で初期化。
・部分住所名（部分文字列）を、登録中の抽出結果レコードの第ｖ番目の部分住所名で初期化。
・ｅ＝ｐである場合（Ｓ２２９の真）、ｅの子ノードの識別子として新しいノードの識別子を記憶し（Ｓ２３０）、ｅ＝ｐでなかった場合（Ｓ２２９の偽）、ｅの次ノードの識別子として新しいノードの識別子を記憶する（Ｓ２３１）。
［３］カレントノードの識別子ｐにｃを代入する（Ｓ２３５）。
［４］階層の番号ｖを１増加させる（Ｓ２３６）。
【０１１７】
ここで、個別抽出結果第１登録処理と比べた場合の個別抽出結果第２登録処理の特徴は、以下の点である。すなわち、新規のノードを生成すると同時に、その新規のノードについて、住所名（住所文字列）の有無を「有り」に設定する。これにより、抽出結果レコード中に住所名として直接登録されていない中間の階層のノード（終端ノードよりも上位の階層のノード）を、擬似的な終端ノードとして設定でき、この中間の階層のノードと例えばその親ノードなどとを配列した住所名（住所文字列）を新たに構成することが可能となる。
【０１１８】
図３５Ａは、郵便番号合成処理（符号文字列合成処理）による代表郵便番号（代表符号文字列）の補完の様子を示した図である。また、図３５Ｂは、郵便番号の対応付けの矛盾を解決するための郵便番号合成処理による代表郵便番号の割り当ての様子を示した図である。第２登録処理部８ｂ及び補完部１０が行う個別抽出結果第２登録処理では、終端ノードよりも上位の中間の階層のノードについても、後述する郵便番号合成処理により、郵便番号を補完することが可能となる。つまり、あるノードの親ノードに対し郵便番号が登録されていない場合、その親ノードを共有する子ノード（終端ノード）内の郵便番号から推定した代表郵便番号が当該親ノードに登録される。
【０１１９】
図３６は、代表番号合成部１０ａを備えた補完部１０及び第２登録処理部８ｂが行う郵便番号合成処理を示すフローチャートである。また、図３７は、郵便番号合成処理による代表郵便番号の決定方法を説明するための概念図である。図２０に示すように、第２登録処理部８ｂと協働する補完部１０は、検出部としての機能を有し、終端ノード（抽出結果レコード中の住所名を構成していた最下位の階層の部分住所名を表す子ノード）のその親ノードに対し、対応付けされている郵便番号データ（符号文字列データ）が存在するか否かを検出する。
【０１２０】
また、補完部１０は、判別部及び第２のデータ更新部として機能する代表番号合成部１０ａを備えている。代表番号合成部１０ａは、図３５Ａに示すように、上記終端ノードのその親ノードに対応付けされた郵便番号データが存在しないことが検出された場合、当該終端ノードとその兄弟ノードに各々対応付けられた郵便番号データどうしを一文字毎に比較し、一文字単位の一致／不一致を判別する。さらに、この判別結果に基づいて、代表番号合成部１０ａは、一致した全ての文字の配列を含む代表郵便番号（新たな符号文字列データ）を生成し、生成した代表郵便番号を（郵便番号のない）当該親ノードに対応付ける（補完する）。
【０１２１】
この際、代表番号合成部１０ａは、図３５Ａ、図３７に示すように、終端ノードとその兄弟ノードどうしの比較により不一致となった全ての文字をワイルドカード（代替文字）と置き換え、このワイルドカードの配列と、前記一致した全ての文字の配列と、を組み合わせることにより、代表郵便番号を生成する。図３５Ａでは、（東京都府中市）武蔵台、東芝町、栄町を部分住所名として各々示すノード中の郵便番号「１８３００４２」、「１８３００４３」、「１８３００５１」どうしの比較の結果、一致した全ての文字の配列「１８３００・・」と、不一致となった文字の配列「・・・・？？」とを合成した代表郵便番号「１８３００？？」が得られた態様を例示している。さらに、合成された代表郵便番号「１８３００？？」は、終端ノードとその兄弟ノードに共通する親ノード（中間の階層のノード）である府中市を表すノードに補完される。
【０１２２】
さらにまた、代表番号合成部１０ａは、例えば代表郵便番号が補完された前記親ノードのそのまた親ノードを対象とし、この親ノードに対応付けされた郵便番号データが存在しないことが検出された場合、当該代表郵便番号が補完された親ノードとその兄弟ノードに各々対応付けられた郵便番号データどうしを一文字毎に比較し、一文字単位の一致／不一致を判別する。さらに、この判別結果に基づいて、代表番号合成部１０ａは、一致した全ての文字の配列を含む代表郵便番号（新たな符号文字列データ）を生成し、生成した代表郵便番号を（郵便番号のない）当該親ノードのその親ノードに対応付ける。このようにして、代表番号合成部１０ａは、ツリー構造のデータベース１８中の全てのノードに対して、郵便番号を補完する。
【０１２３】
このように第２登録処理部８ｂ及び代表番号合成部１０ａを有する補完部１０は、ツリー構造の合成データベース１８中の近接する部分木（部分ツリー）内での郵便番号の類似性を利用して、郵便番号が対応付けられていないノードについても郵便番号を補完することができる。これにより、例えば、郵便番号の登録ない住所データベースと、郵便番号の登録のある住所データベースと、を統合（合成）した場合に、互いのデータベースの情報で互いを補い合いつつ全体として情報量の多い一つの合成データベースを得ることができる。さらに、このような情報量の多いデータベースを知識処理装置５に適用することで、文字認識結果の補正の精度をより向上させることができる。
【０１２４】
また、図３５Ｂ及び図３４のＳ２３３において、第２登録処理部８ｂと協働する補完部１０は、実質的に、複数の異なる郵便番号（符号文字列データ）が対応付けされる（一つの部分住所名を表す）同一のノードが存在するか否かを検出する。また、代表番号合成部１０ａは、複数の異なる符号文字列データが存在することが検出された場合、図３５Ｂに示すように、当該複数の異なる郵便番号どうしを一文字毎に比較し、一文字単位の一致／不一致を判別する。さらに、代表番号合成部１０ａは、この判別結果に基づいて、一致した全ての文字の配列を含む代表郵便番号を新たに生成し、生成したこの代表郵便番号を上記同一のノードに対応付ける処理を行う。
【０１２５】
図３５Ｂでは、（東京都府中市）武蔵台を表す同一のノードに、二つの異なる郵便番号「１８３００４２」、「１８３００４３」が対応付け（指定）される場合を例示している。この場合、武蔵台を表す（同一の）ノードには、代表郵便番号「１８３００４？」が最終的に対応付けされることになる。したがって、このような第２登録処理部８ｂと協働する補完部１０の処理は、例えば、住所合併前の比較的古いデータベースと、住所合併後の比較的新しいデータベースと、を統合（合成）する場合などにおいて生じ得る郵便番号の対応付けの矛盾などを解消することができる。
【０１２６】
より詳細には、図３４中のＳ２３３で郵便番号合成処理を行うことで、図３６、図３７に示すように、代表番号合成部１０ａは、合成元の二つの郵便番号Ｃ１、Ｃ２を合成した代表郵便番号Ｃ３を生成する。合成部８は、郵便番号Ｃ１の文字数をＬ１、郵便番号Ｃ２の文字数をＬ２、代表郵便番号である郵便番号Ｃ３の文字数をＬ３とすると、合成部８は、以下のようにして郵便番号合成処理を行う。
【０１２７】
図３６に示すように、代表番号合成部１０ａは、まず、代表郵便番号である郵便番号Ｃ３の文字数Ｌ３を、合成元の郵便番号Ｃ１の文字数Ｌ１と、合成元の郵便番号Ｃ２の文字数Ｌ２と、の最大値とする（Ｓ２４１）。次に、代表番号合成部１０ａは、現在決定中の文字の番号ｉを０に初期化し（Ｓ２４２）、文字の番号ｉが、文字数Ｌ３に達するまで（Ｓ２４３の真）、以下のＳ２４３〜Ｓ２５４の処理を繰り返す。
【０１２８】
［１］すなわち、代表番号合成部１０ａは、文字の番号ｉ ＜ 文字数Ｌ１である場合（Ｓ２４４の真）、合成元の一方の郵便番号Ｃ１のｉ文字目の文字コードをｃ１に設定する（Ｓ２４５）。文字の番号ｉ ＜ 文字数Ｌ１でない場合（Ｓ２４４の偽）、代表番号合成部１０ａは、当該文字が存在しないことを示すコードとして例えば「−１」をｃ１に設定する（Ｓ２４６）。
【０１２９】
［２］次に、代表番号合成部１０ａは、文字の番号ｉ ＜ 文字数Ｌ２である場合（Ｓ２４７の真）、合成元の他方の郵便番号Ｃ２のｉ文字目の文字コードをｃ２に設定する（Ｓ２４８）。文字の番号ｉ ＜ 文字数Ｌ２でない場合（Ｓ２４７の偽）、代表番号合成部１０ａは、当該文字が存在しないことを示すコードとして例えば「−１」をｃ２に設定する（Ｓ２４９）。
【０１３０】
［３］続いて、代表番号合成部１０ａは、ｃ１＝ｃ２である場合（Ｓ２５０の真）、ｃ１をｃ３に代入する（Ｓ２５１）。ｃ１＝ｃ２でない場合（Ｓ２５０の偽）、代表番号合成部１０ａは、予め定めておいた文字コードをｃ３に指定する。この文字コードとしては、例えば知識処理装置５におけるワイルドカードとして、「？」に対応したＪＩＳコード「0x2129」を指定する（Ｓ２５２）。
【０１３１】
［４］さらに、代表番号合成部１０ａは、代表郵便番号である郵便番号Ｃ３の第ｉ文字目をｃ３として設定する（Ｓ２５３）、設定後、番号ｉを１加算してＳ２４３の処理に戻る（Ｓ２５４）。
【０１３２】
したがって、このような郵便番号合成処理では、一致した文字（の配列）をそのまま新しい郵便番号の構成要素として適用し、不一致であった文字（の配列）を、郵便番号の構成要素として実質的には適用しないこと（文字認識の補正情報には適用しないこと）を意味付けたワイルドカード（代替文字）を設定する。すなわち、抽出結果レコード２１ａ、２１ｂ…２１ｎで指定されている情報から極力、判明する範囲内で、代表郵便番号が決定される。これにより、合成部８が生成した合成データベース１８を基に得られる知識データベース７の内容が、図１に示す知識処理装置５に最大限に活用されるかたちで、文字認識結果の補正が行われることになる。
【０１３３】
次に、補完部１０が行う階層補完処理について説明する。図３８は、階層補完処理による郵便番号の補完の様子を示した図である。また、図３９は、補完部１０が行う階層補完処理を示すフローチャートである。図３８に示すように、補完部１０は、第２の検出部としての機能を有するものであって、ツリー構造の合成データベース１８内において、抽出結果レコード中の住所名（住所文字列）を構成していた互いに階層が一つ異なる各部分住所名（各部分文字列データ）をそれぞれ表す子ノード及びその親ノードに対し、対応付けさている郵便番号（符号文字列データ）が存在するか否かを検出する。
【０１３４】
さらに、補完部１０は、第３のデータ更新部としての機能をも有するものであって、図３８に示すように、上記親ノードに対応付けされた郵便番号（符号文字列データ）が存在し且つ前記子ノードに対応付けされた郵便番号が存在しないことを検出した場合、当該親ノードに対応付けされた郵便番号（符号文字列データ）を、当該子ノードに対応付ける（補完する）。図３８では、（東京都）昭島市を表す親ノードに代表郵便番号として先に補完（補完［１］）された「１９６００？？」を、図３９に示す階層補完処理により、玉川町を表す子ノードに補完（補完［２］）した態様を例示している。補完部１０は、図３８（及び図３５）に示すように、近接する地域の住所名に類似する郵便番号が割り当てられていることを利用して上述した郵便番号合成処理や階層補完処理を実現する。
【０１３５】
補完部１０が行う階層補完処理を図３９に示すフローチャートに基づき説明する。図３９に示すように、補完部１０は、概略的には、ノードの配列Ｎｖをこの階層補完処理の再帰的呼び出しで更新しながら処理を進める。すなわち、補完部１０による階層補完処理は、記憶部３ａに記憶された合成データベース１８を対象とし、配列Ｎｖの第ｖ番目の要素に対応する階層の番号ｖとして０を指定しかつ親ノードの識別子ｐとしてルートノード（先頭ノード）の識別子を指定することで開始され、さらに以下のＳ２６１〜Ｓ２６８の処理を繰り返すことによって実現される。
【０１３６】
１．補完部１０は、配列Ｎｖの第ｖ番目の要素に親ノードの識別子ｐを代入する。（Ｓ２６１）。
２．補完部１０は、識別子ｐで示される親ノードから最初の子ノードの識別子ｃ０を取得する（Ｓ２６２）。
３．補完部１０は、取得したこの識別子ｃ０で、参照中の子ノードを示す識別子ｃを初期化し（Ｓ２６３）、ｃが−１になる（最初の子ノード、次ノードに該当するノードが存在しなくなる）まで（Ｓ２６４の真）、以下のＳ２６５〜Ｓ２６８の処理を繰り返す。
［１］補完部１０は、階層補完処理を再帰的に呼び出す。再帰呼び出しの階層の番号ｖ1としては、「ｖ＋１」を指定し、親ノードの識別子ｐ1としては、処理中の子ノードの識別子「ｃ」を指定する（Ｓ２６５）。つまり、このＳ１５６の処理では、さらに一つ下の階層のノードを基準としたデータの抽出を行う。
［２］さらに、補完部１０は、識別子ｃが示す子ノードの郵便番号が未指定の場合（Ｓ２６６の真）、識別子ｐが示す親ノードの郵便番号を、識別子ｃが示す子ノードにコピーする（Ｓ２６７）。
［３］また、補完部１０は、識別子ｃが指す子ノードから、次ノード（兄弟ノード）の識別子を取得し、取得した値で識別子ｃを更新する（Ｓ２６８）。
【０１３７】
補完部１０は、このような階層補完処理を行うことで、上位の階層のノードから取得した郵便番号で、下位の階層のノードに郵便番号を補完する。また、この階層補完処理の行われた合成データベース１８は、補完部１０により記憶部３ａ内に記憶される。
【０１３８】
次に、出力部１４について説明する。上述したように、出力部１４は、記憶部３ａに記憶されたツリー構造の合成データベース１８内の階層情報（ノード毎の、最初の子ノード及び次ノードの識別子、並びに住所名の有無を示す情報）に基づいて、当該合成データベース１８内の関連する部分住所名（部分文字列）どうしを、階層順に連結するように配列させた住所名（［連結］住所文字列）と、この住所名の構成要素となっていた部分住所名に対応する郵便番号と、を互いに関連付けて記憶させた知識データベース（再合成データベース）７を生成（再構築）して出力する。
【０１３９】
ここで、図１、図２０に示すように、出力部１４が出力する図４に示す知識データベース７（知識レコード７ａ、７ｂ…７ｎ）に基づいて、上述した知識処理装置５は、図２、図３に示した住所名及び郵便番号の文字認識結果２８、２９を修正（補正）する。すなわち、出力部１４は、図２０に示すように、階層出力第１処理部１４ａと、番号更新部１４ｄを有する階層出力第２処理部１４ｃと、出力文字列生成部１４ｂと、を備えている。
【０１４０】
ここで、出力部１４は、階層出力第１処理部１４ａと階層出力第２処理部１４ｃとを選択的に切り替えて実行することが可能である。これらの処理の切り替えは、例えばオペレータによる外部から切替情報の入力により人為的に行われるものであってもよいし、処理対象の文字列の種別などを出力部１４自体が検出し、この検出結果に基づいて出力部１４が自動で切り替えを行うものであってもよい。
【０１４１】
まず、階層出力第１処理部１４ａの機能について説明する。図４０は、階層出力第１処理部１４ａが出力文字列生成部１４ｂと協働して行う階層出力第１処理を示すフローチャートである。（出力文字列生成部１４ｂと協働して処理を行う）階層出力第１処理部１４ａは、出力先の知識データベース（７）を空に初期化した後、図４０に示すように、記憶部３ａに記憶されたツリー構造の合成データベース１８内の階層毎のノード番号が格納される配列Ｎｖを、階層出力第１処理を再帰的に呼び出しつつ更新して行く。つまり、階層出力第１処理は、配列Ｎｖの第ｖ番目の要素に対応する階層の番号ｖとして０を指定しかつ親ノードの識別子ｐとしてルートノード（先頭ノード）の識別子を指定することで開始され、さらに以下の２７１〜Ｓ２８０の処理を繰り返すことによって実現される。
【０１４２】
１．階層出力第１処理部１４ａは、配列Ｎｖの第ｖ要素に、親ノードの識別子ｐを代入する（Ｓ２７１）。
２．階層出力第１処理部１４ａは、識別子ｐが示す親ノードから、最初の子ノードの識別子ｃ０を取得する（Ｓ２７２）。
３．階層出力第１処理部１４ａは、参照中の子ノードを示す識別子ｃをｃ０で初期化して（Ｓ２７３）、ｃが−１になる（最初の子ノード、次ノードに該当するノードが存在しなくなる）まで（Ｓ２７４の真）、以下の処理Ｓ２７５〜Ｓ２８０を繰り返す。
［１］すなわち（Ｓ２７４の偽の場合）、階層出力第１処理部１４ａは、階層第１出力処理を再帰的に呼び出す（Ｓ２７５）。詳細には、出力部１４は、再帰呼び出しでの階層の番号ｖ1としては「ｖ＋１」を、親ノードの識別子ｐ1としては、処理中の子ノードの識別子ｃを指定する。
［２］さらに、階層出力第１処理部１４ａは、識別子ｃが示す子ノードに記憶されている住所名の有無の指定が「有り」となっている場合（Ｓ２７６の真）、後述するＳ２８０の処理の前に、以下のＳ２７７〜２７９の処理を行う。なお、住所名の有無の指定が「有り」となっていない場合（Ｓ２７６の偽）、Ｓ２８０の処理に進む。
＜１＞（上記Ｓ２７６の真の場合）階層出力第１処理部１４ａは、出力文字列生成部１４ｂと協働し後述する出力文字列生成処理によって、配列Ｎｖを参照しながら住所文字列（連結住所文字列）Ｔを生成する（Ｓ２７７）。
＜２＞階層出力第１処理部１４ａは、識別子ｃが示す子ノードに格納されている郵便番号Ｃを取得する（Ｓ２７８）。
＜３＞階層出力第１処理部１４ａは、生成した住所文字列Ｔと郵便番号Ｃとを含む図４に示す知識レコードを生成し、生成した知識レコードを出力先の知識データベース７に連結する（Ｓ２７９）。
［３］階層出力第１処理部１４ａは、識別子ｃが示す子ノードから、次ノード（兄弟次ノード）の識別子を取得し、取得した値でｃを更新する（Ｓ２８０）。
【０１４３】
ここで、Ｓ２７６〜Ｓ２７９の処理について例示すると、部分住所名として例えば「武蔵台」を表すノードについて住所名の有無の指定が「有り」となっていた場合、例えば「東京都府中市武蔵台」と「１８３００４２」との対を表す知識レコードが生成される。さらにまた、部分住所名として例えば「府中市」を表すノード（中間の階層のノード）について住所名の有無の指定が「有り」となっていた場合、例えば「東京都府中市」と「１８３００００」などとの対を表す知識レコードが生成される。
【０１４４】
次に、出力文字列生成処理を行う出力文字列生成部１４ｂの機能について説明する。ここで、図４１は、住所名（住所文字列）を階層的に表現した態様を例示する模式図である。また、図４２は、出力文字列生成処理を示すフローチャートである。出力文字列生成部１４ｂは、ツリー構造の合成データベース１８内の階層情報（ノード毎の、最初の子ノード及び次ノードの識別子、並びに住所名の有無を示す情報）に基づいて、図４１に示すように、当該合成データベース１８内の関連する部分住所名（部分文字列）どうしを、階層順に連結するようにして配列させた住所文字列（連結住所文字列）を住所名して生成する。
【０１４５】
図４１、図４２に示すように、まず、出力文字列生成部１８は、生成結果となる住所文字列Ｓｍを空に初期化（住所文字列生成用の記憶領域を確保）した後（Ｓ２９１）、連結（配列）対象の部分文字列の番号ｉを０に初期化する（Ｓ２９２）。さらに、出力文字列生成部１８は、上記階層情報から得た連結（配列）対象の部分文字列（部分住所名）の個数がＮｘ個である場合、番号ｉがＮｘ−１になるまで（Ｓ３２４の真）、以下のＳ２９４、Ｓ２９５の処理を繰り返す。
【０１４６】
すなわち、連結対象の部分文字列の要素の０番目〜Ｎｘ−１番目まで、順次、ｉ番目の部分文字列Ｓｘ［ｉ］を右端に連結し（Ｓ３２５）、連結後、番号ｉを１加算する（Ｓ３２６）。これにより、０番目〜Ｎｘ−１番目までの部分文字列（部分住所名）が互いに連結された住所文字列（住所名）が生成される。つまり例えば、Ｓｘ［０］の「東京都」とＳｘ［１］の「府中市」とＳｘ［２］の「栄町」とが階層順に配列（連結）されて「東京都府中市栄町」が住所名として生成される。
【０１４７】
次に、番号更新部１４ｄを有する階層出力第２処理部１４ｃの機能について説明する。ここで、図４３は、階層出力第２処理部１４ｃが出力文字列生成部１４ｂと協働して行う階層出力第２処理を示すフローチャートである。ここで、図４１に示した階層出力第１処理のＳ２７１〜２８０と、図４３に示す階層出力第２処理のＳ３０１〜３０９及びＳ３１１とは、同一の処理を行うものの、図４３に示す階層出力第２処理では、Ｓ３１１の処理を行う前に、Ｓ３１０の郵便番号更新処理を行う。この郵便番号更新処理は、階層出力第２処理部１４ｃが備える番号更新部１４ｄにより実現される。
【０１４８】
図４４は、番号更新部１４ｄが行う郵便番号更新処理を示すフローチャートである。番号更新部１４ｄは、図４４に示すように、まず、処理中の子ノード（図４３のＳ３０６の処理を経た子ノード）に郵便番号Ｃｃが指定されていない場合（Ｓ３２１の偽）、つまり、この子ノードに記憶された郵便番号の文字数として「−１」が指定されている場合、そのまま郵便番号更新処理を終了させる。
【０１４９】
また、番号更新部１４ｄは、子ノードに郵便番号Ｃｃが指定されていることを検出した場合（Ｓ３２１の真）、その親ノードの郵便番号の有無の指定を「有り」に設定する（Ｓ３２２）。また、番号更新部１４ｄは、親ノードに既に郵便番号が指定されていることを検出した場合（Ｓ３２３の真）、図３７に例示した郵便番号合成処理と同様の処理を行うことによって、子ノードの郵便番号Ｃｃと親ノードの郵便番号Ｃｐとから代表郵便番号Ｃｐ1を生成する（Ｓ３２４）。さらに、番号更新部１４ｄは、生成した代表郵便番号Ｃｐ1を、親ノードの郵便番号Ｃｐで更新する（Ｓ３２５）。
【０１５０】
また、番号更新部１４ｄは、親ノードの郵便番号Ｃｐが指定されていないことを検出した場合（Ｓ３２３の偽）、当該親ノードの郵便番号Ｃｐに前記子ノードの郵便番号Ｃｃを代入する（Ｓ３２６）。これにより、親ノードに郵便番号が補完される。
【０１５１】
このようにして、出力部１４は、記憶部３ａ内に記憶された上記合成データベース１８内の階層情報に基づいて、当該合成データベース１８内の関連する部分文字列データどうしを、階層順に連結するように配列させた住所文字列データ（連結所在文字列データ）と、この住所文字列データの構成要素となった部分文字列データに対応する郵便番号データ（符号文字列データ）と、を互いに関連付けて記憶させた知識データベース（再合成データベース）７を生成して出力する。ここで、図１、図２０に示すように、出力部１４が出力する知識データベース７を用いて、上述した知識処理装置５は、図２、図３に示した住所名及び郵便番号の文字認識結果２８、２９を修正（補正）する。
【０１５２】
このように、階層出力第１（及び第２）処理部１４ａ、１４ｃ並びに出力文字列生成部１４ｂを備える出力部１４は、住所名（住所文字列）と郵便番号と、を互いに関連付けて記憶させた図１、図４、図２０に示す知識データベース（知識レコード７ａ、７ｂ…７ｎ）７を生成して出力する。さらに、上述した知識処理装置５は、出力部１４が出力する知識データベース７に基づいて、図２、図３に示した住所名及び郵便番号の文字認識結果２８、２９を補正する。
【０１５３】
既述したように、本実施形態の文字認識支援システム１が備えたデータベース合成装置３によれば、複数の合成元データベースから例えば別々に抽出された同一内容の複数の部分住所名（部分文字列）を表すノードを単一のノードとして統一し、この統一したノードを、下位の階層のデータ内容の異なる複数の子ノードに共有させるかたちでツリー構造の合成データベース１８を構築することがきる。これにより、対で用いられる住所名並びに郵便番号（若しくは住所名のみ）が登録された複数の合成元データベースの登録内容を効率的に統合することができる。
【０１５４】
また、本実施形態のデータベース合成装置３による郵便番号合成処理では、一致した文字の配列をそのまま新しい郵便番号の構成要素として適用し、不一致であった文字の配列を、郵便番号の構成要素として実質的には適用しないこと（文字認識の補正情報には適用しないこと）を意味付けたワイルドカード（代替文字）を設定することができる。したがって、抽出結果レコード２１ａ、２１ｂ…２１ｎで指定されている情報から極力、判明する範囲内で、代表郵便番号が決定される。これにより、合成部８が生成した合成データベース１８を基に得られる知識データベース７の内容が、図１に示す知識処理装置５に最大限に活用されるかたちで、文字認識結果を補正することができる。
【０１５５】
また、本実施形態のデータベース合成装置３では、図２０に示す合成部８及び補完部１０が上記ツリー構造の合成データベース１８を一旦生成し、その後、この合成データベース１８を再構築した知識データベース７を生成するので、郵便番号が対応付けられていないノードに対して、データベースがツリー構造の段階で、そのツリー構造上で近接するノードの郵便番号を補完することができる。
【０１５６】
すなわち、データベース合成装置３は、ツリー構造の合成データベース１８中の近接する部分木（部分ツリー）内での郵便番号の類似性を利用して、郵便番号が対応付けられていないノードについても郵便番号を補完することが可能である。これにより、例えば、郵便番号の登録ない住所データベースと、住所及び郵便番号が共に登録された住所データベースと、を合成した場合に、互いのデータベースの情報で互いを補い合いつつ全体として情報量の多い一つの合成データベースを得ることができる。これにより、情報量の多いこのような合成データベース１８を基に知識データベース７を得ることで、知識処理装置５による文字認識結果の補正の機能を、より高めることができる。
【０１５７】
また、本実施形態のデータベース合成装置３では、複数の異なる郵便番号の対応付けが指定される同一のノードが存在することが検出された場合、複数の異なる郵便番号どうしを一文字毎に比較し、一文字単位の一致／不一致を判別する。さらに、この判別結果に基づいて、一致した全ての文字の配列を含む代表郵便番号を新たに生成し、生成したこの代表郵便番号を上記同一のノードに対応付ける。これにより、住所合併前の比較的古いデータベースと、住所合併後の比較的新しいデータベースと、を統合（合成）する場合などにおいて生じ得る郵便番号の対応付けの矛盾などを解消することができる。
【０１５８】
［第２の実施形態］
次に、本発明の第２の実施形態を図４５〜図４７に基づき説明する。ここで、図４５は、この実施形態に係る文字認識支援システム５１を示す機能ブロック図である。また、図４６は、文字認識支援システム５１の備えた知識処理装置５５の検索部５２の処理により得られる知識レコードの配列Ｋと検索結果５４との対応関係を示す概念図である。さらに、図４７は、上記検索部５２が行う階層検索処理を示すフローチャートである。なお、図４５において、図１に示した第１の実施形態の文字認識支援システム１に設けられていたものと同一の構成要素については、同一の符号を付与しその説明を省略する。
【０１５９】
本実施形態の文字認識支援システム５１は、図４５に示すように、第１の実施形態の文字認識支援システム１に設けられていたデータベース合成装置３及び知識処理装置５に代えて、データベース合成装置５３及び知識処理装置５５を備えて構成される。データベース合成装置５３は、出力部１４に代えて、出力部５４を備えている。一方、知識処理装置５５は、検索部１２及び知識データベース７に代えて、レコード配列生成部としての機能を有する検索部５２及び知識データベース５７を備えている。
【０１６０】
すなわち、出力部５４は、第１の実施形態で述べたツリー構造（ノード形式）の合成データベース１８を、そのままのデータ形式で（知識処理装置５５側に）出力する。検索部５２は、出力文字列生成部１４ｂと同様の機能を有する出力文字列生成部５２ｂと、階層検索処理部５２ａと、を有する。階層検索処理部５２ａは、出力文字列生成部５２ｂと協働することにより、実質的に、第１の実施形態の出力部１４の図２０に示した階層出力第１処理部５４ａの機能と、第１の実施形態の検索部１２による（検索結果第１列挙条件を満たしているか否かを判定する）図６〜図８、図１０、図１１に例示した検索用第１比較処理の実行機能と、を併せ持つかたちで実現されている。ここで、検索部５２ａは、例えば図２０に示した階層出力第２処理部５４ａの機能と、図９などに例示した（検索結果第２列挙条件を満たしているか否かを判定する）検索用第２比較処理の実行機能と、を併せ持つかたちで構成されていてもよい。つまり、このような階層検索処理部５２ａ及び出力文字列生成部５２ｂを備えた検索部５２は、階層検索処理を行う。
【０１６１】
したがって、このような階層検索処理部５２ａ及び出力文字列生成部５２ｂを備えた検索部５２は、図４６に示すように、第１の実施形態の図４に示した知識レコードの繰り返しとして構成される知識レコードの配列Ｋを生成すると共に、検索結果として知識レコードの識別子の配列ｒ、及び列挙された検索結果の数を表す変数ｎｒを記憶する階層検索処理を実現する。この階層検索処理において、検索部５２は、知識データベース（合成データベース１８）５７中のノードの個数分の領域を確保する。
【０１６２】
つまり、検索部５２は、列挙される検索結果５４の個数を示す変数ｎｒを０で初期化し、知識レコードの配列Ｋの要素数Ｎｋを０で初期化した後、図４７に示すように、ツリー構造の知識データベース（合成データベース１８）５７内の階層毎のノード番号が格納される配列Ｎｖを、階層検索処理の再帰的呼び出しにより更新して行く。この検索処理は、配列Ｎｖの第ｖ番目の要素に対応する階層の番号ｖとして０を指定しかつ親ノードの識別子ｐとしてルートノード（先頭ノード）の識別子を指定することで開始され、さらに以下のＳ３３１〜Ｓ３４４の処理を繰り返すことによって実現される。
【０１６３】
１．検索部５２は、配列Ｎｖの第ｖ要素に、親ノードの識別子ｐを代入する（Ｓ３３１）。
２．検索部５２は、識別子ｐが示す親ノードから、最初の子ノードの識別子ｃ０を取得する（Ｓ３３２）。
３．検索部５２は、参照中の子ノードを示す識別子ｃをｃ０で初期化して（Ｓ３３３）、ｃが−１になる（最初の子ノード、次ノードに該当するノードが存在しなくなる）まで（Ｓ３３４の真）、以下の処理Ｓ３３５〜Ｓ３４４を繰り返す。
［１］すなわち（Ｓ３３４の偽の場合）、検索部５２は、階層検索処理を再帰的に呼び出す（Ｓ３３５）。詳細には、検索部５２は、再帰呼び出しでの階層の番号ｖ1としては「ｖ＋１」を、親ノードの識別子ｐ1としては、処理中（参照中）の子ノードの識別子ｃを指定する。
［２］さらに、検索部５２は、識別子ｃが示す子ノードに記憶されている住所名の有無の指定が「有り」となっている場合（Ｓ３３６の真）、以下のＳ３３７〜３４３の処理を行う。なお、住所名の有無の指定が「有り」となっていない場合（Ｓ３３６の偽）、Ｓ３４４の処理に進む。
＜１＞（上記Ｓ３３６の真の場合）検索部５２は、出力文字列生成部５２ｂ通じての出力文字列生成処理によって、配列Ｎｖを参照しながら住所文字列（連結住所文字列）Ｔを生成する（Ｓ３３７）。
＜２＞検索部５２は、識別子ｃが示す子ノードに格納されている郵便番号Ｃを取得する（Ｓ３３８）。
＜３＞図２、３に示した文字認識結果を基に、住所文字列Ｔと郵便番号Ｃとの対が、検索結果第１列挙条件を満たしているか否かを検索用第１比較処理により判定する（Ｓ３３９）。
＜４＞検索結果第１列挙条件を満たしている場合（Ｓ３４０の真）、検索部５２は、以下のＳ３４１〜Ｓ３４３の処理を行う。
・検索部５２は、知識レコードの配列Ｋの要素数Ｎｋを１増加させる（Ｓ３４１）。
・検索部５２は、検索結果第１列挙条件を満たした住所文字列Ｔ及び郵便番号Ｃを格納させた知識レコードを、知識レコードの配列Ｋの末尾、すなわちＫ［ｏ］に生成する（Ｓ３４２）。ここで、「ｏ」は、生成した知識レコードの位置を示す変数であり、ｏ＝Ｎｋ−１である。
・検索部５２は、生成した知識レコードの位置を示す変数ｏの現在の値を、検索結果の識別子として列挙する（Ｓ３４３）。ここで、検索部５２は、新しい検索結果を列挙する場合、第１の実施形態の検索用第１比較処理と同様、配列ｒのｎｒ番目のエントリに、検索結果の識別子を記憶し、ｎｒを１増加させることによって、新しい検索結果の列挙を行う。
［３］検索部５２は、識別子ｃが指す子ノードから、次ノード（兄弟ノード）の識別子を取得し、取得した値でｃを更新する（Ｓ３４４）。
【０１６４】
また、図４５、図４６に示すように、選択部１５と上述した検索部５２とは、互いに協働しつつ、文字認識結果（住所名及び郵便番号を文字認識した結果）として表される文字列の対と、知識レコードの配列Ｋ内で対応付けられた全ての住所名（連結所在文字列データ）及び郵便番号（符号文字列データ）の対が各々表す文字列の対と、を一文字単位で照合し、一文字単位の一致／不一致の結果を含む文字列の対どうしの照合結果を得る照合部として機能する。さらに、補正部として機能する適用部１６は、上記照合結果に基づいて、文字認識結果を補正する。
【０１６５】
ここで、Ｓ３３９の検索用第１比較処理の際、図１０のＳ４２や図１１のＳ６２に例示したように、知識データベース５７（合成データベース１８）から得た郵便番号（符号文字列データ）中に、ワイルドカードが含まれていた場合、当該ワイルドカードとの照合による文字単位の一致／不一致の結果を強制的に一致とする（不適合文字数として計数しない）。
したがって、第２の実施形態の文字認識支援システム５１によれば、データベース合成装置５３の構成の簡略化、及び実質的に知識データベース５７のデータ量の軽減を図ることができる。
【０１６６】
以上、本発明を第１、第２の実施の形態により具体的に説明したが、本発明はこれらの実施形態にのみ限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。例えば、上述した実施形態では、所在名としての住所名（住所文字列）と、符号文字列としての郵便番号と、を対で処理する装置及びシステムについて例示したが、これに代えて、インターネット上で特定される所在名としてのドメイン名と、そのドメイン名に対応するＩＰ（Internet Protocol）アドレスと、の対を処理する場合についても、本発明のデータべース合成装置及び文字認識結果修正装置（知識処理装置）並びにこれらを備える文字認識支援システムを適用することができる。
【０１６７】
図４８は、インターネット上のドメイン名を階層的に表現した態様を例示する模式図である。また、図４９は、ドメイン名の処理に対応した第２の出力文字列生成処理を示すフローチャートである。図４９に示す第２の出力文字列生成処理は、図２０示した出力文字列生成部１４ｂに代えて、例えば第２の出力文字列生成部により行われる。図４８に示すように、ドメイン名を階層的に区分したトップレベルドメイン、セカンドレベルドメイン、サードレベルドメインで所在文字列階層データ（連結所在文字列データ）が構成される。ここで、ドメイン名を構成するトップレベルドメイン（国別コードjpなど）、セカンドレベルドメイン（組織種別コードcoなど）、サードレベルドメイン（組織名コードtoshiba-solなど）は、名称の概念の大小関係の並びが、住所名の並びと左右逆であると共に、「．（ピリオド）」なども介在されている。
【０１６８】
このため、第２の出力文字列生成部は、図４８、図４９に示すように、まず、生成結果となるドメイン名を表す文字列Ｓｍを空に初期化（文字列生成用の記憶領域を確保）した後（Ｓ３４１）、連結対象の部分文字列を表すノードの階層の番号ｉをＮｘ−１に初期化する（Ｓ３４２）。ここで、図４８では、例えば「jp」、「co」、「toshiba-sol」の順に階層の番号ｉは、「０」、「１」、「２」となる。つまり、Ｓｘ［０］は「jp」、Ｓｘ［１］は「co」、Ｓｘ［２］は「toshiba-sol」となる。さらに、第２の出力文字列生成部は、既述した階層情報から得られる連結対象の部分文字列（部分住所名）の個数がＮｘ個である場合、番号ｉが０になるまで（Ｓ３４３の真）、以下のＳ３４４〜Ｓ３４７の処理を繰り返す。
【０１６９】
すなわち、連結対象の部分文字列の要素のＮｘ−１番目〜０番目まで、順次、「．」及びｉ番目の部分文字列Ｓｘ［ｉ］を右端に連結し（Ｓ３４５，Ｓ３４６）、連結後、番号ｉを１減算する（Ｓ３４７）。但し、番号ｉがＮｘ−１の場合（「toshiba-sol」や「toshiba」などの部分文字列の左には）、「．」を連結しない（Ｓ３４４）。
【０１７０】
一方、ドメイン名と対のＩＰアドレスは、３桁の十進数で表現されたオクテット４つを、ピリオド「．」で連結した形式で符号文字列データを構成する。各オクテットが、３桁に満たない場合は左から０を詰める。この形式の符号文字列データとしては、例えば「１２３．０４５．０６７．０８９」などが挙げられる。
【０１７１】
さらに、これに代えて、所在名である住所名と対応付けられる符号列（数字列）として５桁の番号の全国地方公共団体コード（市町村コード）を含み、さらに、いわゆるチェックディジット（文字認識結果検証用の値を有する桁）を１桁加えた６桁の番号で表現される符号文字列データを適用することも可能である。
【０１７２】
また、住所名と対で用いる、緯度と経度とで示される地球上の位置座標で符号文字列データを構成し、これを本発明に適用することも可能である。すなわち、この形式の符号文字列データは、以下の文字列を左から順に並べた２７文字で構成される。
「東経」あるいは「西経」の２文字
経度の度数３桁（３桁に満たない場合は左から０を詰める。）
「度」の１文字
経度の分数２桁（２桁に満たない場合は左から０を詰める。）
「分」の１文字
経度の秒数の整数部分２桁（２桁に満たない場合は左から０を詰める。）
「秒」の１文字
経度の秒数の小数部分上位２桁（２桁に満たない場合は左から０を詰める。）
「北緯」あるいは「南緯」の２文字
緯度の度数２桁（２桁に満たない場合は左から０を詰める。）
「度」の１文字
緯度の分数２桁（２桁に満たない場合は左から０を詰める。）
「分」の１文字
緯度の秒数の整数部分２桁（２桁に満たない場合は左から０を詰める。）
「秒」の１文字
緯度の秒数の小数部分上位２桁を（２桁に満たない場合は左から０を詰める。）
【０１７３】
すなわち、このデータ形式では、例えば「東経１３５度１２分３４秒５９北緯３４度５９分１２秒３４」などが、（住所名に対応する符号列を含む）符号文字列データを構成する。
【図面の簡単な説明】
【０１７４】
【図１】本発明の第１の実施形態に係る文字認識支援システムの機能ブロック図。
【図２】住所名の文字認識結果のデータ構造を示す概念図。
【図３】郵便番号の文字認識結果のデータ構造を示す概念図。
【図４】知識データベースに記憶された知識レコードのデータ構造を示す図。
【図５】検索部により検索された検索結果のデータ構造を示す図。
【図６】検索部が行う検索処理を示すフローチャート。
【図７】検索部が行う検索用第１比較処理を示すフローチャート。
【図８】検索部が行う不適合文字数算出処理を示すフローチャート。
【図９】検索部が行う検索用第２比較処理を示すフローチャート。
【図１０】検索部が行う候補リスト第１適合条件の適否の判定処理を示すフローチャート。
【図１１】検索部が行う候補リスト第２適合条件の適否の判定処理を示すフローチャート。
【図１２】選択部により選択された選択結果のデータ構造を示す図。
【図１３】選択部が行う検索結果選択処理を示すフローチャート。
【図１４】選択部が行う知識レコード第１比較処理を示すフローチャート。
【図１５】選択部が行う知識レコード第２比較処理を示すフローチャート。
【図１６】適用部が行う選択結果個別適用処理を示すフローチャート。
【図１７】適用部が行う知識未適用処理を示すフローチャート。
【図１８】適用部が行う住所名知識適用処理を示すフローチャート。
【図１９】適用部が行う郵便番号知識適用処理を示すフローチャート。
【図２０】図１の文字認識支援システムが備えるデータベース合成装置の機能ブロック図。
【図２１】抽出部が行うデータベースの抽出処理を示すフローチャート。
【図２２】抽出部により抽出された抽出結果レコードのデータ構造を示す図。
【図２３】第１データ形式で構築された合成元データベースの構成を示す模式図。
【図２４】図２３の合成元データベース内の各ノードのデータ構造を示す概念図。
【図２５】抽出部が行う第１データ形式階層読込処理を示すフローチャート。
【図２６】第２データ形式の合成元データベースの構成を示す概念図。
【図２７】抽出部が行う第２データ形式用のデータベース個別抽出処理を示すフローチャート。
【図２８】第３データ形式の合成元データベースの構成を示す概念図。
【図２９】抽出部が行う第３データ形式用のデータベース個別抽出処理を示すフローチャート。
【図３０】第４データ形式の合成元データベースの構成を示す概念図。
【図３１】抽出部が行う第４データ形式用のデータベース個別抽出処理を示すフローチャート。
【図３２】合成部が行う合成処理を示すフローチャート。
【図３３】合成部の備えた第１登録処理部が行う個別抽出結果第１登録処理を示すフローチャート。
【図３４】合成部の備えた第２登録処理部が補完部と協働して行う個別抽出結果第２登録処理を示すフローチャート。
【図３５Ａ】代表番号合成部を備えた補完部及び第２登録処理部が行う郵便番号合成処理による代表郵便番号の補完の様子を示す図。
【図３５Ｂ】郵便番号の対応付けの矛盾を解決するための郵便番号合成処理による代表郵便番号の割り当ての様子を示した図である。
【図３６】代表番号合成部を備えた補完部及び第２登録処理部が行う郵便番号合成処理を示すフローチャート。
【図３７】図３６の郵便番号合成処理による代表郵便番号の決定方法の説明図。
【図３８】補完部が行う階層補完処理による郵便番号の補完の様子を示す図。
【図３９】補完部が行う階層補完処理を示すフローチャート。
【図４０】出力部の備えた階層出力第１処理部が出力文字列生成部と協働して行う階層出力第１処理を示すフローチャート。
【図４１】住所名を階層的に表現した態様を例示する模式図。
【図４２】出力文字列生成処理部が行う出力文字列生成処理を示すフローチャート。
【図４３】出力部の備えた階層出力第２処理部が出力文字列生成部と協働して行う階層出力第２処理を示すフローチャート。
【図４４】階層出力第２処理部の備えた番号更新部が行う郵便番号更新処理を示すフローチャート。
【図４５】本発明の第２の実施形態に係る文字認識支援システムの機能ブロック図。
【図４６】図４５の文字認識支援システムが備えた知識処理装置の検索部の処理により得られる知識レコードの配列と検索結果との対応関係を示す概念図。
【図４７】図４５に示す文字認識支援システムの知識処理装置の検索部が行う階層検索処理を示すフローチャート。
【図４８】ドメイン名を階層的に表現した態様を例示する模式図。
【図４９】第２の出力文字列生成処理を示すフローチャート。
【符号の説明】
【０１７５】
１，５１…文字認識支援システム、２…データベース取得部、３，５３…データベース合成装置、３ａ…記憶部、５，５５…知識処理装置、６…抽出部、７，５７…知識データベース、７ａ，７ｂ〜７ｎ…知識レコード、８…合成部、８ａ…第１登録処理部、８ｂ…第２登録処理部、９…文字認識結果入力部、１０…補完部、１０ａ…代表番号合成部、１２，５２…検索部、１４，５４…出力部、１４ａ…階層出力第１処理部、１４ｂ，５２ｂ…出力文字列生成部、１４ｃ…階層出力第２処理部、１４ｄ…番号更新部、１５…選択部、１６…適用部、１７…修正結果出力部、１８…合成データベース、２１ａ，２１ｂ〜２１ｎ…抽出結果レコード、２２，２３，２４，２５…合成元データベース、２２ａ〜２２ｆ…ノード、２８…住所名の文字認識結果、２９…郵便番号の文字認識結果、３１，５４…検索結果、３２…選択結果、５２ｂ…階層検索処理部。
【図１】
2010134828.tif 000003
【図２】
2010134828.tif 000004
【図３】
2010134828.tif 000005
【図４】
2010134828.tif 000006
【図５】
2010134828.tif 000007
【図６】
2010134828.tif 000008
【図７】
2010134828.tif 000009
【図８】
2010134828.tif 000010
【図９】
2010134828.tif 000011
【図１０】
2010134828.tif 000012
【図１１】
2010134828.tif 000013
【図１２】
2010134828.tif 000014
【図１３】
2010134828.tif 000015
【図１４】
2010134828.tif 000016
【図１５】
2010134828.tif 000017
【図１６】
2010134828.tif 000018
【図１７】
2010134828.tif 000019
【図１８】
2010134828.tif 000020
【図１９】
2010134828.tif 000021
【図２０】
2010134828.tif 000022
【図２１】
2010134828.tif 000023
【図２２】
2010134828.tif 000024
【図２３】
2010134828.tif 000025
【図２４】
2010134828.tif 000026
【図２５】
2010134828.tif 000027
【図２６】
2010134828.tif 000028
【図２７】
2010134828.tif 000029
【図２８】
2010134828.tif 000030
【図２９】
2010134828.tif 000031
【図３０】
2010134828.tif 000032
【図３１】
2010134828.tif 000033
【図３２】
2010134828.tif 000034
【図３３】
2010134828.tif 000035
【図３４】
2010134828.tif 000036
【図３５Ａ】
2010134828.tif 000037
【図３５Ｂ】
2010134828.tif 000038
【図３６】
2010134828.tif 000039
【図３７】
2010134828.tif 000040
【図３８】
2010134828.tif 000041
【図３９】
2010134828.tif 000042
【図４０】
2010134828.tif 000043
【図４１】
2010134828.tif 000044
【図４２】
2010134828.tif 000045
【図４３】
2010134828.tif 000046
【図４４】
2010134828.tif 000047
【図４５】
2010134828.tif 000048
【図４６】
2010134828.tif 000049
【図４７】
2010134828.tif 000050
【図４８】
2010134828.tif 000051
【図４９】
2010134828.tif 000052