(57)【要約】【課題】罫線で表現される様式を含む電子ファイルである帳票ファイルに対し、当該帳票ファイルの実際の内容を表す帳票データを、汎用のデータベース言語を用いて操作可能とすること。【解決手段】端末１から投入された帳票ファイル３は、データベースシステム２の帳票ファイル登録部４にて帳票ファイルＤＢ５にそのまま登録されるとともに、帳票ファイル登録部４にて帳票データとそのコンテキストを表す少なくとも１つの項目との関係を構造的に表現するデータ構造が取得されて帳票ファイルＤＢ５に格納される。端末１から「データ操作を実行する条件」と「データ操作命令」とを少なくとも含むデータ操作クエリが入力されると、データベースシステム２のデータ操作部７にてクエリに該当する帳票ファイルおよびデータ構造が探索され、データ参照またはデータ更新の操作が実行され、その結果が端末１に出力される。【選択図】図１
2016004417.tif 000002
【特許請求の範囲】
【請求項１】
帳票データと当該帳票データのコンテキストを表す少なくとも１つの項目とを、罫線で区画される欄の集合で構成された様式中の欄内に配置して構成される帳票ファイルを処理する方法であって、
帳票ファイルから帳票データとそのコンテキストを表す少なくとも１つの項目との関係を構造的に表現するデータ構造を取得し、帳票ファイルとともにデータベースに格納する帳票ファイル登録工程と、
少なくとも１つの項目および／または少なくとも１つの項目とこれに対応する帳票データを含む「データ操作を実行する条件」と、「データ操作命令」とを少なくとも含むクエリに従って、前記データベースに格納された１または２以上の帳票ファイルに対してデータ操作を実行するデータ操作工程とを少なくとも含む
ことを特徴とする帳票ファイルのデータ処理方法。
【請求項２】
前記帳票ファイル登録工程は、
投入された帳票ファイルをデータベースに格納する帳票格納工程と、
格納された帳票ファイルから様式の構造を抽出し、帳票データとそのコンテキストを表す少なくとも１つの項目との関係を構造的に表現するデータ構造を取得するデータ抽出工程と、
前記取得したデータ構造を当該帳票ファイルの少なくともファイル名を含むファイルパスとともにデータベースに格納するデータ格納工程とを少なくとも含む
ことを特徴とする請求項１に記載の帳票ファイルのデータ処理方法。
【請求項３】
前記データ抽出工程は、
罫線を利用して帳票ファイルを欄に分解する帳票分解工程と、
前記帳票ファイル中の各帳票データとそのコンテキストを表す項目との包含関係を、前記分解された各欄間の包含方向を含む隣接関係から推定する包含関係推定工程と、
前記推定した帳票ファイル中の各帳票データとそのコンテキストを表す項目との包含関係から、各帳票データとそのコンテキストを表す項目との関係を構造的に表現するデータ構造を取得するデータ構造取得工程とを含む
ことを特徴とする請求項２に記載の帳票ファイルのデータ処理方法。
【請求項４】
前記包含関係推定工程は、
帳票ファイルの様式を構成する全ての欄を要素とする第１の集合および隣接する欄間を所定の方向で結ぶ全ての枝を要素とする第２の集合からなる隣接グラフを生成する隣接グラフ生成工程と、
前記生成した隣接グラフを非連結グラフ単位のグラフに分割する隣接グラフ分割工程と、
分割後の各隣接グラフに対して、各欄の包含方向を推定して包含関係を求める包含方向推定工程とを含む
ことを特徴とする請求項３に記載の帳票ファイルのデータ処理方法。
【請求項５】
前記データ操作工程は、
「対象とする帳票ファイル群」、「データ操作を実行する条件」、「データ操作命令」を含むクエリを受け付けるクエリ受付工程と、
前記受け付けたクエリから対象帳票ファイル、条件、対象データおよび命令を識別するクエリ識別工程と、
データベース中の帳票ファイル群から前記対象帳票ファイルに該当する帳票ファイルを探索する帳票探索工程と、
前記探索した各帳票ファイルについて前記条件および対象データに該当するデータ構造を探索するデータ探索工程と、
前記探索した帳票ファイルの帳票データに対して前記命令に従うデータ操作を実行する命令実行工程とを少なくとも含む、
ことを特徴とする請求項１乃至４のいずれかに記載の帳票ファイルのデータ処理方法。
【請求項６】
コンピュータに、請求項１乃至５のいずれかに記載の方法の各工程を実行させるためのプログラム。
【請求項７】
帳票データと当該帳票データのコンテキストを表す少なくとも１つの項目とを、罫線で区画される欄の集合で構成された様式中の欄内に配置して構成される帳票ファイルを処理する装置であって、
帳票ファイルから帳票データとそのコンテキストを表す少なくとも１つの項目との関係を構造的に表現するデータ構造を取得し、帳票ファイルとともにデータベースに格納する帳票ファイル登録部と、
少なくとも１つの項目および／または少なくとも１つの項目とこれに対応する帳票データを含む「データ操作を実行する条件」と、「データ操作命令」とを少なくとも含むクエリに従って、前記データベースに格納された１または２以上の帳票ファイルに対してデータ操作を実行するデータ操作部とを少なくとも具備する
ことを特徴とする帳票ファイルのデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表計算ソフト、文書作成ソフト、プレゼンテーション作成ソフト等で作成された、罫線で表現される様式を含む電子ファイル形式の帳票（以下、「帳票ファイル」）に対し、当該帳票ファイルの実際の内容を表すデータ（以下、「帳票データ」）を、ＳＱＬなどの汎用のデータベース言語を用いて操作可能とする技術に関するものである。
【背景技術】
【０００２】
従来、各種サービスおよび人材、資金、設備などの状況を情報として把握するためのツールとして、業務システムの他、メール、ドキュメントなどが利用されてきた。特に、申込書や一覧表、手順書等を総称する「帳票」は１または２以上のオペレータから情報をとりまとめ、状況を的確に判断するために利用されてきた。帳票は、帳票データのコンテキストを示す「項目」および「文字列」を構造的に配置した「様式」を有しており、オペレータは帳票に必要最低限のデータを入力することで、帳票のコンテキストに沿って他のオペレータに情報伝達できる。一方で、帳票の様式は、その利用目的や利用対象者によって異なる構造を有しているため、電子化された帳票を帳票の様式に合わせて分類またはデータ抽出を行うための様々な研究・製品化がなされている。
【０００３】
帳票の分類またはデータ抽出には、大きく分けて２点の技術的困難な点がある。
【０００４】
１点目は、紙帳票に書かれた帳票データやビットマップ形式の帳票データをコンピュータで識別させる点である。従来から、紙帳票や電子ファイルから様式および文字列を識別させる技術として、ＯＣＲ（光学的文字認識）を用いた帳票識別技術がある。帳票識別技術の分野では、帳票の画像からレイアウト解析や文字認識などを行うことにより、帳票の分類および帳票データの取得に対する試みが行われてきた。例えば、帳票独自のＩＤを付与することなく、帳票の構造的特徴から帳票を分類する技術（例えば、特許文献１、２参照）、帳票の罫線やテキスト情報などの特徴的情報を辞書に保持して帳票分類を行う技術（例えば、特許文献３参照）がある。また、様式の論理的構造を既知情報として確率論的に帳票データ抽出を行う方法も提案されている（例えば、特許文献４参照）。また、表計算ソフト、文書作成ソフト、プレゼンテーション作成ソフト等で作成された帳票ファイルについては、専用のＣＯＭ（Component Object Model）、ＯＬＥ（Object Linking and Embedding）がライブラリとして提供されており、ソフトウェア準拠のプログラム言語（例えばＭｉｃｒｏｓｏｆｔ（登録商標）社のＥｘｃｅｌではＶＢＡ（Visual Basic for Application）言語））を利用して表、図形、テキストなどの帳票ファイルの属性情報を扱うことができる。
【０００５】
２点目は、帳票データをデータベース同様に扱う点である。帳票データをデータベース同様に扱う場合、帳票−データベース間の相互的なデータ操作が求められる点から、電子ファイル形式の帳票を対象として技術開発が進められている。帳票データをデータベース同様に扱う場合、表計算ソフト、文書作成ソフト、Ｗｅｂブラウザなどのアプリケーションが利用した形態が提案されている。例えば、表計算ソフトによって作成された帳票を業務端末上のＷｅｂブラウザで動作する業務システムのＧＵＩとして取り込む形態（例えば、特許文献６参照）や、利用者が作成したＥｘｃｅｌのテンプレートをＧＵＩとして、Ｅｘｃｅｌ上に入力したデータを業務データベースと相互的に連携させる形態（例えば、特許文献５、非特許文献１参照）などが提案されている。また、Ｍｉｃｒｏｓｏｆｔ（登録商標）社のＥｘｃｅｌに関しては行列上の座標位置を利用して、Ｅｘｃｅｌと外部データベースとの間で相互的にデータのやりとりを行う共通インターフェースエンジンとしてＳＱＬ ｆｏｒ Ｅｘｃｅｌ、ＭＳＤＥ（Microsoft SQL Server Desktop Engine）、ＪＤＢＣ、ＯＤＢＣなどが製品化されている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の技術は帳票ファイル単位に対するデータ処理方法であり、帳票データ単位に対するデータ抽出および操作は十分でない。例えば、帳票識別技術は各種帳票を分類するために行われ、各帳票データの座標位置およびデータ操作のためのキーは帳票分類を行った上で既知情報として保持している様式の構造情報から与えられる。また、表計算ソフト、文書作成ソフトによって作られた帳票ファイルに対するデータ操作も同様であり、各帳票データの行列上の座標位置およびキーが既知情報として与えられている。
【０００７】
そのため、業務内容の変化等により様式改訂が発生すると、それまでの帳票ファイルとデータの対応関係をとることができず、様式またはデータのキーとなる情報の再定義を要する。従来の技術では、様式が異なると自動スクリプトによる自動実行を行うことができないため、帳票でのデータの書き換えには人手で開く、調べる、書き換える、閉じるといった繰り返し操作が必要となる。
【０００８】
また、帳票ファイルに記述されるデータには、本来は帳票特有のデータと他の帳票と意味的に共通するデータの両方が含まれている。そのため、意味的に共通するデータにおいても、様式構造が異なる帳票であれば同様の繰り返し操作が必要となり、帳票間のデータ齟齬等を引き起こす恐れがある。
【０００９】
さらに、帳票ファイルは利用目的に合わせて整形されているため、他の目的または立場で利用する場合に、帳票データの一部を抽出したり、複数の帳票ファイルをまたいで帳票データを取り出して一覧表示するなどの作業を要する。ＳＱＬ ｆｏｒ Ｅｘｃｅｌなどの共通インターフェース製品はファイル単体でのデータ連携を対象としており、これらの操作をサポートすることができない。
【課題を解決するための手段】
【００１０】
本発明では、前記課題を解決するため、１または２以上の帳票ファイルに対して、それぞれの帳票ファイルから帳票データとそのコンテキストを表す項目との関係を構造的に表現するデータ構造を抽出して保持し、項目をキーとした帳票データに対するデータ操作を行う。
【００１１】
具体的には、
帳票データと当該帳票データのコンテキストを表す少なくとも１つの項目とを、罫線で区画される欄の集合で構成された様式中の欄内に配置して構成される帳票ファイルを処理する方法であって、
帳票ファイルから帳票データとそのコンテキストを表す少なくとも１つの項目との関係を構造的に表現するデータ構造を取得し、帳票ファイルとともにデータベースに格納する帳票ファイル登録工程と、
少なくとも１つの項目および／または少なくとも１つの項目とこれに対応する帳票データを含む「データ操作を実行する条件」と、「データ操作命令」とを少なくとも含むクエリに従って、前記データベースに格納された１または２以上の帳票ファイルに対してデータ操作を実行するデータ操作工程とを少なくとも含む
ことを特徴とする帳票ファイルのデータ処理方法、そのプログラムおよび装置を提案する。
【発明の効果】
【００１２】
本発明によれば、表計算ソフト、文書作成ソフトなどで作成した帳票ファイルに対して以下の操作が可能になる。
【００１３】
・汎用データベース言語を用いて、項目をキーとして単体の帳票ファイルおよび複数の帳票ファイルをまたいだ帳票データの参照・更新操作ができる。
【００１４】
・帳票ファイルの帳票データ間の関係性を構造的に解釈できるため、帳票ファイルの他の帳票データを条件として付与したデータ操作ができる（例えば、項目「所属」の帳票データが○○である帳票ファイル中の項目「氏名」の帳票データを表示する、など）。
【００１５】
・様式の構造を利用して帳票データの項目を取得するため、様式の変化による影響を受けずに共通した項目を有する帳票データを認識し、データ操作ができる。
【００１６】
・汎用データベース言語を用いているため、様式が異なる場合においても帳票データの参照・更新操作の自動化スクリプトを作成することができる。
【００１７】
・汎用データベース言語による操作が可能なため、業務システムのデータベースシステムとの親和性が高く、データの一貫性を保持するためのバッチファイルを追加したデータ連携が可能になる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態の一例を示す装置構成図
【図２−１】本発明の実施形態の一例を示す帳票ファイル登録部の機能構成図
【図２−２】本発明の実施形態の一例を示すデータ操作部の機能構成図
【図３】帳票ファイルの様式の一例を示す説明図
【図４】帳票ファイルの階層構造の一例を示す説明図
【図５】欄の包含関係を示す説明図
【図６】帳票データとそのコンテキストを表す項目との関係を構造的に表現するデータ構造の一例を示す説明図
【図７−１】帳票ファイルのデータ構造を保存する形式の一例を示す説明図
【図７−２】帳票ファイルのデータ構造を保存する形式の他の例を示す説明図
【図７−３】帳票ファイルのファイルパスをページ単位で保存する例を示す説明図
【図７−４】帳票ファイルのファイルパスをページ数とともに保存する例を示す説明図
【図８】包含関係推定処理のフローチャート
【図８−１】隣接グラフの生成処理のフローチャート
【図８−２】隣接グラフの分割処理のフローチャート
【図８−３】包含方向の推定処理の詳細フローチャート
【図８−４】包含方向の整合性判定処理のフローチャート
【図８−５】部分グラフＴの包含関係推定処理のフローチャート
【図８−６】マージしたグラフS'(k)の枝の補正処理のフローチャート
【図８−７】ノードNc発見／枝の補正処理のフローチャート
【図８−８】枝の補正処理のフローチャート
【図８−９】根ノード間の包含関係補正処理のフローチャート
【図９】ノード間で生成される枝の例を示す説明図
【図１０】帳票ファイルをグラフ化したイメージを示す説明図
【図１１】図１０のグラフを縦方向の枝で構成したグラフと横方向の枝で構成したグラフに分割したイメージを示す説明図
【図１２−１】表要素の一例を示す説明図
【図１２−２】表要素の枝の補正の一例を示す説明図
【図１３−１】属性列挙の一例を示す説明図
【図１３−２】属性列挙の枝の補正の一例を示す説明図
【図１４−１】部分グラフＴの一例を示す説明図
【図１４−２】部分グラフＴの他の例を示す説明図
【図１５】包含方向の整合性判定後の縦方向の枝で構成したグラフと横方向の枝で構成したグラフをマージしたイメージを示す説明図
【図１６】グラフの枝を補正したイメージを示す説明図
【図１７】番号付けされた帳票ファイルを根ノード毎に分類した状態の一例を示す説明図
【図１８−１】根ノードが包含するノード候補の一例を示す説明図
【図１８−２】根ノードが包含するノードの一例を示す説明図
【図１８−３】根ノード間の包含関係を示す説明図
【図１９】データ操作における実行フローとクエリの対応関係を示す説明図
【図２０】命令実行処理のフローチャート
【図２１】本発明によるデータ操作のイメージを示す説明図
【発明を実施するための形態】
【００１９】
＜実施形態＞
本発明の実施形態の一例の装置構成を図１に、また、本発明によるデータ操作のイメージを図２１に示す。
【００２０】
本発明の実施形態は、オペレータが利用する端末１と、帳票ファイルを格納するデータベースシステム２との２つの装置で構成される。
【００２１】
データ操作対象の帳票ファイル３は端末１から登録する。端末１側で対象とする１または２以上の帳票ファイル３（以下、「帳票ファイル群」）を選択して入力処理をすると、それをトリガーにして帳票ファイル３群がデータベースシステム２側に送信される。データベースシステム２側では、帳票ファイル登録部４にて帳票ファイルデータベース（ＤＢ）５に帳票ファイル３群を格納する。また、データベースシステム２側では、帳票ファイル３群に対して高速なデータ操作を可能にするために、個々の帳票ファイル３に対し帳票ファイル登録部４にてデータ抽出処理を行い、抽出したデータ構造を帳票ファイルＤＢ５に格納する。そして、データ構造の格納先情報を格納先情報ファイル６に格納する。
【００２２】
データ操作では、端末１側から「対象とする帳票ファイル群」、「データ操作を実行する条件」、「データ操作命令」をクエリとして表現し、投入する。この操作はデータベースシステム２に接続された複数の端末１で実行できる。クエリは帳票ファイル３毎に汎用データベース言語のように指定でき、参照系、更新系の命令および帳票内部の項目やデータに対する条件を付与できる。
【００２３】
端末１でクエリ入力操作を実行すると、それをトリガーにしてクエリがデータベースシステム２側に送信される。データベースシステム２側では、データ操作部７にてクエリを受け付けて識別する。データ操作部７ではクエリに従って帳票ファイル３群から指定された帳票ファイル３を探索し、各帳票ファイル３についてクエリに該当するデータ構造を探索する。該当するデータ構造に対してデータ参照またはデータ更新の操作を実行する。
【００２４】
データ参照の場合は参照結果を端末１側に出力し、データ更新の場合はデータベースシステム２側に登録された帳票ファイル３を書き換えた後、その結果を端末１側に出力する。
【００２５】
以上が本実施形態における大まかな処理の流れである。
【００２６】
＜機能構成＞
図２−１、２−２は本発明の実施形態の一例の機能構成を示すもので、図２−１は帳票ファイル登録部４の機能構成、図２−２はデータ操作部７の機能構成をそれぞれ示す。
【００２７】
図２−１において、１１は帳票受付部、１２は帳票格納部、１３はデータ抽出部、１４はデータ格納部であり、さらにデータ抽出部１３は帳票分解部１５、包含関係推定部１６およびデータ構造取得部１７を含む。また、図２−２において、２１はクエリ入力受付部、２２はクエリ識別部、２３は帳票探索部、２４はデータ探索部、２５は命令実行部、２６は出力バッファ格納部である。これらの機能はデータベースシステム２側に保持される。
【００２８】
＜機能構成−帳票登録の概要＞
帳票登録では、まず帳票受付部１１で端末１から投入された帳票ファイル３群を受け付け、受け付けた帳票ファイル３群を帳票格納部１２により帳票ファイルＤＢ５に登録する。
【００２９】
データ抽出部１３では高速にデータ操作を行うために、登録された各帳票ファイル３に対してデータ抽出処理を行う。データ抽出部１３では、それぞれの帳票ファイル３から帳票データとそのコンテキストを表す項目との関係を構造的に表現するデータ構造を取得する。このデータ構造を取得することで、ファイル名や項目をキーとしたデータ操作を高速で実行することができる。
【００３０】
帳票ファイル３からの帳票データおよび項目の取得には罫線で表現される様式を利用する。帳票ファイルの様式の一例を図３に示す。様式は罫線で区画される小領域（以下、「欄」）の集合で構成されており、この欄によって各帳票データと項目との関係、特に複数段に亘る階層構造的な項目との関係を図４のように表現することができる。
【００３１】
この階層構造は図５のように欄の間の隣接関係（欄の側面に接しているか否か）や欄の大きさで表現されている。この隣接関係や欄の大きさから、ある欄が別の欄を包含する関係を取得できる。以後、この関係性を包含関係と呼び、ある欄が別の欄を包含する上下左右いずれかの方向を包含方向と呼ぶ。様式を構成する各欄の包含関係を取得することで、その階層構造を取得することができる。様式の階層構造は、根にファイル名、葉に帳票データを有する構造を備えているため、階層構造より葉から根までのパスを取得することで、各帳票データとそのコンテキストを表す項目との関係を構造的に表現する図６のようなフラットなデータ構造を取得することができる。
【００３２】
最後に、データ格納部１４にて各帳票ファイル３およびそのデータ構造と帳票データの範囲などの帳票ファイルに関する情報を帳票ファイルＤＢ５に保存する。
【００３３】
図７−１〜７−４に具体的な帳票ファイル３の格納例を示す。図７−１，図７−２は帳票ファイル３のデータ構造を保存するための形式を示すもので、前者はテーブル形式の例、後者はＸＭＬ形式の例を示す。図７−３，図７−４は帳票ファイル３のファイルパス等の格納先情報を保存する格納先情報ファイル６の例を示すもので、前者はページ（page）単位で保存する例、後者はページ数（page num）とともに保存する例を示す。
【００３４】
データ操作時は帳票ファイルＤＢ５に保存している帳票ファイル３の中から、格納先情報ファイル６を経由して該当する帳票ファイル３を開き、この帳票ファイル３に対してデータ操作を行う。
【００３５】
＜機能構成−帳票登録（データ抽出部）の詳細＞
以下ではデータ抽出部１３の詳細機能について述べる。
【００３６】
まず、帳票分解部１５にて罫線を利用して帳票ファイル３を欄に分解する。欄の構成情報として
・欄の範囲
・欄に含まれる文字列
・欄のサイズ
という情報を得る。
【００３７】
欄は長方形状に形成されるが、欄を形成するセルが複数の場合がある。そこで、罫線を辿るようにして欄の左上の座標および右下の座標を取得し、これらを欄の範囲とする。また、欄のサイズとして欄の縦方向の長さおよび横方向の長さを取得する。なお、欄に含まれる文字列とは帳票データまたは項目（を表す情報そのもの）である。
【００３８】
以後、欄を総称してノード、ノードの集まりをノード集合Ｎと呼ぶ。ノードＡがノードＢを包含する直近のノードであった場合にノードＡをノードＢの親ノード、ノードＢをノードＡの子ノード、ノードＡを親に持つ他のノードＣが存在する場合はノードＣをノードＢの兄弟ノードと呼ぶ。また、親ノードを持たないノードを根ノード、子ノードを持たないノードを葉ノードと呼ぶ。
【００３９】
次に包含関係推定部１６にて帳票ファイル中の各帳票データとそのコンテキストを表す項目との包含関係、特に複数段に亘る階層構造的な項目との間の包含関係の推定を行う。包含関係の推定処理の全体的な流れを図８に示す（詳細は図８−１〜図８−９）。
【００４０】
包含関係は各ノード間の包含方向を含む隣接関係で形成されていることから、まず、ノードの隣接グラフＧ＝（Ｎ，Ｅ）を生成する（Ｆ１）。ここで、Ｎは帳票ファイルに含まれる全てのノードを要素とするノード集合である。また、Ｅは隣接するノード間を所定の方向（上から下または左から右）で結ぶ全ての枝を要素とする枝集合である。
【００４１】
ノードは長方形状に形成されるため、あるノードが他のノードと隣接する場合は長方形のいずれかの辺が重なる状態となる。この性質を利用してノードの隣接関係をグラフ化して取得する。隣接グラフの生成処理のフローを図８−１、ノード間で生成される枝の例を図９、帳票ファイルをグラフ化したイメージを図１０に示す。なお、図１０中の数字は各ノードを区別するために便宜上、付与した番号である。
【００４２】
隣接グラフの生成は、ノード集合Ｎ中の要素niについて、同じくノード集合Ｎ中の各要素nj（ni≠nj）との間で重なる辺があればその重なった辺の位置に応じた枝を張る、即ち枝集合Ｅの要素を生成することで行う。ただし、帳票ファイル３は図３の「出展情報」「展示小間情報」のように２つ以上について様式をもつことがあり、上記の方法に従うと２以上の非連結グラフが発生する。そこで、各々について包含関係を推定するために隣接グラフを分割する（Ｆ２）。図３の帳票ファイルのような場合、隣接グラフは非連結グラフである性質を利用して分割を行う。隣接グラフの分割処理のフローを図８−２に示す。以下では、分割処理によって得たグラフを分割グラフS(k)と呼ぶ。
【００４３】
隣接グラフの分割は、ノード集合Ｎからランダムに選択した要素n0が属する非連結グラフを探索し、あればこれを分割グラフS(k)とするとともに当該分割グラフS(k)に属するノードをノード集合Ｎから除外する処理を、ノード集合Ｎが空集合となるまで繰り返すことで行う。
【００４４】
分割後、分割グラフS(k)に対して、各ノードの包含方向の推定を行う（Ｆ３）。ノード間の包含関係は有向枝を備えた木構造で表現でき、条件として
・各ノードの包含方向は縦方向（上から下）、横方向（左から右）のいずれか一意である
・各ノードの親ノードはただ１つである
・根ノードは１つ以上存在する
・葉ノードは帳票データに該当する
・任意のノードに対してノードから出る枝、ノードに入る枝はそれぞれ高々１本である（図４より）
・あるノードに兄弟ノードが存在しないとき、２つ以上の子ノードを持たない
という特徴を有する。正しい包含関係を推定することができれば、上記の条件を満たした木構造で表現される。
【００４５】
ただし、包含方向は縦・横の２つの方向パターンがあり、ノード間の枝は上・下、左・右で依存性が強い。包含方向推定フローの詳細な流れを図８−３に示す。
【００４６】
まず、分割グラフS(k)を縦方向の枝で構成したグラフSb(k)と、横方向の枝で構成したグラフSr(k)に分割する（Ｆ３−１）。分割イメージ図を図１１に示す。次に、上記の条件との整合性を判定し、上記の条件を満たさなければ不要な枝として排除する（Ｆ３−２）。グラフSb(k)，Sr(k)それぞれについて枝の補正を行った後、グラフSb(k)，Sr(k)をマージする（Ｆ３−３）。マージイメージ図を図１５に示す。
【００４７】
グラフSb(k)，Sr(k)それぞれについて枝の補正後、枝の包含方向が一意に決定できるノードが生じる。各ノードの包含方向は一意で定められるため、そのノードを起点として各ノードの包含方向を推定し、枝の補正を行う（Ｆ３−４）。枝の補正イメージ図を図１６に、図８−３のフロー中の各定義処理については図８−４〜図８−９にそれぞれ示す。
【００４８】
ただし、各帳票ファイルの内部には、包含関係があるにも拘わらず欄（ノード）同士は隣接しない様式がある。例えば図３の帳票ファイル中の「担当者連絡先」と「TEL」「FAX」「e-mail」との間に見られるような、１つの帳票データに対応する２以上の階層に亘る項目同士が隣接する欄内に配置されない様式（以下、「属性列挙」）や、表形式の帳票ファイルのようにある帳票データに対応する項目との間に１以上の他の帳票データが存在することがある様式（以下、「表要素」）等である。このような様式は別の情報を示しており、別のデータ構造を有している。これらの様式は、木構造でないグラフに内在している可能性がある。従って、グラフの整合性の判定では、１）木構造の判定の後、２）「表要素」「属性列挙」を判定する（図８−４）。
【００４９】
「表要素」とは表が帳票上に存在するときのその表の各要素を指し、「属性列挙」とは｛項目−データ｝の一連のデータ構造をセットにして並べたものを指す（例えば、図３中の｛フリガナ，デンデンタロウ｝が該当する。）。表要素の例を図１２−１に、属性列挙の例を図１３−１にそれぞれ示す。
【００５０】
本発明におけるデータ抽出部１３ではノード間の隣接関係を基本としているため、表要素、属性列挙を発見して図１２−２、図１３−２のように枝を補正する操作を実施する。
【００５１】
「表要素」「属性列挙」の判定は図８−４の「部分グラフＴの表要素または属性列挙の判定」に該当する。部分グラフＴのイメージ図を図１４−１、図１４−２に示す。部分グラフＴとは「子ノードを１つしか持たないノードとそのノードと隣接するノードで構成される部分グラフ」を指す。グラフSb(k)，Sr(k)にこのようなグラフがあれば、それは表要素や属性列挙の可能性がある。
【００５２】
表要素の場合、隣接するノードのデータの型が日付や氏名等で同じであるが、属性列挙は隣接するノードが項目のため、データの型が異なる。そのため、包含方向に対する辺の長さは表要素と属性列挙で大きく異なる。また、包含方向でない隣接するノード（包含方向が縦の場合、これは左右を指す。）の数は、属性列挙では依存しないが、表要素の場合は各々のノードについて高々１つずつしか隣接しない。この特徴を用いて表要素、属性列挙を分類し、枝の補正を行う。表要素の場合は、部分グラフＴの根ノードを親とする包含関係として枝を張り、その他の枝を削除する。また、表要素、属性列挙の条件を満たさなければ部分グラフＴの枝を排除する。この操作フローを図８−５に示す。ただし、帳票データ値がNULLの帳票データが与えられている等、ノードが項目、帳票データのいずれか既知である場合、このフローは必要としない。
【００５３】
マージ後の枝の補正は、１）包含方向が縦・横混合した場合の包含関係の補正と、２）根ノード間の包含関係の補正を行う（イメージ図：図１６）。
【００５４】
１）はグラフをマージしたことによって生じた条件の不整合箇所を発見し、周囲の結合関係から枝を補正する操作、２）は分割グラフS(k)内に根ノードが複数ある場合に根ノード間の包含関係を補正する操作である。
【００５５】
１）の枝の補正は２段階に分けて実施する。１段階目では、マージ後においても包含方向が一意となるノードを発見し、そのノードを起点として包含方向を推定する。２段階目では、１段階目の操作で包含方向が決定できなかったノードを対象として、上下左右それぞれのノードの包含方向から推定する。
【００５６】
２）の根ノード間の包含関係は、隣接関係以外のアプローチとしてノードの辺の線分の範囲を利用する。例えば、横方向に包含関係があるとき、ノードＢがノードＡの右側にあり、かつ右辺の範囲内に配置されていれば、ノードＢは横方向に付いてノードＡに包含されているといえる。図１０に示した帳票が図１７のように分類され、その根ノードが｛１，２，９，１１｝であることが既知のとき、縦方向・横方向各々について包含するノード候補は図１８−１のようになる。隣接関係より各方向についてノード候補をとると片方が空集合になるため、図１８−２のように整理できる。
【００５７】
このとき、ノード｛１｝は｛２，９，１１｝を包含ノードに含み、｛２，９，１１｝は他のノードを包含しないことから図１８−３のような関係を推定できる。マージ後の枝の操作の全体の流れを図８−６に、１）、２）それぞれの包含関係の補正フローを図８−７、図８−８、図８−９に示す。
【００５８】
以上の操作により、図４のような木構造を抽出する。
【００５９】
そして、データ構造取得部１７にて木構造から各帳票データのデータ構造を得る。図４のように帳票データに該当するノードは葉ノードとなる。葉ノードから根ノードまで、各ノードの親ノードを辿ることでフラットなデータ構造を得ることができる。
【００６０】
＜機能構成−データ操作＞
データ操作では、まずクエリ入力受付部２１で端末１から投入されたクエリを受け付ける。クエリでは、「対象とする帳票ファイル群」、「データ操作を実行する条件」、「データ操作命令」などを指定できる。操作命令や対象の帳票ファイルはファイル名や項目をキーとして指定する。
【００６１】
次に、クエリ識別部２２では、クエリ入力受付部２１で受け付けたクエリについてクエリ識別を行う。クエリ識別部２２では、データ操作の命令語（参照，更新）、操作対象のデータ、命令を実行する条件を識別し、それぞれ取得する。これらの情報はデータ操作における各実行フローで利用する。データ操作における実行フローとクエリの対応関係を図１９に示す。
【００６２】
帳票探索部２３では、クエリに従って帳票ファイルＤＢ５中の帳票ファイル３群から指定された帳票ファイル３を探索し、該当する帳票ファイルの格納先情報を別のキャッシュに一時的に格納する（対象帳票バッファ）。
【００６３】
データ探索部２４では、帳票探索部２３でバッファリングした各帳票ファイルに対してデータ構造を読み込み、条件に合うファイルを選択し、対象データを取得する。まず、格納先情報ファイル６に記載されている格納先情報から帳票ファイル３のデータ構造テーブルにリンクし、データ構造を取得する。次に条件式に適合するかを確認し、条件が適合すれば操作対象のデータを取得して、そのファイル名と操作対象データを別のキャッシュに一時的に格納する（対象データバッファ）。条件が適合しなければ、次のファイルについて探索を行う。この操作を対象帳票すべてのファイルについて行う。
【００６４】
命令実行部２５では、データ探索部２４にて取得した対象データに対する命令を実行する。データ探索部２４より取得した対象データバッファを読み込み、命令実行をする。命令実行フローを図２０に示す。参照系の場合は対象データバッファを出力として出力バッファ格納部２６に送り、一時的にキャッシュに格納する。更新系の場合は、該当する帳票ファイル３を開き、対象データの記入位置に更新内容を上書きし、保存する。その際、ロック機能による排他制御を付加することで、第三者からのデータ操作が行われないようにする。各ファイルに対するロック制御による更新可否を出力バッファ格納部２６に送り、一時的にキャッシュに格納する。
【００６５】
本発明によるデータ操作のイメージを図２１に示す。
【符号の説明】
【００６６】
１：端末、２：データベースシステム、３：帳票ファイル、４：帳票ファイル登録部、５：帳票ファイルデータベース（ＤＢ）、６：格納先情報ファイル、７：データ操作部、１１：帳票受付部、１２：帳票格納部、１３：データ抽出部、１４：データ格納部、１５：帳票分解部、１６：包含関係推定部、１７：データ構造取得部、２１：クエリ入力受付部、２２：クエリ識別部、２３：帳票探索部、２４：データ探索部、２５：命令実行部、２６：出力バッファ格納部。
【先行技術文献】
【非特許文献】
【００６７】
【非特許文献１】”Ｆｏｒｇｕｎｃｙ”、［ｏｎｌｉｎｅ］、ＧｒａｐｅＣｉｔｙ  ｉｎｃ．、［平成２６年６月１０日検索］、インターネット＜ＵＲＬ：http://www.forguncy.com/＞
【特許文献】
【００６８】
【特許文献１】特開平１０−１５４１９１号公報
【特許文献２】特開２００８−３１０５３１号公報
【特許文献３】特開２０１０−２６２５７８号公報
【特許文献４】特開２００９−１２２７２３号公報
【特許文献６】特開２０１２−１２３６０７号公報
【特許文献６】特開２０１４−０９２８９６号公報
【図１】
2016004417.tif 000003
【図２−１】
2016004417.tif 000004
【図２−２】
2016004417.tif 000005
【図３】
2016004417.tif 000006
【図４】
2016004417.tif 000007
【図５】
2016004417.tif 000008
【図６】
2016004417.tif 000009
【図７−１】
2016004417.tif 000010
【図７−２】
2016004417.tif 000011
【図７−３】
2016004417.tif 000012
【図７−４】
2016004417.tif 000013
【図８】
2016004417.tif 000014
【図８−１】
2016004417.tif 000015
【図８−２】
2016004417.tif 000016
【図８−３】
2016004417.tif 000017
【図８−４】
2016004417.tif 000018
【図８−５】
2016004417.tif 000019
【図８−６】
2016004417.tif 000020
【図８−７】
2016004417.tif 000021
【図８−８】
2016004417.tif 000022
【図８−９】
2016004417.tif 000023
【図９】
2016004417.tif 000024
【図１０】
2016004417.tif 000025
【図１１】
2016004417.tif 000026
【図１２−１】
2016004417.tif 000027
【図１２−２】
2016004417.tif 000028
【図１３−１】
2016004417.tif 000029
【図１３−２】
2016004417.tif 000030
【図１４−１】
2016004417.tif 000031
【図１４−２】
2016004417.tif 000032
【図１５】
2016004417.tif 000033
【図１６】
2016004417.tif 000034
【図１７】
2016004417.tif 000035
【図１８−１】
2016004417.tif 000036
【図１８−２】
2016004417.tif 000037
【図１８−３】
2016004417.tif 000038
【図１９】
2016004417.tif 000039
【図２０】
2016004417.tif 000040
【図２１】
2016004417.tif 000041