(57)【特許請求の範囲】
【請求項１】
帳票の表構造を認識する帳票認識方法において、
前記帳票のイメージから前記帳票の縦罫線及び横罫線で構成される最小矩形を抽出するステップと、
前記帳票上の前記最小矩形の物理的並びから前記帳票の表構造を解析するステップと、
前記解析した表構造から前記最小矩形の属性を決定するステップとを有し、
前記解析ステップは、
接続する位置関係にある最小矩形を、同じグループに分類するステップと、
前記グループを構成する矩形の最大の矩形を、主表部に、前記グループの前記最大の矩形以外の矩形を、凸部に、表の構成要素に分類するステップと、
前記表の構成要素単位に、前記最小矩形が、行方向に連続する表の各行を構成する論理行に分類するステップと、
連続して、且つ同じ行構造を持つ論理行を、１つのブロックにまとめるステップとを有し、
前記属性を決定するステップは、
前記主表部において、属する行数が最大である前記ブロックをボデイ部として決定し、そのブロックの上及び下に位置するブロックを、ヘッダ部、フッタ部として決定するステップと、
前記ヘッダ部及び前記ボデイ部の最上位論理行を、見出し部分とし、前記見出し部分の文字を文字認識して、前記見出し部分の属性を決定するステップと、
前記見出し部分の属性から前記ボデイ部分の前記最小矩形の属性を決定するステップとを有する
ことを特徴とする帳票認識方法。
【請求項２】
請求項１の帳票認識方法において、
前記論理行に分類するステップは、
前記最小矩形が構成する行の入れ子構造を解析して、前記最小矩形に、入れ子情報を設定するステップを有する
ことを特徴とする帳票認識方法。
【請求項３】
請求項１の帳票認識方法において、
前記１つのグループにまとめるステップは、
前記論理行間の関係から、前記構成要素内の罫線を回復するステップを有する
ことを特徴とする帳票認識方法。
【請求項４】
請求項１の帳票認識方法において、
前記１つのグループにまとめるステップは、
前記各論理行の構造から、前記論理行に付与された消し線を検出するステップと、
前記消し線を除去して、各論理行の関係を決定するステップとを有する
ことを特徴とする帳票認識方法。
【請求項５】
帳票のイメージを読み取るリーダーと、
前記帳票の見出し部分の文言とイメージデータを格納する見出し辞書と、一般辞書とを格納するメモリと、
前記帳票のイメージから前記帳票の縦罫線及び横罫線で構成される最小矩形を抽出し、前記帳票上の前記最小矩形の物理的並びから前記帳票の表構造を解析し、前記解析した表構造から前記最小矩形の属性を決定する処理ユニットとを有し、
前記処理ユニットは、
接続する位置関係にある最小矩形を、同じグループに分類し、前記グループを構成する矩形の最大の矩形を、主表部に、前記グループの前記最大の矩形以外の矩形を、凸部に、表の構成要素に分類し、前記表の構成要素単位に、最小矩形が、行方向に連続する表の各行を構成する論理行に分類し、連続して、且つ同じ行構造を持つ論理行を、１つのブロックにまとめ、
前記主表部において、属する行数が最大である前記ブロックをボデイ部として決定し、そのブロックの上及び下に位置するブロックを、ヘッダ部、フッタ部として決定し、前記ヘッダ部及び前記ボデイ部の最上位論理行を、見出し部分とし、前記見出し部分の文字を、前記見出し辞書を用いて、文字認識して、前記見出し部分の属性を決定し、前記見出し部分の属性から前記ボデイ部分の前記最小矩形の属性を決定する
ことを特徴とする帳票認識装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、帳票上の文字を認識するため、帳票のフォーマットを認識するための帳票認識方法に関し、特に、表を持つ帳票の表構造を自動解析して、表を構成する各項目の属性を決定する帳票認識方法に関する。
【０００２】
データの自動入力のため、帳票上の文字を認識する文字認識方法が用いられている。この文字認識においては、帳票上の指定された位置のイメージを取り出し、文字認識する。
【０００３】
帳票上の文字を識別するには、その文字のデータ名（フィールド認識子）、文字種類等の文字の属性を定義する必要がある。
【０００４】
【従来の技術】
図８７は、従来技術の説明図である。
【０００５】
図８７は、帳票として振込依頼書を示す。この振込依頼書は、「振込先」、「銀行名」、「支店名」等の項目がある。このような項目を自動認識するには、各項目のフィールドＩＤ（データ名称）、開始位置、終了位置、桁数、認識カテゴリ（文字種類）等の属性を定義する必要がある。従来、この定義情報は、各帳票毎に、登録していた。この登録には、オペレータが、各帳票毎に、入力していた。
【０００６】
【発明が解決しようとする課題】
しかしながら、従来技術では、定義情報を事前に登録する必要があった。このため、予め定義情報を登録した帳票しか、文字認識できない。例えば、金融機関において、振込の自動入力を行う場合に、企業が作成する振込依頼書のフォーマットは、様々である。このような各帳票の定義情報を予め作成しておくことは、手間がかかるという問題がある。
【０００７】
又、帳票の定義情報を登録したとしても、その帳票のフォーマットが変更になった場合に、定義情報を変更する必要があるという問題もある。
【０００８】
本発明の目的は、帳票の各項目の定義情報を自動認識する帳票認識方法を提供するにある。
【０００９】
本発明の他の目的は、帳票の各項目の並びを解析して、各項目の属性を決定する帳票認識方法を提供することにある。
【００１０】
本発明の更に他の目的は、帳票の最小矩形の属性を決定して、帳票のデータ部分を文字認識するための帳票認識方法を提供することにある。
【００１１】
【課題を解決するための手段】
本発明は、帳票の表構造を認識する帳票認識方法である。その方法は、帳票のイメージから前記帳票の縦罫線及び横罫線で構成される最小矩形を抽出するステップと、前記帳票上の前記最小矩形の物理的並びから前記帳票の表構造を解析するステップと、前記解析した表構造から前記最小矩形の属性を決定するステップとを有し、前記解析ステップは、接続する位置関係にある最小矩形を、同じグループに分類するステップと、前記グループを構成する矩形の最大の矩形を、主表部に、前記グループの前記最大の矩形以外の矩形を、凸部に、表の構成要素に分類するステップと、前記主表部において、前記最小矩形が、行方向に連続する表の各行を構成する論理行に分類するステップと、連続して、且つ同じ行構造を持つ論理行を、１つのブロックにまとめるステップとを有し、前記属性を決定するステップは、前記主表部において、属する行数が最大である前記ブロックをボデイ部として決定し、そのブロックの上及び下に位置するブロックを、ヘッダ部、フッタ部として決定するステップと、前記ヘッダ部及び前記ボデイ部の最上位論理行を、見出し部分とし、前記見出し部分の文字を文字認識して、前記見出し部分の属性を決定するステップと、前記見出し部分の属性から前記ボデイ部分の前記最小矩形の属性を決定するステップとを有する。
【００１２】
本発明では、表構造の最小矩形を抽出し、最小矩形の物理的並びを検出する。この最小矩形の物理的並びから帳票の表構造を解析して、最小矩形の属性を決定する。最小矩形の物理的並びを検出して、最小矩形の属性を決定するので、帳票の表構造を自動解析することができる。
【００１３】
このため、帳票の各項目を、事前に登録する手間を省くことができる。又、帳票のフォーマットが変更されても、定義情報を人手により変更する手間を省くことができる。
【００１４】
本発明の他の形態は、前記表構造を解析するステップは、前記最小矩形の位置関係から前記最小矩形の行方向の関係を抽出するステップと、前記最小矩形の位置関係から前記最小矩形の列方向の関係を抽出するステップとを有する。
【００１５】
更に、本発明の他の形態は、前記行方向の関係を抽出するステップは、前記最小矩形の接続関係から前記最小矩形を各行を構成する最小矩形に分類するステップと、前記連続して、且つ同じ行構造を持つ行をブロックにまとめるステップとを有し、前記列方向の関係を抽出するステップは、上下に接続するブロック間で同じ列構造を持つブロックの関係を抽出するステップを有するステップを有する。
【００１６】
本発明の更に他の形態は、前記属性を決定するステップは、属する行数が最大であるブロックをデータ部分として決定し、そのブロックの上及び下に位置するブロックを見出し部分として決定するステップを含む。
【００１７】
本発明の更に他の形態は、前記属性を決定するステップは、前記見出し部分の文字を文字認識して、前記見出し部分の属性を決定するステップと、前記見出し部分の属性から前記データ部分の属性を決定するステップとを有する。
【００１８】
本発明の更に他の形態は、前記表構造を解析するステップは、前記最小矩形の接続関係から、接続する最小矩形をグループに分類するステップと、前記グループを表の構成要素単位に分類するステップと、前記表の構成要素単位に、前記最小矩形間の行と列の関係を解析するステップとを有する。
【００１９】
本発明の更に他の形態は、前記最小矩形間の行と列の関係を解析するステップは、前記最小矩形を、行方向の関係に解析するステップと、前記最小矩形を、列方向の関係に解析するステップとを有する。
【００２０】
本発明の更に他の形態は、前記行方向の関係に解析するステップは、最小矩形が構成する行の入れ子構造を解析して、前記最小矩形に、入れ子情報を設定するステップを有する。
【００２１】
本発明の更に他の形態は、前記解析するステップは、前記各構成要素の表構造を抽出するステップと、同一の表構造を有する構成要素を統合するステップとを有する。
【００２２】
本発明の更に他の形態は、前記解析するステップは、前記各構成要素の表構造を抽出するステップと、前記構成要素の表構造から、前記構成要素内の罫線を回復するステップを有する。
【００２３】
本発明の更に他の形態は、前記行方向の関係を解析するステップは、前記各行の構造から、前記行に付与された消し線を検出するステップと、前記消し線を除去して、各行の関係を決定するステップとを有する。
【００２４】
本発明の更に他の形態は、前記解析するステップは、同じ大きさの最小矩形が連続することを検出するステップと、連続した最小矩形を１つの最小矩形に統合するステップとを有する。
【００２５】
【発明の実施の形態】
図１は、本発明の一実施の形態の帳票認識装置のブロック図、図２は、本発明の一実施の形態に用いられる第１の帳票例の説明図、図３は、本発明の一実施の形態に用いられる第２の帳票例の説明図である。
【００２６】
図１に示すように、リーダー１０００は、帳票を光学的に読み取る。プロセッサ（ＣＰＵ）１００１は、帳票を解析して、文字認識を行う。メモリ１００２は、見出し文言辞書１００３、一般辞書１００４を格納する。見出し文言辞書１００３は、予め定められた見出し文言とそのイメージデータを格納する。一般辞書１００４は、データ部分の文字認識のため、文字認識カテゴリー／文字フォント別の辞書を格納する。
【００２７】
ＣＰＵ１００１は、帳票の罫線と、罫線により構成される最小矩形を抽出する罫線抽出部１００５と、抽出した最小矩形の並びを解析して、表構造う解析する解析部１００６と、解析した表構造から、各最小矩形の属性を決定する属性決定部１００７と、属性に従い、文字認識を行う文字認識部１００８とを有する。尚、後述するように、これら各部は、ＣＰＵ１００１が行う処理をブロックで表現したものである。
【００２８】
図２は、解析される第１の帳票例を示す。この帳票は、振込依頼書である。図２の第１の帳票は、依頼人、依頼日、振込予定日、振込先（銀行名、支店名）、科目、口座番号、受取人名、金額、小計、合計を記入するものである。この帳票において、（数字）は、横方向に延びる横罫線を、〔数字〕は、縦方向に延びる縦罫線を、数字は、縦罫線及び横罫線で囲まれる最小矩形（以降、罫線項目と呼ぶ）を示す。従って、図２の帳票は、２０の横罫線（１）〜（２０）と、１３の縦罫線〔１〕〜〔１３〕と、１７６の罫線項目１〜１７６とで構成されている。
【００２９】
図３は、解析される第２の帳票例を示す。この帳票も、振込依頼書である。図３の第２の帳票は、依頼人、銀行名、支店名、科目、口座番号、受取人名、金額、小計、合計、適用、備考を記入するものである。この帳票においても、（数字）は、横方向に延びる横罫線を、〔数字〕は、縦方向に延びる縦罫線を、数字は、縦罫線及び横罫線で囲まれる最小矩形（以降、罫線項目と呼ぶ）を示す。従って、図３の帳票は、３０の横罫線（１）〜（３０）と、２０の縦罫線〔１〕〜〔２０〕と、１７１の罫線項目１〜１７１とで構成されている。この帳票は、表の部分が２つに分割されている。
【００３０】
本発明は、このような表構造を有する帳票の各罫線項目の種類等を自動解析するものである。
【００３１】
図４及び図５は、本発明の一実施の形態の全体フロー図、図６乃至図２５は、その処理の説明図である。
【００３２】
（Ｓ１）ＣＰＵ１００１は、帳票のイメージデータから帳票上の横罫線と縦罫線と、横罫線と縦罫線に囲まれた最小矩形（罫線項目）を抽出する。図６（Ａ）の示すように、イメージデータの黒ドットが連続する数を数え、一定数以上のドットが連続した場合に、横罫線又は縦罫線と判断する。図６（Ｂ）は、横罫線と縦罫線との例を示す。罫線は、物理的な座標として抽出され、縦及び横罫線を開始座標と終了座標で示す。罫線項目は、図６（Ｃ）に示すように、２本づつの縦罫線及び横罫線で囲まれる最小矩形を抽出したものである。この罫線項目も、開始座標と終了座標で示す。
【００３３】
次に、ＣＰＵ１００１は、イメージデータの帳票の斜度を算出し、斜度に合わせて罫線項目、横罫線、縦罫線の各開始座標及び終了座標を補正する。
【００３４】
（Ｓ２）ＣＰＵ１００１は、図７に示すように、各罫線項目を、接続する位置関係にあるもの同志が同じグループになるように、分類する。各罫線項目の座標を参照して、上下又は左右に接続する位置関係にあるもの同志を同じグループに分類する。図７に示すように、図２の第１の帳票は、３つのグループに分類される。図８は、接続関係の態様を示したものである。図８に示すように、罫線項目が接続しているかを判断するには、横方向又は縦方向に完全の接続している場合のみならず、罫線項目間の距離が、横方向又は縦方向で、所定の閾値の範囲内にあるものも、接続していると判断する。
【００３５】
（Ｓ３）次に、ＣＰＵ１００１は、グループを表の構成要素単位に分類する。罫線項目を分類したグループを、更にグループ毎に、表構造の構成単位に細分化する。図９に示すように、構成単位とは、グループの主となる表の部分、上側に突出した部分（上凸部）、下側に突出した部分（下凸部）からなる。このため、各罫線が、座標からどのグループ内に位置するか（どのグループを構成しているか）を判定する。そして、ぞれぞれのグループ単位に、２本づつの縦罫線及び横罫線で矩形（正方形、長方形）を構成できるものを探す。そして、罫線で構成される矩形の中で、最も大きいものをグループ内での最大矩形とする。グループ単位に、最大矩形に含まれない位置に存在する罫線項目を探索し、最大矩形の上側に位置するものを、上凸部、下側に位置するものを下凸部と分類する。そして、最大矩形に含まれる罫線項目を主表部に分類する。以降、この細分化した単位をグループと呼ぶ。
【００３６】
図９の帳票で、最大矩形を求めた場合、最大矩形は、横罫線ａ、横罫線ｂ、縦罫線ｃ、縦罫線ｄで囲まれる範囲となる。従って、主表部は、罫線項目３〜２６、上凸部は、罫線項目１〜２、下凸部は、罫線項目２７〜３２となる。
【００３７】
（Ｓ４）ＣＰＵ１００１は、表の構成要素単位のグループを論理行に分類する。グループ単位に、構成する罫線項目を、行方向（帳票の横方向）に論理的接続を持つもの同志を纏めた論理行に、分類する。ここで言う論理的な接続とは、同幅接続という概念により接続する状態にあるものをいう。
【００３８】
同幅接続の関係にある罫線項目は、同一の論理行を構成すると判断する。同幅接続について、図１０（Ａ）乃至図１０（Ｄ）により、説明する。
【００３９】
図１０（Ａ）に示すように、罫線項目が、同じ行幅で隣接し、且つ互いに罫線項目の構成線分を共有する場合、参照中の罫線項目が同一の論理行を構成すると判断する。図１０（Ａ）では、罫線項目Ａと罫線項目Ｂでは、線分ａ４と線分ｂ１とが同一の線分であり、線分の長さも同一であることから、２つの罫線項目は、接続状態にあると判断する。
【００４０】
図１０（Ｂ）に示すように、罫線項目同志が近接し、同じ行幅を持つ場合、参照中の罫線項目が同一の論理行を構成すると判断する。図１０（Ｂ）に示すように、罫線項目Ａと罫線項目Ｂとの距離ｄが、所定の閾値以下で、線分ａ４と線分ｂ２が同じ長さである場合、２つの罫線項目は、接続状態にあると判断する。
【００４１】
図１０（Ｃ）に示すように、１つの罫線項目に対し、複数の罫線項目が同じ幅で隣接し、互いに罫線項目の構成線分を共有する場合、参照中の罫線項目が同一の論理行を構成すると判断する。図１０（Ｃ）では、罫線項目Ｂの線分ｂ２と罫線項目Ｃの線分ｃ２との和が、罫線項目Ａの線分ａ４の長さと同じであることから、３つの罫線項目は、接続状態にあると判断する。
【００４２】
図１０（Ｄ）に示すように、各罫線項目が近接し、１つの罫線項目の行幅と、複数の罫線項目の行幅の和が同じ場合には、参照中の罫線項目が同一の論理行を構成すると判断する。図１０（Ｄ）では、罫線項目Ｂと罫線項目Ｃとの距離ｄ２が、閾値以下であり、且つ罫線項目Ａと罫線項目Ｂ、Ｃとの距離ｄ１が閾値以下である。罫線項目Ｂの線分ｂ２と罫線項目Ｃの線分ｃ２との和が、罫線項目Ａの線分ａ４の長さにほぼ等しいことから、３つの罫線項目は、接続状態にあると判断する。
【００４３】
このようにして、各グループを論理行に分類する。図１１に示すように、図２の帳票のグループ３は、１１の論理行に分類される。
【００４４】
次に、行方向の入れ子構造部を解析する。複数の罫線項目から構成される矩形が論理的な意味をもつものを、入れ子構造という。図１２（Ａ）に示すように、「振込先」の項目に対して、「銀行名」及び「支店名」の項目は、関係するから、この部分を入れ子構造と定義する。図１２（Ｂ）に示すように、図１２（Ａ）の場合には、罫線項目１（振込先）が、罫線項目２（銀行名）の親である。従って、罫線項目１と２に、親子関係を設定する。罫線項目２（銀行名）と罫線項目３（支店名）とは、兄弟関係（同レベル関係）である。従って、罫線項目２と３に、兄弟関係を設定する。
【００４５】
又、図３の第２の帳票例のように、レイアウトの都合上、表構成部を左右に分割している場合がある。これを、表の構造の論理的意味から判断すると、表構造を決定する上で、１つの表構造としてまとめる必要がある。このため、図１３に示すように、左右に並んで位置するグループが複数存在する場合に、それぞれのグループを構成する論理行構造を判定する。それぞれの論理行によるグループの構造が同じ場合に、表構造を統合する。
【００４６】
更に、左右に分割されている表の一部が掠れ等により消失した場合に、その部分に罫線を作成する。前述の左右に分離された表を統合する場合に、一方の表のどれかの罫線が掠れ等で消失している場合がある。図１４に示すように、罫線が消失している部分以外は、２つのグループの論理行構造が一致していることから、他方の論理行構造と一方の論理行構造とを合わせるように、罫線を新規に作成する。これにより、生成した罫線を含む罫線項目を生成する。このように、罫線を作成した後、前述の表構造の統合処理を行う。
【００４７】
（Ｓ５）次に、連続する同じ構造の論理行をブロック単位に纏める。１グループ内で上下に隣り合う論理行同志の構造を比較する。そして、同じ構造を持つ論理行同志を１ブロックに分類する。論理行の比較要素として、構成する罫線項目の数、論理行中の罫線項目の配置、論理行の高さと幅がある。これらを比較して、同じ構造を持つか判定する。
【００４８】
図１５の帳票例では、１つのグループの７つの論理行が、３つのブロック１〜３に分類される。ブロック１は、論理行１で構成され、ブロック２は、論理行２〜６で構成され、ブロック３は、論理行７で構成される。
【００４９】
又、異なる構造のブロック間を同一のブロック構造に変換する。即ち、表の一部の罫線が掠れ等で消失している場合に、他の論理行構造から消失した罫線を新規に生成する。それに伴い罫線項目を生成する。
【００５０】
図１６の表の例で説明すると、罫線が消失し、ブロック１〜５に分類されている。しかし、ブロック２とブロック４は、同一の構造を持つブロックである。従って、ブロック３に、罫線を作成する。これにより、ブロック２〜ブロック４は、同一の構造となる。これにより、ブロックを３つに統合する。
【００５１】
次に、消し線により分割された論理行を統合する。金融機関で扱う給与振込帳票等では、処理の対象としないことを明確にするため、消し線で取引部分を消去する場合がある。この場合、消し線は罫線として抽出されるため、解析結果は、不正確になる。従って、消し線を除いて、表構造の解析を行う必要がある。ブロックに分類された状態では、消し線で引かれた部分のブロックは、次の特徴がある。
【００５２】
第１に、上下に別のブロックが存在する。第２に、上側ブロックと下側ブロックは、同じ構造を持つ。この特徴を持つブロックが存在する場合に、当ブロック内で、消し線による罫線を除いたブロックを作成する。そして、このブロックが、上側ブロックと同一構造となる場合に、消し線が引かれたことにより、ブロック構造が変化したものと判断する。そして、消し線を消去し、これに伴って、罫線項目、論理行、及びブロックを再作成する。
【００５３】
図１７に示すように、ブロック３とブロック５に消し線が存在すると、ブロックは７つに分類される。ここで、ブロック２とブロック４は、同じ構造であり、，ブロック３の消し線を消去すると、ブロック２と同じ構造となる。又、ブロック４〜６についても、同様である。従って、消し線を消去し、罫線項目、論理行を再作成する。それに伴い、ブロックも作成し直す。これにより、３ブロックに再分類される。
【００５４】
（Ｓ６）次に、論理列構造を判定する。表構造を持つものは、文言固定部と、文言可変部とからなる。文言固定部は、表の見出し部分などの帳票の固定部分である。文言可変部は、表のデータ部分などの帳票の可変部分である。論理列構造の判定は、文言固定部と文言可変部との論理列構造を判定する。即ち、上下に接続するブロックの間で、同じ列構造を持つかを判定する。そして、同じ列構造を持つ場合、それらブロックを論理列の単位で統合する。例えば、図１８（Ａ）の例では、論理列は、６つに分類される。
【００５５】
この場合、図１８（Ｂ）に示すように、文言可変部のブロック２では、「あいう銀行」と「かきく支店」の２列の構造であるが、文言固定部のブロック１では、１列の構造となっている。この場合、ブロック１の１列（振込先）がブロック２の２列の見出しとなっているため、表構造としてみた場合には、ブロック２の２列を１列とみなす。
【００５６】
同様に、図１８（Ｃ）に示すように、文言固定部のブロック１では、「銀行名」と「支店名」の２列の構造であるが、文言可変部のブロック２では、１列の構造となっている。この場合、ブロック１の２列（銀行名、支店名）がブロック２の１列の見出しとなっているため、表構造としてみた場合には、ブロック１の２列を１列とみなす。
【００５７】
次に、列方向の論理的な入れ子構造を抽出する。ブロック間での論理列構造の判定を行った結果、図１８（Ｂ）及び図１８（Ｃ）のように、一方のブロックが、複数列からなり、他方のブロックが一列の論理列構造を持つ場合、これらを入れ子構造として表現する。入れ子構造を構成する罫線項目は、纏めて１つの論理的な意味を持たせる。
【００５８】
図１９（Ａ）は、図１８（Ｂ）の場合の入れ子構造を示す。図１９（Ａ）に示すように、罫線項目２と罫線項目３が兄弟関係（同じレベル）にある。両罫線項目をあわせて、罫線項目１に対しての列を構成する罫線項目とする。図１９（Ｂ）は、図１８（Ｃ）の場合の入れ子構造を示す。図１９（Ｂ）に示すように、罫線項目１と罫線項目２が兄弟関係（同じレベル）にある。両罫線項目をあわせて、罫線項目３に対しての列を構成する罫線項目とする。
【００５９】
更に、１桁罫線項目部分、３桁罫線項目部分の入れ子構造を解析する。図２０（Ａ）及び図２０（Ｂ）に示すように、帳票の表構造の中で、金額欄、手数料欄がある場合に、１桁の罫線項目又は３桁の罫線項目が連続する。１桁罫線項目は、１罫線項目内に１桁の数字が記入又は印刷されるものをいう。又、３桁罫線項目は、１罫線項目に３桁の数字が記入又は印刷されるものをいう。
【００６０】
これらは、合わせて、１つの意味を持つ。これらを論理的に１つの罫線項目に纏める。このため、予め１桁罫線項目又は３桁罫線項目の縦サイズと横サイズを定義しておく。これらサイズと一致する罫線項目が任意数並んだ場合には、これらを入れ子構造として、論理的に１つの罫線項目としてまとめる。
【００６１】
このような結果を利用して、文字認識処理では、連続する罫線項目を１つの文字列として扱うことができる。例えば、図２０（Ａ）のａ部分の罫線項目内を文字認識した結果、ｂ部分の結果を得た場合に、罫線項目が入れ子構造となっていることから、文字認識結果をｃ部分で示したように結合して、１つの文字列として取り扱う。図２０（Ｂ）に示す、３桁罫線項目の場合も同様である。
【００６２】
次に、特殊な構造を持つ矩形の入れ子構造を解析する。帳票上の主表以外の箇所には、特別な構造を持つものが多い。これらについては、構造毎に入れ子構造解析処理を行う。図２１（Ａ）では、罫線項目１に対し、罫線項目２が親子の関係にある。罫線項目２に対し、罫線項目４が親子の関係にある。罫線項目３に対し、罫線項目５が親子の関係にある。罫線項目２に対し、罫線項目３が兄弟の関係にある。罫線項目４に対し、罫線項目５が兄弟の関係にある。図２１（Ｂ）では、罫線項目１に対し、罫線項目２が親子の関係にある。罫線項目２に対し、罫線項目４が親子の関係にある。罫線項目３に対し、罫線項目５が親子の関係にある。罫線項目２に対し、罫線項目３が兄弟の関係にある。罫線項目４に対し、罫線項目５が兄弟の関係にある。前述した行方向及び列方向の入れ子構造の解析処理と同様にして、入れ子構造を解析する。
【００６３】
（Ｓ７）次に、表構造部のブロックに属性を付与する。帳票には、見出し部と、見出し部分に対応するデータ部とが存在する。又、帳票によっては、データを纏める部分（例えば、データ部の金額合計欄等）が存在する。ここでは、表構造部を構成するブロックに、属性を付与して、各ブロックに意味を持たせる。即ち、図２２に示すように、表のデータを記入又は印刷する部分をボディ部と定義し、表を構成するブロック中で最も論理行数が多いブロックに、ボディ部属性を付与する。表の見出しを記入又は印刷する部分をヘッダ部と定義し、ボディ部の上側に位置するブロックに、ヘッダ部属性を付与する。表のデータ部分を取りまとめるデータ（例えば、合計欄等）を記入又は印刷する部分をフッタ部と定義し、ボディ部の下側に位置するブロックにフッタ部属性を付与する。
【００６４】
（Ｓ８）次に、見出しを構成する罫線項目に、見出しフラグを設定する。表構造の形式から以下に示すルールに従って、見出しにあたる罫線項目に見出しフラグを設定する。見出しフラグを設定する罫線項目は、図２３に示すように、次の通りである。
【００６５】
・ヘッダブロックを構成する罫線項目
・ボディブロックの最上位論理行を構成する罫線項目
・フッタブロックを構成する罫線項目の内、最も右に位置するものを除いた罫線項目
・下凸部の論理行を構成する罫線項目の内、最も右に位置するものを除いた罫線項目
・表以外の矩形の論理行を構成する罫線項目の場合、入れ子構造の罫線項目の内、最も右下に位置するものを除いた罫線項目
この見出し部を抽出しておくと、使用される文字を制限でき、その文字（文言）に特化した文字認識処理を行うことができる。従って、高精度に見出し部分の文言を認識することができる。
【００６６】
（Ｓ９）次に、見出しの種類を決定する。見出しフラグが設定された罫線項目内に存在する文字列の文字認識を行う。図２５に示すように、この見出し部の文字認識で使用する認識辞書には、見出し文言辞書１００３（図１参照）が使用される。見出し文言辞書１００３は、見出しとして存在する文言（振込先等）と、そのイメージとが登録されたものである。従って、一般の文字認識辞書を使用した場合よりも高い精度での文字認識が可能となる。
【００６７】
この認識結果から得られた見出し名称をキーとして、図２４に示す見出しテーブルを参照する。図２４に示すように、見出しテーブルには、見出し名称に対応する属性情報（文字認識カテゴリ、文字フォント等）が登録されている。そして、その見出し名称に一致するレコード（属性情報）を抽出する。
【００６８】
（Ｓ１０）次に、見出しに対応する罫線領域の認識属性を決定する。このため、見出しが見つかった罫線項目を含む論理列情報を参照し、その見出しに対応するデータ部分の罫線項目を見つける。即ち、論理列を構成する罫線項目のうち、見出し以外の罫線項目に対して、文字認識カテゴリ、文字フォント等の認識特性を、見出しの罫線項目から複写する。
【００６９】
（Ｓ１１）次に、見出し以外の領域の文字認識を行う。見出しの罫線項目以外の罫線項目内に存在する文字列を、一般の文字認識辞書１００４（図１参照）を使用して、文字認識する。この時、文字認識辞書１００４は、漢字、数字等の各認識カテゴリに対し、別々に設けられている。従って、前述したデータ部分の認識属性に従い、一般辞書から認識辞書を選択して、文字認識する。このため、データ部分も高い精度で文字認識できる。
【００７０】
更に、得られた認識結果を認識結果通知領域に設定する。これにより、データ部分のデータ名称、データ数、文字認識結果が得られる。
【００７１】
このようにして、各罫線項目の行と列の関係を判定し、見出し部とそれに対応するデータ部とに分類する。そして、見出し部分を見出し認識辞書を用いて文字認識して、見出し名称を得る。論理列の構造の関係から見出し部分に対応したデータ部分のデータ名称が判明する。このため、帳票の各項目のフォーマットを予め定義しておく必要がない。
【００７２】
更に、見出し名称から認識属性を見出しテーブルにより得る。これに従い、データ部分を文字認識する。このため、帳票の表構造を解析することができ、データ部分の文字認識結果を精度を高めることができる。
【００７３】
次に、前述のステップＳ１〜Ｓ１１の各処理について、詳細に説明する。ここで、図２６は、各処理に使用されるテーブルの関係図である。図２６に示すように、横罫線テーブル１１０５は、抽出した横罫線の開始座標と終了座標を格納する。縦罫線テーブル１１０６は、抽出した縦罫線の開始座標と終了座標を格納する。罫線項目情報テーブル１１０４は、抽出した罫線項目（最小矩形）の開始座標、終了座標と、属するグループ番号、ブロック番号等を格納する。グループ情報テーブル１１００は、分類された各グループの先頭罫線項目アドレス、先頭ブロック番号等を格納する。
【００７４】
ブロック情報テーブル１１０１は、抽出された各ブロックの先頭罫線項目アドレス、先頭論理行アドレス等を格納する。論理行情報テーブル１１０２は、抽出された各論理行の先頭罫線項目アドレス、ブロック番号等を格納する。論理列情報テーブル１１０３は、抽出された各論理列の先頭罫線項目アドレス等を格納する。
【００７５】
（ａ）罫線抽出処理の説明
図２７は、横罫線情報テーブルの説明図、図２８は、縦罫線情報テーブルの説明図、図２９は、罫線項目テーブルの説明図である。
【００７６】
横罫線の抽出は、周知のように、一定数以上の黒画素が横方向に連続する黒画素群を抽出する。そして、図２７に示すように、各抽出した横罫線に番号を付し、その開始座標及び終了座標を、横罫線情報テーブル１００５に格納する。
【００７７】
縦罫線の抽出も、周知のように、一定数以上の黒画素が縦方向に連続する黒画素群を抽出する。そして、図２８に示すように、各抽出した縦罫線に番号を付し、その開始座標及び終了座標を、縦罫線情報テーブル１００６に格納する。
【００７８】
最小矩形（罫線項目）の抽出も、周知のように、２つの横罫線と２つの縦罫線に囲まれた最小矩形を抽出する。そして、各抽出した罫線項目に番号を付す。図２９に示すように、罫線項目情報テーブル１１０４は、各罫線項目の開始座標ＳＣ、終了座標ＥＣ、上側横罫線番号ＵＬＮ、下側横罫線番号ＬＬＮ、左側縦罫線番号ＬＶＮ、右側縦罫線番号ＲＶＮを格納する。尚、罫線項目情報テーブル１１０４は、グループ番号ＧＮ、ブロック番号ＢＮ、行番号ＬＮ、列番号ＲＯ、上側罫線項目ＵＲＮ、下側罫線項目ＬＲＮ、左側罫線項目ＥＲＮ、右側罫線項目ＲＲＮ、入れ子情報ＩＮの各欄を有する。これらの各欄は、後の処理により利用される。
【００７９】
次に、斜度補正について、説明する。図３０は、斜度算出処理フロー図である。
【００８０】
（Ｓ２０）横罫線情報テーブル１１０５の各横罫線を参照する。そして、全横罫線を参照したかを判定する。
【００８１】
（Ｓ２１）参照した横罫線の斜度を算出する。斜度θは、終了Ｙ座標をＹｅ、開始Ｙ座標をＹｓ、終了Ｘ座標をＸｅ、開始Ｘ座標をＸｓとすると、次の式（１）で計算される。
【００８２】
ｔａｎθ＝（ＹｅーＹｓ）／（ＸｅーＸｓ）                      （１）
そして、ステップＳ２０に戻る。
【００８３】
（Ｓ２２）ステップＳ２０で、全横罫線を参照した場合には、斜度の平均値を計算する。斜度の平均値は、（斜度値の合計）／（横罫線の本数）により計算される。そして、終了する。
【００８４】
次に、座標補正処理について、説明する。図３１は、座標補正処理フロー図である。
【００８５】
（Ｓ２５）罫線項目テーブル１１０４の各罫線項目を参照する。罫線項目テーブル１１０４の全罫線項目を参照したかを判定する。全罫線項目を参照した場合には、ステップＳ２７に進む。
【００８６】
（Ｓ２６）罫線項目の左上座標（開始座標）Ｘｓ、Ｙｓを、斜度ｔａｎθに応じて補正する。補正後の座標Ｘ、Ｙは、次式（２）、（３）で示される。
【００８７】
Ｘ＝Ｘｓ＋Ｙｓ×ｔａｎθ                                      （２）
Ｙ＝ＹｓーＸｓ×ｔａｎθ                                      （３）
そして、罫線項目の右下座標（終了座標）Ｘｅ、Ｙｅを、斜度ｔａｎθに応じて補正する。補正後の座標Ｘ、Ｙは、次式（４）、（５）で示される。
【００８８】
Ｘ＝Ｘｅ＋Ｙｅ×ｔａｎθ                                      （３）
Ｙ＝ＹｅーＸｅ×ｔａｎθ                                      （４）
そして、ステップＳ２５に戻る。
【００８９】
（Ｓ２７）次に、横罫線座標を補正するため、横罫線テーブル１１０５を参照する。横罫線テーブル１１０５の全横罫線を参照したかを判定する。全横罫線を参照した場合には、ステップＳ２９に進む。
【００９０】
（Ｓ２８）横罫線の左側座標（開始座標）Ｘｓ、Ｙｓを、斜度ｔａｎθに応じて補正する。補正後の座標Ｘ、Ｙは、前述の式（２）、（３）で示される。
【００９１】
そして、横罫線の右側座標（終了座標）Ｘｅ、Ｙｅを、斜度ｔａｎθに応じて補正する。補正後の座標Ｘ、Ｙは、前述の式（４）、（５）で示される。
【００９２】
そして、ステップＳ２７に戻る。
【００９３】
（Ｓ２９）次に、縦罫線座標を補正するため、縦罫線テーブル１１０６を参照する。縦罫線テーブル１１０６の全縦罫線を参照したかを判定する。全縦罫線を参照した場合には、終了する。
【００９４】
（Ｓ３０）縦罫線の左側座標（開始座標）Ｘｓ、Ｙｓを、斜度ｔａｎθに応じて補正する。補正後の座標Ｘ、Ｙは、前述の式（２）、（３）で示される。
【００９５】
そして、縦罫線の右側座標（終了座標）Ｘｅ、Ｙｅを、斜度ｔａｎθに応じて補正する。補正後の座標Ｘ、Ｙは、前述の式（４）、（５）で示される。
【００９６】
そして、ステップＳ２９に戻る。
【００９７】
このようにして、横罫線、縦罫線、罫線項目（最小矩形）を抽出する。そして、帳票の斜行による座標の誤差を補正するため、横罫線座標から斜度を計算する。斜度は平均値のため、正確に斜度を求めることができる。更に、斜度により、罫線項目、横罫線、縦罫線の座標を補正する。
【００９８】
（ｂ）グループ分類処理の説明
図３２は、グループ処理フロー図、図３３は、グループ処理後のテーブル更新の説明図である。
【００９９】
（Ｓ３１）罫線項目テーブル１１０４から罫線項目を参照する。全罫線項目を参照したかを判定する。全罫線項目を参照した場合には、終了する。
【０１００】
（Ｓ３２）罫線項目テーブル１１０４から他の罫線項目を抽出する。全部の他罫線項目を参照したかを判定する。全罫線項目を参照した場合には、ステップＳ３５に進む。
【０１０１】
（Ｓ３３）全罫線項目が参照済でない場合には、抽出した２つの罫線項目が接続関係にあるかを判定する。図８で説明したように、２つの罫線項目の位置関係が、接続関係にあるかを判定する。接続関係にない場合は、ステップＳ３２に戻る。
【０１０２】
（Ｓ３４）２つの罫線項目が接続関係にある場合には、１の罫線項目が属するグループ情報テーブル１１００に、他の罫線項目を反映する。図３３に示すように、グループ情報テーブル１１００は、グループ番号ＧＮ、開始座標ＳＣ、終了終了座標ＥＣ、罫線項目数ＲＩＮ、ブロック数ＢＬＮ、論理行数ＬＲ、先頭罫線項目アドレスＨＬＡ、先頭論理行情報アドレスＨＲＡ、先頭ブロックアドレスＨＢＡをからなる。グループ情報テーブル１１００のグループ矩形座標ＳＣ、ＥＣと、罫線項目数ＲＩＮを更新する。更に、罫線項目テーブル１１０４に、グループ番号を設定する。そして、ステップＳ３２に戻る。
【０１０３】
（Ｓ３５）全罫線項目を参照したと判定すると、１の接続罫線に、接続する罫線項目はあるかを判定する。接続する罫線項目がある時は、ステップＳ３１に戻る。接続する罫線項目がない場合には、グループ情報テーブル１１００に、新規にグループ情報を作成する。そして、ステップＳ３１に戻る。
【０１０４】
図２の帳票例では、図３３のグループ情報テーブル１１００に示すように、２つのグループに、分類される。
【０１０５】
このようにして、罫線項目を表部とそれ以外を分離するため、各罫線項目をグループに分類する。
【０１０６】
（ｃ）構成要素分類処理の説明
図３４及び図３５は、構成要素分類処理フロー図、図３６及び図３７は、分類処理後のテーブル説明図である。
【０１０７】
（Ｓ４０）グループ情報テーブル１１００からグループ情報を抽出する。全グループ情報を参照したかを判断する。全グループ情報を参照したと判定すると、終了する。
【０１０８】
（Ｓ４１）横罫線テーブル１１０５から、そのグループの横罫線を抽出する。そのグループの横罫線を全て参照したかを判定する。そのグループの横罫線を全て参照したと判定すると、ステップＳ４３に進む。
【０１０９】
（Ｓ４２）横罫線を比較して、そのグループの左右に達する横罫線で、最小のＹ座標と最大のＹ座標を持つ横罫線を抽出する。ステップＳ４１に戻る。
【０１１０】
（Ｓ４３）縦罫線テーブル１１０６から、縦罫線情報を抽出する。縦罫線を全て参照したかを判定する。縦罫線を全て参照したと判定すると、ステップＳ４５（図３５）に進む。
【０１１１】
（Ｓ４４）最小のＹ座標と最大のＹ座標を持つ横罫線の左右端と交点を持つ縦罫線を２本抽出する。ステップＳ４３に戻る。
【０１１２】
（Ｓ４５）罫線項目テーブル１１０４から、グループを構成する罫線項目を参照する。グループを構成する全罫線項目を参照したかを判定する。そのグループの全罫線項目を参照した場合には、図３４のステップＳ４０に戻る。
【０１１３】
（Ｓ４６）ステップＳ４２とステップＳ４４により、そのグループの最大矩形を構成する２本の横罫線と２本の縦罫線が抽出された。そこで、罫線項目が、この最大矩形の中にあるかを判定する。即ち、罫線項目が、抽出された横罫線と縦罫線で囲まれる範囲（外接矩形）内に位置するかを判定する。
【０１１４】
（Ｓ４７）罫線項目が、範囲内にある場合は、罫線項目を当該グループに所属させる。更に、グループ情報と当罫線項目の開始座標が一致する場合は、グループ情報の先頭罫線項目アドレスＨＬＡを、当罫線項目に設定する。そして、ステップＳ４５に戻る。
【０１１５】
（Ｓ４８）当該罫線項目が、範囲内にない場合には、当該罫線項目の開始Ｙ座標と、外接矩形開始Ｙ座標とを比較する。罫線項目の開始Ｙ座標が、外接矩形の開始Ｙ座標より大きい場合には、その罫線項目は、上凸グループに分類する。尚、上凸グループが作成済なら、上凸グループの罫線項目と接続しているかを判定する。当該罫線項目が、上凸グループの罫線項目と接続している場合には、当該罫線項目をそのグループに追加する。
【０１１６】
下凸グループも同様であり、罫線項目の開始Ｙ座標が、外接矩形の開始Ｙ座標より小さい場合には、その罫線項目は、下凸グループに分類する。尚、下凸グループが作成済なら、下凸グループの罫線項目と接続しているかを判定する。当該罫線項目が、下凸グループの罫線項目と接続している場合には、当該罫線項目をそのグループに追加する。そして、ステップＳ４５に戻る。
【０１１７】
このようにして、各グループを、主表部と、上凸部、下凸部の表の構成要素に分類する。図２の帳票例では、２グループに分類された帳票が、４グループに分類される。即ち、図３７のグループ情報テーブル１１００に示すように、グループは、４つとなる。そして、図３６の罫線項目テーブル１１０４に示すように、罫線項目も４つのグループに分類される。即ち、グループ番号は４つとなる。
【０１１８】
（ｄ）論理行分類処理の説明
図３８は、論理行分類処理フロー図、図３９は、図３８の入れ子解析処理フロー図、図３９及び図４０は、論理行抽出後のテーブル説明図である。
【０１１９】
（Ｓ５０）グループ情報テーブル１１００からグループ情報を抽出する。全部のグループ情報を参照したかを判定する。全てのグループ情報を参照すると、終了する。
【０１２０】
（Ｓ５１）横罫線テーブル１１０５から、そのグループの左右端に交点を持つ横罫線を２本づつ抽出する。全横罫線を抽出したかを判定する。そのグループの全横罫線を抽出した時は、ステップＳ５０に戻る。
【０１２１】
（Ｓ５２）全横罫線を参照していない場合には、罫線項目テーブル１１０４からそのグループを構成し、２本の横罫線に位置する罫線項目を抽出する。全罫線項目を抽出したかを判定する。そのグループの全罫線項目を参照した時は、ステップＳ５１に戻る。
【０１２２】
（Ｓ５３）２本の横罫線の内、下に位置する横罫線座標が罫線項目の下Ｙ座標に一致するかを判定する。
【０１２３】
（Ｓ５４）一致しない場合には、図１２（Ａ）及び図１２（Ｂ）に示したように、入れ子構造の可能性がある。このため、後述する図３９に示す入れ子構造の解析処理を行う。
【０１２４】
（Ｓ５５）論理行に分類するため、論理行テーブル１１０２を作成する。論理行テーブル作成済の場合には、当該罫線項目を追加する。論理行テーブルが作成されていない場合には、新規に論理行テーブルを作成する。
【０１２５】
このようにして、各グループにおいて、罫線項目を、論理行に分類する。
【０１２６】
次に、図３９により、入れ子構造解析処理について、説明する。
【０１２７】
（Ｓ５６）罫線項目テーブルから罫線項目を２つづつ抽出する。例えば、１回目は、１番目と２番目、２回目は、２番目と３番目とする。
【０１２８】
（Ｓ５７）罫線項目の開始Ｙ座標と、論理行の上側横罫線のＹ座標が一致し、罫線項目の終了Ｙ座標か、論理行の下側横罫線のＹ座標が一致するかを判定する。一致する場合には、終了する。
【０１２９】
（Ｓ５８）一致しない場合には、２つの罫線項目の開始Ｘ座標を比較する。２つの罫線項目の開始Ｘ座標が一致する場合には、ステップＳ５９に進む。２つの罫線項目の開始Ｘ座標が一致する場合には、図１２（Ａ）に示すように、２つの罫線項目に親子関係を設定する。そして、ステップＳ５６に戻る。
【０１３０】
（Ｓ５９）Ｘ座標が一致しない場合には、２つの罫線項目の開始Ｙ座標を比較する。２つの罫線項目の開始Ｙ座標が一致しない場合には、ステップＳ５６に戻る。２つの罫線項目の開始Ｙ座標が一致する場合には、図１２（Ａ）に示すように、２つの罫線項目に兄弟関係を設定する。そして、ステップＳ５６に戻る。
【０１３１】
図４１に示すように、論理行テーブル１１０２が作成される。論理行テーブルは、各論理行の番号ＬＮ、開始座標ＳＣ、終了座標ＥＣ、グループ番号ＧＮ、ブロック番号ＢＮ、罫線項目数ＲＩＮ、論理列数ＬＬ、上側横罫線番号ＵＬＮ、下側横罫線番号ＬＬＮ、左側縦罫線番号ＥＲＮ、右側縦罫線番号ＲＲＮ、先頭罫線項目アドレスＨＬＡからなる。図２の帳票の例では、図４１に示すように、論理行テーブル１１０２が作成される。
【０１３２】
更に、グループ情報テーブル１１００は、論理行数ＬＲと先頭論理行アドレスＨＬＡが追加される。図４０に示すように、罫線項目テーブル１１０４の入れ子情報ＩＮは、入れ子フラグＩＮＦ、階層番号ＫＮ、子罫線項目番号ＣＲＮ、罫線項目間リンク番号ＲＬＮからなる。入れ子フラグＩＮＦは、罫線項目が入れ子構造を構成する場合に、「ＯＮ」となる。図２の帳票例では、罫線項目１０、１１、１２が入れ子構造を構成するため、「ＯＮ」である。
【０１３３】
階層番号ＫＮは、入れ子構造の階層の深さ（親子関係数）を示す。図２の帳票例では、親となる罫線項目１０は、「０」、子となる罫線項目１１、１２は、「１」を設定する。子罫線項目数ＣＲＮは、当罫線項目が親子の関係の場合には、親の罫線項目に、子となる罫線項目番号を設定する。図２の帳票例では、親の罫線項目１０に、子の罫線項目番号１１を設定する。
【０１３４】
罫線項目間リンク番号ＲＬＮは、罫線項目が兄弟関係にある場合に、兄弟関係にある罫線項目の通し番号を示す。図２の帳票例では、罫線項目１１、１２が、兄弟関係にあるため、罫線項目１１に「０」を、罫線項目１２に「１」を設定する。
【０１３５】
このようにして、各罫線項目を論理行に分類する。この論理行は、同じ構造をしている行を見つけるのに役立つ。
【０１３６】
次に、図３の帳票例２のように、表が分離されている場合の表の統合処理について、説明する。
【０１３７】
図４２は、表の統合処理フロー図、図４３及び図４４は、帳票例２のグループ統合前のテーブル説明図、図４５及び図４６は、帳票例２のグループ統合後のテーブル説明図である。
【０１３８】
（Ｓ６０）グループ情報テーブル１１００から、同じ開始Ｙ座標と終了Ｙ座標を持つ２つのグループを抽出する。
【０１３９】
（Ｓ６１）２つのグループを構成する論理行情報を１つづつ抽出する。全部の論理行を参照したかを判定する。全部の論理行を参照した場合には、ステップＳ６３に進む。
【０１４０】
（Ｓ６２）抽出した論理行情報から、開始Ｙ座標と終了Ｙ座標が一致する論理行数をカウントする。そして、ステップＳ６１に戻る。
【０１４１】
（Ｓ６３）一致した論理行数の全論理行数に対する割合を計算する。そして、その割合と所定の閾値とを比較する。その割合が、閾値以下の場合は、２つのグールプは別の表と判断して、終了する。
【０１４２】
（Ｓ６４）その割合が、閾値以上の場合には、２つのグループは、１つの表であると判定する。そして、２つのグループに、異なる構造の論理行はあるかを判定する。異なる構造の論理行がある場合には、図４７で説明する罫線作成処理を行う。
【０１４３】
（Ｓ６５）２つのグループを１つのグループに統合する。そして、終了する。
【０１４４】
図３の帳票例で説明する。図３の帳票例では、罫線項目テーブル１１０４は、図４３のように設定される。論理行テーブル１１０２及びグループ情報テーブル１１００は、図４４に設定される。即ち、グループは、４つに分類される。前述した統合処理により、グループ２と４が統合される。即ち、図４５に示すように、論理行テーブル１１０２において、グループ４の論理行は削除される。グループテーブル１１００においても、グループ４は削除される。同様に、論理行テーブル１１０２、グループ情報テーブル１１００において、グループ２の罫線項目数に、グループ４の罫線項目数を加算される。罫線項目テーブル１０４において、グループ４の罫線項目のグループ番号は、グループ２に変更される。更に、横罫線テーブル１１０５において、グループ２の論理行を構成する横罫線の終了Ｘ座標を、グループ４の終了Ｘ座標まで延長する。
【０１４５】
このようにして、グループの論理行構造が同じか、類似しないるかを判定して、表の統合を行う。
【０１４６】
次に、図４２の罫線作成処理について、説明する。図４７は、罫線作成処理フロー図、図４８は、罫線作成の説明図、図４９及び図５０は、罫線作成後のテーブル説明図である。
【０１４７】
（Ｓ６６）２つのグループから論理行情報を抽出する。全論理行を参照したかを判定する。全論理行を参照した場合には、終了する。
【０１４８】
（Ｓ６７）２つの論理行を高さは、一致するかを判定する。一致する場合は、罫線作成処理不要のため、ステップＳ６６に戻る。一致していない場合には、次の行の論理行情報を抽出する。そして、１のグループの次の行Ｂと行Ａの高さとの和が、他のグループの行Ｃの高さとが一致するかを判定する。図４８に示すように、グループ２の論理行Ａ、Ｂと、グループ４の論理行Ｃが対応するものとする。この場合に、グループ４の論理行Ｃにおいて、掠れにより罫線が消失している。この場合に、グループ２の次の行Ｂと行Ａの高さとの和が、グループ４のの行Ｃの高さとが一致する。一致しない場合は、ステップＳ６６に戻る。
【０１４９】
（Ｓ６８）一致する場合には、行Ｃの中で、行Ａと行Ｂの境界線と同じＹ座標を持つ横罫線を生成する。そして、１つの行を２つの行に分割する。そして、ステップＳ６６に戻る。
【０１５０】
このようにして、掠れ等で消失した罫線を、表構造から検出する。そして、罫線を作成する。図４９に示すように、罫線項目情報テーブル１１０４において、罫線項目１５８と罫線項目１５９の下側横罫線番号を新規に作成した横罫線番号に変更する。終了Ｙ座標を横罫線の座標に変更する。罫線項目１６０と罫線項目１６１を新たに作成する。図５０の論理行テーブル１１０２において、行Ｃを上下に２分割する。下側論理行を論理行テーブルに追加する。グループテーブル１１００において、グループ４の論理行数を＋１する。
【０１５１】
（ｅ）ブロック分類処理の説明
図５１は、ブロック分類処理フロー図、図５２及び図５３はブロック分類後のテーブル説明図である。
【０１５２】
（Ｓ７０）グループ情報テーブル１１００から、グループ情報を抽出する。全てのグループ情報を抽出したかを判定する。全てのグループ情報を抽出した場合には、終了する。
【０１５３】
（Ｓ７１）そのグループを構成する論理行情報を２行ずつ抽出する。例えば、１回目は１行目と２行目、２回目は２行目と３行目を抽出する。全ての論理行を抽出したかを判定する。そのグループの全ての論理行を抽出した場合には、ステップＳ７０に戻る。
【０１５４】
（Ｓ７２）抽出した２つの論理行の構造を比較する。この比較は、次の項目を比較する。構成する罫線項目数は同じか。論理行の中で、罫線項目の配置は一致するか。論理行の高さ、幅は同じか。
【０１５５】
（Ｓ７３）論理行構造が一致しない場合には、両論理行は別のブロックを構成すると判断する。このため、両論理行をリンクしないブロック情報を作成する。そして、ステップＳ７０に戻る。
【０１５６】
（Ｓ７４）論理行構造が一致する場合には、両論理行は同一のブロックを構成すると判断する。このため、両論理行をリンクするブロック情報を作成する。そして、ステップＳ７０に戻る。
【０１５７】
このようにして、グループ単位に、行構造が同一である論理行を１つのブロックに分類する。図５３に示すように、ブロック情報テーブル１１０１は、ブロック番号ＢＮ、開始座標ＳＣ、終了座標ＥＣ、グループ番号ＧＮ、罫線項目数ＲＩＮ、論理行数ＬＮ、論理列数ＲＯ、先頭論理行アドレスＨＲＡ、先頭論理列アドレスＨＲＡ、上側横罫線番号ＵＬＮ、下側横罫線番号ＬＬＮ、左側縦罫線番号ＬＶＮ、右側縦罫線番号ＲＶＮからなる。
【０１５８】
ブロック情報テーブル１１０１に、各ブロックの開始座標ＳＣ、終了座標ＥＣ、グループ番号ＧＮ、罫線項目数ＲＩＮ、論理行数ＬＮ、先頭論理行アドレスＨＲＡ、上側横罫線番号ＵＬＮ、下側横罫線番号ＬＬＮ、左側縦罫線番号ＬＶＮ、右側縦罫線番号ＲＶＮを設定する。
【０１５９】
そして、図５２に示すように、罫線項目テーブル１１０４に、各罫線項目のブロック番号ＢＮを設定する。論理行テーブル１１０２に、各論理行のブロック番号ＢＮを設定する。図５３に示すように、グループテーブル１１００に、各グループのブロック数ＢＬＮ、先頭ブロック番号アドレスを設定する。
【０１６０】
次に、ブロック分類において、異なるブロックに分類されたブロックを統合する処理について、説明する。図５４は、罫線回復処理の説明図、図５５は、罫線回復処理フロー図、図５６及び図５７は、罫線回復前のテーブル説明図、図５８乃至図６０は、罫線回復後のテーブル説明図である。
【０１６１】
図５４に示すように、図２の帳票例１において、罫線項目６３と罫線項目６４の部分が掠れにより、罫線が消失しているものとする。この部分は、上下の論理行と構造が異なるため、ブロックＢに分類される。又、ブロックＢは、論理行が１行の構造であるため、罫線項目の抽出順序は、他の行と異なっている。以下、図５５により、処理を説明する。
【０１６２】
（Ｓ７５）グループ情報テーブル１１００からグループ情報を抽出する。全てのグループ情報をちゅしゅつしたかを判定する。全てのグループ情報を抽出した場合には、処理を終了する。
【０１６３】
（Ｓ７６）ブロック情報テーブル１１０１からそのグループのブロック情報を抽出する。全ブロック情報を抽出したかを調べる。全ブロックを抽出した場合には、ステップＳ７９に進む。
【０１６４】
（Ｓ７７）ブロック情報テーブル１１０１から次のブロック情報を抽出する。全ブロック情報を抽出したかを調べる。全ブロックを抽出した場合には、ステップＳ７６に戻る。
【０１６５】
（Ｓ７８）２つのブロック情報を構成する論理行の構造を比較する。即ち、ブロックを構成する論理行を構成する罫線項目の数は同じかを判定する。論理行の中で罫線項目の配置は一致するかを判定する。論理行の高さ、幅は同じかを判定する。一致する場合には、ブロック数をカウントする。そして、一致するブロック情報同志に、マーキングする。そして、ステップＳ７７に戻る。
【０１６６】
（Ｓ７９）ブロック情報テーブル１１０１から一致数が最も多いブロックを基準ブロックとし、一致数が最も多くないブロックを抽出する。図５４で説明すると、基準ブロックは、ブロックＡが抽出され、一致数が最も多くないブロックとして、ブロックＢが抽出される。全ブロック情報を抽出したかを調べる。全ブロックを抽出した場合には、ステップＳ７５に戻る。
【０１６７】
（Ｓ８０）基準ブロックＡとブロックＢの論理行での罫線項目の配置を比較する。即ち、罫線項目の座標を論理行開始Ｘ座標、Ｙ座標からの相対座標に変換して、比較する。そして、罫線項目の配置が異なった場合に、ブロックＡの罫線項目の高さｈ１とブロックＢの罫線項目の高さｈ２とを比較する。この比較において、ｈ１＜ｈ２である場合には、罫線項目の罫線の消失と判断する。このため、ブロックＢの罫線項目を、ブロックＡの罫線項目の高さと一致するように、仮分割して、ブロックＢについて、論理行情報を仮作成する。そして、ブロックＡの論理行と仮作成したブロックＢの論理行が一致する時に、グループ情報、ブロックＢのブロック情報と論理行情報、罫線項目情報と横罫線情報を編集する。そして、ステップＳ７９に戻る。
【０１６８】
これを、前述の図５４の例で説明する。罫線回復前のテーブルは、図５６及び図５７の如くである。即ち、図５６の罫線項目テーブル１１０４に示すように、罫線項目５９〜罫線項目６６は、ブロック３に分類されている。罫線項目４７、４８は、ブロック２に分類されている。
【０１６９】
罫線回復後は、図５８に示すように、罫線項目テーブル１１０４において、罫線項目６３と６４の終了座標を、横罫線１２の座標値に変更する。罫線項目１７７と１７８を新規に作成する。上側が横罫線１１、下側が横罫線１２の罫線項目と、上側が横罫線１１、下側が横罫線１３の罫線項目とのブロック番号を、ブロック２に変更する。その罫線項目の論理行番号をブロック２内の通し番号に変更する。下側が横罫線１３の罫線項目の下側横罫線番号を「１２」に変更する。同一グループ内の罫線番号が、論理行順になるように、テーブル１１０４をソートする。同一論理行番号の罫線項目をＸ座標順になるようにテーブルをソートする。グループ３、ブロック４以降の罫線項目のブロック番号をブロック２に変更し、論理行番号をブロック２内の通し番号に変更する。
【０１７０】
図５９の論理行テーブル１１０２において、グループ３、ブロック３の論理行情報を横罫線１１、１２に囲まれる範囲に変更する。グループ３、ブロック３の論理行情報のブロック番号を、ブロック２に変更する。論理行番号をブロック２内の通し番号（４）に変更する。グループ３、ブロック２の罫線項目数を「１４」に、下側横罫線番号を「１２」に変更する。グループ３、ブロック２の論理行番号を新規に作成する。グループ３、ブロック４以降の論理行情報のブロック番号を、ブロック２に変更する。論理行番号をブロック２内の通し番号に変更する。
【０１７１】
図５９のブロック情報テーブル１１０１において、グループ３、ブロック２の罫線項目数を「１４０」に、論理行数を「１０」に、下側横罫線番号を「１９」に変更する。グループ３のブロック３とブロック４を、テーブルから削除する。
【０１７２】
図６０のグループ情報テーブル１１００において、グループ２のブロック数を「２」に、罫線項目数を「１４７」に変更する。横罫線テーブル１１０５において、横罫線１２の終了Ｙ座標を、横罫線１１と同じ座標値に変更する。横罫線１３を削除する。
【０１７３】
このようにして、隣接する異なるブロック間において、論理行の構造を比較する。これにより、基準ブロックと構造の似ているブロックを探し、似ているブロックを基準ブロックの論理行構造になるように、罫線を付加する。これにより、掠れた罫線を回復する。
【０１７４】
次に、帳票の罫線項目に消し線が記入されて、異なるブロックに分類されたものを、同一のブロックに統合する処理について、説明する。図６１は、論理行統合処理の説明図、図６２は論理行統合処理フロー図、図６３及び図６４は、ろた行統合前のテーブル説明図、図６５乃至図６７は、論理行統合後のテーブル説明図である。
【０１７５】
図６１は、帳票の罫線項目に消し線が記入された例を示し、罫線項目５９と罫線項目７３との間に、横罫線が消し線として記入されている。元の帳票では、罫線項目５９と罫線項目７３とが合わせて１つの罫線項目であった。消し線により、１つの罫線項目が、２つに分割されている。２つに分割された行を１つの行に統合する。又、記入内容の訂正を行うため、引かれた訂正線により、罫線項目が部分的に分割された場合にも、統合処理により解析が可能となる。
【０１７６】
図６２の処理フローにより、説明する。
【０１７７】
（Ｓ８１）図５５の罫線回復処理のステップＳ７５〜ステップＳ７９の処理を実行して、基準ブロックと一致数が異なるブロックを抽出する。この参照中のブロックは、基準ブロックかを判定する。参照されたブロックが基準ブロックの場合には、ステップＳ７９（図５５）に戻る。
【０１７８】
（Ｓ８２）論理行テーブル１１０２から、参照ブロックの論理行情報を抽出する。参照ブロックの先頭論理行の高さに、その下の論理行の高さを１行づつ加算する。加算した高さが、基準ブロックの高さに、一致するまで、論理行を参照する。一致しなければ、ステップＳ７９（図５５）に戻る。
【０１７９】
（Ｓ８３）一致した場合には、参照した論理行を構成する罫線項目の内、上下に接続する罫線項目を全て統合する。即ち、同じＹ座標を持ち、且つ共有するＹ座標がある罫線項目を統合する。更に、統合した罫線項目で構成される論理行を仮作成する。そして、その作成した論理行と基準ブロックの論理行の構造を比較する。論理行構造が一致する場合に、グループ情報、ブロック情報、論理行情報、罫線項目情報を編集する。そして、ステップＳ７９（図５５）に戻る。
【０１８０】
このようにして、基準ブロックと、基準ブロックと構造の異なる他のブロックを抽出し、他のブロックの高さと基準ブロックの高さから、消し線の存在を検出する。そして、消し線の存在を検出すると、上下に位置する罫線項目を統合し、論理行を仮作成する。仮作成した論理行の構造と基準ブロックの論理行の構造を比較して、確認する。このため、消し線、訂正線を除去することができる。
【０１８１】
図６１のように、消し線が引かれた場合には、罫線項目テーブル１１０４は、図６３のように、作成される。論理行情報テーブル１１０２、ブロック情報テーブル１１０１、グループ情報テーブル１１００の各々は、図６４に示すように、作成される。
【０１８２】
図６１の消し線が除去され、ブロックＡ、Ｂ、Ｃが、ブロックＡに統合されると、図６５に示すように、罫線項目テーブル１１０４では、罫線項目５９から罫線項目７２までの終了座標を横罫線１３の座標値に、下側横罫線番号を「１３」に変更する。罫線項目５９から罫線項目７２までのブロック番号を、ブロック２に変更する。罫線項目５９から罫線項目７２までの論理行番号を、ブロック２内での通し番号に変更する。罫線項目７３から罫線項目８６までを削除する。罫線項目１０１以降のブロック番号をブロック２に、論理行番号をブロック２内の通し番号に変更する。
【０１８３】
図６６に示すように、論理行情報テーブル１１０２において、グループ３、ブロック３の論理行終了Ｙ座標を、横罫線１３のＹ座標に変更し、下側横罫線番号を「１３」に変更する。グループ３、ブロック３のブロック番号を、ブロック２に変更し、論理行番号を、ブロック２内の通し番号（４）に変更する。グループ３、ブロック４以降のブロック番号をブロック２に変更し、論理行番号をブロック２内の通し番号に変更する。
【０１８４】
図６６に示すように、ブロック情報テーブル１１０１において、グループ３、ブロック２の罫線項目数を「１４０」に、論理行数を「１０」に、下側横罫線番号を「１９」に変更する。グループ３のブロック３とブロック４とをテーブルから削除する。
【０１８５】
図６７に示すように、グループ情報テーブル１１００において、グループ２の罫線項目数を「１４７」に、ブロック数を「２」に、論理行数を「１１」に変更する。横罫線テーブル１１０５において、横罫線１２を削除する。
【０１８６】
（ｆ）論理列判定処理の説明
図６８は、論理列判定処理フロー図、図６９乃至図７１は、論理列判定後のテーブル説明図である。論理列の判定処理について、図６８により説明する。
【０１８７】
（Ｓ９０）グループ情報テーブル１１００から、グループ情報を抽出する。全てのグループ情報を抽出したかを判定する。全てのグループ情報を抽出した場合には、終了する。
【０１８８】
（Ｓ９１）ブロック情報テーブル１１０１から、抽出したグループの２つのブロックのブロック情報を抽出する。抽出したグループの全てのブロック情報を抽出したかを判定する。全てのブロック情報を抽出した場合には、ステップＳ９０に戻る。
【０１８９】
（Ｓ９２）罫線項目テーブル１１０４から、抽出した各ブロックの先頭の論理行を構成する罫線項目情報を順次抽出する。抽出した論理行の全ての罫線項目情報を参照したかを判定する。全ての罫線項目情報を参照した場合には、後述するステップＳ９７で、入れ子情報を設定したかを判定する。入れ子情報を設定していない場合には、抽出した２つのブロック間の論理列が終了するので、ステップＳ９１に戻る。入れ子情報を設定した場合には、グループ情報、ブロック情報、論理行情報を更新する。更に、参照中ブロックの２行以下の論理行についても、１行目と同様に、各情報を更新する。そして、ステップＳ９１に戻る。
【０１９０】
（Ｓ９３）２つの論理行の罫線項目が、同じ幅かを判定する。同じ幅でない場合には、幅の狭い論理行側で、次の罫線項目を抽出する。そして、幅の狭い論理行側で、現罫線項目と次の罫線項目との幅を加算する。幅の広い論理行の罫線項目と、その加算値を比較して、同じ幅となるかを判定する。同じ幅となるまで、罫線項目の抽出を繰り返す。
【０１９１】
（Ｓ９４）このようにして、第１のブロックの先頭論理行の罫線項目と、第２のブロックの先頭論理行の罫線項目との間の列方向の対応関係が判明した。
【０１９２】
次に、抽出した罫線項目数をカウントする。
【０１９３】
（Ｓ９５）入れ子構造を検出するため、抽出した罫線項目の数が「１」かを判定する。
【０１９４】
（Ｓ９６）罫線項目数が「１」である場合には、入れ子構造でない。このため、抽出した罫線項目に、左側からの通し番号を、論理列番号として設定する。
【０１９５】
（Ｓ９７）罫線項目数が「１」でない場合には、入れ子構造である。このため、入れ子構造の罫線項目に、同じ通し番号を、論理列番号として設定する。そして、入れ子構造を構成する罫線項目に、入れ子情報を設定する。
【０１９６】
（Ｓ９８）論理列情報を作成し、同じ論理列内の罫線項目間にリンクを設定する。この時、同じグループで異なるブロック、論理行間で同じ列番号が設定されたものの間に、リンクを設定する。そして、ステップＳ９２に戻る。
【０１９７】
このようにして、上下に接続するブロックの間で、同じ列構造を持つかを判定する。そして、同じ列構造を持つ場合、それらブロックを論理列の単位で統合する。
【０１９８】
図２の帳票例で説明する。図６９に示すように、罫線項目情報テーブル１１０４では、罫線項目の列番号欄ＲＯに、論理列番号が設定される。例えば、ブロック１の罫線項目１０、１１、１２には、列番号が「１」と設定される。異なるブロック２において、この罫線番号と同じ幅の罫線項目は、「１７」と「１８」である。従って、ブロック２の罫線項目１７、１８には、同じ列番号「１」が設定される。
【０１９９】
次に、入れ子構造を構成する罫線項目に入れ子情報ＩＮを設定する。図６９では、罫線項目１７、１８に、入れ子情報を設定する。同様に、同じ論理列を構成する罫線項目（例えば、罫線項目３１、３２）にも、入れ子情報を設定する。更に、同じ論理列を構成する罫線項目間に、アドレスリンクＨＡＡを設定する。
【０２００】
この場合に、入れ子情報ＩＮは、入れ子フラグＩＮＦ、階層番号ＫＮ、子罫線項目番号ＣＲＮ、罫線項目間リンク通し番号ＲＬＮからなる。罫線項目１７、１８の例では、罫線項目１７、１８が入れ子構造のため、入れ子フラグＩＮＦがオンとなる。２つの罫線項目１７、１８間に親子関係がないため、階層番号ＫＮに、「０」を設定する。２つの罫線項目１７、１８間に親子関係がないため、子罫線項目番号ＣＲＮに、「０」を設定する。罫線項目１７、１８が兄弟関係のため、罫線項目１７の罫線項目間リンク番号ＲＬＮに、「０」を、罫線項目１８の罫線項目間リンク番号ＲＬＮに、「１」を設定する。
【０２０１】
図７０に示すように、論理行情報テーブル１１０２において、論理行２の論理列数ＬＬを、「５」に変更する。図７０に示す論理列情報テーブル１１０３は、新規に作成する。この論理列情報テーブル１１０３は、論理列番号ＲＯ、開始座標ＳＣ、終了座標ＥＣ、グループ番号ＧＮ、ブロック番号ＢＮ、罫線項目数ＲＩＮ、上側横罫線番号ＵＬＮ、下側横罫線番号ＬＬＮ、左側縦罫線番号ＥＬＮ、右側縦罫線番号ＲＲＮ、先頭罫線項目アドレスＨＬＡからなる。前述の列方向の関係に応じて、これらを作成する。
【０２０２】
更に、図７１に示すように、ブロック情報テーブル１１０１は、グループ３、ブロック２の論理列数が、「５」に変更される。そして、各ブロックの先頭論理列アドレスＨＡＡが設定される。
【０２０３】
このようにして、各グループにおいて、ブロック間の罫線項目の列方向の関係が判定される。そして、これに従い、列方向の関係を記述するテーブルが更新される。
【０２０４】
次に、図２０（Ａ）及び図２０（Ｂ）で説明した１桁及び３桁罫線の入れ子解析処理について、説明する。図７２は、１桁、３桁罫線の入れ子解析処理フロー図、図７３は入れ子解析後のテーブル説明図である。
【０２０５】
（Ｓ１００）論理行テーブル１１０２から論理行情報を抽出する。全論理行情報を抽出したかを判定する。全論理行情報を抽出した場合には、終了する。
【０２０６】
（Ｓ１０１）論理行情報からリンクする罫線項目を抽出する。全罫線項目を抽出したかを判定する。全罫線項目を抽出した場合には、ステップＳ１００に戻る。
【０２０７】
（Ｓ１０２）抽出した罫線項目のサイズが、１桁罫線項目のサイズに該当するかを判定する。該当する場合には、ステップＳ１０４に進む。該当しない場合には、ステップＳ１０３に進む。
【０２０８】
（Ｓ１０３）抽出した罫線項目のサイズが、３桁罫線項目のサイズに該当するかを判定する。該当する場合には、ステップＳ１０４に進む。該当しない場合には、ステップＳ１０１に戻る。
【０２０９】
（Ｓ１０４）参照中の論理行の中で、次の罫線項目を抽出する。現罫線項目と次の罫線項目との大きさを比較する。誤差範囲内で一致するかを判定する。一致する場合には、ステップＳ１０５に進む。一致しない場合には、ステップＳ１０１に戻る。
【０２１０】
（Ｓ１０５）現罫線番号のリンク先罫線番号に、次の罫線番号を設定する。そして、ステップＳ１０１に戻る。
【０２１１】
図７３には、図２の帳票例における罫線項目テーブル１１０４の更新後の状態を示す。図２において、１桁罫線項目は、罫線項目２２〜３０、３６〜４４等である。上述の処理により、これらの罫線項目２２〜３０が、１桁罫線項目と判定される。そして、罫線項目テーブル１１０４において、網掛け状態にして示すように、１桁罫線項目２２〜３０のリンク先罫線項目番号ＡＮに、リンクする罫線番号が設定される。尚、前述の入れ子処理により、罫線番号２２〜３０は、入れ子構造と判定され、入れ子情報ＩＮが設定されている。
【０２１２】
このようにして、予め１桁罫線項目又は３桁罫線項目の縦サイズと横サイズを定義しておく。これらサイズと一致する罫線項目が任意数並んだ場合には、これらを入れ子構造として、論理的に１つの罫線項目としてまとめる。このような結果を利用して、文字認識処理では、連続する罫線項目を１つの文字列として扱うことができる。
【０２１３】
次に、図２１（Ａ）及び図２１（Ｂ）に示した特殊な構造を持つ矩形の入れ子構造を解析する処理について、説明する。図７４は、主表以外の入れ子解析処理フロー図、図７５及び図７６は、入れ子解析後のテーブル説明図である。
【０２１４】
（Ｓ１１０）グループ情報テーブル１１００から、グループ情報を抽出する。全グループ情報を抽出したかを判定する。全グループ情報を抽出した場合には、終了する。
【０２１５】
（Ｓ１１１）抽出したグループの構造を判定する。グループは、１ブロック且つ１行かを判定する。グループが、１ブロック且つ１行である場合には、ステップＳ１１４に進む。グループが、１ブロック且つ１行でない場合には、グループが１列かを判定する。グループが１列でない場合には、ステップＳ１１０に戻る。グループが１列である場合には、グループが複数ブロックの構造かを判定する。グループが複数ブロックの構造でない場合には、ステップＳ１１０に戻る。グループが複数ブロックの構造である場合には、ステップＳ１１２に進む。
【０２１６】
（Ｓ１１２）そのグループを構成する罫線項目を抽出する。全罫線項目情報を参照したかを判定する。全罫線項目情報を参照した場合には、ステップＳ１１０に戻る。
【０２１７】
（Ｓ１１３）そのグループにおいて、現参照罫線項目の次の罫線項目を順次抽出する。そして、現罫線項目と次の罫線項目の左側縦罫線番号を比較する。両罫線項目の左側縦罫線番号が一致する場合には、罫線項目間に入れ子情報（親子関係）を設定する。次に、現罫線項目と次の罫線項目の上側横罫線番号を比較する。両罫線項目の上側横罫線番号が一致する場合には、罫線項目間に入れ子情報（兄弟関係）を設定する。これにより、図２１（Ｂ）に示す例の入れ子構造が検出される。そして、ステップＳ１１２に戻る。
【０２１８】
（Ｓ１１４）グループが、１ブロック且つ１行である場合には、そのグループを構成する罫線項目を抽出する。全罫線項目情報を参照したかを判定する。全罫線項目情報を参照した場合には、ステップＳ１１０に戻る。
【０２１９】
（Ｓ１１５）そのグループにおいて、現参照罫線項目の次の罫線項目を順次抽出する。そして、現罫線項目と次の罫線項目の上側横罫線番号を比較する。両罫線項目の上側横罫線番号が一致する場合には、罫線項目間に入れ子情報（親子関係）を設定する。次に、現罫線項目と次の罫線項目の左側縦罫線番号を比較する。両罫線項目の左側縦罫線番号が一致する場合には、罫線項目間に入れ子情報（兄弟関係）を設定する。これにより、図２１（Ａ）に示す例の入れ子構造が検出される。そして、ステップＳ１１４に戻る。
【０２２０】
このようにして、帳票上の主表以外の箇所を、構造毎に入れ子構造解析処理を行う。図２１（Ａ）では、罫線項目１に対し、罫線項目２が親子の関係にある。罫線項目２に対し、罫線項目４が親子の関係にある。罫線項目３に対し、罫線項目５が親子の関係にある。罫線項目２に対し、罫線項目３が兄弟の関係にある。罫線項目４に対し、罫線項目５が兄弟の関係にある。図２１（Ｂ）では、罫線項目１に対し、罫線項目２が親子の関係にある。罫線項目２に対し、罫線項目４が親子の関係にある。罫線項目３に対し、罫線項目５が親子の関係にある。罫線項目２に対し、罫線項目３が兄弟の関係にある。罫線項目４に対し、罫線項目５が兄弟の関係にある。
【０２２１】
図２の帳票例において、各テーブルを説明する。図７５に示すように、罫線項目テーブル１１０４では、罫線項目１〜５に、入れ子フラグＩＮＦを設定される。罫線番号２、３に対しては、入れ子階層番号ＫＮが「１」に設定され、罫線番号４、５に対しては、入れ子階層番号ＫＮが「２」に設定される。子階層番号ＣＲＮは、罫線番号１に「２」が、設定され、罫線番号２に「４」が設定され、罫線番号３に「５」が設定される。罫線項目間リンク通し番号ＲＬＮは、罫線番号３と５に対し、「１」が設定される。
【０２２２】
図７５に示すように、論理行情報テーブル１１０２では、グループ１、ブロック１の論理行１に、論理列数「１」が設定される。図７６に示すように、論理列情報テーブル１１０３では、論理列２、３が削除され、論理列番号１の罫線項目数が「５」に変更される。図７６に示すように、ブロック情報テーブル１１０１では、グループ１、ブロック１の論理列数が「１」に変更される。
【０２２３】
このようにして、主表以外の部分の入れ子構造を解析する。
【０２２４】
（ｇ）属性付与処理の説明
図７７は、属性処理フロー図、図７８は、属性付与後のテーブル説明図である。
【０２２５】
（Ｓ１２０）グループ情報テーブル１１００からグループ情報を抽出する。全グループ情報を抽出したかを判定する。全グループ情報を抽出した場合には、終了する。
【０２２６】
（Ｓ１２１）そのグループは、複数ブロックで構成されるかを判定する。複数ブロックで構成されていない場合には、ステップＳ１２０に戻る。
【０２２７】
（Ｓ１２２）グループ情報のブロック情報アドレスからブロック情報を抽出し、各ブロックにブロック属性ＢＺを付与する。即ち、第１番目のブロックに、ヘッダブロック属性を付与し、第２番目のブロックに、ボディブロック属性を付与し、第３番目以降のブロックに、フッタブロック属性を付与する。そして、ステップＳ１２０に戻る。
【０２２８】
このようにして、表構造部を構成するブロックに、属性を付与して、各ブロックに意味を持たせる。図７８に示すように、ブロック情報テーブル１１０１において、グループ３の第１番目のブロック１に、ヘッダブロック属性「１」を付与し、第２番目のブロック２に、ボディブロック属性「２」を付与し、第３番目のブロック３に、フッタブロック属性「３」を付与する。
【０２２９】
（ｈ）見出しフラグ設定処理の説明
次に、見出しを構成する罫線項目に、見出しフラグを設定する見出しフラグ設定処理について、説明する。
【０２３０】
図７９は、フラグ設定処理フロー図、図８０は、フラグ設定後のテーブル説明図である。
【０２３１】
（Ｓ１３０）グループ情報テーブル１１００から、グループ情報を抽出する。全てのグループ情報を抽出したかを判定する。全てのグループ情報を抽出した場合には、終了する。
【０２３２】
（Ｓ１３１）グループ情報からアドレス指示されているブロック情報を抽出する。グループ内の全ブロック情報を抽出したかを判定する。グループ内の全ブロック情報を抽出した場合には、ステップＳ１３０に戻る。
【０２３３】
（Ｓ１３２）抽出したブロックは、ヘッダブロックかを判定する。ヘッダブロックである場合には、当該ブロックの論理行情報を１レコードづつ抽出する。論理行内の罫線項目情報を１レコードづつ抽出して、見出しフラグをオンする。これにより、ヘッダブロックを構成する罫線項目全てに、見出しフラグを設定する。そして、ステップＳ１３１に戻る。
【０２３４】
（Ｓ１３３）抽出したブロックは、フッタブロックかを判定する。フッタブロックでない場合には、ステップＳ１３４に進む。フッタブロックである場合には、当該ブロックの論理行情報を１レコードづつ抽出する。論理行内の罫線項目情報を１レコードづつ抽出して、見出しフラグをオンする。これにより、フッタブロックを構成する罫線項目全てに、見出しフラグを設定する。そして、ステップＳ１３１に戻る。
【０２３５】
（Ｓ１３４）抽出したブロックは、ボディブロックかを判定する。ボディブロックでない場合には、ステップＳ１３１に戻る。ボディブロックである場合には、当該ブロックの先頭論理行情報を１レコードづつ抽出する。抽出した先頭論理行内の罫線項目情報を１レコードづつ抽出して、見出しフラグをオンする。これにより、ボディブロックの先頭論理行を構成する罫線項目全てに、見出しフラグを設定する。そして、該当ブロックの先頭論理列情報を抽出する。抽出した先頭論理列内の罫線項目情報を１レコードづつ抽出して、見出しフラグをオンする。これにより、先頭論理列の罫線項目に、見出しフラグを設定する。そして、ステップＳ１３１に戻る。
【０２３６】
この見出し部を抽出しておくと、使用される文字を制限でき、その文字（文言）に特化した文字認識処理を行うことができる。従って、高精度に見出し部分の文言を認識することができる。図８０に示すように、罫線項目テーブル１１０２において、図７９のルールに従い、見出しと推定される罫線項目に、見出しフラグＭＦが設定される。
【０２３７】
（ｉ）見出し部分の文字認識処理の説明
次に、見出しの種類を決定するため、見出しフラグが設定された罫線項目内に存在する文字列の文字認識を行う。
【０２３８】
図８１は、見出し認識処理フロー図、図８２は、見出し認識後のテーブル説明図である。
【０２３９】
（Ｓ１４０）グループ情報テーブル１１００から、グループ情報を抽出する。全てのグループ情報を抽出したかを判定する。全てのグループ情報を抽出した場合には、終了する。
【０２４０】
（Ｓ１４１）グループ情報からアドレス指示されているブロック情報を抽出する。グループ内の全ブロック情報を抽出したかを判定する。グループ内の全ブロック情報を抽出した場合には、ステップＳ１４０に戻る。
【０２４１】
（Ｓ１４２）ブロック情報はボディブロックかを判定する。ボディブロックである場合には、データ部分のため、ステップＳ１４１に戻る。
【０２４２】
（Ｓ１４３）ボディブロックでない場合には、見出し部分の可能性がある。このため、ブロック情報からアドレス指示されている論理行情報を抽出する。全ての論理行情報を抽出したかを判定する。全ての論理行を抽出した場合には、ステップＳ１４１に戻る。
【０２４３】
（Ｓ１４４）論理行情報からアドレス指示されている罫線項目情報を抽出する。
【０２４４】
（Ｓ１４５）そして、罫線項目情報の見出しフラグがオンかを判定する。見出しフラグがオンでない場合には、ステップＳ１４４に戻る。
【０２４５】
（Ｓ１４６）罫線項目内の文字列データ部分のイメージを切り出す。そして、切り出したイメージを、見出し文言辞書１００３（図２５参照）を使用して、文字認識する。図２５に示したように、見出し文言辞書１００３は、見出しとして存在する文言（振込先等）と、そのイメージとが登録されたものである。従って、一般の文字認識辞書を使用した場合よりも高い精度での文字認識が可能となる。
【０２４６】
（Ｓ１４７）一致した辞書レコードの見出し名称を抽出する。見出しテーブル（図２４参照）から見出し名称が一致するレコードを抽出する。即ち、認識結果から得られた見出し名称をキーとして、図２４に示す見出しテーブルを参照する。図２４に示したように、見出しテーブルには、見出し名称に対応する属性情報（文字認識カテゴリ、文字フォント等）が登録されている。そして、その見出し名称に一致するレコード（属性情報）を抽出する。そして、その罫線項目情報に、属性（文字認識カテゴリＣＣ、文字フォントＣＦ）を設定する。そして、ステップＳ１４４に戻る。
【０２４７】
このようにして、見出し部分を、限定された文字認識辞書を用いて、文字認識する。図８２に示すように、図２に示す帳票例１の場合に、罫線項目テーブル１１０４の見出しフラグがオンである罫線項目に、文字認識カテゴリＣＣ、文字フォントＣＦが設定される。
【０２４８】
（ｊ）データ部分の属性設定処理の説明
次に、データ部分の属性を決定するため、見出しフラグが設定されていない罫線項目の属性を決定する。
【０２４９】
図８３は、属性設定処理フロー図、図８４は、属性設定後のテーブル説明図である。
【０２５０】
（Ｓ１５０）グループ情報テーブル１１００から、グループ情報を抽出する。全てのグループ情報を抽出したかを判定する。全てのグループ情報を抽出した場合には、終了する。
【０２５１】
（Ｓ１５１）グループ情報からアドレス指示されているブロック情報を抽出する。グループ内の全ブロック情報を抽出したかを判定する。グループ内の全ブロック情報を抽出した場合には、ステップＳ１５０に戻る。
【０２５２】
（Ｓ１５２）ブロック情報からアドレス指示されている論理列情報を抽出する。全ての論理列情報を抽出したかを判定する。全ての論理列を抽出した場合には、ステップＳ１５１に戻る。
【０２５３】
（Ｓ１５３）論理列情報からアドレス指示されている罫線項目情報を抽出する。そして、罫線項目情報の見出しフラグがオンかを判定する。見出しフラグがオンでない場合には、ステップＳ１５５に進む。
【０２５４】
（Ｓ１５４）見出しフラグがオンされている場合には、その罫線項目の文字認識カテゴリ、文字フォントを保存する。そして、ステップＳ１５３に戻る。
【０２５５】
（Ｓ１５５）見出しフラグがオンでない場合には、データ部分の罫線項目である。罫線項目情報は、入れ子情報かを判定する。入れ子情報である場合には、ステップＳ１５６に進む。入れ子情報でない場合には、ステップＳ１５４で保存した文字認識カテゴリ、文字フォントを参照中の罫線項目に設定する。これにより、データ部分に、同一論理列の見出し部分の属性が設定される。そして、ステップＳ１５３に戻る。
【０２５６】
（Ｓ１５６）入れ子情報である場合には、参照中の罫線項目と同一レベル（階層番号リンク通し番号）の罫線項目から、ステップＳ１５４で保存した文字認識カテゴリ、文字フォントを参照中の罫線項目に設定する。そして、ステップＳ１５３に戻る。
【０２５７】
このようにして、論理列を構成する罫線項目のうち、見出し以外の罫線項目に対して、文字認識カテゴリ、文字フォント等の認識特性を、見出しの罫線項目から複写する。図８４に示すように、図２の帳票例の場合には、罫線項目情報テーブル１１０４のデータ部分の罫線項目３、５、７等に、同一論理列の罫線項目の文字認識カテゴリＣＣ、文字フォントＣＦが設定される。このため、論理列情報により、データ部分のデータ名属性が決定される。
【０２５８】
（ｋ）データ部分の文字認識処理の説明
次に、データ部分の文字を認識するため、見出しフラグが設定されていない罫線項目の文字認識を行う。
【０２５９】
図８５は、文字認識処理フロー図、図８６は、文字認識結果の説明図である。
【０２６０】
（Ｓ１６０）図８６に示す文字認識結果通知領域管理部１２００をメモリに設定する。管理部１２００は、認識結果見出し数と、認識結果見出し領域アドレスとからなる。
【０２６１】
（Ｓ１６１）グループ情報テーブル１１００から、グループ情報を抽出する。全てのグループ情報を抽出したかを判定する。全てのグループ情報を抽出した場合には、終了する。
【０２６２】
（Ｓ１６２）グループ情報からアドレス指示されているブロック情報を抽出する。グループ内の全ブロック情報を抽出したかを判定する。グループ内の全ブロック情報を抽出した場合には、ステップＳ１６１に戻る。
【０２６３】
（Ｓ１６３）ブロック情報からアドレス指示されている論理列情報を抽出する。全ての論理列情報を抽出したかを判定する。全ての論理列を抽出した場合には、ステップＳ１６２に戻る。
【０２６４】
（Ｓ１６４）論理列情報からアドレス指示されている罫線項目情報を抽出する。
【０２６５】
（Ｓ１６５）罫線項目情報の見出しフラグがオンかを判定する。見出しフラグがオンである場合には、ステップＳ１６４に戻る。
【０２６６】
（Ｓ１６６）見出しフラグがオンでない場合には、その罫線項目内に存在する文字列を、一般の文字認識辞書１００４（図１参照）を使用して、文字認識する。この時、文字認識辞書１００４は、漢字、数字等の各認識カテゴリに対し、別々に設けられている。従って、前述したデータ部分の認識属性に従い、一般辞書から認識辞書を選択して、文字認識する。このため、データ部分も高い精度で文字認識できる。
【０２６７】
更に、図８６に示す認識結果見出し領域１２０１を設定する。領域１２０１は、見出し名称と、認識結果データ数、認識結果レコード長、認識結果データアドレスから成る。そして、認識結果データ領域１２０２を設定する。即ち、認識結果データアドレスの示す領域に、認識結果を設定する。
【０２６８】
このようにして、得られた認識結果を認識結果通知領域に設定する。これにより、データ部分のデータ名称、データ数、文字認識結果が得られる。
【０２６９】
このようにして、各罫線項目の行と列の関係を判定し、見出し部とそれに対応するデータ部とに分類する。そして、見出し部分を見出し認識辞書を用いて文字認識して、見出し名称を得る。論理列の構造の関係から見出し部分に対応したデータ部分のデータ名称が判明する。このため、帳票の各項目のフォーマットを予め定義しておく必要がない。
【０２７０】
更に、見出し名称から認識属性を見出しテーブルにより得る。これに従い、データ部分を文字認識する。このため、帳票の表構造を解析することができ、データ部分の文字認識結果を精度を高めることができる。
【０２７１】
上述の実施の形態では、各帳票の記入又は印刷文字として、漢字、英字、数字を例に説明したが、数字又は英字のみであって良い。又、罫線項目の属性として、そのデータ名称、文字認識カテゴリ、文字フォントを検出しているが、データ名称のみであっても良い。
【０２７２】
以上、本発明の実施の形態により説明したが、本発明の主旨の範囲内で種々の変形が可能であり、これらを本発明の範囲から排除するものではない。
【０２７３】
【発明の効果】
以上説明したように、本発明によれば、次の効果を奏する。
【０２７４】
（１）帳票の罫線項目の並びを検出して、帳票の表構造を自動解析するため、帳票のフォーマットを登録する手間を省くことができる。即ち、接続する位置関係にある最小矩形を、同じグループに分類し、グループを構成する矩形の最大の矩形を、主表部に、グループ内の最大矩形以外の矩形を、凸部に、表の構成要素に分類するため、多種の帳票の表構造を解析できる。又、連続して、且つ同じ行構造を持つ論理行を、１つのブロックにまとめ、属する行数が最大である前記ブロックをボデイ部として決定し、そのブロックの上及び下に位置するブロックを、ヘッダ部、フッタ部として決定するため、正確に帳票のフォーマットを解析できる。更に、ヘッダ部及び前記ボデイ部の最上位論理行を、見出し部分とし、見出し部分の文字を文字認識して、前記見出し部分の属性を決定し、見出し部分の属性からボデイ部分の属性を決定するため、一般辞書を使用しても、高い精度で文字認識できる。
【０２７５】
(2) 帳票のフォーマットが自動登録されるので、フォーマットを変更しても、再登録の手間を省くことができる。
【図面の簡単な説明】
【図１】本発明の一実施の形態のブロック図である。
【図２】本発明の一実施の形態の第１の帳票例説明図である。
【図３】本発明の一実施の形態の第２の帳票例説明図である。
【図４】本発明の一実施の形態の全体フロー図（その１）である。
【図５】本発明の一実施の形態の全体フロー図（その２）である。
【図６】図４の罫線抽出処理の説明図である。
【図７】図４のグループ抽出処理の説明図である。
【図８】図７のグループ抽出処理の接続関係の説明図である。
【図９】図４の表構成要素の分類処理の説明図である。
【図１０】図４の論理行分類処理説明図である。
【図１１】図１０の論理行分類処理の動作説明図である。
【図１２】図１０の入れ子抽出処理の説明図である。
【図１３】図１０の表構造部の統合処理の説明図である。
【図１４】図１０の罫線作成処理の説明図である。
【図１５】図４のブロック分類処理の説明図である。
【図１６】図１５の罫線回復処理の説明図である。
【図１７】図１５の論理行統合処理の説明図である。
【図１８】図４の論理列判定処理の説明図である。
【図１９】図１８の列方向の入れ子抽出処理の説明図である。
【図２０】図１８の１桁及び３桁罫線の入れ子構造の説明図である。
【図２１】図１８の主表以外の箇所の入れ子解析の説明図である。
【図２２】図４のブロックの属性付与の説明図である。
【図２３】図５のフラグ設定処理の説明図である。
【図２４】図５の見出し認識処理の説明図である。
【図２５】図５の見出し文言辞書の説明図である。
【図２６】図４及び図５の処理のためのテーブルの関係図である。
【図２７】図２６の横罫線テーブルの説明図である。
【図２８】図２６の縦罫線テーブルの説明図である。
【図２９】図２６の罫線項目テーブルの説明図である。
【図３０】斜度算出処理フロー図である。
【図３１】座標補正処理フロー図である。
【図３２】グループ処理フロー図である。
【図３３】図３２のテーブル更新の説明図である。
【図３４】構成要素分類処理フロー図（その１）である。
【図３５】構成要素分類処理フロー図（その２）である。
【図３６】図３４及び図３５の分類後のテーブル説明図（その１）である。
【図３７】図３４及び図３５の分類後のテーブル説明図（その２）である。
【図３８】論理行分類処理フロー図である。
【図３９】入れ子構造解析処理フロー図である。
【図４０】論理行抽出後のテーブル説明図（その１）である。
【図４１】論理行抽出後のテーブル説明図（その２）である。
【図４２】統合処理フロー図である。
【図４３】帳票例２のテーブル説明図（その１）である。
【図４４】帳票例２のテーブル説明図（その２）である。
【図４５】帳票例２のグループ統合後のテーブル説明図（その１）である。
【図４６】帳票例２のグループ統合後のテーブル説明図（その２）である。
【図４７】罫線作成処理フロー図である。
【図４８】罫線作成の説明図である。
【図４９】罫線作成後のテーブル説明図（その１）である。
【図５０】罫線作成後のテーブル説明図（その２）である。
【図５１】ブロック分類処理フロー図である。
【図５２】ブロック分類後のテーブル説明図（その１）である。
【図５３】ブロック分類後のテーブル説明図（その２）である。
【図５４】罫線回復処理の説明図である。
【図５５】罫線回復処理フロー図である。
【図５６】罫線回復前のテーブル説明図（その１）である。
【図５７】罫線回復前のテーブル説明図（その２）である。
【図５８】罫線回復後のテーブル説明図（その１）である。
【図５９】罫線回復後のテーブル説明図（その２）である。
【図６０】罫線回復後のテーブル説明図（その３）である。
【図６１】論理行統合処理の説明図である。
【図６２】論理行統合処理フロー図である。
【図６３】論理行統合前のテーブル説明図（その１）である。
【図６４】論理行統合前のテーブル説明図（その２）である。
【図６５】論理行統合後のテーブル説明図（その１）である。
【図６６】論理行統合後のテーブル説明図（その２）である。
【図６７】論理行統合後のテーブル説明図（その３）である。
【図６８】論理列判定処理フロー図である。
【図６９】論理列判定後のテーブル説明図（その１）である。
【図７０】論理列判定後のテーブル説明図（その２）である。
【図７１】論理列判定後のテーブル説明図（その３）である。
【図７２】１桁、３桁罫線の入れ子解析処理フロー図である。
【図７３】入れ子解析後のテーブル説明図である。
【図７４】主表以外の入れ子解析処理フロー図である。
【図７５】入れ子解析後のテーブル説明図（その１）である。
【図７６】入れ子解析後のテーブル説明図（その２）である。
【図７７】属性付与処理フロー図である。
【図７８】属性付与後のテーブル説明図である。
【図７９】フラグ設定処理フロー図である。
【図８０】フラグ設定後のテーブル説明図である。
【図８１】見出し認識処理フロー図である。
【図８２】見出し認識後のテーブル説明図である。
【図８３】属性設定処理フロー図である。
【図８４】属性設定後のテーブル説明図である。
【図８５】文字認識処理フロー図である。
【図８６】文字認識結果の説明図である。
【図８７】従来技術の説明図である。
【符号の説明】
１０００  リーダー
１００１  プロセッサ
１００２  メモリ
１００３  見出し辞書
１００４  一般辞書
１００５  罫線抽出部
１００６  表構造解析部
１００７  属性決定部
１００８  文字認識部
【図１】
0004450888.tif 000002
【図２】
0004450888.tif 000003
【図３】
0004450888.tif 000004
【図４】
0004450888.tif 000005
【図５】
0004450888.tif 000006
【図６】
0004450888.tif 000007
【図７】
0004450888.tif 000008
【図８】
0004450888.tif 000009
【図９】
0004450888.tif 000010
【図１０】
0004450888.tif 000011
【図１１】
0004450888.tif 000012
【図１２】
0004450888.tif 000013
【図１３】
0004450888.tif 000014
【図１４】
0004450888.tif 000015
【図１５】
0004450888.tif 000016
【図１６】
0004450888.tif 000017
【図１７】
0004450888.tif 000018
【図１８】
0004450888.tif 000019
【図１９】
0004450888.tif 000020
【図２０】
0004450888.tif 000021
【図２１】
0004450888.tif 000022
【図２２】
0004450888.tif 000023
【図２３】
0004450888.tif 000024
【図２４】
0004450888.tif 000025
【図２５】
0004450888.tif 000026
【図２６】
0004450888.tif 000027
【図２７】
0004450888.tif 000028
【図２８】
0004450888.tif 000029
【図２９】
0004450888.tif 000030
【図３０】
0004450888.tif 000031
【図３１】
0004450888.tif 000032
【図３２】
0004450888.tif 000033
【図３３】
0004450888.tif 000034
【図３４】
0004450888.tif 000035
【図３５】
0004450888.tif 000036
【図３６】
0004450888.tif 000037
【図３７】
0004450888.tif 000038
【図３８】
0004450888.tif 000039
【図３９】
0004450888.tif 000040
【図４０】
0004450888.tif 000041
【図４１】
0004450888.tif 000042
【図４２】
0004450888.tif 000043
【図４３】
0004450888.tif 000044
【図４４】
0004450888.tif 000045
【図４５】
0004450888.tif 000046
【図４６】
0004450888.tif 000047
【図４７】
0004450888.tif 000048
【図４８】
0004450888.tif 000049
【図４９】
0004450888.tif 000050
【図５０】
0004450888.tif 000051
【図５１】
0004450888.tif 000052
【図５２】
0004450888.tif 000053
【図５３】
0004450888.tif 000054
【図５４】
0004450888.tif 000055
【図５５】
0004450888.tif 000056
【図５６】
0004450888.tif 000057
【図５７】
0004450888.tif 000058
【図５８】
0004450888.tif 000059
【図５９】
0004450888.tif 000060
【図６０】
0004450888.tif 000061
【図６１】
0004450888.tif 000062
【図６２】
0004450888.tif 000063
【図６３】
0004450888.tif 000064
【図６４】
0004450888.tif 000065
【図６５】
0004450888.tif 000066
【図６６】
0004450888.tif 000067
【図６７】
0004450888.tif 000068
【図６８】
0004450888.tif 000069
【図６９】
0004450888.tif 000070
【図７０】
0004450888.tif 000071
【図７１】
0004450888.tif 000072
【図７２】
0004450888.tif 000073
【図７３】
0004450888.tif 000074
【図７４】
0004450888.tif 000075
【図７５】
0004450888.tif 000076
【図７６】
0004450888.tif 000077
【図７７】
0004450888.tif 000078
【図７８】
0004450888.tif 000079
【図７９】
0004450888.tif 000080
【図８０】
0004450888.tif 000081
【図８１】
0004450888.tif 000082
【図８２】
0004450888.tif 000083
【図８３】
0004450888.tif 000084
【図８４】
0004450888.tif 000085
【図８５】
0004450888.tif 000086
【図８６】
0004450888.tif 000087
【図８７】
0004450888.tif 000088