JP6325472B2 - データ構造抽出装置、データ構造抽出方法およびデータ構造抽出プログラム - Google Patents

データ構造抽出装置、データ構造抽出方法およびデータ構造抽出プログラム Download PDF

Info

Publication number
JP6325472B2
JP6325472B2 JP2015041286A JP2015041286A JP6325472B2 JP 6325472 B2 JP6325472 B2 JP 6325472B2 JP 2015041286 A JP2015041286 A JP 2015041286A JP 2015041286 A JP2015041286 A JP 2015041286A JP 6325472 B2 JP6325472 B2 JP 6325472B2
Authority
JP
Japan
Prior art keywords
node
data
adjacent
nodes
inclusion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015041286A
Other languages
English (en)
Other versions
JP2016162275A (ja
Inventor
郁子 高木
郁子 高木
山田 光一
光一 山田
名和 長年
長年 名和
勉 丸山
勉 丸山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2015041286A priority Critical patent/JP6325472B2/ja
Publication of JP2016162275A publication Critical patent/JP2016162275A/ja
Application granted granted Critical
Publication of JP6325472B2 publication Critical patent/JP6325472B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、帳票のデータ構造抽出装置、データ構造抽出方法およびデータ構造抽出プログラムに関する。
業務では、申請書、管理簿、申込書等様々な利用シーンにあわせて帳票が作成される。特に、表計算ソフト等で作成された電子帳票(以下、適宜「帳票」と略す)はユーザが帳票のテンプレートを簡単に作成できるため汎用性が高い。一方で、帳票の様式構造は帳票の作成者の意図・嗜好に依存し、画一的に定義することが困難である。そのため、帳票に書かれたデータを利用する場合、多くの場合は帳票の値の意味を明示的に示す情報(以下、「項目名」と表現する)およびその値(以下、「帳票データ」と表現する)の記入位置を予め厳格に定義し、指定の処理プロセスをスクリプトやマクロで記述、実行させる。しかし、この方法では(1)帳票を利用した新たな作業・業務が発生するたびに指定の処理プロセスを新規で記述しなければならない、(2)表計算ソフト等様式の操作が可能なものは、作成者が意図しない操作(例えば、行列の追加・削除、項目の追加・削除等)が行われた場合に指定の処理プロセスを正しく実行できない、等の問題が生じる。帳票は、情報を記入するユーザが項目名を頼りにして正確に情報を記入できるように、定型的な知識表現で作成される傾向があり、項目名と帳票データの意味的な関係性は木構造と表の2つの表現形式によって概念的に表現することができる。例えば、帳票の項目名やデータを変換したノードについて、ノード間の隣接関係を求めた後、帳票の木構造の特性を満たさないエッジをカットすることで、帳票を概念化した論理構造に変換・抽出して上記の問題を解決する方法(非特許文献1参照)が提案されている。この技術を利用することで、例えば、帳票群の帳票データ個々を対象にして、ユーザの要求に従って外部からデータ操作(例えば、参照、更新、削除)することができる。
高木郁子他、「電子帳票群に対する横断的データ操作技術のための抽出手法の検討」、電子情報通信学会、信学技報、Vol.114、No.150、LOIS2014-11、pp.1-6、2014年7月17日
しかし、上記の技術ではノードの隣接エッジを参照しながら不要なエッジをカットするアルゴリズムのため、カットの順序によっては木構造データを精度よく抽出できないことがあった。また、上記の技術は、帳票のノード間の意味関係が縦方向(上から下に読む)、または、横方向(左から右に読む)のいずれかであることを前提としているため、帳票の中に縦横の論理構造が混在している場合、木構造データを精度よく抽出できないことがあった。
そこで、本発明は、前記した問題を解決し、帳票の中に縦横の論理構造が混在している場合であっても、木構造データを精度よく抽出することを課題とする。
前記した課題を解決するため、本発明は、帳票の書式情報を参照して、前記帳票の項目名を示すノードおよびデータを示すノードを生成するノード生成部と、前記帳票の書式情報を参照して、前記ノード間の隣接関係を示す隣接エッジを生成する隣接エッジ生成部と、前記ノードの隣接エッジおよび前記帳票の書式情報を参照して、前記ノードの位置およびサイズから、前記ノード間の縦方向または横方向の包含関係を示す包含エッジを生成する包含エッジ生成部と、前記隣接エッジの連結性に基づいて前記ノードをノードクラスタに分類するノードクラスタ部と、前記ノードクラスタに分類されたノード群の包含エッジを参照して、前記包含関係を有するノード群について、帳票上の項目名とデータの並びに関する特性を満たすように、前記隣接エッジの修正および各ノードが項目名かデータかの項目属性の設定を行って部分木パターンを生成する部分木パターン生成部と、前記部分木パターンを前記ノードの重複がないように組み合わせることにより前記帳票の木構造データを生成する木構造データ構築部とを備えることを特徴とする。
本発明によれば、帳票の中に縦横の論理構造が混在している場合であっても、木構造データを精度よく抽出することができる。
図1は、帳票ファイルおよび木構造データの例を示す図である。 図2は、データ構造抽出装置の構成例を示す図である。 図3は、データ構造抽出部の構成例を示す図である。 図4−1は、データ構造抽出装置の処理手順を示すフローチャートである。 図4−2は、図4−1のS2のグラフ生成処理を示すフローチャートである。 図4−3は、図4−1のS4の木構造推定処理を示すフローチャートである。 図5−1は、図4−2のS131の操作インタフェースの識別処理の一例を示すフローチャートである。 図5−2は、図4−2のS132の操作インタフェースの識別処理の一例を示すフローチャートである。 図5−3は、図4−2のS133のノード生成処理の一例を示すフローチャートである。 図5−4は、ノード生成処理の一例を説明するための図である。 図5−5は、図4−2のS134のプロパティ情報取得処理の一例を示すフローチャートである。 図6は、帳票データベースにおけるプロパティ情報と木構造データの一例を示す図である。 図7−1は、図4−2のS135の隣接エッジ生成処理の一例を示すフローチャートである。 図7−2は、隣接エッジ生成処理の一例を説明するための図である。 図7−3は、図7−1のS1353の各ノード間の隣接エッジを求める処理の一例を示すフローチャートである。 図7−4は、図7−1のS1354の各ノード間の隣接関係をチェックする処理の一例を示すフローチャートである。 図8は、図4−2のS136の包含エッジ生成処理の一例を示すフローチャートである。 図9は、項目名登録部の処理手順の一例を示すフローチャートである。 図10−1は、図4−1のS3のノードクラスタに分類する処理の一例を示すフローチャートである。 図10−2は、ノードクラスタの一例を示す図である。 図10−3は、図10−1のS1383の任意のノードXを始点とした他のノードYのクラスタリング処理の一例を示すフローチャートである。 図11は、項目名割当処理の一例を示すフローチャートである。 図12−1は、図4−3のS140の部分木パターン生成処理の一例を示すフローチャートである。 図12−2は、包含ノードの階層を説明するための図である。 図12−3は、図12−1のS1405の部分木パターンの取得処理の一例を示すフローチャートである。 図12−4は、図12−3のS14056およびS14060におけるC(X,k)についての木構造変換処理の一例を示すフローチャートである。 図12−5は、上記の表型・列挙型推定ルールに従った、項目属性の割当と隣接エッジの修正を説明するための図である。 図13は、図4−3のS141の木構造データ構築処理の一例を示すフローチャートである。 図14−1は、図4−3のS142の木構造データ選定処理の一例を示すフローチャートである。 図14−2は、図14−1のS1424の木構造データ選定ルールに従った、木構造データの選定処理の例を示すフローチャートである。 図15は、図4−1のS5の帳票構造構築処理の一例を示すフローチャートである。 図16−1は、帳票構造ルールの一例を示す図である。 図16−2は、帳票の一例を示す図である。 図16−3は、ノードXの隣接エッジ生成を説明するための図である。 図16−4は、ノードXの隣接エッジのチェックを説明するための図である。 図16−5は、ノードXの包含エッジ生成を説明するための図である。 図16−6は、木構造変換処理の一例を説明する図である。 図16−7は、表型・列挙型の設定の一例を説明する図である。 図17は、データ構造抽出プログラムを実行するコンピュータを示す図である。
以下、図面を参照しながら、本発明を実施するための形態(実施形態)について説明する。なお、本発明は本実施形態に限定されない。
(概要)
まず、図1を参照しながら、データ構造抽出装置10が扱う帳票ファイルについて説明する。
帳票ファイルは1以上のシートからなり、シートは、符号101、符号102に示すように項目名と、その項目名に対応する帳票データとを示した表(帳票)を含む。帳票内の各項目名同士、あるいは、項目名と帳票データとの間には包含関係が存在する場合がある。例えば、符号101に示す帳票において項目14は帳票データ14−1〜帳票データ14−4を包含し(縦方向の包含)、項目19は項目14〜項目17に対応する各帳票データを包含する(横方向の包含)。また、符号102に示す帳票において項目22は項目20および項目21に対応する各帳票データを包含し(縦方向の包含)、また、項目23は項目22、項目20および項目21に対応する各帳票データを包含する(横方向の包含)。つまり、帳票には縦方向の包含関係と横方向の包含関係が混在する場合がある。
データ構造抽出装置10は、このように帳票に縦方向または横方向の論理関係が混在する場合であっても、帳票の論理構造を解釈し、項目名および帳票データのノードからなる木構造データを抽出する。例えば、データ構造抽出装置10は、符号101に示す帳票から符号103に示す木構造データを抽出し、符号102に示す帳票から符号104に示す木構造データを抽出する。
(構成)
図2を用いてデータ構造抽出装置10の構成を説明する。データ構造抽出装置10は、データ構造抽出部11と、記憶部12とを備える。
データ構造抽出部11は、端末(例えば、パーソナルコンピュータ、スマートフォン等)等から帳票ファイルの入力を受け付けると、帳票構造ルール121(詳細は後記)を参照して、この帳票ファイルの木構造データを抽出し、帳票データベース(帳票構造情報記憶部)122に登録する。
記憶部12は、帳票構造ルール121と、帳票データベース122とを備える。帳票構造ルール121は、データ構造抽出部11が、帳票ファイルから木構造データを抽出する際に参照する種々のルールを記憶する。この帳票構造ルール121は、例えば、図16−1の(a)に示すノード生成ルール、メタ情報生成ルール、隣接エッジ生成ルール、包含エッジ生成ルール、ノードクラスタ生成ルール、木構造生成ルールや、(b)に示す隣接エッジチェックルール、包含エッジチェックルール、木構造条件ルール、表型・列挙型推定ルール、木構造選定ルール等を含む。これらのルールの詳細は後記する。
帳票データベース122は、データ構造抽出部11が抽出した木構造データを含む帳票構成情報(図6参照)を記憶する。
(データ構造抽出部)
次に、図3を用いてデータ構造抽出装置10のデータ構造抽出部11を詳細に説明する。データ構造抽出部11は、グラフ生成部13と、ノードクラスタ部138と、木構造推定部14と、帳票構造構築部143とを備える。なお、記憶部12の項目名データベース123は、装備する場合と装備しない場合があり、装備する場合については後記する。
グラフ生成部13は、帳票ファイルの項目名および帳票データを示すノードのノード情報を生成する。また、このノード情報には、ノード間の隣接関係を示す情報(隣接エッジ)および包含関係を示す情報(包含エッジ)を含める。さらに、グラフ生成部13は、帳票ファイルから、当該帳票ファイルの属性情報であるプロパティ情報を取得する。
ノードクラスタ部138は、ノード情報に示される各ノードの隣接エッジの連結性に基づいてノードをノードクラスタに分類する。
木構造推定部14は、ノードクラスタに分類されたノード群から部分木パターンを生成する。そして、木構造推定部14は生成した部分木パターン群をノードの重複がないように組み合わせることにより、帳票ファイルの木構造データを生成する。
帳票構造構築部143は、木構造推定部14から出力された帳票ファイルの木構造データと、グラフ生成部13から出力された当該帳票ファイルのプロパティ情報とを統合し、帳票データベース122に登録する。
(グラフ生成部)
グラフ生成部13は、操作インタフェース識別部131と、帳票書式情報取得部132と、ノード生成部133と、プロパティ情報取得部134と、隣接エッジ生成部135と、包含エッジ生成部136とを備える。項目名登録部137は、装備する場合と装備しない場合があり、装備する場合については後記する。
操作インタフェース識別部131は、帳票ファイルの種類を特定し、帳票ファイルを操作するための操作インタフェースを決定する。そして、操作インタフェース識別部131は、決定した操作インタフェースを示す情報(操作インタフェース情報)を帳票書式情報取得部132へ出力する。操作インタフェースは、帳票ファイルの情報を取得するためのインタフェースであり、例えば、API(Application Programming Interface)、COM(Component Object Model)、OLE(Object Linking and Embedding)等である。また、操作インタフェース識別部131は、帳票ファイルのファイル情報(例えば、帳票ファイルのアプリケーションの種類、作成日、追加日、サイズ、ファイル属性等のプロパティ情報)をプロパティ情報取得部134へ出力する。
帳票書式情報取得部132は、帳票の操作インタフェースを利用して、帳票ファイルの各シート(ページ)のドキュメント情報、書式情報を取得する。ドキュメント情報は、例えば、帳票に関するプロパティ情報、タイトル、様式番号、作成者、作成日、ページ数、文字数、分類、キーワード等である。また、書式情報は、例えば、帳票を構成する書式に関するプロパティ情報、文字情報(例えば、文字列、文字の型等)、罫線情報(例えば、罫線の開始および終了位置、罫線の種類、罫線の太さ等)、セル情報等である。なお、書式とは、例えば、帳票上の文字列、罫線の種類、罫線の太さ、罫線が囲う範囲、ノードの結合情報、ノードの色情報等であり、セル情報とは、例えば、帳票ファイルのシートを構成するセルの高さ・幅・左上座標・右下座標、セルの結合状態、セルの塗りつぶしの色等である。
ノード生成部133は、帳票構造ルール121に従い、帳票の項目名または帳票データを示すノードを生成する。ノード生成部133は、例えば、帳票書式情報取得部132で得た帳票の書式情報に基づき、帳票のシート上の罫線で囲われている部分をノードとして抽出する。そして、ノード生成部133は生成したノードに関する情報(ノード情報)を隣接エッジ生成部135へ出力する。また、ノード生成部133は、シート上の罫線で囲われていない部分の情報をメタデータ(非ノード情報)として抽出し、プロパティ情報取得部134へ出力する。
プロパティ情報取得部134は、帳票のプロパティ情報(帳票のファイル情報、ドキュメント情報、非ノード情報)を、帳票構造構築部143へ出力する。
隣接エッジ生成部135は、帳票の書式情報およびノード情報を参照して、当該帳票のノード間の隣接関係を示す隣接エッジを生成する。隣接エッジ生成部135は、生成した隣接エッジを当該ノードのノード情報に追加する。
包含エッジ生成部136は、ノード情報に示される各ノードの隣接エッジおよび帳票の書式情報を参照して、各ノードの位置およびサイズから、ノード間の縦方向または横方向の包含関係を示す包含エッジを生成する。包含エッジ生成部136は、生成した包含エッジを当該ノードのノード情報に追加する。
(木構造推定部)
木構造推定部14は、部分木パターン生成部140と、木構造データ構築部141と、木構造選定部142とを備える。項目名割当部139は装備する場合と装備しない場合があり、装備する場合については後記する。
部分木パターン生成部140は、ノードクラスタに分類されたノード群について部分木パターンを生成する。具体的には、部分木パターン生成部140は、ノードクラスタに分類されたノード群について帳票上の木構造の特性を満たすように隣接エッジを修正し、各ノードが項目名かデータかの項目属性の設定を行うことにより部分木パターンを生成する。
また、部分木パターン生成部140は、上記の隣接エッジの修正において、ノード群のノードそれぞれの項目属性および配置位置に基づき、ノード群の示す帳票構造が、項目とデータとが一対一の関係である列挙型か、項目とデータとが一対多の関係である表型かを推定し、その推定結果に基づき、ノード群の隣接エッジを修正する。そして、生成した部分木パターンを、木構造データ構築部141へ出力する。なお、この部分木パターンの生成の詳細は後記する。
木構造データ構築部141は、部分木パターンをノードの重複がないように組み合わせることにより帳票の木構造データを生成する。生成した木構造データは木構造選定部142へ出力する。なお、木構造データは、例えば、図1の符号103,104に示すように、帳票の論理構造{項目名,…,項目名,帳票データ(データ)}を木構造に変換して表したものである。
木構造選定部142は、1つの帳票について複数の木構造データが生成されたとき、帳票構造ルール121に従い、木構造データの選択を行う。選択した木構造データは帳票構造構築部143へ出力する。
このようなデータ構造抽出装置10によれば、帳票の中に縦横の論理構造が混在している場合であっても、木構造データを精度よく抽出することができる。
(処理手順)
次に、図4−1を用いて、データ構造抽出装置10の処理手順を説明する。データ構造抽出装置10のデータ構造抽出部11において帳票ファイルの入力を受け付けると(S1)、グラフ生成部13は、帳票ファイルの項目名および帳票データを示すノードのグラフを生成する(S2)。つまり、グラフ生成部13は、帳票を構成する各ノードについて、各ノード間の隣接関係および包含関係を示すノード情報を生成する。また、グラフ生成部13は、帳票のプロパティ情報の取得も行う。次に、ノードクラスタ部138は、各ノードのノード情報に示される隣接エッジの連結性に基づいて各ノードをノードクラスタに分類する(S3)。そして、木構造推定部14は、ノードクラスタに分類されたノード群ごとに部分木パターンを生成し、生成した部分木パターンを組み合わせて木構造データを生成する(S4:木構造推定)。その後、帳票構造構築部143は、S4で生成された木構造データと、グラフ生成部13において取得した帳票のプロパティ情報とを統合し、帳票データベース122に登録する(S5:帳票構造構築)。
このようにすることでデータ構造抽出装置10は、帳票ファイルから帳票の木構造データを生成することができる。また、データ構造抽出部11は、帳票の木構造データと、当該帳票のプロパティ情報とを統合した情報を帳票データベース122に登録することができる。
(グラフ生成)
次に、図4−2を用いて、図4−1のS2のグラフ生成処理を詳細に説明する。まず、グラフ生成部13の操作インタフェース識別部131は、帳票ファイルの操作インタフェースの識別を行い(S131)、帳票書式情報取得部132は、帳票ファイルの書式情報の取得を行い(S132)、ノード生成部133は、帳票ファイルを構成するノード情報生成を行う(S133:ノード生成)。また、プロパティ情報取得部134は、帳票のファイル情報、ドキュメント情報、非ノード情報を当該帳票のプロパティ情報として集約し、帳票構造構築部143へ出力する(S134:プロパティ情報取得)。その後、隣接エッジ生成部135は、帳票の書式情報およびノード情報を参照して、当該帳票のノード間の隣接関係を示す隣接エッジを生成し、生成した隣接エッジを当該ノードのノード情報に追加する(S135:隣接エッジ生成)。その後、包含エッジ生成部136は、ノード情報に示される各ノードの隣接エッジおよび帳票の書式情報を参照して、各ノードの包含エッジを生成し、生成した包含エッジを当該ノードのノード情報に追加する(S136:包含エッジ生成)。
このようにすることでグラフ生成部13は、帳票を構成する各ノードについて、各ノード間の隣接関係および包含関係を示すノード情報を生成することができる。
(木構造推定)
次に、図4−3を用いて、図4−1のS4の木構造推定処理を詳細に説明する。木構造推定部14の部分木パターン生成部140は、S3でノードクラスタに分類されたノード群について部分木パターンを生成する(S140)。そして、木構造推定部14は、S140で生成された部分木パターンを組み合わせて木構造データを構築する(S141)。その後、木構造選定部142は、S141で構築された木構造データが複数あれば、これらの中から木構造データを1つ選定する(S142)。
このようにすることで木構造推定部14は、帳票の各ノード間の隣接関係および包含関係を反映した木構造データを生成することができる。
(操作インタフェース識別)
次に、図5−1を用いて、図4−2のS131の操作インタフェースの識別処理の一例を説明する。なお、以下の説明において、指定先への出力時のデータの記述言語は、例えば、CSV(Comma-Separated Values)、JSON(JavaScript(登録商標) Object Notation)、XML(eXtensible Markup Language)等を用いる。また、指定先への出力はフォルダごとに出力してもよいし、ZIP、CAB形式等のデータ圧縮を行った上で出力してもよい。
まず、操作インタフェース識別部131は、帳票ファイルのファイル情報を読み込むと(S1311)、帳票ファイルの種別を識別する(S1312)。例えば、操作インタフェース識別部131は、ファイル情報に含まれる帳票ファイルのプロパティ情報や拡張子、アプリケーションが固有に持つマジックナンバーから当該帳票ファイルで用いられるアプリケーションの種類を特定する。また、操作インタフェース識別部131は、読み込んだファイル情報をプロパティ情報取得部134へ出力する。そして、操作インタフェース識別部131は、S1312で特定した帳票ファイルの種類に合わせて操作インタフェースを決定する(S1313)。ここで、操作インタフェースが決定できれば(S1314でYes)、操作インタフェース識別部131は、操作インタフェース情報を指定先(ここでは帳票書式情報取得部132)へ出力し(S1315)、操作インタフェースが決定できなければ(S1314でNo)、例えば、エラーメッセージとして「帳票として情報を登録しない」旨のユーザに返す(S1316)。
このようにすることで、操作インタフェース識別部131は帳票ファイルの操作インタフェースを決定することができる。
(帳票書式情報取得)
次に、図5−2を用いて、図4−2のS132の操作インタフェースの識別処理の一例を説明する。帳票書式情報取得部132は、帳票ファイルの操作インタフェース情報を読み込み(S1321)、帳票ファイルを読み込むと(S1322)、帳票ファイルからページ(シート)ごとの書式情報を取得し(S1323)、また、帳票ファイルからドキュメント情報を取得する(S1324)。そして、帳票書式情報取得部132は、取得した書式情報、ドキュメント情報に罫線情報があれば(S1325でYes)、取得した書式情報、ドキュメント情報を指定先に出力する(S1326)。例えば、書式情報についてはノード生成部133に出力し、ドキュメント情報についてはプロパティ情報取得部134へ出力する。なお、帳票書式情報取得部132は、取得した書式情報、ドキュメント情報に罫線情報がなければ(S1325でNo)、例えば、エラーメッセージとして「帳票として情報を登録しない」旨のユーザに返す(S1327)。
このようにすることで帳票書式情報取得部132は、帳票ファイルから書式情報およびドキュメント情報を取得することができる。
(ノード生成)
次に、図5−3、図5−4および図16−2を用いて、図4−2のS133のノード生成処理の一例を説明する。ノード生成部133は、書式情報を読み込み(S1331)、また、帳票構造ルール121を読み込み(S1332)、帳票構造ルール121のノード生成ルール(図16−1参照)に従い、書式情報からノード情報を取得する(S1333)。ノード情報は、例えば、図5−4に示すように、罫線で囲まれた文字列(例えば、「担当者」)、罫線で囲まれたセルの左上座標(px1,py1)および右下座標(px2,py2)、塗りつぶし色(例えば、白)、罫線の種類(例えば、実線)、罫線のサイズ(例えば、1pt)等である。この他、罫線で囲まれたセルの高さや幅の情報も含んでいてもよい。
ノード生成部133は上記のようにして書式情報からノード情報を取得すると、ノード情報を隣接エッジ生成部135に出力する(S1334:ノード情報を出力)。一方書式情報に含まれる情報のうちノード情報以外の情報(非ノード情報)はプロパティ情報取得部134に出力する(S1335:非ノード情報を出力)。
書式情報に含まれる情報が、ノード情報(ノードの情報)か、非ノード情報(非ノードの情報)かは、以下のようにして判断する。例えば、ノード生成部133は、帳票構造ルール121に従い、図16−2に示す帳票のうち、帳票の罫線で囲まれた「氏名」等をノードとし、罫線で囲まれていない「様式A−1」等を非ノードとする。なお、ノード生成部133は、罫線で囲まれており、かつ、同じ背景色で塗りつぶされた領域をノードとしてもよいし、実線の罫線で囲まれた領域をノードとしてもよい。さらに、ノード生成部133は、予め非ノードとする文字列を決めておき、その文字列を含む領域を非ノードとしてもよいし、予め非ノードと判断する領域(例えば、帳票の上部または下部)を決めておき、その領域で文字列が配置されている領域を非ノードとしてもよい。そして、ノード生成部133は、ノードと判断した部分についてノード情報として取得し、非ノードと判断した部分について非ノード情報として取得する。
このようにすることで、ノード生成部133は帳票ファイルの木構造データの生成に必要なノード(ノード情報)を抽出することができる。また、ノード生成部133は、帳票ファイルの属性情報を非ノード情報として抽出することができる。
(プロパティ情報取得)
次に、図5−5を用いて、図4−2のS134のプロパティ情報取得処理の一例を説明する。プロパティ情報取得部134は、ファイル情報を読み込み(S1341)、ドキュメント情報を読み込み(S1342)、非ノード情報を読み込み(S1343)、帳票構造ルール121を読み込む(S1344)。そして、プロパティ情報取得部134は、読み込んだ帳票構造ルール121に従って非ノード情報から帳票メタ情報を生成する(S1345)。帳票メタ情報とは、帳票のタイトル、日付、様式等の帳票に付随する情報である。
例えば、プロパティ情報取得部134は、帳票構造ルール121のメタ情報生成ルール(図16−1の(a)参照)に従い、非ノード情報の文字列の区切り記号(例えば、「:」や「/」等)や文字列の内容をもとに帳票メタ情報を生成する。例えば、「氏名:xxx」という非ノード情報があれば、「氏名」という帳票メタ情報を生成する。また、プロパティ情報取得部134は、非ノード情報に含まれる文字列(例えば、「様式」、「氏名」)や特殊文字(例えば、「〒」、「TEL」)、データ型、フォーマット等が分かっていればそのデータ型やフォーマット等をもとに、帳票メタ情報を生成してもよい。例えば、日付や社員番号等のデータ型が予めわかっていれば、プロパティ情報取得部134はそのデータ型により、「日付」や「社員番号」という帳票メタ情報を生成する。
S1345の後、プロパティ情報取得部134は、各属性情報(つまり、ファイル情報、ドキュメント情報および帳票メタ情報)をプロパティ情報として集約し(S1346)、帳票構造構築部143に出力する(S1347:プロパティ情報出力)。
このようにすることでプロパティ情報取得部134は、帳票ファイルのプロパティ情報を取得することができる。
なお、S1347においてプロパティ情報は、例えば、図6に示すように、ファイル情報、ドキュメント情報および帳票メタ情報が関連付けられた状態で帳票構造構築部143へ出力される。その後、帳票構造構築部143は、このプロパティ情報に、木構造推定部14により生成された木構造データ(符号601,602)を統合して、帳票データベース122に出力する。
(隣接エッジ生成)
次に、図7−1および図7−2を用いて、図4−2のS135の隣接エッジ生成処理の一例を説明する。隣接エッジ生成部135は、図4−2のS133で生成されたノード情報を読み込み(S1351)、帳票構造ルール121を読み込む(S1352)。そして、隣接エッジ生成部135は、帳票構造ルール121に従い、各ノード間の隣接エッジを求め(S1353)、隣接関係をチェックする(S1354)。その後、隣接エッジ生成部135は、ノード情報にS1353で生成した隣接エッジ(隣接エッジ情報)を追加し(S1355)、隣接エッジ生成部135は隣接エッジ情報が追加されたノード情報を包含エッジ生成部136に出力する(S1356)。
例えば、隣接エッジ生成部135は、まず、各ノードのノード情報を参照して、ノードごとに、当該ノードの上、下、左、右方向の隣接ノードを示した情報(隣接ベクトル)を生成する。なお、当該ノードに隣接ノードがある場合には、隣接ベクトルに隣接ノードのインデックス情報を保持させる。隣接ノードがない場合には、隣接ベクトルにその旨(例えば、「0」)を記載する。例えば、図7−2に示す「担当者」ノードの上、下、左に隣接ノードはないが、右に「名前」ノードと「所属」ノードが隣接する場合、隣接エッジ生成部135は、その旨を示す隣接エッジ情報を、「担当者」ノードのノード情報に追加する。
このようにすることで隣接エッジ生成部135は、各ノードの隣接関係を示す隣接エッジを生成することができる。
(各ノード間の隣接エッジを求める処理)
次に、図7−3および図16−3を用いて、図7−1のS1353の各ノード間の隣接エッジを求める処理の一例を説明する。隣接エッジ生成部135は、図7−1のS1351で読み込んだノード情報を参照して、未探索のノードX,Yを定義すると(S13532)、ノードXとノードYが、隣接関係に関する帳票構造ルール121(図16−1の(a)の隣接エッジ生成ルール)を満たすか否かを判定する(S13533)。S13533において、隣接エッジ生成部135が、ノードXとノードYについて隣接関係に関する帳票構造ルール121を満たすと判定したとき(S13533でYes)、ノードX,Yに対して隣接方向に隣接エッジを張る(S13534)。そして、隣接エッジ生成部135は、全てのノード間の隣接関係をチェックしたと判定すると(S13535でYes)、隣接エッジ情報を出力する(S13536)。一方、S13533において、隣接エッジ生成部135がノードXとノードYについて隣接関係に関する帳票構造ルール121を満たさないと判定したとき(S13533でNo)、S13534をスキップしてS13535へ進む。一方、隣接エッジ生成部135は、まだノード間の隣接関係をチェックしていないものがあると判定すると(S13535でNo)、S13532へ戻る。
なお、上記の隣接エッジ生成ルールは、例えば、図16−3に示すノードXとノードYについて、(1)ノードXのy座標範囲がノードYのy座標の範囲を包含し、かつ、(2)ノードXのx座標の終点がノードYのx座標の始点と一致するときノードXとノードYについて隣接関係があるとみなす、というルールである。つまり、図16−3に示すノードXとノードYについて、ノードXの左上座標をX(x1,y1)、右下座標をX(x2,y2)とし、ノードYの左上座標をY(x1,y1)、右下座標をY(x2,y2)とするときに、(1)X(*,y1)≦Y(*,y1)かつX(*,y2)≧Y(*,y2)であり、(2)X(x2,*)=Y(x1,*)であるとき、隣接エッジ生成部135は、ノードXとノードYについて隣接関係があるとみなす。
なお、上記は右方向(横方向)の隣接エッジ生成ルールであるが、下方向(縦方向)の隣接エッジ生成ルールについても同様に定義される。このように隣接エッジ生成部135がノードの右方向、下方向の隣接エッジを生成することで、対となる(当該ノードに隣接する)ノードの左、上方向の隣接エッジも取得できる。
このようにすることで隣接エッジ生成部135はノード間の位置関係に基づき隣接エッジを生成することができる。
(隣接関係をチェックする処理)
次に、図7−4および図16−4を用いて、図7−1のS1354の各ノード間の隣接関係をチェックする処理の一例を説明する。隣接エッジ生成部135は、S13536で出力された隣接エッジ情報を読み込み(S13541)、未確認のノードXについて隣接方向kを定義する(S13542)。なお、隣接方向kは、横方向、縦方向のいずれかを示し、例えば、横方向であればk=0とし、縦方向であればk=1とする。次に、隣接エッジ生成部135は、ノードXのk方向の隣接エッジが帳票構造ルール121(図16−1の(b)の隣接エッジチェックルール)を満たし(S13543でNo)、全ノード、全隣接方向を確認済みであれば(S13545でYes)、隣接エッジ情報を出力する(S13546)。一方、ノードXのk方向の隣接エッジが帳票構造ルール121(図16−1の(b)の隣接エッジチェックルール)を満たさなければ(S13543でYes)、当該隣接エッジを削除し(S13544)、S13545へ進む。また、S13545でいずれかのノードまたはいずれかの隣接方向を確認していなければ(S13545でNo)、S13541へ戻る。
なお、上記の隣接エッジチェックルールは、例えば、図16−4に示すノードXについて、(1)ノードXの右側に位置する全ノードのy座標がノードXのy座標の範囲内あり(1つでも満たさないノードがあれば不成立)、かつ、(2)ノードXの左にあるノードは1つ以下であるとき、ノードXに関する隣接エッジの修正は必要ないとみなす、というルールである。例えば、図16−4の符号1601に示すようにノードXの右側に位置するノードがノードYのみであり、このノードYのy座標がノードXのy座標に包含されていれば、隣接エッジ生成部135は、前記した(1)の条件を満たすと判断する。一方、符号1602に示すようにノードXの右側に位置するノードがノードY,Zであり、ノードYのy座標がノードXのy座標に包含されていなければ、前記した(1)の条件を満たさないと判断する。また、符号1603に示すようにノードXの左側に位置するノードがノードWのみであれば、隣接エッジ生成部135は、前記した(2)の条件を満たすと判断する。一方、符号1604に示すように、ノードXの左側に位置するノードがノードW,Vの2つであるとき、隣接エッジ生成部135は、前記した(2)の条件は満たさないと判断する。
なお、上記は右方向(横方向)の隣接エッジチェックルールであるが、下方向(縦方向)の隣接エッジチェックルールについても同様に定義される。
このようにすることで隣接エッジ生成部135は生成した隣接エッジについて帳票上の隣接関係として不適切な隣接関係を含む場合、これを修正することができる。
(包含エッジ生成)
次に、図8および図16−5を用いて、図4−2のS136の包含エッジ生成処理の一例を説明する。包含エッジ生成部136は、図4−2のS135で生成された隣接エッジ情報を含むノード情報を読み込み(S1361)、また、帳票構造ルール121を読み込む(S1362)。そして、包含エッジ生成部136は、未探索のノードX,Y、隣接方向kを定義すると(S1363)、任意のノードXと他のノードYとk方向(縦/横)方向について、包含関係に関する帳票構造ルール121(図16−1の(a)の包含エッジ生成ルール)を満たすか否かを判定する(S1364)。ここで、包含エッジ生成部136が任意のノードXと他のノードYとk方向(縦/横)方向について、包含関係に関する帳票構造ルール121を満たしていれば(S1364でYes)、ノードX,Y間に包含エッジを張る(S1365)。一方、包含エッジ生成部136が任意のノードXと他のノードYとk方向(縦/横)方向について、包含関係に関する帳票構造ルール121(図16−1の(a)の包含エッジ生成ルール)を満たしていなければ(S1364でNo)、S1365をスキップしてS1366へ進む。S1366で、全てのノード間の包含関係を確認済みであれば(S1366でYes)、ノード情報に包含エッジ情報を追加し(S1367)、当該ノード情報をノードクラスタ部138に出力する(S1368)。一方、まだいずれかのノード間の包含関係を確認済みでなければ(S1366でNo)、S1363へ戻る。
なお、上記の包含エッジ生成ルールは、例えば、(1)ノードXの右方向に隣接するノードが2つ以上ある。(2)ノードXの右方向に隣接するノードのy座標が全てノードXのy座標の範囲にある。(3)ノードXの右方向に隣接するノードのy座標のいずれか1つがノードXの始点のy座標と重なり、かつノードXの右方向に隣接するノードのy座標のいずれか1つがノードXの終点のy座標と重なる。という3つの条件を全て満たすとき、ノードXと、このノードXの右方向に隣接するノード(および当該ノードに隣接する一連のノード)について包含関係がある、とみなすルールである。
この包含エッジ生成ルールによれば、例えば、図16−5の符号161に示すノードXと、ノードXの右方向に隣接するノード(ノードY,Z,U)および当該ノードの右方向に隣接する一連のノード(ノードW,V,T)について、包含エッジ生成部136は包含関係があるとみなす。すなわち、上記の例でいうと、包含エッジ生成部136は、ノードX、ノードY,Z,U,W,V,Tに包含関係がある、とみなす。
なお、例えば、図16−5の符号161に示すノード群のうちノードUが欠けた状態のとき(符号162参照)、上記の(1)および(2)の条件を満たすが、上記の(3)に示す「ノードXの右方向に隣接するノードのy座標のいずれか1つがノードXの終点のy座標と重なる」という条件を満たさないので、包含エッジ生成部136は、ノードX、ノードY,Z,W,V,Tには包含関係がないとみなす。
なお、上記は右方向(横方向)の包含エッジ生成ルールであるが、下方向(縦方向)の包含エッジ生成ルールについても同様に定義される。例えば、下方向(縦方向)の包含エッジ生成ルールは、(1)ノードXの下方向に隣接するノードが2つ以上ある。(2)ノードXの下方向に隣接するノードのx座標が全てノードXのx座標の範囲にある。(3)ノードXの右方向に隣接するノードのx座標のいずれか1つがノードXの始点のx座標と重なり、かつノードXの右方向に隣接するノードのx座標のいずれか1つがノードXの終点のx座標と重なる。という3つの条件を全て満たすとき、ノードXと、このノードXにの下方向に隣接するノード(および当該ノードに隣接する一連のノード)について包含関係がある、とみなすルールである。
このようにすることで包含エッジ生成部136は、各ノードの包含関係を示す包含エッジを生成することができる。
(ノードクラスタに分類する処理)
次に、図10−1、図10−2および図10−3を用いて、図4−1のS3のノードクラスタに分類する処理の一例を説明する。ノードクラスタ部138は、図4−1のS2のグラフ生成処理で生成されたノード情報を読み込み(S1381)、帳票構造ルール121を読み込む(S1382)。そして、ノードクラスタ部138は帳票構造ルール121(図16−1の(a)に示すノードクラスタ生成ルール)に従い、任意のノードXを始点として他のノードYのクラスタリングを行う(S1383)。その後、ノードクラスタ部138はクラスタリングされていないノードがあるか否かを確認し(S1384)、クラスタリングされていないノードがあれば(S1384でYes)、クラスタリングされていないノードをノードXとして選択し(S1385)、S1383に戻る。一方、ノードクラスタリングされていないノードがなければ(S1384でNo)、ノードクラスタ部138はノードクラスタを木構造推定部14に出力する(S1386)。
なお、上記のノードクラスタ生成ルールは、例えば、あるノードの隣接エッジについて、当該ノードに連結しているノード群をノードクラスタとみなす、というルールである。また上記のルールに、例えば、当該ノードに連結しているノード群のうち、所定の罫線(例えば、太線や赤色の罫線)で分断されたノードについては別のノードクラスタとみなすというルールや、所定の塗りつぶし色(例えば、灰色)のノードは同じノードクラスタとみなすというルールを組み合わせてもよい。
ノードクラスタ部138は、このようなノードクラスタ生成ルールに従い、ノードクラスタへの分類を行うことで、例えば、図10−2に示すように、同じ帳票ファイルのシート内の表について物理的に離れているものをノードクラスタ1,2に分けることができる。その結果、木構造推定部14は、同じシート内の帳票(表)のうち、物理的に離れているものについてそれぞれ別個の木構造データを生成することができる。
(任意のノードXを始点とした他のノードYのクラスタリング処理)
なお、図10−1のS1383の処理は、例えば、図10−3に示す処理手順により行われる。まず、ノードクラスタ部138は、ノードXのノード情報を読み込むと(S13831)、ノードXを始点として他のノードYを探索し(S13832)、ノードYを発見できなかったとき(S13833でNo)、ノードYがクラスタリング済みか否かを判定し(S13834)、ノードYがクラスタリング済みでなければ(S13834でNo)、ノードYをノードXと同じクラスタ(ノードクラスタ)に分類し、ノードYに分類済みのフラグをたてる(S13835)。その後、S13836へ進む。S13833でノードYを発見できたとき(S13833でYes)、S13839へ進む。またノードYがクラスタリング済みであれば(S13834でYes)、S13836へ進む。
S13836において、ノードクラスタ部138は、全ノードを探索したとき(SS13836でYes)、ノードXに分類済みフラグをたて(S13837)、ノードクラスタを出力する(S13838)。一方、まだ探索していないノードがあるとき(S13836でNo)、未探索のノードをノードYとして定義し(S13839)、S13832へ戻る。
このようにすることで、ノードクラスタ部138は、各ノードをノードクラスタに分類することができる。
(部分木パターン生成処理)
次に、図12−1〜図12−5、図16−6および図16−7を用いて、図4−3のS140の部分木パターン生成処理の一例を説明する。部分木パターン生成部140は、図4−1のS3で分類されたノードクラスタのノード情報を読み込み(S1401)、帳票構造ルール121を読み込む(S1402)。そして、部分木パターン生成部140は、ノードクラスタ内の包含ノードの集合を取得し、探索済包含ノード集合に{φ}を設定する(S1403)。なお、包含ノードとは、ノード間の包含関係において他のノードを包含する側のノードであり、例えば、図16−5の符号161に示すノード群のうちノードXが包含ノードに相当する。
次に、包含エッジ生成部136は包含ノードの階層毎にC(X,k)をレベル分けする。また最大階層をmとし、n(包含ノードの階層)に「0」を設定する(S1404)。
なお、上記のC(X,k)は、包含ノードであるノードXがk方向に包含するノードの集合を示す。例えば、ノードXが縦方向に包含するノード集合はC(X,1)であり、横方向に包含するノード集合はC(X,0)である。また、上記の階層は、包含ノードが入れ子構造になっている場合の階層を示し、入れ子になる包含ノードがない場合は「1」であり、ある場合は「その入れ子構造の数+1」である。例えば、図12−2に示すノードクラスタは入れ子になる包含ノードが1つなので、階層は「2」である。
次に、部分木パターン生成部140はレベルnのC(X,k)について部分木パターンを取得し(S1405)、探索済包含ノード集合にレベルnの包含ノードを追加する(S1406)。そして、部分木パターン生成部140はnの値をインクリメントして(S1407)、n>m、かつ、未探索の包含ノードが存在しない場合(S1408でYes)、包含ノード集合の部分木パターンを木構造データ構築部141に出力する(S1409)。一方、n>mではない、または、未探索の包含ノードが存在する場合(S1408でNo)、S1405へ戻る。
このようにすることで部分木パターン生成部140は、ノードクラスタ内で包含ノードが入れ子構造になっている場合でも、階層ごとの部分木パターンを取得することができる。
(部分木パターン取得処理)
次に、図12−3を用いて、図12−1のS1405の部分木パターンの取得処理の一例を説明する。部分木パターン生成部140は、レベルnのC(X,k)を読み込み(S14051)、帳票構造ルール121を読み込む(S14052)。そして、部分木パターン生成部140は、C(X,k)の部分木パターンに{φ}を設定し(S14053)、nが1以上であれば(S14054のYes)、C(X,k)に含まれる直近階層の包含ノード(ノードX´)について、C(X´,k)をダミーノードとみなす(S14055)。例えば、部分木パターン生成部140は、図12−2に示すノード群のうち、符号1201に示すノード群を、図12−3の吹き出し1202に示すように1つのノード(ダミーノード)とみなす。なお、S14054でnが1以上でなければ(S14054でNo)、S14059へ進む。
次に、部分木パターン生成部140は、C(X,k)について木構造変換処理を行い(S14056)、部分木パターンが取得できれば(S14057でYes)、C(X,k)の部分木パターンに当該部分木パターンを追加する(S14058)。一方、S14057で部分木パターンが取得できなければ(S14057でNo)、S14059へ進む。
次に、部分木パターン生成部140は、C(X,k)に含まれる包含ノードがないとみなし(S14059)、S14056と同様にC(X,k)について木構造変換処理を行い(S14060)、部分木パターンが取得できれば(S14061でYes)、C(X,k)の部分木パターンに当該部分木パターンを追加する(S14062)。そして、部分木パターン生成部140は、C(X,k)の部分木パターンを出力する(S14063)。一方、部分木パターンが取得できなければ(S14061でNo)、S14062をスキップして、S14063へ進む。
このようにすることで部分木パターン生成部140は、ノードクラスタ内で包含ノードが入れ子構造になっている場合に、階層ごとの部分木パターンと、ノードクラスタ全体の部分木パターンとの両方の部分木パターンを取得できる。
(C(X,k)についての木構造変換処理)
次に、図12−4を用いて、図12−3のS14056およびS14060におけるC(X,k)についての木構造変換処理の一例を説明する。部分木パターン生成部140は、C(X,k)を読み込み(S140601)、木構造生成に関する帳票構造ルール121を読み込む(S140602)。そして、部分木パターン生成部140は、木構造生成に関する帳票構造ルール121(図16−1の(a)の木構造生成ルール)に従い、各ノードの隣接エッジの修正と項目属性の設定を行う(S140603)。
なお、上記の木構造生成ルールは、例えば、以下の(1)〜(4)に示す4つの条件からなる。すなわち、(1)包含ノードを除いて下位(この場合、右側)に隣接エッジは1本のみである。包含ノードを除いて下位(この場合、右側)に隣接エッジが2本以上ある場合、部分木パターン生成部140は、その隣接エッジをカットする。例えば、部分木パターン生成部140は、図16−6の(1)に示すノードaとノードb,cを接続する隣接エッジをカットする。
(2)包含ノードの下位のノードはすべて包含ノードを上位に持つ。(1)の後、包含ノードを除いて上位(この場合、左側)の隣接エッジを持たないノードがある場合、部分木パターン生成部140は、k方向に包含ノード(ノードX)と隣接エッジを張る。例えば、部分木パターン生成部140は、図16−6の(2)に示すノードXとノードb,cを接続する隣接エッジを張る。
(3)下位の隣接エッジがある場合の項目属性は「項目名」、ないノードの項目属性は「帳票データ」である。(2)の後、部分木パターン生成部140は、下位の隣接エッジがないノードの項目属性を「帳票データ」に設定する。例えば、部分木パターン生成部140は、図16−6の(3)に示すノードa,d,e,fの項目属性を「帳票データ」に設定する。
(4)隣接エッジが1本のノードが2つ以上連結されている部分を含む場合、表型または列挙型または隣接エッジを張るべきでない(木構造不適合)。(1)〜(3)の後、隣接エッジが1本のノードが2つ以上連結されている部分を含む場合、表型・列挙型推定ルール(詳細は後記)に従い、包含ノードを含むノード群について表型か列挙型かの推定(判断)を行う。例えば、部分木パターン生成部140は、図16−6の(4)の符号1610に示す隣接エッジが1本のノードが2つ以上連結されている一連のノード群を発見した場合、符号1610に示すノード群について表型・列挙型推定ルール(詳細は後記)による表型か列挙型かの推定(判断)対象とする。
図12−4のS140603の後、部分木パターン生成部140は、S140603により設定された項目属性が「帳票データ」のノードから未探索のノードZを選択し(S140604)、ノードZからノードXまでを辿る(S140605)。このときのノードZからノードXまでの経路をroute(X,Z)とする。そして、部分木パターン生成部140は、表型・列挙型推定ルール(図16−1の(b)参照)に従い、表型・列挙型となる経路(route(X,Z))があるか否かを判定(推定)し(S140606)、表型・列挙型となる経路(route(X,Z))があれば(S140606のYes)、表型・列挙型推定に関する帳票構造ルール121(表型・列挙型推定ルール)に従って、表型・列挙型の設定を行う(S140607)。そして、S140609へ進む。一方、表型・列挙型となる経路(route(X,Z))がなければ(S140606のNo)、表型・列挙型となる経路(route(X,Z))上のノードZ以外の項目属性を「項目名」に設定し(S140608)、S140609へ進む。
なお、上記の表型・列挙型推定ルールは、例えば、以下の(1)〜(4)に示す4つの条件からなる。(1)ノードXが包含するノードが格子状の連結関係を持つ。例えば、部分木パターン生成部140は、図16−7の(1)に示すようにノードXが包含するノードが格子状の連結関係を持つとき、これらのノードを、表型・列挙型推定対象とする。
(2)(1)の条件を満たす場合において、ノードXに隣接しないノードに「項目名」のノードが存在するならば「列挙型」か「木構造不適合」と判断する。例えば、部分木パターン生成部140は、図16−7の(2)に示すようにノードXに隣接しないノードに「項目名」のノードが存在するとき、「列挙型」か「木構造不適合」と推定する。
(3)(1)の条件を満たすが、(2)の条件を満たさない場合において、ノードXが包含する各ノードの端点が隣接する他のノードのいずれかの端点と重なるならば「表型」と推定する。例えば、部分木パターン生成部140は、図16−7の(3)に示すようにノードXが包含する各ノードの端点が隣接する他のノードのいずれかの端点と重なっていれば「表型」と推定する。
(4)(1)および(2)の条件を満たす場合において、ノードXを除いたノードから末端のノードまでのノードの個数が偶数であれば「列挙型」と推定し、奇数であれば「木構造不適合」と推定する。例えば、部分木パターン生成部140は、図16−7の(4)に示すようにノードXを除いたノードから末端のノードまでのノードの個数が偶数(4個)であれば「列挙型」と判断し、奇数(3個)であれば「木構造不適合」と判断する。つまり、図16−7の(4)に示すように「列挙型」であれば、「項目名」と「帳票データ」とがペアの構造となるが、「項目名」に対しペアとなる「帳票データ」がない場合、帳票の木構造として不自然であるので、部分木パターン生成部140は、このようなノード群については「木構造不適合」と推定する。上記のようにして、部分木パターン生成部140はノード群が表型か列挙型かそもそも木構造として不適合かの推定を行う。
そして、部分木パターン生成部140は、上記の表型・列挙型推定ルールに従い、表型と推定したノード群については表型の項目属性の割当と隣接エッジの修正を行い(図12−5の(a)参照)、列挙型と推定したノード群については列挙型の項目属性の割当と隣接エッジの修正を行う(図12−5の(b)参照)。
図12−4のS140607の後、部分木パターン生成部140は、S140607においてC(X,k)を表型または列挙型に変換できた場合(S140609でYes)、S140604で選択したノードZを探索済みとする(S140610)。そして、項目属性が「帳票データ」のノード全てを探索済みであれば(S140611でYes)、部分木パターン生成部140は、C(X,k)の部分木パターンを出力し(S140612)、項目属性が「帳票データ」のノードに探索していないノードがあれば(S140611でNo)、S140604に戻る。
一方、S140609において、部分木パターン生成部140は、C(X,k)を表型または列挙型に変換できなかった場合(S140609でNo)、C(X,k)について木構造条件を満たさないと判断する(S140613)。この場合、部分木パターンの出力は行わない。
このようにすることで部分木パターン生成部140は、包含ノードに包含されるノード群(C(X,k))について、表型か列挙型かを考慮しつつ、各ノードの隣接エッジの修正と項目属性の設定を行う。また、部分木パターン生成部140は、木構造条件(帳票としての木構造の特性)を満たさないノード群については、部分木パターンとして出力しない。その結果、部分木パターン生成部140は、精度の高い部分木パターンを生成することができる。
(木構造データ構築処理)
次に、図13を用いて、図4−3のS141の木構造データ構築処理を説明する。木構造データ構築部141は、S140で生成された各包含ノードの部分木パターンを読み込み(S1411)、ノードクラスタのノード情報を読み込み(S1412)、帳票構造ルール121を読み込む(S1413)。そして、木構造データ構築部141は、木構造データの集合に{φ}を設定した後(S1414)、ノードの重複がないような部分木パターンの組み合わせを求める(S1415)。その後、木構造データ構築部141は、部分木パターンの組み合わせ群から、未確認の部分木パターンの組み合わせを選ぶ(S1416)。つまり、後記するS1419の処理を行っていない部分木パターンの組み合わせを選ぶ。その後、木構造データ構築部141は、S1412で読み込んだノードクラスタのノード情報を参照して、S1416で選んだ部分木パターンの組み合わせについて、不足しているノードを追加する(S1417)。
次に、木構造データ構築部141は、S1417までの処理により生成された部分木パターンの組み合わせ(およびそれに追加されたノード)の包含エッジ、隣接エッジを参照しながら木構造を生成する(S1418)。
そして、木構造データ構築部141は、S1418で生成された木構造について、木構造の条件に関する帳票構造ルール121(図16−1の(b)の木構造条件ルール)に従い、木構造の条件を満たすか否かを判断し(S1419)、木構造の条件を満たせば(S1419でYes)、当該木構造を木構造データに追加する(S1520)。その後、全ての部分木パターンの組み合わせを確認していれば(S1521でYes)、木構造データ構築部141は、木構造データを木構造選定部142に出力する(S1522)。
なお、木構造データ構築部141が、S1418で生成された木構造が木構造の条件を満たさないと判断したとき(S1419でNo)、S1416へ戻る。また、木構造データ構築部141が、S1521で、まだ確認していない部分木パターンの組み合わせがあるときも(S1521でNo)、S1416へ戻る。
なお、上記の木構造条件ルールは、例えば、以下の(1)〜(3)に示す3つの条件からなる。すなわち、(1)「項目名」のノード間のエッジは1対多。(2)「項目名」のノードと「帳票データ」のノード間のエッジは1対1。ただし、部分木パターン生成部140により表型と判断されたノード群の場合は、1対多となる。(3)「帳票データ」のノードは下位のノードを持たない。以上の3つの条件を満たすとき、木構造データ構築部141は、当該木構造を木構造の条件を満たすと判断する。
(木構造データ選定処理)
次に、図14−1を用いて、図4−3のS142の木構造データ選定処理を説明する。木構造選定部142は、木構造データ構築部141から出力された木構造データを読み込む(S1421)。ここで、読み込んだ木構造データが1種類でなければ(S1422でNo)、木構造データ選定に関する帳票構造ルール121を読み込み(S1423)、木構造データ選定に関する帳票構造ルール121(図16−1の(b)の木構造データ選定ルール)に従い、木構造データの選定処理を行い(S1424)、選定した木構造データを出力する(S1425)。一方、読み込んだ木構造データが1種類であれば(S1422でYes)、木構造選定部142は、読み込んだ木構造データを出力する(S1425)。
図14−2を用いて、図14−1のS1424における木構造データ選定ルールに従った、木構造データの選定処理の例を説明する。
例えば、木構造選定部142は、図14−2の(a)に示すように複数の木構造データ間の差分情報をユーザに表示し、ユーザが修正した情報を利用して木構造データを選定する。すなわち、木構造選定部142は、各木構造データのノード情報の差分をとり(S14241)、ユーザ側に結果通知(例えば、「異常」があることの通知)を行う(S14242)。そして、S14242の後、木構造選定部142は、例えば、木構造データの差分情報(例えば、生成された複数の木構造データを比較して得られるノードの項目属性や、包含エッジにおける包含関係、隣接エッジにおける隣接方向等の違いを示した情報)を表示した後、ユーザからGUI(Graphical User Interface)等により木構造修正情報の入力を受け付けると(S14243)、木構造選定部142は、この木構造修正情報に基づき木構造データを修正し、修正した木構造データを選定する(S14244)。
このようにすることで、複数の木構造データが生成されたときに、木構造選定部142はユーザが所望するような修正を加味した木構造データを出力することができる。
また、例えば、木構造選定部142は、図14−2の(b)に示すように、2以上の帳票ファイルを処理する場合に、1つの帳票ファイルから複数の木構造データが生成されれば、全て(またはある一定の)帳票ファイルの処理が行われた後にユーザに処理を求めるようにしてもよい。例えば、木構造選定部142は、複数の木構造データが出力された場合に各木構造データのノード情報の差分をとると(S14245)、木構造データの差分情報を出力(キャッシュ)し(S14246)、この処理中に「帳票として情報を登録しない(つまり、当該木構造データを帳票データベース122に登録しない)」旨をユーザに表示する(S14247)。そして、木構造選定部142は、全ての帳票ファイル群を処理したか否かを判断し(S14248)、未処理の帳票ファイルがあれば(S14248のNo)、未処理の帳票ファイル(帳票)を処理する(S14249)。つまり、S14245以降の処理を行う。また、木構造選定部142は、全ての帳票ファイル群を処理したと判断したとき(S14248でYes)、S14246で出力された木構造データの差分情報を読み込み(S14250)、ユーザ側に結果通知を行う(S14251)。例えば、木構造選定部142は、ユーザ側に帳票ファイルそれぞれの木構造データの差分情報の通知を行う。その後、ユーザはこれらの帳票ファイルの木構造データの差分情報に対して図14−2(a)の処理を実施するか、帳票ファイルから木構造データへの変換を行わないかを決定する。
このようにすることで、木構造選定部142は、2以上の帳票ファイルの処理を行う場合に、他の帳票ファイルの選定・変換処理に影響を与えずに全帳票ファイルの処理を実行できる。また、複数の木構造データが生成されたときに、木構造選定部142はその差分情報をまとめてユーザに表示することができる。
また、例えば、木構造選定部142は、図14−2の(c)に示すように、複数の木構造データのうち最もシンプルな構造の木構造データを選定してもよい。例えば、木構造選定部142は、各木構造データについて構造の複雑さを示す値を計算する(S14252)。そして、木構造選定部142は、構造が最もシンプルな木構造データを選定する(S14253)。例えば、木構造選定部142は、各木構造データにおける包含関係の階層の数をカウントし、その包含関係の階層が最も少ない木構造データを選定する。そして、木構造選定部142は、ユーザ側に木構造データの選定の結果通知を行う(S14254)。
このように木構造データの構造の複雑さに着目して木構造データの選択を行うのは、木構造データ構築部141によりあまりに複雑な構造を持つ木構造データが生成された場合、その木構造データは、実際の帳票ファイルの論理構造とは異なる可能性が高いと推測されるからである。つまり、上記のように複数の木構造データが生成されたときに、木構造選定部142が、最もシンプルな構造の木構造データを選定することで、より実際の帳票ファイルの論理構造に近い木構造データを選定することができる。
(帳票構造構築処理)
次に、図15を用いて、図4−1のS5の帳票構造構築処理を説明する。帳票構造構築部143は、木構造推定部14により出力された木構造データを読み込むと(S1431)、全ノードクラスタの木構造データを取得済みか否かを判定し(S1433)、全ノードクラスタの木構造データを取得済みであれば(S1433のYes)、ノードクラスタを統合する(S1434)。そして、帳票構造構築部143は、プロパティ情報取得部134から出力されたプロパティ情報を読み込み(S1435)、このプロパティ情報を含む帳票構成に木構造データを追加する(S1436)。これを帳票構成情報とする。
例えば、帳票構造構築部143は、図6に示すようにプロパティ情報(ファイル情報+ドキュメント情報+帳票メタ情報)を含む帳票構成に、木構造推定部14にて生成した木構造データを統合する。
その後、帳票構造構築部143は帳票ファイルの全ページ(全シート)について木構造データを取得したことを確認すると(S1437でYes)、S1436で生成した帳票構成情報を帳票データベース122に出力する(S1438)。一方、帳票構造構築部143は帳票ファイルのまだ木構造データを取得していないページがあれば(S1437のNo)、ノード生成部133にて図4−2のS133のノード生成処理を行う(S133)。また、S1433においてまだ木構造データを取得していないノードクラスタがあれば(S1433でNo)、帳票構造構築部143は未取得のノードクラスタを選択し(S1440)、木構造推定部14にて図4−1のS4の木構造推定処理を行う(S4)。
このようにすることで、帳票構造構築部143は各ノードクラスタの木構造データをプロパティ情報と統合した情報(帳票構成情報)を帳票データベース122に登録することができる。
以上説明したデータ構造抽出装置10によれば帳票ファイルの中に縦横の論理構造が混在している場合であっても、帳票ファイルの木構造データを精度よく抽出することができる。また、データ構造抽出部11は、この帳票ファイルの木構造データとプロパティ情報とを対応付けた情報を帳票データベース122に登録することができる。
(その他の実施形態)
なお、データ構造抽出装置10は、帳票ファイルから抽出した項目名を項目名データベース123に登録しておき、新たな帳票ファイルを受け付けたときには、この項目名データベース123を参照して、ノードクラスタのノードの項目属性を付与するようにしてもよい。
このようなデータ構造抽出装置10は、図3の破線で示す項目名登録部137と、項目名データベース123と、項目名割当部139とを備える。
項目名登録部137は、ノード生成部133からノード情報を取得すると、項目名の判断に関する帳票構造ルール121に従い、項目名のノードである可能性の高いノードから文字列を抜き出し、項目名データベース123に登録する。
項目名データベース123は、項目名登録部137により抜き出された文字列(項目名に用いられることが多い文字列)を記憶する。
項目名割当部139は、項目名データベース123を参照して、ノードクラスタの各ノードに対して項目属性(「項目名」か「帳票データ」か)を付与する。
このようなデータ構造抽出装置10によれば、ノードクラスタの各ノードに対し精度よく項目属性を付与することができる。その結果、データ構造抽出装置10は精度のよい木構造データを生成することができる。また、木構造データ生成処理に要する時間を低減できる。
(項目名登録処理)
図9を用いて項目名登録部137の処理手順の例を説明する。項目名登録部137は、ノード生成部133から出力された帳票のノード情報を読み込み(S1371)、項目名判断に関する帳票構造ルール121を読み込む(S1372)。そして、項目名登録部137は、当該帳票のノード情報が項目名の判断に関する帳票構造ルール121を満たすと判断したとき(S1373でYes)、当該帳票をテンプレートとみなし、項目名の判断に関する帳票構造ルール121に従って、各ノードから文字列情報を抜き出す(S1374)。その後、項目名登録部137は、抜き出した文字列から文の構造を省き(S1375)、抜き出した文字列を項目名データベース123に登録する(S1376)。一方、項目名登録部137は、当該帳票のノード情報が項目名の判断に関する帳票構造ルール121を満たさないと判断したとき(S1373でNo)、処理を終了する。
上記の項目名の判断に関するルールは、例えば、以下の(1)〜(3)のいずれかの条件を満たすとき、ノード情報から文字列情報を抽出すると判断する、というルールである。(1)ノードの文字列情報が空(null)のノードが閾値以上(例えば、帳票ファイル全体の50%以上のノードに対して)ある。(2)ノードに指定した塗りつぶし色、または白、透明以外のいずれかの塗りつぶし色が閾値以上(例えば、帳票ファイル全体数の50%以上のノードに対して)使われている。(3)ユーザにより帳票ファイルがテンプレートであると定義される。また、(1)の場合、項目名の登録に関し、項目名登録部137は、文字情報が空でないノードの文字列を全て項目名として登録するというルール、(2)の場合、項目名登録部137は、指定した塗りつぶし色、または白、透明以外のいずれかの塗りつぶし色の文字列を項目名として登録するというルールもさらに備える。
このようにすることで、項目名割当部139は、より項目名である可能性の高い文字列情報を項目名データベース123に登録することができる。
(項目名割当処理)
図11を用いて項目名割当部139の処理手順の例を説明する。項目名割当部139は、ノードクラスタのノード情報を読み込み(S1391)、項目名データベース123の項目名リストを読み込む(S1392)。次に、項目名割当部139は、ノードクラスタの未確認のノードをノードXとし(S1393)、任意のノードXの文字列が項目リスト上に存在すれば(S1394のYes)、ノードXの項目属性に「項目名」を割り当て(S1395)、ノードXの文字列が項目リスト上に存在しなければ(S1394のNo)、ノードXの項目属性を割り当てない(S1396)。S1395、S1396の後、項目名割当部139が全てのノードを確認した(つまり、S1393以降の処理を実行した)と判断すると(S1397でYes)、ノードクラスタのノード情報を部分木パターン生成部140に出力する(S1398)。一方、項目名割当部139において未確認のノードがあれば(S1397でNo)、S1393へ戻る。
このようにすることで、項目名割当部139は、ノードクラスタの各ノードに対し項目属性を付与することができる。
(プログラム)
また、上記実施形態に係るデータ構造抽出装置10が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成し、実行することもできる。この場合、コンピュータがプログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるプログラムをコンピュータに読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、データ構造抽出装置10と同様の機能を実現する制御プログラムを実行するコンピュータの一例を説明する。
図17は、データ構造抽出プログラムを実行するコンピュータを示す図である。図17に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU(Central Processing Unit)1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
メモリ1010は、ROM(Read Only Memory)1011およびRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1110およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。
ここで、図17に示すように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各情報は、例えばハードディスクドライブ1090やメモリ1010に記憶される。
また、データ構造抽出プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、ハードディスクドライブ1090に記憶される。具体的には、上記実施形態で説明したデータ構造抽出装置10が実行する各処理が記述されたプログラムモジュールが、ハードディスクドライブ1090に記憶される。
また、データ構造抽出プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
なお、データ構造抽出プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、制御プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
10 データ構造抽出装置
11 データ構造抽出部
12 記憶部
13 グラフ生成部
121 帳票構造ルール
122 帳票データベース
123 項目名データベース
131 操作インタフェース識別部
132 帳票書式情報取得部
133 ノード生成部
134 プロパティ情報取得部
135 隣接エッジ生成部
136 包含エッジ生成部
137 項目名登録部
138 ノードクラスタ部
139 項目名割当部
140 部分木パターン生成部
141 木構造データ構築部
142 木構造選定部
143 帳票構造構築部

Claims (9)

  1. 帳票の書式情報を参照して、前記帳票の項目名を示すノードおよびデータを示すノードを生成するノード生成部と、
    前記帳票の書式情報を参照して、前記ノード間の隣接関係を示す隣接エッジを生成する隣接エッジ生成部と、
    前記ノードの隣接エッジおよび前記帳票の書式情報を参照して、前記ノードの位置およびサイズから、前記ノード間の縦方向または横方向の包含関係を示す包含エッジを生成する包含エッジ生成部と、
    前記隣接エッジの連結性に基づいて前記ノードをノードクラスタに分類するノードクラスタ部と、
    前記ノードクラスタに分類されたノード群の包含エッジを参照して、前記包含関係を有するノード群について、帳票上の項目名とデータの並びに関する特性を満たすように、前記隣接エッジの修正および各ノードが項目名かデータかの項目属性の設定を行って部分木パターンを生成する部分木パターン生成部と、
    前記部分木パターンを前記ノードの重複がないように組み合わせることにより前記帳票の木構造データを生成する木構造データ構築部と、
    を備えることを特徴とするデータ構造抽出装置。
  2. 前記包含エッジ生成部は、
    前記ノードの隣接エッジおよび前記帳票の書式情報を参照して、前記ノードの右方向に隣接するノードが2つ以上あり、前記ノードの右方向に隣接するノードのy座標が全て前記ノードのy座標の範囲にあり、前記ノードの右方向に隣接するノードのy座標のいずれか1つが前記ノードの始点のy座標と重なり、かつ前記ノードの右方向に隣接するノードのy座標のいずれか1つが前記ノードの終点のy座標と重なるとき、前記隣接するノードおよび当該ノードに隣接するノードを、前記ノードと包含関係のあるノードとして前記包含エッジを生成することを特徴とする請求項1に記載のデータ構造抽出装置。
  3. 前記包含エッジ生成部は、
    前記ノードの隣接エッジおよび前記帳票の書式情報を参照して、前記ノードの下方向に隣接するノードが2つ以上あり、前記ノードの下方向に隣接するノードのx座標が全て前記ノードのx座標の範囲にあり、前記ノードの右方向に隣接するノードのx座標のいずれか1つが前記ノードの始点のx座標と重なり、かつ前記ノードの下方向に隣接するノードのx座標のいずれか1つが前記ノードの終点のx座標と重なるとき、前記隣接するノードおよび当該ノードに隣接するノードを、前記ノードと包含関係のあるノードとして前記包含エッジを生成することを特徴とする請求項1に記載のデータ構造抽出装置。
  4. 前記部分木パターン生成部は、
    前記ノードクラスタに分類されたノード群が、複数の階層にわたる包含関係を有するとき、前記階層ごとに前記部分木パターンを生成することを特徴とする請求項1〜3のいずれか1項に記載のデータ構造抽出装置。
  5. 前記部分木パターン生成部は、
    前記部分木パターンの生成の過程で、格子状に連結されたノード群を検出したとき、前記ノード群のノードそれぞれの項目属性および配置位置に基づき、前記ノード群の示す帳票構造が、項目とデータとが一対一の関係である列挙型か、項目とデータとが一対多の関係である表型かを推定し、推定結果に基づき、前記ノード群の隣接エッジを修正することを特徴とする請求項1〜4のいずれか1項に記載のデータ構造抽出装置。
  6. 前記データ構造抽出装置は、さらに、
    前記ノードのうち項目名である可能性のあるノードから文字列を抜き出し、項目名データベースに登録する項目名登録部と、
    前記項目名データベースに登録された文字列を参照して、前記ノードクラスタの各ノードに対して前記項目属性を付与する項目名割当部とを備えることを特徴とする請求項1〜5のいずれか1項に記載のデータ構造抽出装置。
  7. 前記データ構造抽出装置は、さらに、
    前記木構造データ構築部が、1つの帳票について複数の木構造データを生成したとき、前記複数の木構造データの差分情報を出力する木構造選定部を備えることを特徴とする請求項1〜6のいずれか1項に記載のデータ構造抽出装置。
  8. データ構造抽出装置により実行されるデータ構造抽出方法であって、
    帳票の書式情報を参照して、前記帳票の項目名を示すノードおよびデータを示すノードを生成するステップと、
    前記帳票の書式情報を参照して、前記ノード間の隣接関係を示す隣接エッジを生成するステップと、
    前記ノードの隣接エッジおよび前記帳票の書式情報を参照して、前記ノードの位置およびサイズから、前記ノード間の縦方向または横方向の包含関係を示す包含エッジを生成するステップと、
    前記隣接エッジの連結性に基づいて前記ノードをノードクラスタに分類するステップと、
    前記ノードクラスタに分類されたノード群の包含エッジを参照して、前記包含関係を有するノード群について、帳票上の項目名とデータの並びに関する特性を満たすように、前記隣接エッジの修正および各ノードが項目名かデータかの項目属性の設定を行って部分木パターンを生成するステップと、
    前記部分木パターンを前記ノードの重複がないように組み合わせることにより前記帳票の木構造データを生成するステップと、
    を含んだことを特徴とするデータ構造抽出方法。
  9. 帳票の書式情報を参照して、前記帳票の項目名を示すノードおよびデータを示すノードを生成するステップと、
    前記帳票の書式情報を参照して、前記ノード間の隣接関係を示す隣接エッジを生成するステップと、
    前記ノードの隣接エッジおよび前記帳票の書式情報を参照して、前記ノードの位置およびサイズから、前記ノード間の縦方向または横方向の包含関係を示す包含エッジを生成するステップと、
    前記隣接エッジの連結性に基づいて前記ノードをノードクラスタに分類するステップと、
    前記ノードクラスタに分類されたノード群の包含エッジを参照して、前記包含関係を有するノード群について、帳票上の項目名とデータの並びに関する特性を満たすように、前記隣接エッジの修正および各ノードが項目名かデータかの項目属性の設定を行って部分木パターンを生成するステップと、
    前記部分木パターンを前記ノードの重複がないように組み合わせることにより前記帳票の木構造データを生成するステップと、
    をコンピュータに実行させることを特徴とするデータ構造抽出プログラム。
JP2015041286A 2015-03-03 2015-03-03 データ構造抽出装置、データ構造抽出方法およびデータ構造抽出プログラム Active JP6325472B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015041286A JP6325472B2 (ja) 2015-03-03 2015-03-03 データ構造抽出装置、データ構造抽出方法およびデータ構造抽出プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015041286A JP6325472B2 (ja) 2015-03-03 2015-03-03 データ構造抽出装置、データ構造抽出方法およびデータ構造抽出プログラム

Publications (2)

Publication Number Publication Date
JP2016162275A JP2016162275A (ja) 2016-09-05
JP6325472B2 true JP6325472B2 (ja) 2018-05-16

Family

ID=56847055

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015041286A Active JP6325472B2 (ja) 2015-03-03 2015-03-03 データ構造抽出装置、データ構造抽出方法およびデータ構造抽出プログラム

Country Status (1)

Country Link
JP (1) JP6325472B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6612680B2 (ja) * 2016-06-02 2019-11-27 日本電信電話株式会社 論理関係認識装置、論理関係認識方法および論理関係認識プログラム
CN112313691B (zh) * 2018-06-25 2024-06-28 株式会社工程师论坛 匹配分数计算装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4853891B2 (ja) * 2004-12-27 2012-01-11 公立大学法人広島市立大学 文書構造情報の作成方法

Also Published As

Publication number Publication date
JP2016162275A (ja) 2016-09-05

Similar Documents

Publication Publication Date Title
CN105930159A (zh) 一种基于图像的界面代码生成的方法及系统
US8824798B2 (en) Information processing device, computer readable medium storing information processing program, and information processing method
CN106255979B (zh) 行分割方法
CN111512315A (zh) 文档元数据的按块提取
JP2007095102A (ja) 文書処理装置および文書処理方法
CN113723270A (zh) 基于rpa及ai的文件处理方法及装置
KR101549792B1 (ko) 문서 자동 작성 장치 및 방법
US11321558B2 (en) Information processing apparatus and non-transitory computer readable medium
US10762377B2 (en) Floating form processing based on topological structures of documents
TW200416583A (en) Definition data generation method of account book voucher and processing device of account book voucher
CN112651217B (zh) 论文文档的处理方法、处理装置、电子设备及存储介质
JP2011150466A (ja) 文字列認識装置、文字列認識プログラムおよび文字列認識方法
JP2009122723A (ja) 帳票データ抽出プログラム、帳票データ抽出装置および帳票データ抽出方法
JP6325472B2 (ja) データ構造抽出装置、データ構造抽出方法およびデータ構造抽出プログラム
JP2011070558A (ja) 文書画像処理装置、文書画像処理方法および文書画像処理プログラム
CN114724156B (zh) 表单识别方法、装置及电子设备
WO2016056236A1 (ja) 情報処理装置、情報処理方法、及び、記録媒体
US9524354B2 (en) Device, method, and program for processing data with tree structure
JP2010108208A (ja) 文書処理装置
US10402484B2 (en) Aligning annotation of fields of documents
US9049400B2 (en) Image processing apparatus, and image processing method and program
CN106933844B (zh) 面向大规模rdf数据的可达性查询索引的构建方法
JP2009252185A (ja) 情報検索装置、情報検索方法、制御プログラム及び記録媒体
JP6430919B2 (ja) 罫線枠補正方法、罫線枠補正装置および罫線枠補正プログラム
US10803308B2 (en) Apparatus for deciding whether to include text in searchable data, and method and storage medium thereof

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170307

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180130

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180215

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180410

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180412

R150 Certificate of patent or registration of utility model

Ref document number: 6325472

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150