(57)【要約】【課題】帳票の様式から、入れ子構造の中に縦列挙、横列挙、縦列挙と横列挙の複合型、縦表、横表、直交表または入れ子構造を含む縦表、横表直交表が含まれる場合であっても、帳票の項目名間の論理関係、および項目名と項目値との間の論理関係を正確に認識する。【解決手段】論理関係認識装置１０は、縦表、横表および直交表の論理関係を取得し、さらに、直交表、縦表および横表から、不整合な表を除外する。そして、論理関係認識装置１０は、列挙型の論理関係を取得し、列挙型の論理関係の中に縦表、横表および直交表の論理関係に含まれるものがある場合は、当該列挙型の論理関係を除外する。そして、項目名ノード同士の親子関係を包含グラフとして表現し、縦表、横表、直交表、縦列挙、横列挙に至るまでの項目名間の論理関係を木構造データとして生成する。そして、縦表、横表および直交表の論理関係と、列挙型の論理関係とを木構造データに合成する。【選択図】図６
2018010489.tif 000002
【特許請求の範囲】
【請求項１】
帳票の項目名または項目値を表す領域に関する情報をノードとして表し、前記ノード間の隣接関係をエッジとして表したグラフを基に、前記ノードのうち、あらかじめ設定された条件を満たすノードを、項目名を表す領域のノードである項目名ノードとして抽出する抽出部と、
前記エッジを基に、前記項目名ノードから表の起点となるノードである起点ノードを抽出し、前記起点ノードを起点とした表を、上端と左端の両方に項目名が存在する直交表、上端に項目名が存在する縦表、および左端に項目名が存在する横表のうちのいずれかに分類する表分類部と、
前記直交表における前記項目名ノード間の縦方向の論理関係、前記直交表における前記項目名ノード間の横方向の論理関係、前記直交表における前記項目名ノードと前記項目名ノード以外のノードである項目値ノードとの間の縦方向の論理関係、および前記直交表における前記項目名ノードと前記項目値ノードとの間の横方向の論理関係を取得する直交表取得部と、
前記縦表における前記項目名ノード間の縦方向の論理関係、および前記縦表における前記項目名ノードと前記項目値ノードとの間の縦方向の論理関係を取得する縦表取得部と、
前記横表における前記項目名ノード間の横方向の論理関係、および前記横表における前記項目名ノードと前記項目値ノードとの間の横方向の論理関係を取得する横表取得部と、
前記直交表、前記縦表および前記横表から、不整合な表であることを示す所定の条件を満たす表を除外した合成対象の表を特定する第１の特定部と、
１つのノードの所定の方向に、複数のノードが隣接している場合、前記１つのノードと前記複数のノードとの隣接関係を表すエッジを削除する第１の削除部と、
前記項目名ノードのうち、所定の方向に項目値を表す領域のノードである項目値ノードが隣接している項目名ノードと、前記項目値ノードとの隣接関係を表すエッジを削除する第２の削除部と、
前記第１の削除部および前記第２の削除部によってエッジの削除が行われた前記グラフを基に、前記項目名ノードと前記項目値ノードとの間の論理関係を取得する第１の取得部と、
前記第１の削除部によってエッジの削除が行われた前記グラフを基に、前記項目名ノード間の包含関係を取得する第２の取得部と、
前記第１の取得部によって取得された論理関係のうち、前記合成対象の表に含まれるノードに関する論理関係を除外した合成対象の列挙に関する論理関係を特定する第２の特定部と、
前記第２の取得部によって取得された包含関係のうち、前記合成対象の表に関する論理関係および前記合成対象の列挙に関する論理関係のいずれにも含まれない包含関係を基に第１の木構造のデータを作成する第１の合成部と、
前記合成対象の表に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと前記第１の木構造のデータとを合成した第２の木構造のデータを作成する第２の合成部と、
前記合成対象の列挙に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと前記第２の木構造のデータとを合成した第３の木構造のデータを作成する第３の合成部と、
を有することを特徴とする論理関係認識装置。
【請求項２】
前記表分類部は、前記起点ノードの右側に接続する第１のノード群が全て項目名かつ前記第１のノード群の高さが前記起点ノードの高さと同じであることである第１の条件、および、前記起点ノードの下側に接続する第２のノード群が全て項目名かつ前記第２のノード群の幅が前記起点ノードの幅と同じであることである第２の条件が満たされる場合、前記起点ノードを起点とする表を直交表に分類し、前記第１の条件が満たされ、前記第２の条件が満たされない場合、前記起点ノードを起点とする表を横表に分類し、前記第２の条件が満たされ、前記第１の条件が満たされない場合、前記起点ノードを起点とする表を縦表に分類し、
前記第１の特定部は、前記直交表、前記縦表および前記横表から、下側にも右側にも前記項目値ノードが存在しない前記項目名ノードを有する直交表と、下側に前記項目値ノードが存在しない前記項目名ノードを有する縦表と、右側に前記項目値ノードが存在しない前記項目名ノードを有する横表と、を除外することを特徴とする請求項１に記載の論理関係認識装置。
【請求項３】
前記第１の合成部は、前記合成対象の表および前記合成対象の列挙に含まれるノードのうち、前記直交表の起点ノードと、前記縦表の起点ノードおよび当該起点ノードの右側に接続するノード群のうち最も上側にあるノード群と、前記横表の起点ノードおよび当該起点ノードの下側に接続するノード群のうち最も左側にあるノード群と、列挙の項目名ノードと、を前記第１の木構造のデータに含めることを特徴とする請求項１または２に記載の論理関係認識装置。
【請求項４】
前記直交表取得部は、項目名および当該項目名の右側にある項目名または項目値の組み合わせを前記横方向の論理関係として取得し、項目名および当該項目名の下側にある項目名または項目値の組み合わせを前記縦方向の論理関係として取得し、
前記縦表取得部は、項目名および当該項目名の下側にある項目名または項目値の組み合わせを前記縦方向の論理関係として取得し、
前記横表取得部は、項目名および当該項目名の右側にある項目名または項目値の組み合わせを前記横方向の論理関係として取得することを特徴とする請求項１から３のいずれか１項に記載の論理関係認識装置。
【請求項５】
前記第１の削除部は、１つのノードの左側または上側に、複数のノードが隣接している場合、前記１つのノードと前記複数のノードとの隣接関係を表すエッジを削除し、
前記第２の削除部は、前記項目名ノードのうち、左側または上側に、項目値を表す領域のノードである項目値ノードが隣接している項目名ノードと、前記項目値ノードとの隣接関係を表すエッジを削除することを特徴とする請求項１または２に記載の論理関係認識装置。
【請求項６】
前記第２の取得部は、第１の項目名ノードの右側に隣接する第１のノード群のうち少なくとも１つが前記項目名ノードであり、かつ、前記第１のノード群に含まれる全てのノードの高さが前記第１の項目名ノードの高さ以下であり、かつ、前記第１のノード群の左上端のノードの頂点と、前記第１の項目名ノードの頂点が重なっている場合、前記第１の項目名ノードが前記第１のノード群を包含していると判定し、第２の項目名ノードの下側に隣接する第２のノード群のうち少なくとも１つが前記項目名ノードであり、かつ、前記第２のノード群に含まれる全てのノードの幅が前記第２の項目名ノードの幅以下であり、かつ、前記第２のノード群の左上端のノードの頂点と、前記第１の項目名ノードの頂点が重なっている場合、前記第２の項目名ノードが前記第２のノード群を包含していると判定することを特徴とする請求項５に記載の論理関係認識装置。
【請求項７】
論理関係認識装置で実行される論理関係認識方法であって、
帳票の項目名または項目値を表す領域に関する情報をノードとして表し、前記ノード間の隣接関係をエッジとして表したグラフを基に、前記ノードのうち、あらかじめ設定された条件を満たすノードを、項目名を表す領域のノードである項目名ノードとして抽出する抽出工程と、
前記エッジを基に、前記項目名ノードから表の起点となるノードである起点ノードを抽出し、前記起点ノードを起点とした表を、上端と左端の両方に項目名が存在する直交表、上端に項目名が存在する縦表、および左端に項目名が存在する横表のうちのいずれかに分類する表分類工程と、
前記直交表における前記項目名ノード間の縦方向の論理関係、前記直交表における前記項目名ノード間の横方向の論理関係、前記直交表における前記項目名ノードと前記項目名ノード以外のノードである項目値ノードとの間の縦方向の論理関係、および前記直交表における前記項目名ノードと前記項目値ノードとの間の横方向の論理関係を取得する直交表取得工程と、
前記縦表における前記項目名ノード間の縦方向の論理関係、および前記縦表における前記項目名ノードと前記項目値ノードとの間の縦方向の論理関係を取得する縦表取得工程と、
前記横表における前記項目名ノード間の横方向の論理関係、および前記横表における前記項目名ノードと前記項目値ノードとの間の横方向の論理関係を取得する横表取得工程と、
前記直交表、前記縦表および前記横表から、不整合な表であることを示す所定の条件を満たす表を除外した合成対象の表を特定する第１の特定工程と、
１つのノードの所定の方向に、複数のノードが隣接している場合、前記１つのノードと前記複数のノードとの隣接関係を表すエッジを削除する第１の削除工程と、
前記項目名ノードのうち、所定の方向に項目値を表す領域のノードである項目値ノードが隣接している項目名ノードと、前記項目値ノードとの隣接関係を表すエッジを削除する第２の削除工程と、
前記第１の削除工程および前記第２の削除工程によってエッジの削除が行われた前記グラフを基に、前記項目名ノードと前記項目値ノードとの間の論理関係を取得する第１の取得工程と、
前記第１の削除工程によってエッジの削除が行われた前記グラフを基に、前記項目名ノード間の包含関係を取得する第２の取得工程と、
前記第１の取得工程によって取得された論理関係のうち、前記合成対象の表に含まれるノードに関する論理関係を除外した合成対象の列挙に関する論理関係を特定する第２の特定工程と、
前記第２の取得工程によって取得された包含関係のうち、前記合成対象の表に関する論理関係および前記合成対象の列挙に関する論理関係のいずれにも含まれない包含関係を基に第１の木構造のデータを作成する第１の合成工程と、
前記合成対象の表に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと前記第１の木構造のデータとを合成した第２の木構造のデータを作成する第２の合成工程と、
前記合成対象の列挙に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと前記第２の木構造のデータとを合成した第３の木構造のデータを作成する第３の合成工程と、
を含んだことを特徴とする論理関係認識方法。
【請求項８】
コンピュータに、
帳票の項目名または項目値を表す領域に関する情報をノードとして表し、前記ノード間の隣接関係をエッジとして表したグラフを基に、前記ノードのうち、あらかじめ設定された条件を満たすノードを、項目名を表す領域のノードである項目名ノードとして抽出する抽出ステップと、
前記エッジを基に、前記項目名ノードから表の起点となるノードである起点ノードを抽出し、前記起点ノードを起点とした表を、上端と左端の両方に項目名が存在する直交表、上端に項目名が存在する縦表、および左端に項目名が存在する横表のうちのいずれかに分類する表分類ステップと、
前記直交表における前記項目名ノード間の縦方向の論理関係、前記直交表における前記項目名ノード間の横方向の論理関係、前記直交表における前記項目名ノードと前記項目名ノード以外のノードである項目値ノードとの間の縦方向の論理関係、および前記直交表における前記項目名ノードと前記項目値ノードとの間の横方向の論理関係を取得する直交表取得ステップと、
前記縦表における前記項目名ノード間の縦方向の論理関係、および前記縦表における前記項目名ノードと前記項目値ノードとの間の縦方向の論理関係を取得する縦表取得ステップと、
前記横表における前記項目名ノード間の横方向の論理関係、および前記横表における前記項目名ノードと前記項目値ノードとの間の横方向の論理関係を取得する横表取得ステップと、
前記直交表、前記縦表および前記横表から、不整合な表であることを示す所定の条件を満たす表を除外した合成対象の表を特定する第１の特定ステップと、
１つのノードの所定の方向に、複数のノードが隣接している場合、前記１つのノードと前記複数のノードとの隣接関係を表すエッジを削除する第１の削除ステップと、
前記項目名ノードのうち、所定の方向に項目値を表す領域のノードである項目値ノードが隣接している項目名ノードと、前記項目値ノードとの隣接関係を表すエッジを削除する第２の削除ステップと、
前記第１の削除ステップおよび前記第２の削除ステップによってエッジの削除が行われた前記グラフを基に、前記項目名ノードと前記項目値ノードとの間の論理関係を取得する第１の取得ステップと、
前記第１の削除ステップによってエッジの削除が行われた前記グラフを基に、前記項目名ノード間の包含関係を取得する第２の取得ステップと、
前記第１の取得ステップによって取得された論理関係のうち、前記合成対象の表に含まれるノードに関する論理関係を除外した合成対象の列挙に関する論理関係を特定する第２の特定ステップと、
前記第２の取得ステップによって取得された包含関係のうち、前記合成対象の表に関する論理関係および前記合成対象の列挙に関する論理関係のいずれにも含まれない包含関係を基に第１の木構造のデータを作成する第１の合成ステップと、
前記合成対象の表に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと前記第１の木構造のデータとを合成した第２の木構造のデータを作成する第２の合成ステップと、
前記合成対象の列挙に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと前記第２の木構造のデータとを合成した第３の木構造のデータを作成する第３の合成ステップと、
を実行させることを特徴とする論理関係認識プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理関係認識装置、論理関係認識方法および論理関係認識プログラムに関する。
【背景技術】
【０００２】
様々な企業における業務の処理に、ＯｐＳ（業務支援システム：Operation  Support  System）が導入されている。一方で、ＯｐＳが支援できない業務については、各組織独自の運用がなされており、その中で帳票は情報流通に利用されている。帳票は半構造データのため、それぞれの値の意味（論理関係）は、人にとっては理解できても機械にとっては理解困難なものであり、帳票上のデータを活用する際に多大な人手の作業負担が発生している。これに対し、罫線枠の並びを基に、帳票の項目名間の論理関係、および項目名と項目値との間の論理関係を自動的に認識する技術が知られている（例えば、特許文献１および非特許文献１〜３を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−００４４１７号公報
【非特許文献】
【０００４】
【非特許文献１】高木ほか、“電子帳票群に対する横断的データ操作技術のための抽出手法の検討”、信学技報、vol.114、No.150  pp.1-6(2014)
【非特許文献２】高木ほか、“電子帳票データ連携のための帳票視覚表現の調査”、電子情報通信学会通信ソサイエティ大会講演論文集(2015)
【非特許文献３】高木ほか、“視覚表現を利用した電子帳票のデータ構造変換手法の検討”、信学技法、vol.115、No.409、pp25-30(2016)
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術は、入れ子構造型に縦列挙、横列挙、縦列挙と横列挙の複合型、縦表、横表、直交表、入れ子構造型列挙、入れ子構造縦表、入れ子構造横表または入れ子構造直交表が含まれる、または混在する場合に、帳票の項目名間の論理関係、および項目名と項目値との間の論理関係を正確に認識することができない場合があるという問題があった。
【０００６】
例えば、４行×３列の罫線枠からなる表について、上端の行の３つの罫線枠が項目名である縦表である場合と、左端の列の４つの罫線枠が項目名である横表である場合と、上端の行の３つの罫線枠、および左端の列の４つの罫線枠の両方が項目名である直交表である場合と、が考えられる。このような場合、従来の技術では、項目名間の論理関係、および項目名と項目値との間の論理関係を正確に認識することは困難である。
【０００７】
例えば、縦列挙の場合、縦方向に項目名に対応した同じ幅の罫線枠が複数存在する場合がある。さらに、それぞれの項目名は項目値を持ち、項目値に対応した罫線枠の幅も、項目名に対応した罫線枠の幅と同じである。このような場合、従来の技術では、どの罫線枠が項目名であるかを特定することができないため、項目名間の論理関係、および項目名と項目値との間の論理関係を正確に認識することは困難である。
【０００８】
さらに、例えば、入れ子構造の中に列挙および入れ子構造で表現された表が含まれる場合、従来技術では項目名と項目値との間の論理関係を正確に認識することは困難である。
【課題を解決するための手段】
【０００９】
本発明の論理関係認識装置は、帳票の項目名または項目値を表す領域に関する情報をノードとして表し、前記ノード間の隣接関係をエッジとして表したグラフを基に、前記ノードのうち、あらかじめ設定された条件を満たすノードを、項目名を表す領域のノードである項目名ノードとして抽出する抽出部と、前記エッジを基に、前記項目名ノードから表の起点となるノードである起点ノードを抽出し、前記起点ノードを起点とした表を、上端と左端の両方に項目名が存在する直交表、上端に項目名が存在する縦表、および左端に項目名が存在する横表のうちのいずれかに分類する表分類部と、前記直交表における前記項目名ノード間の縦方向の論理関係、前記直交表における前記項目名ノード間の横方向の論理関係、前記直交表における前記項目名ノードと前記項目名ノード以外のノードである項目値ノードとの間の縦方向の論理関係、および前記直交表における前記項目名ノードと前記項目値ノードとの間の横方向の論理関係を取得する直交表取得部と、前記縦表における前記項目名ノード間の縦方向の論理関係、および前記縦表における前記項目名ノードと前記項目値ノードとの間の縦方向の論理関係を取得する縦表取得部と、前記横表における前記項目名ノード間の横方向の論理関係、および前記横表における前記項目名ノードと前記項目値ノードとの間の横方向の論理関係を取得する横表取得部と、前記直交表、前記縦表および前記横表から、不整合な表であることを示す所定の条件を満たす表を除外した合成対象の表を特定する第１の特定部と、１つのノードの所定の方向に、複数のノードが隣接している場合、前記１つのノードと前記複数のノードとの隣接関係を表すエッジを削除する第１の削除部と、前記項目名ノードのうち、所定の方向に項目値を表す領域のノードである項目値ノードが隣接している項目名ノードと、前記項目値ノードとの隣接関係を表すエッジを削除する第２の削除部と、前記第１の削除部および前記第２の削除部によってエッジの削除が行われた前記グラフを基に、前記項目名ノードと前記項目値ノードとの間の論理関係を取得する第１の取得部と、前記第１の削除部によってエッジの削除が行われた前記グラフを基に、前記項目名ノード間の包含関係を取得する第２の取得部と、前記第１の取得部によって取得された論理関係のうち、前記合成対象の表に含まれるノードに関する論理関係を除外した合成対象の列挙に関する論理関係を特定する第２の特定部と、前記第２の取得部によって取得された包含関係のうち、前記合成対象の表に関する論理関係および前記合成対象の列挙に関する論理関係のいずれにも含まれない包含関係を基に第１の木構造のデータを作成する第１の合成部と、前記合成対象の表に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと前記第１の木構造のデータとを合成した第２の木構造のデータを作成する第２の合成部と、前記合成対象の列挙に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと前記第２の木構造のデータとを合成した第３の木構造のデータを作成する第３の合成部と、を有することを特徴とする。
【００１０】
また、本発明の論理関係認識方法は、論理関係認識装置で実行される論理関係認識方法であって、帳票の項目名または項目値を表す領域に関する情報をノードとして表し、前記ノード間の隣接関係をエッジとして表したグラフを基に、前記ノードのうち、あらかじめ設定された条件を満たすノードを、項目名を表す領域のノードである項目名ノードとして抽出する抽出工程と、前記エッジを基に、前記項目名ノードから表の起点となるノードである起点ノードを抽出し、前記起点ノードを起点とした表を、上端と左端の両方に項目名が存在する直交表、上端に項目名が存在する縦表、および左端に項目名が存在する横表のうちのいずれかに分類する表分類工程と、前記直交表における前記項目名ノード間の縦方向の論理関係、前記直交表における前記項目名ノード間の横方向の論理関係、前記直交表における前記項目名ノードと前記項目名ノード以外のノードである項目値ノードとの間の縦方向の論理関係、および前記直交表における前記項目名ノードと前記項目値ノードとの間の横方向の論理関係を取得する直交表取得工程と、前記縦表における前記項目名ノード間の縦方向の論理関係、および前記縦表における前記項目名ノードと前記項目値ノードとの間の縦方向の論理関係を取得する縦表取得工程と、前記横表における前記項目名ノード間の横方向の論理関係、および前記横表における前記項目名ノードと前記項目値ノードとの間の横方向の論理関係を取得する横表取得工程と、前記直交表、前記縦表および前記横表から、不整合な表であることを示す所定の条件を満たす表を除外した合成対象の表を特定する第１の特定工程と、１つのノードの所定の方向に、複数のノードが隣接している場合、前記１つのノードと前記複数のノードとの隣接関係を表すエッジを削除する第１の削除工程と、前記項目名ノードのうち、所定の方向に項目値を表す領域のノードである項目値ノードが隣接している項目名ノードと、前記項目値ノードとの隣接関係を表すエッジを削除する第２の削除工程と、前記第１の削除工程および前記第２の削除工程によってエッジの削除が行われた前記グラフを基に、前記項目名ノードと前記項目値ノードとの間の論理関係を取得する第１の取得工程と、前記第１の削除工程によってエッジの削除が行われた前記グラフを基に、前記項目名ノード間の包含関係を取得する第２の取得工程と、前記第１の取得工程によって取得された論理関係のうち、前記合成対象の表に含まれるノードに関する論理関係を除外した合成対象の列挙に関する論理関係を特定する第２の特定工程と、前記第２の取得工程によって取得された包含関係のうち、前記合成対象の表に関する論理関係および前記合成対象の列挙に関する論理関係のいずれにも含まれない包含関係を基に第１の木構造のデータを作成する第１の合成工程と、前記合成対象の表に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと前記第１の木構造のデータとを合成した第２の木構造のデータを作成する第２の合成工程と、前記合成対象の列挙に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと前記第２の木構造のデータとを合成した第３の木構造のデータを作成する第３の合成工程と、を含んだことを特徴とする。
【００１１】
また、本発明の論理関係認識プログラムは、コンピュータに、帳票の項目名または項目値を表す領域に関する情報をノードとして表し、前記ノード間の隣接関係をエッジとして表したグラフを基に、前記ノードのうち、あらかじめ設定された条件を満たすノードを、項目名を表す領域のノードである項目名ノードとして抽出する抽出ステップと、前記エッジを基に、前記項目名ノードから表の起点となるノードである起点ノードを抽出し、前記起点ノードを起点とした表を、上端と左端の両方に項目名が存在する直交表、上端に項目名が存在する縦表、および左端に項目名が存在する横表のうちのいずれかに分類する表分類ステップと、前記直交表における前記項目名ノード間の縦方向の論理関係、前記直交表における前記項目名ノード間の横方向の論理関係、前記直交表における前記項目名ノードと前記項目名ノード以外のノードである項目値ノードとの間の縦方向の論理関係、および前記直交表における前記項目名ノードと前記項目値ノードとの間の横方向の論理関係を取得する直交表取得ステップと、前記縦表における前記項目名ノード間の縦方向の論理関係、および前記縦表における前記項目名ノードと前記項目値ノードとの間の縦方向の論理関係を取得する縦表取得ステップと、前記横表における前記項目名ノード間の横方向の論理関係、および前記横表における前記項目名ノードと前記項目値ノードとの間の横方向の論理関係を取得する横表取得ステップと、前記直交表、前記縦表および前記横表から、不整合な表であることを示す所定の条件を満たす表を除外した合成対象の表を特定する第１の特定ステップと、１つのノードの所定の方向に、複数のノードが隣接している場合、前記１つのノードと前記複数のノードとの隣接関係を表すエッジを削除する第１の削除ステップと、前記項目名ノードのうち、所定の方向に項目値を表す領域のノードである項目値ノードが隣接している項目名ノードと、前記項目値ノードとの隣接関係を表すエッジを削除する第２の削除ステップと、前記第１の削除ステップおよび前記第２の削除ステップによってエッジの削除が行われた前記グラフを基に、前記項目名ノードと前記項目値ノードとの間の論理関係を取得する第１の取得ステップと、前記第１の削除ステップによってエッジの削除が行われた前記グラフを基に、前記項目名ノード間の包含関係を取得する第２の取得ステップと、前記第１の取得ステップによって取得された論理関係のうち、前記合成対象の表に含まれるノードに関する論理関係を除外した合成対象の列挙に関する論理関係を特定する第２の特定ステップと、前記第２の取得ステップによって取得された包含関係のうち、前記合成対象の表に関する論理関係および前記合成対象の列挙に関する論理関係のいずれにも含まれない包含関係を基に第１の木構造のデータを作成する第１の合成ステップと、前記合成対象の表に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと前記第１の木構造のデータとを合成した第２の木構造のデータを作成する第２の合成ステップと、前記合成対象の列挙に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと前記第２の木構造のデータとを合成した第３の木構造のデータを作成する第３の合成ステップと、を実行させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、入れ子構造型に縦列挙、横列挙、縦列挙と横列挙の複合型、縦表、横表、直交表、入れ子構造型列挙、入れ子構造縦表、入れ子構造横表または入れ子構造直交表が含まれる、または混在する場合に、帳票の項目名間の論理関係、および項目名と項目値との間の論理関係を正確に認識することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、論理関係認識処理の概要について説明するための図である。
【図２】図２は、横方向の並びに縦表が含まれる帳票の一例を示す図である。
【図３】図３は、横方向の並びに縦表が含まれる帳票の一例を示す図である。
【図４】図４は、縦方向の並びに縦表が含まれる帳票の一例を示す図である。
【図５】図５は、入れ子構造の中に直交表が含まれる帳票の一例を示す図である。
【図６】図６は、第１の実施形態に係る論理関係認識装置の構成の一例を示す図である。
【図７】図７は、隣接ノードの取得について説明するための図である。
【図８】図８は、横表の表リストの一例である。
【図９】図９は、直交表の表リストの一例である。
【図１０】図１０は、横表の表リストの一例である。
【図１１】図１１は、列挙リストの一例である。
【図１２】図１２は、包含グラフについて説明するための図である。
【図１３】図１３は、包含グラフについて説明するための図である。
【図１４】図１４は、木構造のデータの一例である。
【図１５】図１５は、帳票グラフを生成する処理の流れを示すフローチャートである。
【図１６】図１６は、ノードを取得する処理の流れを示すフローチャートである。
【図１７】図１７は、ノードを生成する処理の流れを示すフローチャートである。
【図１８】図１８は、隣接関係を取得する処理の流れを示すフローチャートである。
【図１９】図１９は、隣接するノード群を取得する処理の流れを示すフローチャートである。
【図２０】図２０は、様式グラフを生成する処理の流れを示すフローチャートである。
【図２１】図２１は、抽出部の処理の流れを示すフローチャートである。
【図２２】図２２は、解析部の処理の流れを示すフローチャートである。
【図２３】図２３は、表分類部の処理の流れを示すフローチャートである。
【図２４】図２４は、縦表取得部の処理の流れを示すフローチャートである。
【図２５】図２５は、横表取得部の処理の流れを示すフローチャートである。
【図２６】図２６は、直交表取得部の処理の流れを示すフローチャートである。
【図２７】図２７は、縦方向の論理関係を取得する処理の流れを示すフローチャートである。
【図２８】図２８は、横方向の論理関係を取得する処理の流れを示すフローチャートである。
【図２９】図２９は、表整合部の処理の流れを示すフローチャートである。
【図３０】図３０は、第１の削除部の処理の流れを示すフローチャートである。
【図３１】図３１は、第２の削除部の処理の流れを示すフローチャートである。
【図３２】図３２は、列挙分類部の処理の流れを示すフローチャートである。
【図３３】図３３は、縦列挙取得部の処理の流れを示すフローチャートである。
【図３４】図３４は、横列挙取得部の処理の流れを示すフローチャートである。
【図３５】図３５は、包含関係取得部の処理の流れを示すフローチャートである。
【図３６】図３６は、右側の包含関係を取得する処理の流れを示すフローチャートである。
【図３７】図３７は、下側の包含関係を取得する処理の流れを示すフローチャートである。
【図３８】図３８は、包含グラフ生成部の処理の流れを示すフローチャートである。
【図３９】図３９は、列挙整合部の処理の流れを示すフローチャートである。
【図４０】図４０は、項目名間合成部の処理の流れを示すフローチャートである。
【図４１】図４１は、表合成部の処理の流れを示すフローチャートである。
【図４２】図４２は、列挙合成部の処理の流れを示すフローチャートである。
【図４３】図４３は、追加部の処理の流れを示すフローチャートである。
【図４４】図４４は、その他の実施形態について説明するための図である。
【図４５】図４５は、プログラムが実行されることにより論理関係認識装置が実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願に係る論理関係認識装置、論理関係認識方法および論理関係認識プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【００１５】
まず、図１を用いて、論理関係認識装置を有する論理関係認識システムによる論理関係認識処理の概要について説明する。図１は、論理関係認識処理の概要について説明するための図である。図１に示すように、まず、論理関係認識システムは、ＰＣ等から表形式の帳票を読み込む（ステップＳ１）。このとき、論理関係認識システムが読み込むデータは、帳票に限られず、ＷｅｂＧＵＩ、システムＧＵＩ、および画像上の表構造等の、半構造のデータであればよい。次に、論理関係認識システムは、読み込んだ帳票から罫線枠に関する情報を取得する（ステップＳ２）。また、論理関係認識システムは、スキャナ等で読み込まれた紙の帳票の画像から記載内容をＯＣＲ（光学文字認識：Optical  Character  Recognition）によって取得してもよい（ステップＳ３）。
【００１６】
そして、論理関係認識システムは、罫線枠情報および項目名定義情報を基に、様式グラフを生成する（ステップＳ４）。罫線枠情報には、例えば罫線枠の座標、罫線枠内の文字列、罫線枠の塗りつぶし色、罫線の種類や太さ、色等の視覚的な情報が含まれる。また、項目名定義情報には、罫線枠を項目名として判断する際の条件が含まれる。
【００１７】
例えば、色が黄色の罫線枠を項目名とする項目名定義情報は、「if  {node:{color:#FFFF00}}  then  item」と記述される。また、例えば、文字列の空でない罫線枠を項目名とする罫線枠定義情報は、「if  {node:{!string:null}}  then  item」と記述される。また、例えば、色が白でなく、かつ文字列が空でない罫線枠を項目名とする罫線枠定義情報は、「if  {node:{!color:white},{!string:null}  then  item」と記述される。また、例えば、文字列が「y1」の罫線枠を項目名とする罫線枠定義情報は、「if  {node:{string:”y1”}}  then  item」と記述される。
【００１８】
また、様式グラフとは、帳票に含まれる複数の様式ごとに、罫線枠等をノード、ノードの隣接関係をエッジとして表したグラフである。以降の処理において、論理関係認識システムは、帳票の様式をグラフ形式のデータとして扱う。また、様式には表が含まれる。以降の説明では、様式グラフを基に論理関係を認識する場合について説明するが、帳票全体をノードとエッジで表した帳票グラフを用いることとしてもよい。
【００１９】
次に、論理関係認識システムは、表形式の構造から論理関係を認識し（ステップＳ５）、認識した結果を所定の形式のデータ構造（ｘｍｌ、ｙａｍｌ、ｊｓｏｎ等）に変換し（ステップＳ６）、ＤＢに格納する。このとき、ＤＢへはデータ構造のリンクパスを格納してもよいし、あらかじめ定義したスキーマに合わせてデータを格納してもよい。
【００２０】
次に、図２〜５を用いて、論理関係認識システムによる論理関係認識処理の対象となる帳票の構造について説明する。なお、図２〜５の各符号はノードを表しており、以降の説明では、説明のために、これらの符号が示すノードを、単にノードと呼ぶ場合と、項目名ノードまたは項目値ノードと呼ぶ場合がある。なお、図２〜５において、網掛け部分は項目名を表し、網掛けでない部分は項目値を表している。
【００２１】
ここで、縦表は、例えば項目名同士、および項目名と項目値が縦方向に隣接した表である。また、横表は、例えば項目名同士、および項目名と項目値が横方向に隣接した表である。また、直交表は、例えば項目名同士、および項目名と項目値が縦方向および横方向に隣接した表である。また、縦列挙は、項目名同士、および項目名と項目値の関係である論理関係を、縦方向に複数有する。横列挙は、論理関係を横方向に複数有する。
【００２２】
図２は、横方向の並びに縦表が含まれる帳票の一例を示す図である。図２には、例えば、ノードａ１を起点とする横方向の並びの中に、ノードａ２、ａ３およびａ４を起点とする縦表が含まれている。
【００２３】
また、図３は、横方向の並びに縦表が含まれる帳票の一例を示す図である。図３には、例えば、ｂ１を起点とする横方向の並びの中に、ｂ８、ｂ９およびｂ１０を起点とする縦表が含まれている。なお、図３の構造は、横方向の論理関係が複数あるため、横列挙である。
【００２４】
図４は、縦方向の並びに縦表が含まれる帳票の一例を示す図である。図４には、例えば、ｃ１を起点とする縦方向の並びの中に、ｃ６、ｃ７、ｃ８およびｃ９を起点とする縦表が含まれている。なお、図４の構造は、縦方向の論理関係が複数あるため、縦列挙である。
【００２５】
図５は、入れ子構造の中に直交表が含まれる帳票の一例を示す図である。図５には、例えば、ｄ１、ｄ６、ｄ８、ｄ３６、ｄ３８およびｄ４０を起点とする横方向の並びの中に、入れ子として直交表が含まれている。
【００２６】
［第１の実施形態の構成］
次に、図６を用いて、第１の実施形態に係る論理関係認識装置の構成について説明する。図６は、第１の実施形態に係る論理関係認識装置の構成の一例を示す図である。図６に示すように、論理関係認識装置１０は、制御部２０および記憶部３０を有する。
【００２７】
制御部２０は、論理関係認識装置１０全体を制御する。制御部２０は、例えば、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路である。また、制御部２０は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。また、制御部２０は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部２０は、抽出部２０１、解析部２０２、表分類部２０３、縦表取得部２０４、横表取得部２０５、直交表取得部２０６、表整合部２０７、第１の削除部２０８、第２の削除部２０９、列挙分類部２１０、縦列挙取得部２１１、横列挙取得部２１２、列挙整合部２１３、包含関係取得部２１４、包含グラフ生成部２１５、項目名間合成部２１６、表合成部２１７、列挙合成部２１８および追加部２１９を有する。
【００２８】
記憶部３０は、ＨＤＤ（Hard  Disk  Drive）、ＳＳＤ（Solid  State  Drive）、光ディスク等の記憶装置である。なお、記憶部３０は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）等のデータを書き換え可能な半導体メモリであってもよい。記憶部３０は、論理関係認識装置１０で実行されるＯＳ（Operating  System）や各種プログラムを記憶する。さらに、記憶部３０は、プログラムの実行で用いられる各種情報を記憶する。また、記憶部３０は、例えば表リスト３０１、列挙リスト３０２および包含グラフ３０３を記憶する。
【００２９】
ここで、論理関係認識装置１０による論理関係認識処理について説明するとともに、論理関係認識装置１０の各部の詳細について説明する。抽出部２０１は、帳票の項目名または項目値を表す領域に関する情報をノードとして表し、ノード間の隣接関係をエッジとして表したグラフ、すなわち様式グラフを基に、ノードのうち、あらかじめ設定された条件を満たすノードを、項目名を表す領域のノードである項目名ノードとして抽出する。
【００３０】
図７は、隣接ノードの取得について説明するための図である。ノード１およびノード２という２つのノードがある場合について説明する。一方のノードの辺が他方のノードの辺を内包している場合、または一方のノードの辺が他方のノードの辺に外延している場合、ノードが隣接関係を有することとする。
【００３１】
例えば、図７の（ａ）〜（ｃ）の例では、ノード２はノード１の左側に隣接していると判定される。また、図７の（ｄ）〜（ｆ）の例では、ノード２はノード１の右側に隣接していると判定される。また、図７の（ｇ）〜（ｉ）の例では、ノード２はノード１の上側に隣接していると判定される。また、図７の（ｊ）〜（ｌ）の例では、ノード２はノード１の下側に隣接していると判定される。
【００３２】
［表の取得処理］
まず、表分類部２０３、縦表取得部２０４、横表取得部２０５、直交表取得部２０６および表整合部２０７の処理について説明するとともに、表の取得処理について説明する。表分類部２０３は、様式グラフのエッジを基に、項目名ノードから表の起点となるノードである起点ノードを抽出し、起点ノードを起点とした表を、上端と左端の両方に項目名が存在する直交表、上端に項目名が存在する縦表、および左端に項目名が存在する横表のうちのいずれかに分類する。
【００３３】
例えば、表分類部２０３は、左上のノード、すなわち起点ノードを対象ノードとした場合に、所定の条件が満たされるか否かによって分類を行う。以後、対象ノードから右側に隣接しているノードを辿って得られるノードとの関係を「右側に接続する」、対象ノードから下側に隣接しているノードを辿って得られるノードとの関係を「下側に接続する」と呼ぶ。このとき、まず、表分類部２０３は、起点ノードの右側に接続するノード群をｒｉｇｈｔｓ、起点ノードの下側に接続するノード群をｂｏｔｔｏｍｓと定義する。そして、ｒｉｇｈｔｓおよびｂｏｔｔｏｍｓについて、下記の条件１および条件２が満たされるか否かを判定する。
（条件１）ｒｉｇｈｔｓが全て項目名かつｒｉｇｈｔｓの高さが起点ノードの高さと同じである。
（条件２）ｂｏｔｔｏｍｓが全て項目名かつｂｏｔｔｏｍｓの幅が起点ノードの幅と同じである。
【００３４】
例えば、図５の例では、表分類部２０３は、ノードｄ１を起点ノードとした場合、ノードｄ２およびｄ４をｒｉｇｈｔｓとする。また、表分類部２０３は、ノードｄ９を起点ノードとした場合、ノードｄ１０、ｄ１１およびｄ１２をｒｉｇｈｔｓとし、ノードｄ１３、ｄ１４、ｄ１７、ｄ２０、ｄ２１、ｄ２４、ｄ２７、ｄ３０およびｄ３３をｂｏｔｔｏｍｓとする。
【００３５】
表分類部２０３は、条件１、および条件２が満たされる場合、起点ノードを起点とする表を直交表に分類し、条件１が満たされ、条件２が満たされない場合、起点ノードを起点とする表を縦表に分類し、条件２が満たされ、条件１が満たされない場合、起点ノードを起点とする表を横表に分類する。
【００３６】
次に、直交表取得部２０６は、直交表における項目名ノード間の縦方向の論理関係、直交表における項目名ノード間の横方向の論理関係、直交表における項目名ノードと項目名ノード以外のノードである項目値ノードとの間の縦方向の論理関係、および直交表における項目名ノードと項目値ノードとの間の横方向の論理関係を取得する。また、縦表取得部２０４は、縦表における項目名ノード間の縦方向の論理関係、および縦表における項目名ノードと項目値ノードとの間の縦方向の論理関係を取得する。また、横表取得部２０５は、横表における項目名ノード間の横方向の論理関係、および横表における項目名ノードと項目値ノードとの間の横方向の論理関係を取得する。
【００３７】
直交表取得部２０６は、項目名および当該項目名の右側にある項目名または項目値の組み合わせを横方向の論理関係として取得し、項目名および当該項目名の下側にある項目名または項目値の組み合わせを縦方向の論理関係として取得する。また、横表取得部２０５は、項目名および当該項目名の右側にある項目名または項目値の組み合わせを横方向の論理関係として取得する。また、縦表取得部２０４は、項目名および当該項目名の下側にある項目名または項目値の組み合わせを縦方向の論理関係として取得する。
【００３８】
縦表取得部２０４は、論理関係をリストとして取得し、取得したリストを表リスト３０１として記憶部３０に格納する。なお、抽出部２０１および表分類部２０３の処理によって、表が縦表であること、およびノードａ３およびノードａ４が項目名であることがわかっているため、縦表取得部２０４は、ノードａ４をノードａ３の横方向の子とするような誤った論理関係の取得を行わない。
【００３９】
また、縦表取得部２０４は、例えば表の左上のノードの右側に接続するノード群のうち最も上側にあるノード群をｌｅａｓｔ＿ｔｏｐｓとし、ｌｅａｓｔ＿ｔｏｐｓを起点として論理関係の取得を行う。また、横表取得部２０５は、論理関係をリストとして取得し、取得したリストを表リスト３０１として記憶部３０に格納する。
【００４０】
また、横表取得部２０５は、例えば表の左上のノードの下側に接続するノード群のうち最も左側にあるノード群をｌｅａｓｔ＿ｌｅｆｔｓとし、ｌｅａｓｔ＿ｌｅｆｔｓを起点として論理関係の取得を行う。また、直交表取得部２０６は、論理関係をリストとして取得し、取得したリストを表リスト３０１として記憶部３０に格納する。
【００４１】
また、直交表取得部２０６は、例えば表の左上のノードの右側に接続するノード群のうち最も上側にあるノード群をｌｅａｓｔ＿ｔｏｐｓとし、表の左上のノードの下側に接続するノード群のうち最も左側にあるノード群をｌｅａｓｔ＿ｌｅｆｔｓとする。そして、直交表取得部２０６は、ｌｅａｓｔ＿ｔｏｐｓおよびｌｅａｓｔ＿ｌｅｆｔｓを起点として論理関係の取得を行う。
【００４２】
図８は、横表の表リストの一例である。まず、図８に示すように、表リストには表の分類が「横表」であることが記載されている。また、例えば、図８のＮｏ．１の行は、ノードｄ８の横方向の子がノードｄ９、ｄ１３、ｄ２０、ｄ２７、ｄ３０およびｄ３３であることを示している。また、例えば、図８のＮｏ．２の行は、ノードｄ９の横方向の子がノードｄ１０およびｄ１１であることを示している。また、例えば、図８のＮｏ．３の行は、ノードｄ１１の横方向の子がノードｄ１２であることを示している。また、例えば、図８のＮｏ．４の行は、ノードｄ１３の横方向の子がノードｄ１４およびｄ１７であることを示している。
【００４３】
ここで、図５に示すように、ノードｄ１０、ｄ１１およびｄ１２は項目名ノードであるため、縦方向に子となる項目値ノードが存在している必要がある。しかしながら、図８の表リストのＮｏ．３の行にはノードｄ１１の横方向の子がノード１２であることが記載されている。また、表リストにはノードｄ１０の子は記載されていない。このため、表整合部２０７は、図８のような誤った表リストを除外する。
【００４４】
図９は、直交表の表リストの一例である。また、図１０は、横表の表リストの一例である。図９および１０の表リストは誤っていないため、表整合部２０７によって除外されない。
【００４５】
表整合部２０７は、直交表、縦表および横表から、不整合な表であることを示す所定の条件を満たす表を除外した表を特定する。例えば、表整合部２０７は、直交表、縦表および横表から、下側にも右側にも項目値ノードが存在しない項目名ノードを有する直交表と、下側に項目値ノードが存在しない項目名ノードを有する縦表と、右側に項目値ノードが存在しない項目名ノードを有する横表と、を除外した表を特定する。具体的には、表整合部２０７は、表リスト３０１から、項目値ノードを子ノードとして持たない項目名ノードが存在する表リストを削除する。または、項目名ノードを子ノードとしてもつ項目名ノードが存在する表リストを削除する。なお、表整合部２０７は、第１の特定部の一例である。例えば、表整合部２０７は、図８の表リストを削除し、図９および１０の表リストを削除しない。
【００４６】
［列挙の取得処理］
次に、第１の削除部２０８、第２の削除部２０９、列挙分類部２１０、縦列挙取得部２１１、横列挙取得部２１２、包含関係取得部２１４および包含グラフ生成部２１５の処理について説明するとともに、列挙の取得処理について説明する。
【００４７】
第１の削除部２０８は、１つのノードの所定の方向に、複数のノードが隣接している場合、１つのノードと複数のノードとの隣接関係を表すエッジを削除する。なお、第１の削除部２０８は、１つのノードの左側または上側に、複数のノードが隣接している場合、１つのノードと複数のノードとの隣接関係を表すエッジを削除するようにしてもよい。
【００４８】
また、第２の削除部２０９は、項目名ノードのうち、所定の方向に項目値を表す領域のノードである項目値ノードが隣接している項目名ノードと、項目値ノードとの隣接関係を表すエッジを削除する。なお、第２の削除部２０９は、項目名ノードのうち、左側または上側に、項目値を表す領域のノードである項目値ノードが隣接している項目名ノードと、項目値ノードとの隣接関係を表すエッジを削除するようにしてもよい。
【００４９】
そして、縦列挙取得部２１１および横列挙取得部２１２は、第１の削除部２０８および第２の削除部２０９によってエッジの削除が行われたグラフを基に、項目名ノードと項目値ノードとの間の論理関係を取得する。具体的に、縦列挙取得部２１１および横列挙取得部２１２は、論理関係を、図１１に示すようなリストとして取得し、取得したリストを列挙リスト３０２として記憶部３０に格納する。図１１は、列挙リストの一例である。なお、列挙分類部２１０は、縦列挙取得部２１１および横列挙取得部２１２による処理の前に、グラフを縦列挙と横列挙に分類する。
【００５０】
図１１は、図５の列挙の論理関係を表した列挙リストである。図１１のリストのＮｏ．１の行は、項目名ノードｄ１１の縦方向の子がノードｄ１５、ｄ１８、ｄ２２、ｄ２５、ｄ２８、ｄ３１およびｄ３４であることを表している。また、図１１のリストのＮｏ．３の行は、項目名ノードｄ２の横方向の子がノードｄ３であることを表している。
【００５１】
また、例えば、図５の場合、第１の削除部２０８によって、ノードｄ１と、ノードｄ２およびｄ４との隣接関係を表すエッジが削除されているため、縦列挙取得部２１１および横列挙取得部２１２が、項目名ノードｄ１の横方向の子をｄ３およびｄ５とするような論理関係を取得することはない。
【００５２】
また、例えば、図４の場合、第２の削除部２０９によって、ノードｃ２と、ノードｃ６との隣接関係を表すエッジが削除されているため、縦列挙取得部２１１および横列挙取得部２１２が、項目名ノードｃ２の縦方向の子をｃ１０とするような論理関係を取得することはない。
【００５３】
包含関係取得部２１４は、第１の削除部２０８によってエッジの削除が行われたグラフを基に、項目名ノード間の包含関係を取得する。また、包含グラフ生成部２１５は、包含関係取得部２１４によって取得された包含関係を基に、図１２に示すようなグラフを生成し、生成したグラフを包含グラフ３０３として記憶部３０に格納する。図１２は、包含グラフについて説明するための図である。図１２の破線は縦方向の包含関係を表している。また、図１２の実線は横方向の包含関係を表している。以後、対象ノードが縦方向（または横方向）に他のノードを1つ以上包含する場合、対象ノードを縦方向（または横方向）の包含ノードと呼ぶ。また、包含関係のあるノードのうち、他のノードに包含されないノードを主のノード、包含される他のノードを従のノードと呼ぶ。
【００５４】
図１２の包含グラフは、図５の構造に対応したものである。図５および１２に示すように、ノードｄ１は、ノードｄ２およびｄ４を横方向に包含している。また、ノードｄ８は、ノードｄ９およびｄ１０を横方向に包含している。また、ノードｄ９は、ノードｄ１３、ｄ２０、ｄ２７、ｄ３０およびｄ３３を縦方向に包含している。また、ノードｄ１３は、ノードｄ１４およびｄ１７を横方向に包含している。また、ノードｄ２０は、ノードｄ２１およびｄ２４を横方向に包含している。また、ノードｄ１０は、ノードｄ１１およびｄ１２を縦方向に包含している。また、ノードｄ４０は、ノードｄ４１、ｄ４２およびｄ４７を横方向に包含している。また、ノードｄ４７は、ノードｄ４８およびｄ４９を縦方向に包含している。
【００５５】
具体的に、包含関係取得部２１４は、第１の項目名ノードの右側に隣接する第１のノード群のうち少なくとも１つが項目名ノードであり、かつ、第１のノード群に含まれる全てのノードの高さが第１の項目名ノードの高さ以下であり、かつ、第１のノード群の左上端のノードの頂点と、第１の項目名ノードの頂点が重なっている場合、第１の項目名ノードが第１のノード群を横方向に包含していると判定する。また、包含関係取得部２１４は、第２の項目名ノードの下側に隣接する第２のノード群のうち少なくとも１つが項目名ノードであり、かつ、第２のノード群に含まれる全てのノードの幅が第２の項目名ノードの幅以下であり、かつ、第２のノード群の左上端のノードの頂点と、第１の項目名ノードの頂点が重なっている場合、第２の項目名ノードが第２のノード群を縦方向に包含していると判定する。
【００５６】
例えば、図５に示すように、項目名ノードｄ８の右側に隣接するノード群のうち、少なくともノードｄ９は項目名ノードである。また、項目名ノードｄ８の右側に隣接するノード群に含まれる全てのノードの高さは、全て項目名ノードｄ８の高さ以下である。また、項目名ノードｄ８の右側に隣接するノード群の左上端のノード、すなわちノードｄ９の頂点は、項目名ノードｄ８の頂点と重なり、かつ項目名ノードｄ８の右側に隣接するノード群の左下端のノード、すなわちノードｄ３３の頂点は項目名ノードｄ８の頂点と重なる。これより、包含関係取得部２１４は、項目名ノードｄ８が、項目名ノードｄ８の右側に隣接するノード群を包含していると判定する。
【００５７】
なお、包含関係取得部２１４の処理対象となる様式グラフは、第１の削除部２０８によるエッジの削除は行われているが、第２の削除部２０９によるエッジの削除は行われていないものである。このため、例えば、ノードｄ４０と、ノードｄ４７との間の隣接関係を表すエッジは削除されていない。そのため、包含関係取得部２１４は、項目名ノードｄ４０が、ノードｄ４７を横方向に包含していると判定する。
【００５８】
列挙整合部２１３は、縦列挙取得部２１１および横列挙取得部２１２によって取得された論理関係のうち、表リスト３０１に含まれるノードに関する論理関係を除外した合成対象の列挙に関する論理関係を特定する。具体的には、列挙整合部２１３は、列挙リスト３０２の各行の論理関係のうち、表リスト３０１に含まれる論理関係を削除する。なお、列挙整合部２１３は、第２の特定部の一例である。例えば、図１１のＮｏ．６の行の論理関係（親がノードｄ１４、子がノードｄ１５およびｄ１６、方向が横）は、図９のＮｏ．６の行の論理関係と一致するため、列挙整合部２１３は、図１１のＮｏ．６の行の論理関係を削除する。
【００５９】
［合成処理］
項目名間合成部２１６は、包含グラフを、図１３に示すような、木構造のデータとして表す。図１３は、包含グラフについて説明するための図である。なお、図１３の木構造のデータは、図１２の包含グラフに基づくものである。ここで、図１２の包含グラフは、各ノードの包含関係を集合として表現したものであるため、包含グラフ上には表内部の項目名同士の論理関係も含まれる。このとき、入れ子構造型に直交表が含まれる場合、直交表の親ノードは起点ノードとなるため、包含グラフのみからでは構造を正しく取得することができない。
【００６０】
そこで、項目名間合成部２１６は、包含関係取得部２１４によって取得された包含関係のうち、合成対象の表に関する論理関係および合成対象の列挙に関する論理関係のいずれにも含まれない包含関係を基に木構造のデータを作成する。つまり、項目名間合成部２１６は、主のノードから従のノードへの包含関係を木構造のデータとして形成する際に、表リストの起点ノードまで、または列挙リストの項目名ノードまでを木ノードとして木構造のデータに合成し、以降のノードは合成しない。
【００６１】
例えば、項目名間合成部２１６は、合成対象の表および合成対象の列挙に含まれるノードのうち、直交表の起点ノードと、縦表の起点ノードおよび当該起点ノードの右側に接続するノード群のうち最も上側にあるノード群と、横表の起点ノードおよび当該起点ノードの下側に接続するノード群のうち最も左側にあるノード群と、列挙の項目名ノードと、を木構造のデータに含める。つまり、項目名間合成部２１６は、縦表の起点ノードおよび起点ノードの右側のノードのうち最も上側にあるノード群（ｌｅａｓｔ＿ｔｏｐｓ）、横表の起点ノードおよび起点ノードの下側のノードのうち最も左側にあるノード群（ｌｅａｓｔ＿ｌｅｆｔｓ）、直交表の起点ノード、および列挙の項目名ノード以外のノードについては、木構造のデータに合成しない。
【００６２】
図１２の例では、項目名間合成部２１６は、ノードｄ１、ｄ９、ｄ３６、ｄ３８、ｄ４０、ｄ４１、ｄ４２、ｄ４７、ｄ４８およびｄ４９までを木構造のデータに合成する。例えば、ノードｄ９を親、ノードｄ１０を子とする論理関係は、図９の表リストに含まれている。同様に、ノードｄ９を起点ノードとする直交表に含まれるノードに関する論理関係は、図９の表リストに含まれているため、図９の表リストに含まれるノードのうち項目名間合成部２１６によって木構造のデータに合成されるのは、起点ノードであるノードｄ９のみである。
【００６３】
また、図１０の例では、項目名間合成部２１６は、ノードｄ４８およびノードｄ４９までを木構造のデータに合成する。例えば、ノードｄ４８を親、ノードｄ５０を子とする論理関係、および、ノードｄ４９を親、ノードｄ５１を子とする論理関係は、図１０の表リストに含まれている。このため、図１０の表リストに含まれるノードのうち項目名間合成部２１６によって木構造のデータに合成されるのは、起点ノードであるノードｄ４８および、ノードｄ４８の下側のノードのうち最も左側にあるノード（群）であるノードｄ４９のみである。
【００６４】
なお、ノードｄ８は、図８の表リストにおける起点ノードであるが、前述の通り、図８の表リストは表整合部２０７によって削除されている。このため、項目名間合成部２１６は、ノードｄ８を起点ノードとみなさない。
【００６５】
また、表合成部２１７は、合成対象の表に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと項目名間合成部２１６によって作成された木構造のデータとを合成した木構造のデータを作成する。具体的には、表合成部２１７は、縦表取得部２０４によって取得された論理関係、横表取得部２０５によって取得された論理関係、直交表取得部２０６によって取得された論理関係を表現した木構造のデータをそれぞれの表ごとに作成し、項目名間合成部２１６の木構造のデータに合成する。例えば、表合成部２１７は、図９に示すリストを基に、図１４のノードｄ９以降の枝に示す木構造のデータを作成する。図１４は、木構造のデータの一例である。
【００６６】
また、列挙合成部２１８は、合成対象の列挙に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと表合成部２１７によって作成された木構造のデータとを合成した木構造のデータを作成する。例えば、列挙合成部２１８は、図１４のノードｄ２、ｄ４、ｄ６、ｄ３６、ｄ３８、ｄ４１、ｄ４２、ｄ４８およびｄ４９以降の枝に示す木構造のデータを作成する。図１４は、木構造のデータの一例である。
【００６７】
例えば、列挙合成部２１８は、図１１の列挙リストを基に、項目名間合成部２１６によって作成された木構造データ、および表合成部２１７によって作成された木構造データを合成し、図１４に示す木構造のデータを作成する。
【００６８】
また、追加部２１９は、表合成部２１７によって作成された木構造のデータに、当該木構造を定義する根ノードを追加する。例えば、追加部２１９は、当該木構造のデータに根ノード「ｆｏｒｍ１」を追加する。なお、根ノードは様式を構成する論理関係を示すために追加しているため、様式を構成する情報が必要なければ追加部２１９は必須ではない。
【００６９】
なお、木構造データの各ノードである木ノードは、例えば項目名または項目値の文字列等の帳票の書式情報から取得された情報の他に、子や親のノードを識別する情報、子や親のノードとの隣接方向、および当該木ノードが表に含まれるものであることを示す情報等を有する。
【００７０】
［第１の実施形態の処理］
まず、帳票グラフを生成する処理について説明する。帳票グラフを生成する処理は、論理関係認識装置１０による処理の前に前提として実行される処理である。ここでは、図示しない帳票グラフ生成部によって帳票グラフを生成する処理が行われることとする。なお、帳票グラフ生成部は、論理関係認識装置１０に備えられていても良いし、他の装置に備えられていてもよい。
【００７１】
まず、図１５を用いて帳票グラフ生成部の処理の全体の流れを説明する。図１５は、帳票グラフを生成する処理の流れを示すフローチャートである。図１５に示すように、帳票グラフ生成部は、まず帳票を読み込む（ステップＳ１１）。次に、帳票グラフ生成部は、読み込んだ帳票からノードを取得する（ステップＳ１２）。そして、帳票グラフ生成部は、ノードの隣接関係を取得する（ステップＳ１３）。最後に、帳票グラフ生成部は、生成した帳票グラフを出力する（ステップＳ１４）。なお、帳票グラフは、帳票の項目名または項目値を表す領域に関する情報をノードとして表し、ノード間の隣接関係をエッジとして表したグラフである。
【００７２】
次に、図１６を用いて、ノードを取得する処理（ステップＳ１２）について説明する。図１６は、ノードを取得する処理の流れを示すフローチャートである。図１６に示すように、帳票グラフ生成部は、まず、帳票を読み込む（ステップＳ２１）。次に、帳票グラフ生成部は、各罫線枠の範囲を取得する（ステップＳ２２）。そして、帳票グラフ生成部は、全罫線枠をノードに変換するまで以下の処理を繰り返す（ステップＳ２３、Ｓ２７）。
【００７３】
まず、帳票グラフ生成部は、罫線枠の範囲からノードを生成する（ステップＳ２４）。次に、帳票グラフ生成部は、生成したノードの罫線枠フラグをｔｒｕｅにする（ステップＳ２５）。そして、帳票グラフ生成部は、生成したノードをノード集合Ｎに追加する（ステップＳ２６）。
【００７４】
そして、帳票グラフ生成部は、罫線枠外の文字列群の範囲を取得する（ステップＳ２８）。ここで、帳票グラフ生成部は、全文字列群の範囲をノードに変換するまで以下の処理を繰り返す（ステップＳ２９、Ｓ３３）。
【００７５】
まず、帳票グラフ生成部は、全文字列群の範囲を罫線枠とした場合の、文字列群の範囲からノードを生成する（ステップＳ３０）。次に、帳票グラフ生成部は、生成したノードの罫線枠フラグをｆａｌｓｅにする（ステップＳ３１）。そして、帳票グラフ生成部は、生成したノードをノード集合Ｎに追加する（ステップＳ３２）。最後に、帳票グラフ生成部は、ノード集合Ｎを出力する（ステップＳ３４）。
【００７６】
次に、図１７を用いて、罫線枠の範囲からノードを生成する処理（ステップＳ２４、Ｓ３０）について説明する。図１７は、ノードを生成する処理の流れを示すフローチャートである。図１７に示すように、帳票グラフ生成部は、帳票グラフおよび罫線枠の範囲を読み込み、罫線枠の範囲をａｒｅａとする（ステップＳ４１）。次に、帳票グラフ生成部は、帳票グラフに新規ノードを生成し（ステップＳ４２）、ａｒｅａの範囲情報および保持情報を当該新規ノードに設定する（ステップＳ４３）。そして、帳票グラフ生成部は、新規ノードにインデックスを付け（ステップＳ４４）、当該新規ノードを出力する（ステップＳ４５）。
【００７７】
次に、図１８を用いて、隣接関係を取得する処理（ステップＳ１３）について説明する。図１８は、隣接関係を取得する処理の流れを示すフローチャートである。図１８に示すように、帳票グラフ生成部は、まず、ノード集合を読み込む（ステップＳ５１）。次に、帳票グラフ生成部は、読み込んだノード集合の各ノードであるノード１について、以下の処理を繰り返す（ステップＳ５２、Ｓ５５）。
【００７８】
まず、帳票グラフ生成部は、上下左右に隣接するノード群を取得する（ステップＳ５３）。次に、ノードの上下左右の隣接エッジを隣接グラフに格納する（ステップＳ５４）。最後に、帳票グラフ生成部は、隣接グラフを出力する（ステップＳ５６）。
【００７９】
次に、図１９を用いて、隣接するノード群を取得する処理（ステップＳ５３）について説明する。図１９は、隣接するノード群を取得する処理の流れを示すフローチャートである。図１９に示すように、まず、帳票グラフ生成部は、ノード集合およびノード１を読み込む。帳票グラフ生成部は、ノード集合をＮとする（ステップＳ６１）。ここで、ノード集合Ｎの各ノードであるノード２について、以下の処理を繰り返す（ステップＳ６２、Ｓ７３）。
【００８０】
まず、帳票グラフ生成部は、ノード１とノード２が同一である場合（ステップＳ６３、ｔｒｕｅ）、ノード２をノード１に隣接しないノードとする（ステップＳ７２）。ノード１とノード２が同一でない場合（ステップＳ６３、ｆａｌｓｅ）、帳票グラフ生成部は、左側の隣接条件が充足されている場合（ステップＳ６４、ｔｒｕｅ）はノード２がノード１の左に隣接していると判定し（ステップＳ６５）、右側の隣接条件が充足されている場合（ステップＳ６６、ｔｒｕｅ）はノード２がノード１の右に隣接していると判定し（ステップＳ６７）、上側の隣接条件が充足されている場合（ステップＳ６８、ｔｒｕｅ）はノード２がノード１の上に隣接していると判定し（ステップＳ６９）、下側の隣接条件が充足されている場合（ステップＳ７０、ｔｒｕｅ）はノード２がノード１の下に隣接していると判定する（ステップＳ７１）。最後に、帳票グラフ生成部は、ノード１の各ノードとの隣接関係を表す隣接エッジを出力する（ステップＳ７４）。
【００８１】
ここで、各方向の隣接条件の一例について説明する。ノード１の左上、右上、左下、右下の頂点の座標をそれぞれノード１（ｘ１，ｙ１）、ノード１（ｘ２，ｙ１）、ノード１（ｘ１，ｙ２）、ノード１（ｘ２，ｙ２）とする。また、ノード２の左上、右上、左下、右下の頂点の座標をそれぞれノード２（ｘ１，ｙ１）、ノード２（ｘ２，ｙ１）、ノード２（ｘ１，ｙ２）、ノード２（ｘ２，ｙ２）とする。また、ｍａｒｇｉｎを、あらかじめ設定された罫線枠間のマージンを表す定数（例えば０）とする。
【００８２】
このとき、各隣接条件は、一例として、下記のように表される。
（左側の隣接条件）
ノード２．ｙ１≧ノード１．ｙ１
＆  ノード２．ｙ２≧ノード１．ｙ２
＆  ０≦ノード１．ｘ１−ノード２．ｘ２≦ｍａｒｇｉｎ
（右側の隣接条件）
ノード２．ｙ１≧ノード１．ｙ１
＆  ノード２．ｙ２≧ノード１．ｙ２
＆  ０≦ノード２．ｘ１−ノード１．ｘ２≦ｍａｒｇｉｎ
（上側の隣接条件）
ノード２．ｘ１≧ノード１．ｘ１
＆  ノード２．ｘ２≧ノード１．ｘ２
＆  ０≦ノード１．ｙ１−ノード２．ｙ２≦ｍａｒｇｉｎ
（下側の隣接条件）
ノード２．ｘ１≧ノード１．ｘ１
＆  ノード２．ｘ２≧ノード１．ｘ２
＆  ０≦ノード２．ｙ１−ノード１．ｙ２≦ｍａｒｇｉｎ
【００８３】
また、帳票には複数の様式が含まれている場合があるため、帳票グラフを様式グラフに分割する。図２０を用いて、様式グラフの生成について説明する。図２０は、様式グラフを生成する処理の流れを示すフローチャートである。図２０に示すように、帳票グラフ生成部は、まず、帳票グラフを読み込む（ステップＳ８１）。次に、帳票グラフ生成部は、帳票グラフから、ノードが項目値である包含関係を全て削除する（ステップＳ８２）。
【００８４】
そして、帳票グラフ生成部は、分類されていないノードのうち任意のノードをノードＸに指定する（ステップＳ８３）。帳票グラフ生成部は、ノードＸを始点として連結グラフを求める（ステップＳ８４）。ここで、連結グラフに分類されていないノードがある場合（ステップＳ８５、ｔｒｕｅ）、帳票グラフ生成部は、分類されていないノードをさらにノードＸに指定する（ステップＳ８３）。そして、連結グラフに分類されていないノードがなくなった場合（ステップＳ８５、ｆａｌｓｅ）、帳票グラフ生成部は、求めた連結グラフを様式グラフ群として出力する（ステップＳ８６）。
【００８５】
次に、論理関係認識装置１０の処理の流れについて説明する。まず、図２１を用いて抽出部２０１の処理について説明する。図２１は、抽出部の処理の流れを示すフローチャートである。図２１に示すように、まず、抽出部２０１は、様式グラフおよび解析後視覚表現ルールを読み込む（ステップＳ９１）。次に、抽出部２０１は、様式グラフから解析後視覚表現ルールの条件を満たすノード群を選択する（ステップＳ９２）。次に、抽出部２０１は、選択したノード群の項目名属性を項目名に設定、すなわち項目名であることを示すフラグの値をｔｒｕｅにする（ステップＳ９３）。最後に、抽出部２０１は、様式グラフをＧとして返す（ステップＳ９４）。
【００８６】
次に、図２２を用いて解析部２０２の処理について説明する。図２２は、解析部の処理の流れを示すフローチャートである。解析部２０２は、視覚表現ルールを基に解析後視覚表現ルールを作成する。図２２に示すように、まず、解析部２０２は、視覚表現ルール群を読み込む（ステップＳ１０１）。次に、解析部２０２は、ＡｒｒａｙまたはＨａｓｈ型の変数ｒｕｌｅ＿ｌｉｓｔを生成する（ステップＳ１０２）。以降、解析部２０２は、読み込んだ視覚表現ルールを１つずつ処理する（ステップＳ１０３、Ｓ１０７）。
【００８７】
まず、解析部２０２は、視覚表現ルールの条件を解析する（ステップＳ１０４）。次に、解析部２０２は、視覚表現ルールのアクションを解析する（ステップＳ１０５）。そして、解析部２０２は、解析した条件およびアクションを解析後視覚表現ルールとしてｒｕｌｅ＿ｌｉｓｔに格納する（ステップＳ１０６）。解析部２０２は、全ての視覚表現ルールについて処理を行った後、解析後視覚表現ルール群が格納されたｒｕｌｅ＿ｌｉｓｔを出力する（ステップＳ１０８）。
【００８８】
次に、図２３を用いて表分類部２０３の処理について説明する。図２３は、表分類部の処理の流れを示すフローチャートである。図２３に示すように、まず、表分類部２０３は、様式グラフおよび様式グラフの左上のノードである対象ノード、および表リスト３０１を読み込む（ステップＳ３１ａ）。ここで、対象ノードが項目名でないか、対象ノードが既に親もしくは子として表リスト３０１に記載されている場合（ステップＳ３２ａ、ｔｒｕｅ）、表分類部２０３は、表フラグを「処理しない」に設定する（ステップＳ４２ａ）。なお、表フラグは、表の分類を「縦表」、「横表」、「直交表」および「処理しない」のうちのいずれかで示す変数である。
【００８９】
表分類部２０３は、対象ノードが項目名、かつ、対象ノードが親もしくは子として表リスト３０１に未記載の場合（ステップＳ３２ａ、ｆａｌｓｅ）、表分類部２０３は、対象ノードの下側に接続するノード群をｂｏｔｔｏｍｓに格納し、対象ノードの右側に接続するノード群をｒｉｇｈｔｓに格納する（ステップＳ３３ａ）。
【００９０】
図５の例で、対象ノードがノードｄ９である場合、ｒｉｇｈｔｓにはノードｄ１０、ｄ１１およびｄ１２が格納され、ｂｏｔｔｏｍｓにはノードｄ１３、ｄ１４、ｄ１７、ｄ２０、ｄ２１、ｄ２４、ｄ２７、ｄ３０およびｄ３３が格納される。
【００９１】
そして、表分類部２０３は、ｒｉｇｈｔｓが全て項目名である場合、ｆｌｇ１をｔｒｕｅとし、それ以外の場合はｆｌｇ１をｆａｌｓｅとする。また、表分類部２０３は、ｒｉｇｈｔｓの領域が対象ノードと同じ高さである場合、ｆｌｇ２をｔｒｕｅとし、それ以外の場合はｆｌｇ２をｆａｌｓｅとする（ステップＳ３４ａ）。また、表分類部２０３は、ｆｌｇ１およびｆｌｇ２の両方がｔｒｕｅである場合はｆｌｇ＿ｒをｔｒｕｅとし、それ以外の場合はｆｌｇ＿ｒをｆａｌｓｅとする。
【００９２】
また、表分類部２０３は、ｂｏｔｔｏｍｓが全て項目名である場合、ｆｌｇ３をｔｒｕｅとし、それ以外の場合はｆｌｇ３をｆａｌｓｅとする。また、表分類部２０３は、ｂｏｔｔｏｍｓの領域が対象ノードと同じ幅である場合、ｆｌｇ４をｔｒｕｅとし、それ以外の場合はｆｌｇ４をｆａｌｓｅとする（ステップＳ３５ａ）。また、表分類部２０３は、ｆｌｇ３およびｆｌｇ４の両方がｔｒｕｅである場合はｆｌｇ＿ｂをｔｒｕｅとし、それ以外の場合はｆｌｇ＿ｂをｆａｌｓｅとする。
【００９３】
ｆｌｇ＿ｒおよびｆｌｇ＿ｂの両方がｔｒｕｅである場合（ステップＳ３６ａがｔｒｕｅ、かつ、ステップＳ３７ａがｔｒｕｅ）、表分類部２０３は、表フラグを「直交表」に設定する（ステップＳ３８ａ）。また、ｆｌｇ＿ｒがｔｒｕｅかつｆｌｇ＿ｂがｆａｌｓｅである場合（ステップＳ３６ａがｔｒｕｅ、かつ、ステップＳ３７ａがｆａｌｓｅ）、表分類部２０３は、表フラグを「縦表」に設定する（ステップＳ３９ａ）。また、ｆｌｇ＿ｒがｆａｌｓｅかつｆｌｇ＿ｂがｔｒｕｅである場合（ステップＳ３６ａがｆａｌｓｅ、かつ、ステップＳ４０ａがｔｒｕｅ）、表分類部２０３は、表フラグを「横表」に設定する（ステップＳ４１ａ）。また、ｆｌｇ＿ｒおよびｆｌｇ＿ｂの両方がｆａｌｓｅである場合（ステップＳ３６ａがｆａｌｓｅ、かつ、ステップＳ４０ａがｆａｌｓｅ）、表分類部２０３は、表フラグを「処理しない」に設定する（ステップＳ４２ａ）。最後に、表分類部２０３は、表フラグを出力する（ステップＳ４３ａ）。
【００９４】
例えば、図５のノードｄ９を起点とした例では、ｒｉｇｈｔｓ（ノードｄ１０、ｄ１１およびｄ１２）は全て項目名、かつ、ｒｉｇｈｔｓの領域の高さがノードｄ９と同じであるため、表分類部２０３は、ｆｌｇ１およびｆｌｇ２をｔｒｕｅにする。また、ｂｏｔｔｏｍｓ（ノードｄ１３、ｄ１４、ｄ１７、ｄ２０、ｄ２１、ｄ２４、ｄ２７、ｄ３０およびｄ３３）は全て項目名、かつ、ｂｏｔｔｏｍｓの領域の幅がノードｄ９と同じであるため、表分類部２０３は、ｆｌｇ３およびｆｌｇ４をｔｒｕｅにする。これより、ｆｌｇ＿ｒおよびｆｌｇ＿ｂは両方ともｔｒｕｅとなるため、表分類部２０３は表フラグを「直交表」とする。これにより、図５のノードｄ９を起点とする表は、直交表に分類される。
【００９５】
次に、図２４を用いて、縦表取得部２０４の処理について説明する。図２４は、縦表取得部の処理の流れを示すフローチャートである。図２４に示すように、まず、縦表取得部２０４は、起点ノードおよび様式グラフを読み込む（ステップＳ５１ａ）。次に、縦表取得部２０４は、新規表リストを作成する（ステップＳ５２ａ）。次に、縦表取得部２０４は、ｌｅａｓｔ＿ｔｏｐｓに、起点ノードと起点ノードの右側に接続するノード群のうち最も上側にあるノード群を格納する（ステップＳ５３ａ）。
【００９６】
ここで、縦表取得部２０４は、ｌｅａｓｔ＿ｔｏｐｓに含まれるノードのそれぞれについて、以下の処理を行う（ステップＳ５４ａ、Ｓ５７ａ）。まず、縦表取得部２０４は、縦表論理関係を取得する（ステップＳ５５ａ）。縦表論理関係を取得する処理の詳細については後述する。次に、縦表取得部２０４は、表リストに論理関係を追加する（ステップＳ５６ａ）。縦表取得部２０４は、全てのノードについて処理を行った後、表リストを出力する（ステップＳ５８ａ）。
【００９７】
次に、図２５を用いて、横表取得部２０５の処理について説明する。図２５は、横表取得部の処理の流れを示すフローチャートである。図２５に示すように、まず、横表取得部２０５は、起点ノードおよび様式グラフを読み込む（ステップＳ６１ａ）。次に、横表取得部２０５は、新規表リストを作成する（ステップＳ６２ａ）。次に、横表取得部２０５は、ｌｅａｓｔ＿ｌｅｆｔｓに、起点ノードと起点ノードの下側に接続するノード群のうち最も左側にあるノード群を格納する（ステップＳ６３ａ）。
【００９８】
ここで、横表取得部２０５は、ｌｅａｓｔ＿ｌｅｆｔｓに含まれるノードのそれぞれについて、以下の処理を行う（ステップＳ６４ａ、Ｓ６７ａ）。まず、横表取得部２０５は、横表論理関係を取得する（ステップＳ６５ａ）。横表論理関係を取得する処理の詳細については後述する。次に、横表取得部２０５は、表リストに論理関係を追加する（ステップＳ６６ａ）。横表取得部２０５は、全てのノードについて処理を行った後、表リストを出力する（ステップＳ６８ａ）。
【００９９】
例えば、横表取得部２０５は、図５のノードｄ４８を起点とした表に対応した様式グラフを基に、図１０に示すような表リストを出力する。このとき、横表取得部２０５は、ｌｅａｓｔ＿ｌｅｆｔｓに、ノードｄ４９を格納する。
【０１００】
次に、図２６を用いて、直交表取得部２０６の処理について説明する。図２６は、直交表取得部の処理の流れを示すフローチャートである。図２６に示すように、まず、直交表取得部２０６は、起点ノードおよび様式グラフを読み込む（ステップＳ７１ａ）。次に、直交表取得部２０６は、新規表リストを作成する（ステップＳ７２ａ）。
【０１０１】
次に、直交表取得部２０６は、ｌｅａｓｔ＿ｔｏｐｓに、起点ノードの右側に接続するノード群のうち最も上側にあるノード群を格納する（ステップＳ７３ａ）。ここで、直交表取得部２０６は、ｌｅａｓｔ＿ｔｏｐｓに含まれるノードのそれぞれについて、以下の処理を行う（ステップＳ７４ａ、Ｓ７７ａ）。まず、直交表取得部２０６は、縦表論理関係を取得する（ステップＳ７５ａ）。次に、直交表取得部２０６は、表リストに論理関係を追加する（ステップＳ７６ａ）。
【０１０２】
次に、直交表取得部２０６は、ｌｅａｓｔ＿ｌｅｆｔｓに、起点ノードの下側に接続するノード群のうち最も左側にあるノード群を格納する（ステップＳ７８ａ）。ここで、直交表取得部２０６は、ｌｅａｓｔ＿ｌｅｆｔｓに含まれるノードのそれぞれについて、以下の処理を行う（ステップＳ７９ａ、Ｓ８２ａ）。まず、直交表取得部２０６は、横表論理関係を取得する（ステップＳ８０ａ）。次に、直交表取得部２０６は、表リストに論理関係を追加する（ステップＳ８１ａ）。直交表取得部２０６は、全てのノードについて処理を行った後、表リストを出力する（ステップＳ８３ａ）。
【０１０３】
例えば、直交表取得部２０６は、図５のノードｄ９を起点とした表に対応した様式グラフを基に、図９に示すような表リストを出力する。このとき、直交表取得部２０６は、ｌｅａｓｔ＿ｔｏｐｓに、ノードｄ１０を格納する。また、直交表取得部２０６は、ｌｅａｓｔ＿ｌｅｆｔｓに、ノードｄ１３、ｄ２０、ｄ２７、ｄ３０およびｄ３３を格納する。
【０１０４】
次に、図２７を用いて、縦方向の論理関係を取得する処理、すなわち縦表論理関係取得処理（図２４のステップＳ５５ａ、および図２６のステップＳ７５ａ）について説明する。図２７は、縦方向の論理関係を取得する処理の流れを示すフローチャートである。縦表論理関係取得処理は、縦表取得部２０４または直交表取得部２０６によって行われる。ここでは、直交表取得部２０６が縦表論理関係取得処理を行う場合の例について説明する。なお、縦表取得部２０４が縦表論理関係取得処理を行う場合も、直交表取得部２０６が縦表論理関係取得処理を行う場合と処理内容は同様である。
【０１０５】
図２７に示すように、まず、直交表取得部２０６は、対象ノードおよび様式グラフを読み込む（ステップＳ１０１ａ）。そして、直交表取得部２０６は、新規論理関係を表す変数ｐａｉｒを生成する（ステップＳ１０２ａ）。次に、直交表取得部２０６は、対象ノードの下隣にあるノード集合をｎｅｘｔ＿ｂに格納する（ステップＳ１０３ａ）。
【０１０６】
ここで、ｎｅｘｔ＿ｂのノード数が２つ以上であるか、ｎｅｘｔ＿ｂが全て項目名である場合（ステップＳ１０４ａ、ｔｒｕｅ）、直交表取得部２０６は、ｐａｉｒに、親を対象ノード、子をｎｅｘｔ＿ｂ、方向を縦とする論理関係を追加する（ステップＳ１０５ａ）。
【０１０７】
そして、直交表取得部２０６は、ｎｅｘｔ＿ｂに含まれるノードのそれぞれ（ｃｒｔ）について、縦表論理関係取得処理を再帰的に行う（ステップＳ１０６ａ、Ｓ１０８ａ）。直交表取得部２０６は、ｐａｉｒに項目名および項目値の論理関係群を格納し、Ｇに様式グラフを格納し、対象ノードをｃｒｔに置き換える（ステップＳ１０７ａ）。そして、直交表取得部２０６は、ステップＳ１０３ａに戻り、ｎｅｘｔ＿ｂに対象ノードの下隣にあるノード集合を格納する。
【０１０８】
また、ｎｅｘｔ＿ｂのノード数が２つ以上でなく、かつ、ｎｅｘｔ＿ｂのいずれかが項目名でない場合（ステップＳ１０４ａ、ｆａｌｓｅ）、直交表取得部２０６は、対象ノードの下側のノード集合をｂｏｔｔｏｍｓに格納する（ステップＳ１０９ａ）。そして、直交表取得部２０６は、ｐａｉｒに、親を対象ノード、子をｂｏｔｔｏｍｓ、方向を縦とする論理関係を追加する（ステップＳ１１０ａ）。直交表取得部２０６は、全ての対象ノードについて処理を行った後、論理関係集合（ｐａｉｒ）を出力する（ステップＳ１１１ａ）。
【０１０９】
次に、図２８を用いて、横方向の論理関係を取得する処理、すなわち横表論理関係取得処理（図２５のステップＳ６５ａ、および図２６のステップＳ８０ａ）について説明する。図２８は、横方向の論理関係を取得する処理の流れを示すフローチャートである。横表論理関係取得処理は、横表取得部２０５または直交表取得部２０６によって行われる。ここでは、直交表取得部２０６が横表論理関係取得処理を行う場合の例について説明する。なお、横表取得部２０５が横表論理関係取得処理を行う場合も、直交表取得部２０６が横表論理関係取得処理を行う場合と処理内容は同様である。
【０１１０】
図２８に示すように、まず、直交表取得部２０６は、対象ノードおよび様式グラフを読み込む（ステップＳ２０１ａ）。そして、直交表取得部２０６は、新規論理関係を表す変数ｐａｉｒを生成する（ステップＳ２０２ａ）。次に、直交表取得部２０６は、対象ノードの右隣にあるノード集合をｎｅｘｔ＿ｒに格納する（ステップＳ２０３ａ）。
【０１１１】
ここで、ｎｅｘｔ＿ｒのノード数が２つ以上であるか、ｎｅｘｔ＿ｒが全て項目名である場合（ステップＳ２０４ａ、ｔｒｕｅ）、直交表取得部２０６は、ｐａｉｒに、親を対象ノード、子をｎｅｘｔ＿ｒ、方向を横とする論理関係を追加する（ステップＳ２０５ａ）。
【０１１２】
そして、直交表取得部２０６は、ｎｅｘｔ＿ｒに含まれるノードのそれぞれ（ｃｒｔ）について、横表論理関係取得処理を再帰的に行う（ステップＳ２０６ａ、Ｓ２０８ａ）。直交表取得部２０６は、ｐａｉｒに項目名および項目値の論理関係群を格納し、Ｇに様式グラフを格納し、対象ノードをｃｒｔに置き換える（ステップＳ２０７ａ）。そして、直交表取得部２０６は、ステップＳ２０３ａに戻り、ｎｅｘｔ＿ｒに対象ノードの右隣にあるノード集合を格納する。
【０１１３】
また、ｎｅｘｔ＿ｒのノード数が２つ以上でなく、かつ、ｎｅｘｔ＿ｒのいずれかが項目名でない場合（ステップＳ２０４ａ、ｆａｌｓｅ）、直交表取得部２０６は、対象ノードの右側のノード集合をｒｉｇｈｔｓに格納する（ステップＳ２０９ａ）。そして、直交表取得部２０６は、ｐａｉｒに、親を対象ノード、子をｒｉｇｈｔｓ、方向を横とする論理関係を追加する（ステップＳ２１０ａ）。直交表取得部２０６は、全ての対象ノードについて処理を行った後、論理関係集合（ｐａｉｒ）を出力する（ステップＳ２１１ａ）。
【０１１４】
ここで、図２９を用いて、表整合部２０７の処理について説明する。図２９は、表整合部の処理の流れを示すフローチャートである。表整合部２０７は、まず、様式グラフおよび表リストを読み込む（ステップＳ１１１）。次に、表整合部２０７は、表リストから、子のないノード群ｃｈｉｌｄｒｅｎを取得する（ステップＳ１１２）。そして、ｃｈｉｌｄｒｅｎに項目名が含まれている場合（ステップＳ１１３、ｔｒｕｅ）、表整合部２０７は、当該表を表リストから削除する（ステップＳ１１４）。また、ｃｈｉｌｄｒｅｎに項目名が含まれていない場合（ステップＳ１１３、ｆａｌｓｅ）、表整合部２０７は、当該表を表リストに残す。
【０１１５】
次に、図３０を用いて、第１の削除部２０８の処理について説明する。図３０は、第１の削除部の処理の流れを示すフローチャートである。まず、第１の削除部２０８は、様式グラフを読み込む（ステップＳ３１ｂ）。
【０１１６】
次に、第１の削除部２０８は、様式グラフの各ノードについて、以下の処理を行う（ステップＳ３２ｂ、Ｓ３７ｂ）。まず、左方向に隣接するノードの本数が２本以上である場合（ステップＳ３３ｂ、ｔｒｕｅ）、第１の削除部２０８は、左方向に隣接するノードと対象ノードの隣接関係を削除する（ステップＳ３４ｂ）。また、左方向に隣接するノードの本数が２本以上でない場合（ステップＳ３３ｂ、ｆａｌｓｅ）、第１の削除部２０８は、隣接関係を削除しない。
【０１１７】
次に、上方向に隣接するノードの本数が２本以上である場合（ステップＳ３５ｂ、ｔｒｕｅ）、第１の削除部２０８は、上方向に隣接するノードと対象ノードの隣接関係を削除する（ステップＳ３６ｂ）。また、上方向に隣接するノードの本数が２本以上でない場合（ステップＳ３５ｂ、ｆａｌｓｅ）、第１の削除部２０８は、隣接関係を削除しない。第１の削除部２０８は、全ての対象ノードについて処理を行った後、様式グラフを出力する（ステップＳ３８ｂ）。
【０１１８】
次に、図３１を用いて、第２の削除部２０９の処理について説明する。図３１は、第２の削除部の処理の流れを示すフローチャートである。まず、第２の削除部２０９は、様式グラフおよび項目名ノードリストを読み込む（ステップＳ４１ｂ）。なお、項目名ノードリストは、抽出部２０１によって抽出された項目名ノードのリストである。
【０１１９】
次に、第２の削除部２０９は、項目名ノードのリストの各項目名ノードについて、以下の処理を行う（ステップＳ４２ｂ、Ｓ４７ｂ）。まず、左方向に項目値ノードが隣接する場合（ステップＳ４３ｂ、ｔｒｕｅ）、第２の削除部２０９は、左方向に隣接するノードと対象ノードの隣接関係を削除する（ステップＳ４４ｂ）。また、左方向に項目値ノードが隣接しない場合（ステップＳ４３ｂ、ｆａｌｓｅ）、第２の削除部２０９は、隣接関係を削除しない。
【０１２０】
次に、上方向に項目値ノードが隣接する場合（ステップＳ４５ｂ、ｔｒｕｅ）、第２の削除部２０９は、上方向に隣接するノードと対象ノードの隣接関係を削除する（ステップＳ４６ｂ）。また、上方向に項目値ノードが隣接しない場合（ステップＳ４５ｂ、ｆａｌｓｅ）、第２の削除部２０９は、隣接関係を削除しない。第２の削除部２０９は、全ての対象ノードについて処理を行った後、様式グラフを出力する（ステップＳ４８ｂ）。
【０１２１】
次に、図３２を用いて、列挙分類部２１０の処理について説明する。図３２は、列挙分類部の処理の流れを示すフローチャートである。以後、対象ノードから右側に隣接しているノードを辿って得られるノードとの関係を「右側に接続する」、対象ノードから下側に隣接しているノードを辿って得られるノードとの関係を「下側に接続する」と呼ぶ。図３２に示すように、まず、列挙分類部２１０は、様式グラフおよび対象ノードを読み込む（ステップＳ５１ｂ）。ここで、対象ノードが項目名でない場合（ステップＳ５２ｂ、ｔｒｕｅ）、列挙分類部２１０は、列挙フラグを「列挙なし」に設定する（ステップＳ５８ｂ）。なお、列挙フラグは、各対象ノードの分類を「縦列挙」、「横列挙」および「列挙なし」のうちのいずれかで示す変数である。また、列挙には、縦列挙と横列挙の複合型や、列挙入れ子構造も存在するが、これらの列挙は、縦列挙および横列挙の組み合わせで表現することができる。
【０１２２】
また、対象ノードが項目名である場合（ステップＳ５１ｂ、ｆａｌｓｅ）、列挙分類部２１０は、対象ノードの下側に接続するノード群をｂｏｔｔｏｍｓに格納し、対象ノードの右側に接続するノード群をｒｉｇｈｔｓに格納する（ステップＳ５３ｂ）。
【０１２３】
ここで、ｒｉｇｈｔｓに項目名が含まれず、ｒｉｇｈｔｓの個数が１である場合（ステップＳ５４ｂ、ｔｒｕｅ）、列挙分類部２１０は、列挙フラグを「横列挙」に設定する（ステップＳ５５ｂ）。また、ｒｉｇｈｔｓに項目名が含まれる場合、またはｒｉｇｈｔｓの個数が１でない場合（ステップＳ５４ｂ、ｆａｌｓｅ）、列挙分類部２１０は、以下の処理を行う。
【０１２４】
ｂｏｔｔｏｍｓに項目名が含まれず、ｂｏｔｔｏｍｓの個数が１である場合（ステップＳ５６ｂ、ｔｒｕｅ）、列挙分類部２１０は、列挙フラグを「縦列挙」に設定する（ステップＳ５７ｂ）。ｂｏｔｔｏｍｓに項目名が含まれる場合、または、ｂｏｔｔｏｍｓの個数が１でない場合（ステップＳ５６ｂ、ｆａｌｓｅ）、列挙分類部２１０は、列挙フラグを「列挙なし」に設定する（ステップＳ５８ｂ）。最後に、列挙分類部２１０は、列挙フラグを出力する（ステップＳ５９ｂ）。
【０１２５】
次に、図３３を用いて、縦列挙取得部２１１の処理について説明する。図３３は、縦列挙取得部の処理の流れを示すフローチャートである。図３３に示すように、まず、縦列挙取得部２１１は、様式グラフおよび対象ノードを読み込む（ステップＳ６１ｂ）。次に、縦列挙取得部２１１は、ｂｏｔｔｏｍｓに対象ノードの下側に接続するノード群を格納する（ステップＳ６２ｂ）。ここで、ｂｏｔｔｏｍｓに項目名が含まれている場合（ステップＳ６３ｂ、ｔｒｕｅ）、縦列挙取得部２１１は、処理を終了する。また、ｂｏｔｔｏｍｓに項目名が含まれていない場合（ステップＳ６３ｂ、ｆａｌｓｅ）、縦列挙取得部２１１は、親を対象ノード、子をｂｏｔｔｏｍｓ、方向を縦とする論理関係を取得する（ステップＳ６４ｂ）。そして、縦列挙取得部２１１は、取得した論理関係を列挙リスト３０２に追加する（ステップＳ６５ｂ）。
【０１２６】
次に、図３４を用いて、横列挙取得部２１２の処理について説明する。図３４は、横列挙取得部の処理の流れを示すフローチャートである。図３４に示すように、まず、横列挙取得部２１２は、様式グラフおよび対象ノードを読み込む（ステップＳ７１ｂ）。次に、横列挙取得部２１２は、ｒｉｇｈｔｓに対象ノードの右側に接続するノード群を格納する（ステップＳ７２ｂ）。ここで、ｒｉｇｈｔｓに項目名が含まれている場合（ステップＳ７３、ｔｒｕｅ）、横列挙取得部２１２は、処理を終了する。また、ｒｉｇｈｔｓに項目名が含まれていない場合（ステップＳ７３ｂ、ｆａｌｓｅ）、横列挙取得部２１２ｂは、親を対象ノード、子をｒｉｇｈｔｓ、方向を横とする論理関係を取得する（ステップＳ７４ｂ）。そして、横列挙取得部２１２は、取得した論理関係を列挙リスト３０２に追加する（ステップＳ７５ｂ）。
【０１２７】
次に、図３５を用いて、包含関係取得部２１４の処理について説明する。図３５は、包含関係取得部の処理の流れを示すフローチャートである。包含関係取得部２１４は、まず、様式グラフを読み込む（ステップＳ８１ｂ）。
【０１２８】
ここで、包含関係取得部２１４は、様式グラフに含まれる各ノードについて、以下の処理を行う（ステップＳ８２ｂ、Ｓ８７ｂ）。まず、ノード自身が項目名、かつ右方向に隣接するノードに項目名のノードを含む場合（ステップＳ８３ｂ、ｔｒｕｅ）、包含関係取得部２１４は、右側の包含関係を取得する（ステップＳ８４ｂ）。右側の包含関係を取得する処理の詳細については後述する。また、ノード自身が項目名でない場合、または右方向に隣接するノードに項目名のノードを含まない場合（ステップＳ８３ｂ、ｆａｌｓｅ）、包含関係取得部２１４は、右側の包含関係を取得しない。
【０１２９】
次に、ノード自身が項目名、かつ下方向に隣接するノードに項目名のノードを含む場合（ステップＳ８５ｂ、ｔｒｕｅ）、包含関係取得部２１４は、下側の包含関係を取得する（ステップＳ８６ｂ）。下側の包含関係を取得する処理の詳細については後述する。また、ノード自身が項目名でない場合、または下方向に隣接するノードに項目名のノードを含まない場合（ステップＳ８５ｂ、ｆａｌｓｅ）、包含関係取得部２１４は、下側の包含関係を取得しない。包含関係取得部２１４は、全てのノードについて処理を行った後、取得した包含関係を包含関係リストとして出力する（ステップＳ８８ｂ）。
【０１３０】
次に、図３６を用いて、右側の包含関係を取得する処理について説明する。図３６は、右側の包含関係を取得する処理の流れを示すフローチャートである。図３６に示すように、まず、包含関係取得部２１４は、対象ノードおよび様式グラフを読み込む（ステップＳ１０１ｂ）。次に、包含関係取得部２１４は、ｍｉｎ＿ｙに、対象ノードの右側にあるノード群のｙ座標の最小値を格納し、ｍａｘ＿ｙに、対象ノードの右側にあるノード群のｙ座標の最大値を格納する（ステップＳ１０２ｂ）。
【０１３１】
ここで、対象ノードのｙ座標の範囲が対象ノードの右側のノード群のｙ座標の範囲と一致する場合（ステップＳ１０３ｂ、ｔｒｕｅ）、包含関係取得部２１４は、ｌｉｓｔに、対象ノードの右側のノード群を格納する（ステップＳ１０７ｂ）。なお、包含関係取得部２１４は、対象ノードの右側のノード群のｙ座標の範囲を、ｍｉｎ＿ｙおよびｍａｘ＿ｙを用いて計算する。そして、包含関係取得部２１４は、ｌｉｓｔに含まれるノードそれぞれについて以下の処理を行う（ステップＳ１０８ｂ、Ｓ１１０ｂ）。包含関係取得部２１４は、それぞれのノードｒを対象ノードとするたびに、ステップＳ１０２ｂに戻り再帰処理を実行する（ステップＳ１０９ｂ）。
【０１３２】
また、対象ノードのｙ座標の範囲が対象ノードの右側のノード群のｙ座標の範囲と一致しない場合（ステップＳ１０３ｂ、ｆａｌｓｅ）であって、包含するノードの中に項目値が含まれない場合（ステップＳ１０４ｂ、ｆａｌｓｅ）、包含関係取得部２１４は、右側に包含する従のノード集合（ｌｉｓｔ）を初期化する（ステップＳ１０５ｂ）。また、包含するノードの中に項目値が含まれる場合（ステップＳ１０４ｂ、ｔｒｕｅ）、包含関係取得部２１４は、初期化を行わない。最後に、包含関係取得部２１４は、ｌｉｓｔを出力する（ステップＳ１０６ｂ）。
【０１３３】
次に、図３７を用いて、下側の包含関係を取得する処理について説明する。図３７は、下側の包含関係を取得する処理の流れを示すフローチャートである。図３７に示すように、まず、包含関係取得部２１４は、対象ノードおよび様式グラフを読み込む（ステップＳ１５１ｂ）。次に、包含関係取得部２１４は、ｍｉｎ＿ｘに、対象ノードの下側にあるノード群のｘ座標の最小値を格納し、ｍａｘ＿ｘに、対象ノードの下側にあるノード群のｘ座標の最大値を格納する（ステップＳ１５２ｂ）。
【０１３４】
ここで、対象ノードのｘ座標の範囲が対象ノードの下側のノード群のｘ座標の範囲と一致する場合（ステップＳ１５３ｂ、ｔｒｕｅ）、包含関係取得部２１４は、ｌｉｓｔに、対象ノードの下側のノード群を格納する（ステップＳ１５７ｂ）。なお、包含関係取得部２１４は、対象ノードの下側のノード群のｘ座標の範囲を、ｍｉｎ＿ｘおよびｍａｘ＿ｘを用いて計算する。そして、包含関係取得部２１４は、ｌｉｓｔに含まれるノードそれぞれについて以下の処理を行う（ステップＳ１５８ｂ、Ｓ１６０ｂ）。包含関係取得部２１４は、それぞれのノードｂを対象ノードとするたびに、ステップＳ１５２ｂに戻り再帰処理を実行する（ステップＳ１５９ｂ）。
【０１３５】
また、対象ノードのｘ座標の範囲が対象ノードの下側のノード群のｘ座標の範囲と一致しない場合（ステップＳ１５３ｂ、ｆａｌｓｅ）であって、包含するノードの中に項目値が含まれない場合（ステップＳ１５４ｂ、ｆａｌｓｅ）、包含関係取得部２１４は、下側に包含する従のノード集合（ｌｉｓｔ）を初期化する（ステップＳ１５５ｂ）。また、包含するノードの中に項目値が含まれる場合（ステップＳ１５４ｂ、ｔｒｕｅ）、包含関係取得部２１４は、初期化を行わない。最後に、包含関係取得部２１４は、ｌｉｓｔを出力する（ステップＳ１５６ｂ）。
【０１３６】
次に、図３８を用いて、包含グラフ生成部２１５の処理について説明する。図３８は、包含グラフ生成部の処理の流れを示すフローチャートである。図３８に示すように、まず、包含グラフ生成部２１５は、様式グラフおよび包含関係リストを読み込む（ステップＳ２０１ｂ）。次に、包含グラフ生成部２１５は、Ｎｖに、包含関係リストから取得した縦方向の包含ノードを格納し、Ｎｈに、包含関係リストから取得した横方向の包含ノードを格納し、ＩＧに、新規包含グラフ集合を格納する（ステップＳ２０２ｂ）。
【０１３７】
ここで、包含グラフ生成部２１５は、ＮｖおよびＮｈに含まれる各包含ノードｉについて、以下の処理を行う（ステップＳ２０３ｂ、Ｓ２１３ｂ）。以後、他のノードの包含関係から、包含グラフに対象ノードが既に割り当てられている場合、対象ノードを「分割済みのノード」と呼ぶ。まず、包含ノードｉが分割済みである場合（ステップＳ２０４ｂ、ｔｒｕｅ）、包含グラフ生成部２１５は、次の包含ノードの処理に進む。また、包含ノードｉが分割済みでない場合（ステップＳ２０４ｂ、ｆａｌｓｅ）、包含グラフ生成部２１５は、ｉｎｃに包含ノードｉおよび従の項目名ノード集合を格納する（ステップＳ２０５ｂ）。
【０１３８】
ここで、ｉｎｃの中で分割済みのノードがある場合（ステップＳ２０６ｂ、ｔｒｕｅ）、包含グラフ生成部２１５は、生成済包含グラフから従のノードが重なっているグラフを探し、当該包含ノードをｎに格納する（ステップＳ２０７ｂ）。次に、包含グラフ生成部２１５は、包含ノードｎを起点とする包含グラフ内にあるノードに追加されていないノード群を追加する（ステップＳ２０８ｂ）。そして、包含グラフ生成部２１５は、包含ノードの包含する方向、または項目名の並びから包含方向を設定する（ステップＳ２０９ｂ）。
【０１３９】
一方、ｉｎｃの中で分割済みのノードがない場合（ステップＳ２０６ｂ、ｆａｌｓｅ）、包含グラフ生成部２１５は、新規包含グラフを生成する（ステップＳ２１０ｂ）。そして、包含グラフ生成部２１５は、主のノードが包含する方向、または項目名の並びから包含方向を設定し（ステップＳ２１１ｂ）、新規包含グラフを包含グラフ集合ＩＧに追加する（ステップＳ２１２ｂ）。包含グラフ生成部２１５は、全てのｉについて処理を行った後、包含グラフ集合ＩＧを出力する（ステップＳ２１４ｂ）。
【０１４０】
このように、包含グラフ生成部２１５は、包含関係のあるノードのうち、包含するノードの数が多いものを優先して処理していく。包含グラフ生成部２１５は、まず、様式グラフ内の全ての包含関係を取得し、包含方向にノードを探索していく。
【０１４１】
ここで、図３９を用いて、列挙整合部２１３の処理について説明する。図３９は、列挙整合部の処理の流れを示すフローチャートである。図３９に示すように、列挙整合部２１３は、まず、様式グラフおよび列挙リストを読み込む（ステップＳ１２１）。次に、表リスト内に列挙リストの論理関係が含まれる場合（ステップＳ１２２、ｔｒｕｅ）、当該列挙リストを削除する（ステップＳ１２３）。
【０１４２】
次に、図４０を用いて、項目名間合成部２１６の処理について説明する。図４０は、項目名間合成部の処理の流れを示すフローチャートである。図４０に示すように、まず、項目名間合成部２１６は、様式グラフ、包含グラフ３０３、表リスト３０１、列挙リスト３０２および始点ノード群を読み込む（ステップＳ３０１ｂ）。次に、項目名間合成部２１６は、新規木構造Ｔを生成する（ステップＳ３０２ｂ）。なお、始点ノード群は、包含グラフの起点となるノードの集合である。
【０１４３】
ここで、項目名間合成部２１６は、始点ノード群に含まれる各始点ノードについて、以下の処理を行う（ステップＳ３０３ｂ、Ｓ３１９ｂ）。まず、項目名間合成部２１６は、包含グラフからノードが項目名のノード群を求め、ｃｈｉｌｄｒｅｎに格納する（ステップＳ３０４ｂ）。次に、項目名間合成部２１６は、子をｃｈｉｌｄｒｅｎ、親をなしとする始点ノード用の新規木ノードｔを生成する（ステップＳ３０５ｂ）。そして、項目名間合成部２１６は、対象木ノードをｔとする（ステップＳ３０６ｂ）。そして、項目名間合成部２１６は、対象木ノードの種類を設定せずに木構造に追加する（ステップＳ３０７ｂ）。
【０１４４】
ここで、対象木ノードが表リスト、または列挙リストにある場合（ステップＳ３０８ｂ、ｆａｌｓｅ）、項目名間合成部２１６は、次の始点ノードの処理に移行する。対象木ノードが列挙リストにない場合（ステップＳ３０８ｂ、ｔｒｕｅ）であって、さらに、対象木ノードが横方向に包含するノード集合が存在する場合（ステップＳ３０９ｂ、ｔｒｕｅ）、項目名間合成部２１６は、対象木ノードの種類を包含に設定する（ステップＳ３１０ｂ）。そして、項目名間合成部２１６は、横に包含するノード集合の次のノードを対象木ノードとし、ステップＳ３０７ｂへ戻り、再帰処理を行う（ステップＳ３１１ｂ、Ｓ３１２ｂ、Ｓ３１３ｂ）。
【０１４５】
対象木ノードが表リスト、または列挙リストにない場合（ステップＳ３０８ｂ、ｔｒｕｅ）であって、さらに、対象木ノードが横方向に包含するノード集合が存在せず（ステップＳ３０９ｂ、ｆａｌｓｅ）、対象木ノードが縦方向に包含するノード集合が存在する場合（ステップＳ３１４ｂ、ｔｒｕｅ）、項目名間合成部２１６は、対象木ノードの種類を包含に設定する（ステップＳ３１５ｂ）。そして、項目名間合成部２１６は、縦に包含するノード集合の次のノードを対象木ノードとし、ステップＳ３０７ｂへ戻り、再帰処理を行う（ステップＳ３１６ｂ、Ｓ３１７ｂ、Ｓ３１８ｂ）。項目名間合成部２１６は、全ての始点ノードについて処理を行った後、木構造データを出力する（ステップＳ３２０ｂ）。
【０１４６】
なお、対象木ノードが列挙リストにない場合（ステップＳ３０８ｂ、ｔｒｕｅ）であって、さらに、対象木ノードが横方向に包含するノード集合が存在せず（ステップＳ３０９ｂ、ｆａｌｓｅ）、対象木ノードが縦方向に包含するノード集合が存在しない場合（ステップＳ３１４ｂ、ｆａｌｓｅ）、項目名間合成部２１６は、次の始点ノードの処理に移行する。
【０１４７】
次に、図４１を用いて、表合成部２１７の処理について説明する。図４１は、表合成部の処理の流れを示すフローチャートである。まず、表合成部２１７は、様式グラフおよび表リスト３０１を読み込む（ステップＳ３０１ａ）。次に、表合成部２１７は、新規木構造を生成する（ステップＳ３０２ａ）。そして、表合成部２１７は、表リストから先祖（親なしのノード）を取得する（ステップＳ３０３ａ）。
【０１４８】
ここで、表合成部２１７は、表リストに含まれる各ノードについて、以下の処理を行う（ステップＳ３０４ａ、Ｓ３１０ａ）。まず、表合成部２１７は、新規木ノードを生成する（ステップＳ３０５ａ）。次に、表合成部２１７は、表リストからノードの親を探索し木ノードの親に設定し、親がなければ木ノードを空とする（ステップＳ３０６ａ）。そして、表合成部２１７は、木ノードの子を、表リストの子に設定する（ステップＳ３０７ａ）。そして、表合成部２１７は、木ノードの種類を表に設定する（ステップＳ３０８ａ）。そして、表合成部２１７は、木ノードを木構造に合成する（ステップＳ３０９ａ）。最後に、表リストの各ノードについて処理が終わると、表合成部２１７は、木構造データを出力する（ステップＳ３１１ａ）。
【０１４９】
次に、図４２を用いて、列挙合成部２１８の処理について説明する。図４２は、列挙合成部の処理の流れを示すフローチャートである。図４２に示すように、列挙合成部２１８は、まず、様式グラフ、列挙リスト３０２および木構造データを読み込む（ステップＳ３４１ｂ）。
【０１５０】
そして、列挙合成部２１８は、列挙リスト３０２の各ノードごとに以下の処理を行う（ステップＳ３４２ｂ、Ｓ３４７ｂ）。まず、列挙合成部２１８は、新規木ノードを生成する（ステップＳ３４３ｂ）。次に、列挙合成部２１８は、木ノードの子を列挙リストの子に設定する（ステップＳ３４４ｂ）。そして、列挙合成部２１８は、木ノードの種類を列挙に設定し（ステップＳ３４５ｂ）、木構造データに合成する（ステップＳ３４６ｂ）。列挙合成部２１８は、以上の処理を全てのノードについて行った後、木構造データを出力する（ステップＳ３４８ｂ）。
【０１５１】
次に、図４３を用いて、追加部２１９の処理について説明する。図４３は、追加部の処理の流れを示すフローチャートである。図４３に示すように、まず、追加部２１９は、様式グラフおよび木構造データを読み込み、Ｓに木構造データを格納し、Ｇに様式グラフを格納する（ステップＳ１３１）。次に、追加部２１９は、ｎｄｓに親なしのノード集合を格納し、ｓｔｒに任意の文字列を格納する（ステップＳ１３２）。ここで、追加部２１９は、ｎｄｓの左または上方向にある罫線枠外の文字列が取得できれば、取得した文字列をｓｔｒに格納する（ステップＳ１３３）。
【０１５２】
罫線枠外の文字列が発見されなかった場合（ステップＳ１３４、ｆａｌｓｅ）、追加部２１９は、ｓｔｒに格納した任意の文字列を有し、種類を様式とする木ノードをｎｄｓの親として木構造データに追加する（ステップＳ１３５）。また、罫線枠外の文字列が発見された場合（ステップＳ１３４、ｔｒｕｅ）、追加部２１９は、ｓｔｒに格納した任意の文字列を有し、種類を様式とする木ノードをｎｄｓの親として木構造データに追加する（ステップＳ１３６）。最後に、追加部２１９は、木構造データを出力する（ステップＳ１３７）。
【０１５３】
なお、任意の文字列としては、ｆｏｒｍ＃（ｉ）のように、カウントに合わせて文字列が変わるようにしてもよい。この場合、（ｉ）の部分がカウントに合わせて変化するため、根ノードの文字列は「ｆｏｒｍ１」、「ｆｏｒｍ２」のようになる。また、表の左または上方向の罫線枠外に、「○○直交表」のような記載があれば、根ノードの文字列を「○○直交表」のようにしてもよい。
【０１５４】
［第１の実施形態の効果］
抽出部２０１は、帳票の項目名または項目値を表す領域に関する情報をノードとして表し、ノード間の隣接関係をエッジとして表したグラフを基に、ノードのうち、あらかじめ設定された条件を満たすノードを、項目名を表す領域のノードである項目名ノードとして抽出する。表分類部２０３は、エッジを基に、項目名ノードから表の起点となるノードである起点ノードを抽出し、起点ノードを起点とした表を、上端と左端の両方に項目名が存在する直交表、上端に項目名が存在する縦表、および左端に項目名が存在する横表のうちのいずれかに分類する。
【０１５５】
直交表取得部２０６は、直交表における項目名ノード間の縦方向の論理関係、直交表における項目名ノード間の横方向の論理関係、直交表における項目名ノードと項目名ノード以外のノードである項目値ノードとの間の縦方向の論理関係、および直交表における項目名ノードと項目値ノードとの間の横方向の論理関係を取得する。縦表取得部２０４は、縦表における項目名ノード間の縦方向の論理関係、および縦表における項目名ノードと項目値ノードとの間の縦方向の論理関係を取得する。横表取得部２０５は、横表における項目名ノード間の横方向の論理関係、および横表における項目名ノードと項目値ノードとの間の横方向の論理関係を取得する。また、表整合部２０７は、直交表、縦表および横表から、不整合な表であることを示す所定の条件を満たす表を除外した表を特定する。
【０１５６】
また、第１の削除部２０８は、１つのノードの所定の方向に、複数のノードが隣接している場合、１つのノードと複数のノードとの隣接関係を表すエッジを削除する。また、第２の削除部２０９は、項目名ノードのうち、所定の方向に項目値を表す領域のノードである項目値ノードが隣接している項目名ノードと、項目値ノードとの隣接関係を表すエッジを削除する。
【０１５７】
また、縦列挙取得部２１１および横列挙取得部２１２は、第１の削除部２０８および第２の削除部２０９によってエッジの削除が行われたグラフを基に、項目名ノードと項目値ノードとの間の論理関係を取得する。また、包含関係取得部２１４は、第１の削除部２０８によってエッジの削除が行われたグラフを基に、項目名ノード間の包含関係を取得する。
【０１５８】
また、列挙整合部２１３は、縦列挙取得部２１１および横列挙取得部２１２によって取得された論理関係のうち、表リスト３０１に含まれるノードに関する論理関係を除外した合成対象の列挙に関する論理関係を特定する。
【０１５９】
また、項目名間合成部２１６は、包含関係取得部２１４によって取得された包含関係のうち、合成対象の表に関する論理関係および合成対象の列挙に関する論理関係のいずれにも含まれない包含関係を基に木構造のデータを作成する。また、表合成部２１７は、合成対象の表に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと項目名間合成部２１６によって作成された木構造のデータとを合成した木構造のデータを作成する。また、列挙合成部２１８は、合成対象の列挙に関する論理関係を基に木構造のデータを作成し、当該木構造のデータと表合成部２１７によって作成された木構造のデータとを合成した木構造のデータを作成する。
【０１６０】
このため、本実施形態によれば、帳票に縦表、横表、直交表または入れ子構造の直交表が含まれる場合であっても、帳票の項目名間の論理関係、および項目名と項目値との間の論理関係を正確に認識することができるようになる。さらに、本実施形態では、論理関係を半自動的に取得することができるため、帳票の半構造データの取得および活用を効率的に行うことができるようになる。
【０１６１】
また、本実施形態によれば、帳票に縦列挙、横列挙、縦列挙と横列挙の複合型、または列挙型入れ子構造が含まれる場合であっても、帳票の項目名間の論理関係、および項目名と項目値との間の論理関係を正確に認識することができるようになる。さらに、本実施形態では、論理関係を半自動的に取得することができるため、帳票の半構造データの取得および活用を効率的に行うことができるようになる。
【０１６２】
さらに、本実施形態によれば、表整合部２０７および列挙整合部２１３による木構造データに含める論理関係の特定が行われるため、帳票の縦列挙、横列挙、縦列挙と横列挙の複合型、または入れ子構造型に縦列挙、横列挙、縦列挙と横列挙の複合型、縦表、横表、直交表、入れ子構造の縦表、入れ子構造の横表、入れ子構造の直交表が含まれる場合であっても、帳票の項目名間の論理関係、および項目名と項目値との間の論理関係を正確に認識することができる。
【０１６３】
表分類部２０３は、起点ノードの右側に接続する第１のノード群が全て項目名かつ第１ノード群の高さが起点ノードの高さと同じであることである第１の条件、および、起点ノードの下側に接続する第２のノード群が全て項目名かつ第２ノード群の幅が起点ノードの幅と同じであることである第２の条件が満たされる場合、起点ノードを起点とする表を直交表に分類し、第１の条件が満たされ、第２の条件が満たされない場合、起点ノードを起点とする表を横表に分類し、第２の条件が満たされ、第１の条件が満たされない場合、起点ノードを起点とする表を縦表に分類する。
【０１６４】
さらに、表整合部２０７は、直交表、縦表および横表から、下側にも右側にも項目値ノードが存在しない項目名ノードを有する直交表と、下側に項目値ノードが存在しない項目名ノードを有する縦表と、右側に項目値ノードが存在しない項目名ノードを有する横表と、を除外した表を特定する。
【０１６５】
このように、ノードの隣接関係、高さおよび幅を利用することによって、縦表、横表、および直交表を正確に分類することができるだけでなく、項目名ノードが誤って項目値ノードとして扱われているような不整合な表を除外することができる。
【０１６６】
項目名間合成部２１６は、合成対象の表および合成対象の列挙に含まれるノードのうち、直交表の起点ノードと、縦表の起点ノードおよび当該起点ノードの右側に接続するノード群のうち最も上側にあるノード群と、横表の起点ノードおよび当該起点ノードの下側に接続するノード群のうち最も左側にあるノード群と、列挙の項目名ノードと、を第１の木構造のデータに含める。これにより、最終的に出力される木構造のデータに、論理関係が重複して含まれないようにすることができる。
【０１６７】
直交表取得部２０６は、項目名および当該項目名の右側にある項目名または項目値の組み合わせを横方向の論理関係として取得し、項目名および当該項目名の下側にある項目名または項目値の組み合わせを縦方向の論理関係として取得する。また、横表取得部２０５は、項目名および当該項目名の右側にある項目名または項目値の組み合わせを横方向の論理関係として取得する。また、縦表取得部２０４は、項目名および当該項目名の下側にある項目名または項目値の組み合わせを縦方向の論理関係として取得する。このように、縦方向の場合は下側、および横方向の場合は右側のノードを参照することで、論理関係を正確に取得することができる。
【０１６８】
また、第１の削除部２０８は、１つのノードの左側または上側に、複数のノードが隣接している場合、１つのノードと複数のノードとの隣接関係を表すエッジを削除してもよい。また、第２の削除部２０９は、項目名ノードのうち、左側または上側に、項目値を表す領域のノードである項目値ノードが隣接している項目名ノードと、項目値ノードとの隣接関係を表すエッジを削除してもよい。一般的に帳票の項目名間や項目名と項目値との位置関係は、左から右、または上から下である場合が多い。このため、削除する隣接関係の方向を左側と上側に設定しておくことで、多くの帳票に対応することが可能になる。
【０１６９】
包含関係取得部２１４は、第１の項目名ノードの右側に隣接する第１のノード群のうち少なくとも１つが項目名ノードであり、かつ、第１のノード群に含まれる全てのノードの高さが第１の項目名ノードの高さ以下であり、かつ、第１のノード群の左上端のノードの頂点と、第１の項目名ノードの頂点が重なっている場合、第１の項目名ノードが第１のノード群を包含していると判定する。また、包含関係取得部２１４は、第２の項目名ノードの下側に隣接する第２のノード群のうち少なくとも１つが項目名ノードであり、かつ、第２のノード群に含まれる全てのノードの幅が第２の項目名ノードの幅以下であり、かつ、第２のノード群の左上端のノードの頂点と、第１の項目名ノードの頂点が重なっている場合、第２の項目名ノードが第２のノード群を包含していると判定する。このように、ノードの隣接関係、高さおよび幅を利用することによって、包含関係を正確に認識することができる。
【０１７０】
［その他の実施形態］
論理関係認識の対象は、帳票形式に整形可能であれば、Ｗｅｂ画面やシステムＧＵＩであってもよい。例えば、図４４に示すようなＷｅｂ上で航空券の予約を行うようなＷｅｂ画面から、項目名および項目値を取得し、帳票形式に整形することで、当該Ｗｅｂ画面を論理関係認識処理の対象とすることができる。図４４は、その他の実施形態について説明するための図である。
【０１７１】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１７２】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１７３】
［プログラム］
一実施形態として、論理関係認識装置１０は、パッケージソフトウェアやオンラインソフトウェアとして上記の論理関係認識を実行する論理関係認識プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の論理関係認識プログラムを情報処理装置に実行させることにより、情報処理装置を論理関係認識装置１０として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やＰＨＳ（Personal  Handyphone  System）等の移動体通信端末、さらには、ＰＤＡ（Personal  Digital  Assistant）等のスレート端末等がその範疇に含まれる。
【０１７４】
また、論理関係認識装置１０は、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記の論理関係認識に関するサービスを提供する論理関係認識サーバ装置として実装することもできる。例えば、論理関係認識サーバ装置は、帳票を入力とし、木構造データを出力とする論理関係認識サービスを提供するサーバ装置として実装される。この場合、論理関係認識サーバ装置は、Ｗｅｂサーバとして実装することとしてもよいし、アウトソーシングによって上記の論理関係認識に関するサービスを提供するクラウドとして実装することとしてもかまわない。
【０１７５】
図４５は、プログラムが実行されることにより論理関係認識装置が実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【０１７６】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【０１７７】
ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、論理関係認識装置１０の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、論理関係認識装置１０における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤにより代替されてもよい。
【０１７８】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して実行する。
【０１７９】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３およびプログラムデータ１０９４は、ネットワーク（ＬＡＮ、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３およびプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【０１８０】
１０  論理関係認識装置
２０  制御部
３０  記憶部
２０１  抽出部
２０２  解析部
２０３  表分類部
２０４  縦表取得部
２０５  横表取得部
２０６  直交表取得部
２０７  表整合部
２０８  第１の削除部
２０９  第２の削除部
２１０  列挙分類部
２１１  縦列挙取得部
２１２  横列挙取得部
２１３  列挙整合部
２１４  包含関係取得部
２１５  包含グラフ生成部
２１６  項目名間合成部
２１７  表合成部
２１８  列挙合成部
２１９  追加部
３０１  表リスト
３０２  列挙リスト
３０３  包含グラフ
【図１】
2018010489.tif 000003
【図２】
2018010489.tif 000004
【図３】
2018010489.tif 000005
【図４】
2018010489.tif 000006
【図５】
2018010489.tif 000007
【図６】
2018010489.tif 000008
【図７】
2018010489.tif 000009
【図８】
2018010489.tif 000010
【図９】
2018010489.tif 000011
【図１０】
2018010489.tif 000012
【図１１】
2018010489.tif 000013
【図１２】
2018010489.tif 000014
【図１３】
2018010489.tif 000015
【図１４】
2018010489.tif 000016
【図１５】
2018010489.tif 000017
【図１６】
2018010489.tif 000018
【図１７】
2018010489.tif 000019
【図１８】
2018010489.tif 000020
【図１９】
2018010489.tif 000021
【図２０】
2018010489.tif 000022
【図２１】
2018010489.tif 000023
【図２２】
2018010489.tif 000024
【図２３】
2018010489.tif 000025
【図２４】
2018010489.tif 000026
【図２５】
2018010489.tif 000027
【図２６】
2018010489.tif 000028
【図２７】
2018010489.tif 000029
【図２８】
2018010489.tif 000030
【図２９】
2018010489.tif 000031
【図３０】
2018010489.tif 000032
【図３１】
2018010489.tif 000033
【図３２】
2018010489.tif 000034
【図３３】
2018010489.tif 000035
【図３４】
2018010489.tif 000036
【図３５】
2018010489.tif 000037
【図３６】
2018010489.tif 000038
【図３７】
2018010489.tif 000039
【図３８】
2018010489.tif 000040
【図３９】
2018010489.tif 000041
【図４０】
2018010489.tif 000042
【図４１】
2018010489.tif 000043
【図４２】
2018010489.tif 000044
【図４３】
2018010489.tif 000045
【図４４】
2018010489.tif 000046
【図４５】
2018010489.tif 000047