(57)【要約】【課題】様式が異なる複数の文書を構造化された情報に変換する。【解決手段】文書変換装置１００は、入力された文書の様式を判定する様式判定部１５０と、判定した様式の文書に含まれている表の形式を判定する表形式判定部１６０と、表の形式毎に用意され、対応する形式の表に含まれている情報を構造化された情報に変換する構造化部と、各表の形式と変換指定情報とに基づいて表毎に特定した構造化部により各表に含まれている情報を構造化された情報に変換する情報変換制御部１７０とを備える。【選択図】図１
2013257852.tif 000002
【特許請求の範囲】
【請求項１】
表を含む文書の様式を判定するための様式判定条件情報に基づいて、入力された文書の様式を判定する様式判定手段と、
様式毎にその様式の文書に含まれている各表の形式を特定する表形式特定情報に基づいて、前記様式判定手段が判定した様式の文書に含まれている表の形式を判定する表形式判定手段と、
表の形式毎に用意され、対応する形式の表に含まれている情報を構造化された情報に変換する構造化手段と、
前記表形式判定手段により判定された各表の形式と、表の形式毎に構造化手段を指定する変換指定情報とに基づいて、前記入力された文書に含まれる各表の情報を構造化するための構造化手段を表毎に特定し、特定した構造化手段により、各表に含まれている情報を構造化された情報に変換する情報変換制御手段と、
を備えることを特徴とする文書変換装置。
【請求項２】
前記様式判定手段は、前記様式判定条件情報に含まれる様式を特定する事項と、前記入力された文書に記載された事項とが一致する場合に、前記入力された文書の様式を特定する
ことを特徴とする請求項１に記載の文書変換装置。
【請求項３】
前記表形式判定手段は、前記入力された文書が有する書式情報から各表の形式を特定する表文字列を求め、求めた表文字列が前記表形式特定情報に含まれている場合に、各表の形式を特定する
ことを特徴とする請求項１または２に記載の文書変換装置。
【請求項４】
階層構造表用の構造化手段は、項目を示す項目文字列と前記項目に対応付けられた値を示す値文字列とを有し且つ１つの項目文字列に対応する複数の値文字列が上位階層の値文字列と下位階層の値文字列とを有し且つ階層関係にある前記上位階層の値文字列と前記下位階層の値文字列とが互いにズレた位置に配置される表としての階層構造表、に含まれる複数の値文字列の位置から、前記上位階層の値文字列と前記下位階層の値文字列とが階層関係にあることを求め、求めた階層関係に基づいて、抽出した情報を前記構造化された情報に変換する
ことを特徴とする請求項１ないし３のいずれか１項に記載の文書変換装置。
【請求項５】
表を含む文書の様式を判定するための様式判定条件情報に基づいて、入力された文書の様式を判定する様式判定工程と、
様式毎にその様式の文書に含まれている各表の形式を特定する表形式特定情報に基づいて、前記様式判定工程で判定した様式の文書に含まれている表の形式を判定する表形式判定工程と、
表の形式毎に用意され、対応する形式の表に含まれている情報を構造化された情報に変換する構造化工程と、
前記表形式判定工程で判定された各表の形式と、表の形式毎に構造化工程を指定する変換指定情報とに基づいて、前記入力された文書に含まれる各表の情報を構造化するための構造化工程を表毎に特定し、特定した構造化工程により、各表に含まれている情報を構造化された情報に変換する情報変換制御工程と、
を備えることを特徴とする文書変換方法。
【請求項６】
コンピュータを、
表を含む文書の様式を判定するための様式判定条件情報に基づいて、入力された文書の様式を判定する様式判定手段、
様式毎にその様式の文書に含まれている各表の形式を特定する表形式特定情報に基づいて、前記様式判定手段が判定した様式の文書に含まれている表の形式を判定する表形式判定手段、
表の形式毎に用意され、対応する形式の表に含まれている情報を構造化された情報に変換する構造化手段、
前記表形式判定手段により判定された各表の形式と、表の形式毎に構造化手段を指定する変換指定情報とに基づいて、前記入力された文書に含まれる各表の情報を構造化するための構造化手段を表毎に特定し、特定した構造化手段により、各表に含まれている情報を構造化された情報に変換する情報変換制御手段、
として機能させることを特徴とする文書変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書変換装置、文書変換方法および文書変換プログラムに関する。
【背景技術】
【０００２】
従来より、システム開発等の設計書や、社内申請に用いるビジネス文書等の電子テキスト文書の解析（エラー検出等）に利用するため、電子テキスト文書から必要な情報を抽出し、抽出した情報に属性を付与して構造化された情報を含む構造化文書を生成することが行われている。
【０００３】
電子テキスト文書（入力された文書）をＸＭＬ（eXtensible Markup Language）文書等の構造化文書に変換するために、電子テキスト文書に情報（文字列等）を抽出する範囲を特定可能なマーカーを予め埋め込んでおく技術が知られている。しかしながら、この技術では、マーカーを予め埋め込んだ電子テキスト文書の書式・雛形を予め準備する必要があり、既に作成された文書には適用し難い。また、この技術では、文書作成中にマーカーが削除された場合に情報が抽出できなくなる問題や、マーカーの範囲外に新たに追加した情報が抽出できない問題もある。
また、マーカーが埋め込まれていない電子テキスト文書を構造化文書に変換する技術に関して、以下の特許文献１、２に記載の技術が記載されている。
【０００４】
特許文献１には、表形式データを一部に含む入力文書を構造化文書に変換する文書処理装置に関する技術が記載されている。特許文献１の文書処理装置は、文字列に対応付けられた属性値（項目名、ラベル、セル内容、コメント行）を予め登録しており、入力文書からテキスト要素（ＯＣＲで読み取ったテキストデータの各行の文字列、ＨＴＭＬデータのタグで囲まれた文字列等）を抽出した際に、抽出されたテキスト要素に対応する属性値を付与し、属性値の繰り返し出現回数から実際のテキスト要素の出現パターンを推測して、推測結果を予め設定された出力制約に当てはめて構造化文書（ＸＭＬ文書）を生成する技術が記載されている。
【０００５】
特許文献２には、リレーショナルデータベース（ＲＤＢ）から収集した表形式データ（ＣＳＶデータ）をＸＭＬ文書に変換するデータ構造変換システムに関する技術が記載されている。特許文献２には、１行目が項目名（例えば、「社員番号，名前，部門」）で２行目以降が項目名に対応する情報（例えば、「１，田中，営業」）となる表形式データから各文字列を抽出して、予め設定された変換定義ルールでＸＭＬ文書を生成する技術が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−５３６１２号公報
【特許文献２】特開２００８−９０５００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載の技術では、テキスト要素に付与された属性値の連続性から推測して表形式データの範囲を推測するため、表形式データとそれ以外のデータとを区別できない可能性があり、出力制約から期待されるＸＭＬ文書に変換できない可能性がある。
また、特許文献２に記載の技術では、表形式データが特定の形式の表で構成されていなければ、変換定義ルールから期待されるＸＭＬ文書に変換できない問題がある。
【０００８】
ここで、例えば、システム開発の設計書のような電子テキスト文書は、複数の形式の表の組み合わせである様式が予め設定された表形式データで構成されていることがある。
しかしながら、特許文献１、２に記載の技術では、設計書の表形式データに複数の形式の表が存在することを判別できず、文字列を抽出しても期待される構造化文書に変換できない可能性が高い。
【０００９】
また、このような設計書は、例えば、「要求仕様書」、「機能仕様書」、「外部仕様書」、「テスト仕様書」等の仕様書毎に様式が異なることがある。さらに、システムの規模が大きくなった場合や、多岐に渡る顧客に対応しなければならなくなった場合には、様式の改変が行われることがある。しかしながら、特許文献１、２に記載の技術では、様式が異なる複数の設計書を期待される構造化文書に変換できないだけでなく、様式の改変にも対応できないという問題がある。
【００１０】
本発明は、上述のような事情に鑑みてなされたものであり、様式が異なる複数の文書を構造化された情報に変換することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明の第１の観点に係る文書変換装置は、
表を含む文書の様式を判定するための様式判定条件情報に基づいて、入力された文書の様式を判定する様式判定手段と、
様式毎にその様式の文書に含まれている各表の形式を特定する表形式特定情報に基づいて、前記様式判定手段が判定した様式の文書に含まれている表の形式を判定する表形式判定手段と、
表の形式毎に用意され、対応する形式の表に含まれている情報を構造化された情報に変換する構造化手段と、
前記表形式判定手段により判定された各表の形式と、表の形式毎に構造化手段を指定する変換指定情報とに基づいて、前記入力された文書に含まれる各表の情報を構造化するための構造化手段を表毎に特定し、特定した構造化手段により、各表に含まれている情報を構造化された情報に変換する情報変換制御手段と、
を備えることを特徴とする。
【００１２】
なお、上述の文書変換装置において、
前記様式判定手段は、前記様式判定条件情報に含まれる様式を特定する事項と、前記入力された文書に記載された事項とが一致する場合に、前記入力された文書の様式を特定する
としてもよい。
【００１３】
なお、上述の文書変換装置において、
前記表形式判定手段は、前記入力された文書が有する書式情報から各表の形式を特定する表文字列を求め、求めた表文字列が前記表形式特定情報に含まれている場合に、各表の形式を特定する
としてもよい。
【００１４】
なお、上述の文書変換装置において、
階層構造表用の構造化手段は、項目を示す項目文字列と前記項目に対応付けられた値を示す値文字列とを有し且つ１つの項目文字列に対応する複数の値文字列が上位階層の値文字列と下位階層の値文字列とを有し且つ階層関係にある前記上位階層の値文字列と前記下位階層の値文字列とが互いにズレた位置に配置される表としての階層構造表、に含まれる複数の値文字列の位置から、前記上位階層の値文字列と前記下位階層の値文字列とが階層関係にあることを求め、求めた階層関係に基づいて、抽出した情報を前記構造化された情報に変換する
としてもよい。
【００１５】
また、本発明の第２の観点に係る文書変換方法は、
表を含む文書の様式を判定するための様式判定条件情報に基づいて、入力された文書の様式を判定する様式判定工程と、
様式毎にその様式の文書に含まれている各表の形式を特定する表形式特定情報に基づいて、前記様式判定工程で判定した様式の文書に含まれている表の形式を判定する表形式判定工程と、
表の形式毎に用意され、対応する形式の表に含まれている情報を構造化された情報に変換する構造化工程と、
前記表形式判定工程で判定された各表の形式と、表の形式毎に構造化工程を指定する変換指定情報とに基づいて、前記入力された文書に含まれる各表の情報を構造化するための構造化工程を表毎に特定し、特定した構造化工程により、各表に含まれている情報を構造化された情報に変換する情報変換制御工程と、
を備えることを特徴とする。
【００１６】
また、本発明の第３の観点に係る文書変換プログラムは、
コンピュータを、
表を含む文書の様式を判定するための様式判定条件情報に基づいて、入力された文書の様式を判定する様式判定手段、
様式毎にその様式の文書に含まれている各表の形式を特定する表形式特定情報に基づいて、前記様式判定手段が判定した様式の文書に含まれている表の形式を判定する表形式判定手段、
表の形式毎に用意され、対応する形式の表に含まれている情報を構造化された情報に変換する構造化手段、
前記表形式判定手段により判定された各表の形式と、表の形式毎に構造化手段を指定する変換指定情報とに基づいて、前記入力された文書に含まれる各表の情報を構造化するための構造化手段を表毎に特定し、特定した構造化手段により、各表に含まれている情報を構造化された情報に変換する情報変換制御手段、
として機能させることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、様式が異なる複数の文書を構造化された情報に変換することができる。
【図面の簡単な説明】
【００１８】
【図１】実施形態１に係る文書変換装置の機能構成例を示すブロック図である。
【図２】実施形態１に係る入力文書の一例を示す図である。
【図３】実施形態１に係る出力文書の一例を示す図である。
【図４】実施形態１に係る様式設定ファイルの一例を示す図である。
【図５】図４の続きの図である。
【図６】実施形態１に係る予め設定された表の情報を構造化する一例を示す図であり、（Ａ）は「１行１データ表」の一例を示す図、（Ｂ）は「１列１データ表」の一例を示す図、（Ｃ）は「複数列１データ表」の一例を示す図、（Ｄ）は「複数列１データ表」の一例を示す図、（Ｅ）は様式設定ファイルの「Table」要素の内容の一例を示す図、（Ｆ）は（Ｅ）の「Table」要素の内容で（Ａ）〜（Ｄ）の表が構造化された情報を示す図である。
【図７】実施形態１に係る予め設定された階層構造表の情報を構造化する一例を示す図であり、（Ａ）は入れ子階層の「階層構造表」の一例を示す図、（Ｂ）は分割階層の「階層構造表」の一例を示す図、（Ｃ）は図６（Ｅ）の「Table」要素の内容で（Ａ）の表が構造化された情報を示す図、（Ｄ）は図６（Ｅ）の「Table」要素の内容で（Ｂ）の表が構造化された情報を示す図である。
【図８】実施形態１に係る予め設定された自由記述欄および語句検索表の情報を構造化する一例を示す図であり、（Ａ）は「自由記述欄」の一例を示す図、（Ｂ）は「語句検索表」の一例を示す図、（Ｃ）は様式設定ファイルの「Table」要素の内容の一例を示す図、（Ｄ）は（Ｃ）の「Table」要素の内容で（Ａ）の表が構造化された情報を示す図、（Ｅ）は（Ｃ）の「Table」要素の内容で（Ｂ）の表が構造化された情報を示す図である。
【図９】実施形態１に係る文書変換処理の一例を示すフローチャートである。
【図１０】図９の様式判定処理のサブルーチンの一例を示すフローチャートである。
【図１１】図９の表形式判定処理のサブルーチンの一例を示すフローチャートである。
【図１２】図９の１行１データ表用の構造化処理のサブルーチンの一例を示すフローチャートである。
【図１３】図９の階層構造表用の構造化処理のサブルーチンの一例を示すフローチャートである。
【図１４】図９の自由記述欄用の構造化処理のサブルーチンの一例を示すフローチャートである。
【図１５】図９の語句検索表用の構造化処理のサブルーチンの一例を示すフローチャートである。
【図１６】図６（Ａ）の１列１データ表の項目に階層構造が追加された階層項目付き１行１データ表の一例を示す図である。
【発明を実施するための形態】
【００１９】
以下に、発明を実施するための形態について図面を参照して詳細に説明する。なお、図中同一または相当する部分には同じ符号を付す。
【００２０】
（実施形態１）
図１は、実施形態１に係る文書変換装置の機能構成例を示すブロック図である。
図１に示すように、実施形態１に係る文書変換装置１００は、後述する入力文書ファイル２００（入力された文書）を出力文書ファイル３００（構造化された情報を含む出力する文書）に変換する装置である。文書変換装置１００は、ＰＣ（パーソナルコンピュータ、コンピュータ装置）で構成されている。
図１に示すように、文書変換装置１００は、入力部１１０と、表示部１２０と、記憶部１３０と、制御部１４０とを備える。
【００２１】
入力部１１０は、キーボードとマウスとを備え、文書変換装置１００の使用者（ユーザ）に押下されたキーやボタンに対応付けられた情報を制御部１４０に入力する。
表示部１２０は、ディスプレイ装置を備え、制御部１４０から出力された情報を表示する。
【００２２】
記憶部１３０は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ハードディスクで構成され、制御部１４０が文書変換装置１００の各機能を実行するための各種情報を記憶する。記憶部１３０は、入力文書記憶部１３１と、出力文書記憶部１３２と、様式記憶部１３３とを備える。
【００２３】
図２は、実施形態１に係る入力文書の一例を示す図である。
入力文書記憶部１３１は、文書変換装置１００に入力された入力文書ファイル（以下、単に、「入力文書」とする）２００を記憶する。
【００２４】
入力文書２００は、表計算用のソフトウェア（所謂表計算ソフト）で作成されたファイルで構成されており、行列番号の位置情報と、前記位置情報に対応付けられた位置の要素（セル）の文字列である表文字列とを有する。入力文書２００は、図２に示すように、複数の表文字列で構成された表２０１，２０２，２０３を有する。
【００２５】
ここで、本願では、入力文書記憶部１３１が記憶している全ての入力文書２００は、複数の表（表形式の情報、表形式データ）の組み合わせの形態である様式（入力文書の様式）を有する。すなわち、入力文書２００は、様式を構成する複数の表２０１〜２０３を有する。実施形態１の入力文書２００は、例えば、複数の表文字列で構成されたヘッダ表２０１と、一覧表２０２と、フッタ表２０３とを有する。
【００２６】
また、入力文書２００は、各表２０１〜２０３の表文字列が配置されたセルの位置情報を有する。また、入力文書２００は、各表２０１〜２０３に罫線を付与するための罫線情報と、各表２０１〜２０３に背景色を付与するための背景色情報とを有する。なお、実施形態１の入力文書では、後述する項目文字列２０１ａ〜２０３ａが配置された範囲に背景色が付与されるように背景色情報が予め設定されている。
さらに、入力文書２００は、ファイル名、シート名、印刷用のヘッダ情報、印刷用のフッタ情報を含む属性情報を有する。
【００２７】
実施形態１の各表２０１〜２０３は、項目文字列（項目を示す表文字列）２０１ａ〜２０３ａと、値文字列（項目に対応付けられた値を示す表文字列）２０１ｂ〜２０３ｂとを備える。
ヘッダ表２０１は、１行目（１行１列、２行１列）が連結された要素（連結されたセル）の表文字列と１列目の各表文字列とが項目文字列２０１ａとなり、１列目を除く２行目（２行２列、２行３列）の各表文字列が値文字列２０１ｂとなる表で構成されている。ヘッダ表２０１は、項目文字列２０１ａが、「タイトル１」、「項番」、「項目」で構成され、値文字列２０１ｂが、「１」、「項目１」で構成されている。
【００２８】
一覧表２０２は、１行目の各表文字列が項目文字列２０２ａとなり、２行目および３行目の各表文字列が値文字列２０２ｂとなる表で構成されている。一覧表２０２では、１行目の項目文字列２０２ａが、「項番」、「項目」、「備考」で構成され、２行目の値文字列２０２ｂが、「１」、「左１」、「右１」、「備考１」で構成され、３行目の値文字列２０２ｂが、「２」、「左２」、「右２」、「備考２」で構成されている。
【００２９】
フッタ表２０３は、１行１列の表文字列が項目文字列２０３ａとなり、２行目以降の連結された要素（連結されたセル）の表文字列が値文字列２０３ｂとなる表で構成されている。フッタ表２０３では、項目文字列２０３ａがフッタ表２０３の見出し文字列としての「補足事項」で構成され、値文字列２０３ｂが「補足事項１」で構成されている。
【００３０】
図３は、実施形態１に係る出力文書ファイルの一例を示す図である。
出力文書記憶部１３２は、入力文書２００を変換した出力文書ファイル（以下、単に「出力文書」とする）３００を記憶する。図３に示すように、実施形態１の出力文書３００は、入力文書２００から抽出された表文字列を含むＸＭＬ文書ファイル（以下、単に「ＸＭＬ文書」とする）で構成されている。
【００３１】
出力文書３００は、「Document」要素（Element、エレメント）３１０を有し、「Document」要素３１０は、「Header」要素３２０と、「Body」要素３３０とを内容として有する。「Header」要素３２０は、例えば、入力文書２００のファイル名「様式xxx_タイトル１.yyy」が内容の「FileName」要素３２１を内容として有する。また、「Body」要素３３０は、「ヘッダ表」要素３３１と、「一覧表」要素３４１と、「フッタ表」要素３５１とを内容として有する。
【００３２】
「ヘッダ表」要素３３１は、ヘッダ表２０１の項目文字列２０１ａ（「項番」、「項目」）と値文字列２０１ｂ〜２０３ｂ（「１」、「項目１」）とを内容として有する。実施形態１の「ヘッダ表」要素３３１は、内容が「１」の「項番」要素３３２と、内容が「項目１」の「項目」要素３３３とを内容として有する。
【００３３】
「一覧表」要素３４１は、一覧表２０２の項目文字列２０２ａ（「項番」、「項目」、「備考」）と値文字列２０２ｂ（「１」、「左１」、「右１」、「備考１」、「２」、「左２」、「右２」、「備考２」）とを内容として有する。実施形態１の「一覧表」要素３４１は、第１上位「ClassA」要素３４２と、第２上位「ClassA」要素３４３とを内容として有する。
【００３４】
第１上位「ClassA」要素３４２は、内容が「左１」の「項目」要素３４２ａと、第１下位「ClassA」要素３４２ｂとを内容として有する。第１下位「ClassA」要素３４２ｂは、内容が「右１」の「項目」要素３４２ｃと、第１「DataA」要素３４２ｄとを内容として有する。第１「DataA」要素３４２ｄは、内容が「１」の「項番」項目と３４２ｅと、内容が「備考１」の「備考」項目３４２ｆとを内容として有する。
【００３５】
また、第２上位「ClassA」要素３４３は、第１上位「ClassA」要素３４２と同様に、内容が「左２」の「項目」要素３４３ａと、第２下位「ClassA」要素３４３ｂとを内容として有する。第２下位「ClassA」要素３４３ｂは、第１下位「ClassA」要素３４２ｂと同様に、内容が「右１」の「項目」要素３４３ｃと、第２「DataA」要素３４３ｄとを内容として有する。第２「DataA」要素３４３ｄは、第１「DataA」要素３４２ｄと同様に、内容が「２」の「項番」項目と３４３ｅと、内容が「備考２」の「備考」項目と３４３ｆとを内容として有する。
【００３６】
すなわち、実施形態１の「一覧表」要素３４１では、内容が２行目の値文字列２０２ｂの各要素３４２ａ〜３４２ｆと、内容が３行目の値文字列２０２ｂの各要素３４３ａ〜３４３ｆとが、上位「ClassA」要素３４２，３４３で仕分けされている。また、実施形態１の「一覧表」要素３４１では、各要素３４２ａ〜３４２ｆ，３４３ａ〜３４３ｆが、上位「ClassA」要素３４２，３４３と、下位「ClassA」要素３４２ｂ，３４３ｂと、「DataA」要素３４２ｄ，３４３ｄとを用いて階層化されている。
【００３７】
「フッタ表」要素３５１は、フッタ表２０３の項目文字列２０３ａ（「補足事項」）と値文字列２０３ｂ（「補足事項１」）とを内容として有する。実施形態１の「フッタ表」要素３５１は、内容が「補足事項１」の「補足事項」要素３５２を内容として有する。
【００３８】
図４は、実施形態１に係る様式設定ファイルの一例を示す図である。
図５は、図４の続きの図である。
様式記憶部１３３は、入力文書記憶部１３１が記憶している全ての入力文書２００の様式毎に設けられた様式設定ファイル４００を記憶する。図４、図５に示すように、様式設定ファイル４００は、表を含む文書の様式を判定するための様式判定条件情報と、その様式の文書に含まれている各表の形式を特定する表形式特定情報と、後述する構造化部１７１〜１７７を指定する変換指定情報とを含むＸＭＬ文書で構成されている。
【００３９】
様式設定ファイル４００は、「FormatInfo」要素４１０を有し、「FormatInfo」要素４１０は、「StylePresumptionInfo」要素（様式判定条件情報を含む情報）４２０と、「RepositoryRegistrationFormat」要素（表形式特定情報および変換指定情報を含む情報）４３０とを内容として有する。
「StylePresumptionInfo」要素４２０は、「Rule」要素４２１を内容として有し、「Rule」要素４２１は、「PresumptionByCells」要素（様式を特定する事項）４２２を内容として有する。
【００４０】
「PresumptionByCells」要素４２２は、入力文書２００に含まれる複数の様式文字列（「タイトル１」、「項番」、…、「補足事項」）がそれぞれ内容となる複数の「MatchingCell」要素４２３と、様式閾値である「0.9」が内容の「MatchingPercentage」要素４２４とを内容として有する。
また、「RepositoryRegistrationFormat」要素４３０は、第１「Table」要素４３１と、第２「Table」要素４４１と、第３「Table」要素４５１とを内容として有する。
【００４１】
第１「Table」要素４３１は、「TableIdentifier」要素４３２と、「TableFormat」要素４３３と、「SearchTag」要素４３４と、「MatchingPercentage」要素４３５と、第１「KeyCell」要素４３６と、第２「KeyCell」要素４３７とを内容として有する。
【００４２】
「TableIdentifier」要素４３２は、要素名となる「ヘッダ表」を内容として有する。「TableFormat」要素４３３は、ヘッダ表２０１の形式である「語句検索表」を内容として有する。「SearchTag」要素４３４は、ヘッダ表２０１にのみ含まれる表文字列である「タイトル１」を内容として有する。「MatchingPercentage」要素４３５は、ヘッダ表２０１の表閾値である「1」を内容として有する。
【００４３】
「KeyCell」要素４３６，４３７は、ヘッダ表２０１から抽出する情報の範囲である抽出範囲に関する情報と、ヘッダ表２０１用の構造化に関する情報を有する。
第１「KeyCell」要素４３６は、項目文字列２０１ａである「項番」が内容の「CellText」要素４３６ａと、項目文字列２０１ａから見た値文字列２０１ｂの位置を示す「下」が内容の「ExtractDirection」要素４３６ｂとを内容として有する。第２「KeyCell」要素４３７は、第１「KeyCell」要素４３６と同様に、「項目」が内容の「CellText」要素４３７ａと、「下」が内容の「ExtractDirection」要素４３７ｂとを内容として有する。
【００４４】
第２「Table」要素４４１は、「TableIdentifier」要素４４２と、「TableFormat」要素４４３と、「SearchTag」要素４４４と、「MatchingPercentage」要素４４５と、第１「KeyCell」要素４４６と、第２「KeyCell」要素４４７と、第３「KeyCell」要素４４８とを内容として有する。
【００４５】
「TableIdentifier」要素４４２は、要素名となる「一覧表」を内容として有する。「TableFormat」要素４４３は、一覧表２０２の形式である「階層構造表」を内容として有する。「SearchTag」要素４４４は、一覧表２０２にのみ含まれる表文字列である「備考」を内容として有する。「MatchingPercentage」要素４４５は、一覧表２０２の表閾値である「1」を内容として有する。
【００４６】
第１「KeyCell」要素４４６は、一覧表２０２に含まれる項目文字列２０２ａである「項番」が内容の「CellText」要素４４６ａと、階層化の情報である「DataA」が内容の「ClassInfo」要素４４６ｂとを内容として有する。第２「KeyCell」要素４４７は、第１「KeyCell」要素４４６と同様に、「項目」が内容の「CellText」要素４４７ａと、「ClassA」が内容の「ClassInfo」要素４４７ｂとを内容として有する。第３「KeyCell」要素４４８は、他の「KeyCell」要素４４６，４４７と同様に、「備考」が内容の「CellText」要素４４８ａと、「DataA」が内容の「ClassInfo」要素４４８ｂとを内容として有する。
【００４７】
第３「Table」要素４５１は、「TableIdentifier」要素４５２と、「TableFormat」要素４５３と、「SearchTag」要素４５４と、「MatchingPercentage」要素４５５とを内容として有する。
「TableIdentifier」要素４５２は、要素名となる「フッタ表」を内容として有する。「TableFormat」要素４５３は、フッタ表２０３の形式である「自由記述欄」を内容として有する。「SearchTag」要素４５４は、フッタ表２０３にのみ含まれる表文字列である「補足事項」を内容として有する。「MatchingPercentage」要素４５５は、フッタ表２０３の表閾値である「1」を内容として有する。
【００４８】
また、制御部１４０は、ＣＰＵ（Central Processing Unit）で構成され、記憶部１３０が記憶する情報を用いて、文書変換装置１００が備える機能を制御する。図１に示すように、制御部１４０は、様式判定部１５０と、表形式判定部１６０と、情報変換制御部１７０と、出力文書作成部１８０と、様式更新部１９０とを有する。
【００４９】
様式判定部１５０は、様式判定条件情報に基づいて、入力された文書の様式を判定する。様式判定部１５０は、様式記憶部１３３が記憶している全ての様式設定ファイル４００から、入力された入力文書２００の様式を求める。様式判定部１５０は、使用者（ユーザ）が入力部１１０を介して入力文書記憶部１３１に記憶された入力文書２００を出力文書３００に変換する入力をした場合に、全ての様式設定ファイル４００の「StylePresumptionInfo」要素４２０の内容から、入力文書２００に応じた様式判定条件情報を有する様式設定ファイル４００を選択する。
【００５０】
様式判定部１５０は、「PresumptionByCells」要素４２２の内容と、入力文書２００に記載された事項とが一致する場合に、入力文書２００の様式を特定する。具体的には、様式判定部１５０は、様式設定ファイル４００の様式文字列が入力文書２００に含まれる数を様式文字列の総数で除算した値である一致率が様式閾値以上である場合に、入力文書２００の様式を特定する。様式判定部１５０は、入力文書２００に含まれる表文字列と「MatchingCell」要素４２３の内容とが完全一致する数（様式文字列の一致数）を「MatchingCell」要素４２３の総数で一致率が、「MatchingPercentage」要素４２４の内容である様式閾値以上となる様式設定ファイル４００を選択する。様式判定部１５０は、例えば、図２に示す入力文書２００が入力された場合、複数の様式文字列（「タイトル１」、「項番」、…、「補足事項」）を全て含み、一致率が「1」（１００［％］）で様式閾値「0.9」（９０［％］）以上となる図３に示す様式設定ファイル４００を選択する。
【００５１】
表形式判定部１６０は、表形式特定情報に基づいて、様式判定部１５０が判定した様式の文書に含まれている表の形式を判定する。表形式判定部１６０は、入力文書２００が有する書式情報から各表の形式を特定する表文字列を求め、求めた表文字列が表形式特定情報に含まれている場合に、各表の形式を特定する。具体的には、表形式判定部１６０は、罫線判定部１６１と、背景色判定部１６２とを有し、様式判定部１５０が選択した様式設定ファイル４００が有する「RepositoryRegistrationFormat」要素４３０の内容から、様式を構成する各表２０１〜２０３をそれぞれ求める。
罫線判定部１６１は、入力文書２００が有する罫線情報から、入力文書２００が有する各表２０１〜２０３の外枠の罫線をそれぞれ求める。
背景色判定部１６２は、入力文書２００が有する背景色情報から、各表２０１〜２０３の外枠の罫線内で背景色が存在する範囲をそれぞれ求める。
【００５２】
表形式判定部１６０は、外枠の罫線内に表２０１〜２０３に特有の表文字列が含まれている場合に、外枠の罫線内の情報（表文字列）で表２０１〜２０３が形成されていると特定する。表形式判定部１６０は、外枠の罫線内且つ背景色が存在する範囲内の表文字列（項目文字列２０１ａ〜２０３ａ）と、「SearchTag」要素４３４，４４４，４５４の内容とが完全一致する各表２０１〜２０３を選択する。表形式判定部１６０は、例えば、「SearchTag」要素４３４の内容「タイトル１」と項目文字列２０１ａの「タイトル１」とが一致し、一致率が「1」で表閾値「1」以上となる。このため、表形式判定部１６０は、「タイトル１」を備えた表を第１「Table」要素４３１に対応するヘッダ表２０１として選択する。
【００５３】
また、表形式判定部１６０は、「SearchTag」要素４４４の内容「備考」と項目文字列２０２ａの「備考」とが一致し、一致率が表閾値以上となる表を、第２「Table」要素４４１に対応する一覧表２０２として選択する。さらに、表形式判定部１６０は、「SearchTag」要素４５４の内容「補足事項」と項目文字列２０３ａの「補足事項」とが一致し、一致率が表閾値以上となる表を、第３「Table」要素４５１に対応するフッタ表２０３として選択する。
【００５４】
図６は、実施形態１に係る予め設定された表の情報を構造化する一例を示す図である。（Ａ）は「１行１データ表」の一例を示す図、（Ｂ）は「１列１データ表」の一例を示す図、（Ｃ）は「複数列１データ表」の一例を示す図、（Ｄ）は「複数列１データ表」の一例を示す図、（Ｅ）は様式設定ファイルの「Table」要素の内容の一例を示す図、（Ｆ）は（Ｅ）の「Table」要素の内容で（Ａ）〜（Ｄ）の表が構造化された情報を示す図である。
【００５５】
情報変換制御部１７０は、表形式判定部１６０により判定された各表の形式と変換指定情報とに基づいて、入力文書２００に含まれる各表２０１〜２０３の情報を構造化するための構造化部１７１〜１７７を表毎に特定し、特定した構造化部１７１〜１７７により、各表２０１〜２０３に含まれている情報を構造化された情報に変換する。情報変換制御部１７０は、１行１データ表用の構造化部１７１と、１列１データ表用の構造化部１７２と、複数行１データ表用の構造化部１７３と、複数列１データ表用の構造化部１７４と、階層構造表用の構造化部１７５と、自由記述欄用の構造化部１７６と、語句検索表用の構造化部１７７とを有する。
【００５６】
１行１データ表用の構造化部１７１は、予め設定された「１行１データ表」用に設けられた構造化部であり、「１行１データ表」に含まれている情報を構造化された情報に変換する。１行１データ表用の構造化部１７１は、表形式判定部１６０が選択した表に対応する「TableFormat」要素４３３，４４３，４５３の内容が「１行１データ表」である場合に、情報を抽出して構造化された情報に変換する。１行１データ表用の構造化部１７１は、１行１データ表用の抽出部１７１ａを有する。
【００５７】
１行１データ表用の抽出部１７１ａは、「１行１データ表」から情報を抽出する。１行１データ表用の抽出部１７１ａは、「TableFormat」要素の内容が「１行１データ表」である「Table」要素において、「CellText」要素の内容と一致する項目文字列を抽出すると共に、抽出した項目文字列と同列で下方のセルに配置された全ての値文字列を１行ずつそれぞれ抽出する。
【００５８】
１行１データ表用の抽出部１７１ａは、例えば、図６（Ｅ）に示す様式設定ファイル５０５の後述する「Table」要素５０５ａの内容を参照して、図６（Ａ）に示す１行１データ表５０１から情報を抽出する。
ここで、１行１データ表５０１は、１行目の項目文字列５０１ａ（「Ａ」、「Ｂ」）と、２行目の値文字列５０１ｂ（「ａ１」、「ｂ１」）と、３行目の値文字列５０１ｂ（「ａ２」、「ｂ２」）とを有する。
【００５９】
また、様式設定ファイル５０５は、「Table」要素５０５ａを有し、「Table」要素５０５ａは、「○○表」が内容の「TableIdentifier」要素５０５ｂと、「Ａ」が内容の第１「CellText」要素５０５ｃと、「ClassA」が内容の第１「ClassInfo」要素５０５ｄと、「Ｂ」が内容の第２「CellText」要素５０５ｅと、「DataA」が内容の第２「ClassInfo」要素５０５ｆとを内容として有する。
【００６０】
１行１データ表用の抽出部１７１ａは、「TableFormat」要素の内容が「１行１データ表」である場合、第１「CellText」要素５０５ｃの内容「Ａ」と一致する項目文字列５０１ａ（「Ａ」）と、下方の値文字列５０１ｂ（「ａ１」、「ａ２」）とを抽出する。また、１行１データ表用の抽出部１７１ａは、第２「CellText」要素５０５ｅの内容「Ｂ」と一致する項目文字列５０１ａ（「Ｂ」）と、下方の値文字列５０１ｂ（「ｂ１」、「ｂ２」）とを抽出する。
【００６１】
１行１データ表用の構造化部１７１は、１行１データ表用の抽出部１７１ａが抽出した情報が構造化された情報に変換する。まず、１行１データ表用の構造化部１７１は、抽出した項目文字列および値文字列を、項目要素（項目文字列が要素名で値文字列が内容となる要素）に変換する。次に、１行１データ表用の構造化部１７１は、変換した項目要素に対応する「ClassInfo」要素を参照し、内容が「ClassA」である項目要素を「ClassA」要素の内容とし、内容が「DataA」である項目要素を「DataA」要素の内容とし、「DataA」要素を「ClassA」要素の内容とする処理を行う。そして、１行１データ表用の構造化部１７１は、上記の変換処理を１行ずつ実行し、全ての「ClassA」要素を、表要素（「TableIdentifier」要素の内容が要素名の要素）の内容とする。この結果、「１行１データ表」から抽出した情報が構造化された情報に変換される。
【００６２】
１行１データ表用の構造化部１７１は、例えば、「Table」要素５０５ａの内容を参照して、１行１データ表５０１から抽出した情報を図６（Ｆ）に示す構造化された情報５１０に変換する。
ここで、構造化された情報５１０は、表要素である「○○表」要素５１１を有し、「○○表」要素５１１は、第１「ClassA」要素５１２と第２「ClassA」要素５１３とを内容として有する。第１「ClassA」要素５１２は、「ａ１」が内容の「Ａ」要素５１２ａと、第１「DataA」要素５１２ｂとを有し、第１「DataA」要素５１２ｂは、「ｂ１」が内容の「Ｂ」要素５１２ｃを内容として有する。第２「ClassA」要素５１３は、第１「ClassA」要素５１２と同様に、「ａ２」が内容の「Ａ」要素５１３ａと、第２「DataA」要素５１３ｂとを有し、第２「DataA」要素５１３ｂは、「ｂ２」が内容の「Ｂ」要素５１３ｃを内容として有する。
【００６３】
まず、１行１データ表用の構造化部１７１は、抽出した項目文字列５０１ａ（「Ａ」、「Ｂ」）および２行目の値文字列５０１ｂ（「ａ１」、「ｂ１」）を、項目文字列５０１ａが要素名で２行目の値文字列５０１ｂが内容の「Ａ」要素５１２ａと「Ｂ」要素５１２ｃとに変換する。ここで、「Ａ」要素５１２ａに対応する第１「ClassInfo」要素５０５ｄの内容が「ClassA」であり、「Ｂ」要素５１２ｃに対応する第２「ClassInfo」要素５０５ｆの内容が「DataA」である。このため、１行１データ表用の構造化部１７１は、「Ａ」要素５１２ａを第１「ClassA」要素５１２の内容とし、「Ｂ」要素５１２ｃを第１「DataA」要素５１２ｂの内容とし、第１「DataA」要素５１２ｂを第１「ClassA」要素５１２の内容とする。
【００６４】
また、１行１データ表用の構造化部１７１は、抽出した３行目の値文字列５０１ｂ（「ａ２」、「ｂ２」）についても同様に、「Ａ」要素５１３ａと「Ｂ」要素５１３ｃとに変換する。また、１行１データ表用の構造化部１７１は、「Ａ」要素５１３ａを第２「ClassA」要素５１３の内容とし、「Ｂ」要素５１３ｃを第２「DataA」要素５１３ｂの内容とし、第２「DataA」要素５１３ｂを第２「ClassA」要素５１３の内容とする。
そして、１行１データ表用の構造化部１７１は、「TableIdentifier」要素５０５ｂの内容「○○表」を要素名とする「○○表」要素５１１の内容を第１「ClassA」要素５１２および第２「ClassA」要素５１３とする。この結果、１行１データ表５０１から抽出した項目文字列５０１ａおよび値文字列５０１ｂが構造化された情報５１０に変換される。
【００６５】
１列１データ表用の構造化部１７２は、予め設定された「１列１データ表」用に設けられた構造化部であり、「１列１データ表」に含まれている情報を構造化された情報に変換する。１列１データ表用の構造化部１７２は、表形式判定部１６０が選択した表に対応する「TableFormat」要素４３３，４４３，４５３の内容が「１列１データ表」である場合に、情報を抽出して構造化された情報に変換する。１列１データ表用の構造化部１７２は、１列１データ表用の抽出部１７２ａを有する。なお、１列１データ表用の抽出部１７２ａは、抽出した項目文字列と同行で右方のセルに配置された全ての値文字列を１行ずつ抽出する以外は、１行１データ表用の抽出部１７１ａと同様の説明となる。
【００６６】
よって、１列１データ表用の構造化部１７２は、例えば、「Table」要素５０５ａの「TableFormat」要素の内容が「１列１データ表」である場合、「Table」要素５０５ａの内容を参照して、図６（Ｂ）に示す１列１データ表５０２から情報を抽出して構造化された情報５１０に変換する。なお、１列１データ表５０２は、１行１データ表５０１の行と列とを置き換えた表であり、１行１データ表５０１の項目文字列５０１ａおよび値文字列５０１ｂと同一の項目文字列５０２ａおよび値文字列５０２ｂを有する。
【００６７】
複数行１データ表用の構造化部１７３は、予め設定された「複数行１データ表」用に設けられた構造化部であり、「複数行１データ表」に含まれている情報を構造化された情報に変換する。複数行１データ表用の構造化部１７３は、表形式判定部１６０が選択した表に対応する「TableFormat」要素４３３，４４３，４５３の内容が「複数行１データ表」である場合に、情報を抽出して構造化された情報に変換する。複数行１データ表用の構造化部１７３は、複数行１データ表用の抽出部１７３ａを有する。なお、複数行１データ表用の抽出部１７３ａは、抽出した項目文字列と同列で下方の連結セルに配置された全ての値文字列を連結セル毎に抽出する以外は、１行１データ表用の抽出部１７１ａと同様の説明となる。
【００６８】
よって、複数行１データ表用の構造化部１７３は、例えば、「Table」要素５０５ａの「TableFormat」要素の内容が「複数行１データ表」である場合、「Table」要素５０５ａの内容を参照して、図６（Ｃ）に示す複数行１データ表５０３から情報を抽出して構造化された情報５１０に変換する。なお、複数行１データ表５０３は、１行１データ表５０１の値文字列５０１ｂの各行を２行に渡る連結セルに置き換えた表であり、１行１データ表５０１の項目文字列５０１ａおよび値文字列５０１ｂと同一の項目文字列５０３ａおよび値文字列５０３ｂを有する。
【００６９】
複数列１データ表用の構造化部１７４は、予め設定された「複数列１データ表」用に設けられた構造化部であり、「複数列１データ表」に含まれている情報を構造化された情報に変換する。複数列１データ表用の構造化部１７４は、表形式判定部１６０が選択した表に対応する「TableFormat」要素４３３，４４３，４５３の内容が「複数列１データ表」である場合に、情報を抽出して構造化された情報に変換する。複数列１データ表用の構造化部１７４は、複数列１データ表用の抽出部１７４ａを有する。なお、複数列１データ表用の抽出部１７４ａは、抽出した項目文字列と同行で右方の連結セルに配置された全ての値文字列を連結セル毎に抽出する以外は、１列１データ表用の抽出部１７２ａと同様の説明となる。
【００７０】
よって、複数列１データ表用の構造化部１７４は、例えば、「Table」要素５０５ａの「TableFormat」要素の内容が「複数列１データ表」である場合、「Table」要素５０５ａの内容を参照して、図６（Ｄ）に示す複数列１データ表５０４から情報を抽出して構造化された情報５１０に変換する。なお、複数列１データ表５０４は、１列１データ表５０２の値文字列５０２ｂの各行を２行に渡る連結セルに置き換えた表であり、１列１データ表５０２の項目文字列５０２ａおよび値文字列５０２ｂと同一の項目文字列５０４ａおよび値文字列５０４ｂを有する。
【００７１】
図７は、実施形態１に係る予め設定された階層構造表の情報を構造化する一例を示す図であり、（Ａ）は入れ子階層の「階層構造表」の一例を示す図、（Ｂ）は分割階層の「階層構造表」の一例を示す図、（Ｃ）は図６（Ｅ）の「Table」要素の内容で（Ａ）の表が構造化された情報を示す図、（Ｄ）は図６（Ｅ）の「Table」要素の内容で（Ｂ）の表が構造化された情報を示す図である。
【００７２】
階層構造表用の構造化部１７５は、予め設定された「階層構造表」用に設けられた構造化部であり、「階層構造表」に含まれている情報を構造化された情報に変換する。階層構造表用の構造化部１７５は、表形式判定部１６０が選択した表に対応する「TableFormat」要素４３３，４４３，４５３の内容が「階層構造表」である場合に、情報を抽出して構造化された情報に変換する。階層構造表用の構造化部１７５は、階層構造表用の抽出部１７５ａを有する。
【００７３】
階層構造表用の抽出部１７５ａは、「階層構造表」から情報を抽出する。階層構造表用の抽出部１７５ａは、「TableFormat」要素の内容が「階層構造表」である「Table」要素において、「CellText」要素の内容と一致する項目文字列を抽出する。また、階層構造表用の抽出部１７５ａは、抽出した項目文字列の下方の値文字列が配置されていたセルの位置情報を取得しつつ、全ての値文字列を抽出する。
【００７４】
階層構造表用の抽出部１７５ａは、例えば、「Table」要素５０５ａの「TableFormat」要素の内容が「階層構造表」である場合、「Table」要素５０５ａの内容を参照して、図７（Ａ）に示す入れ子階層の階層構造表５２１や図７（Ｂ）に示す分割階層の階層構造表５２２から情報を抽出する。
【００７５】
ここで、入れ子階層の階層構造表５２１は、１行目の項目文字列５２１ａ（「Ａ」、「Ｂ」）と、２行目の値文字列５２１ｂ（「ａ１」、「ｂ１」）と、３行目の値文字列５２１ｂ（「ａ２」、「ｂ２」）と、４行目の値文字列５２１ｂ（「ａ３」、「ｂ３」）と、５行目の値文字列５２１ｂ（「ａ４」、「ｂ４」）と、６行目の値文字列５２１ｂ（「ａ５」、「ｂ５」）とを有する。なお、項目文字列５２１ａのうちの「Ａ」は、３列分の連結セルに配置されており、下方の１列目には「ａ１」、「ａ５」が配置され、２列目には「ａ２」、「ａ３」が配置され、３列目には「ａ４」が配置されている。
【００７６】
また、分割階層の階層構造表５２２は、１行目の項目文字列５２２ａ（「Ａ」、「Ｂ」）と、２行目の値文字列５２２ｂ（「ａ１」、「ａ２」、「ｂ１」）と、３行目の値文字列５２２ｂ（「ａ３」、「ａ４」、「ｂ２」）と、４行目の値文字列５２２ｂ（「ａ５」、「ｂ３」）と、５行目の値文字列５２２ｂ（「ａ６」、「ａ７」、「ｂ４」）とを有する。なお、項目文字列５２２ａのうちの「Ａ」は、３列分の連結セルに配置されており、下方の１列目（第１階層）には「ａ１」、「ａ６」が配置され、２列目（第２階層）には「ａ２」、「ａ３」が配置され、３列目（第３階層）には「ａ４」、「ａ５」、「ａ７」が配置されている。
【００７７】
階層構造表用の抽出部１７５ａは、入れ子階層の階層構造表５２１から情報を抽出する場合、第１「CellText」要素５０５ｃの内容「Ａ」と一致する項目文字列５２１ａ（「Ａ」）を抽出し、下方の値文字列５２１ｂ（「ａ１」〜「ａ５」）については配置されているセルの位置情報も取得しながら抽出する。また、階層構造表用の抽出部１７５ａは、第２「CellText」要素５０５ｅの内容「Ｂ」と一致する項目文字列５０１ａ（「Ｂ」）を抽出し、下方の値文字列５２１ｂ（「ｂ１」〜「ｂ５」）については配置されているセルの位置情報も取得しながら抽出する。
【００７８】
階層構造表用の構造化部１７５は、階層構造表用の抽出部１７５ａが抽出した情報を構造化された情報に変換する。階層構造表用の構造化部１７５は、抽出した値文字列の位置情報から、上位階層の値文字列と下位階層の値文字列とが階層関係にあることを求めて、求めた階層関係に基づいて、抽出した情報を前記構造化された情報に変換する。
まず、階層構造表用の構造化部１７５は、抽出した項目文字列および値文字列を項目要素に変換する。次に、階層構造表用の構造化部１７５は、変換した項目要素に対応する「ClassInfo」要素を参照し、内容が「ClassA」である項目要素を「ClassA」要素の内容とする。
【００７９】
次に、階層構造表用の構造化部１７５は、値文字列が配置されていたセルの位置情報から、各値文字列が階層関係にあることを求め、階層構造を形成する。階層構造表用の構造化部１７５は、配置されていたセルの列番号が大きい値文字列（下位階層の値文字列）が内容となる項目要素の「ClassA」要素（下位「ClassA」要素）を配置されていたセルの列番号が小さい値文字列（上位階層の値文字列）が内容となる項目要素の「ClassA」要素（上位「ClassA」要素）の内容として階層構造を形成する。
【００８０】
具体的には、階層構造表用の構造化部１７５は、下位階層の値文字列が配置されていたセルの左方のセル（同行で列番号が小さいセル）に上位階層の値文字列が配置されている場合、対応する「ClassA」要素で階層構造を形成する。このとき、階層構造表用の構造化部１７５は、下位階層の値文字列と上位階層の値文字列との間に空白のセルが存在する場合、上位「ClassA」要素と下位「ClassA」要素との間に空白のセルの数だけ「ダミー」を項目要素の内容とする中間階層の「ClassA」要素を設ける。
【００８１】
また、階層構造表用の構造化部１７５は、左方のセルに上位階層の値文字列が配置されていない場合、下位階層の値文字列が配置されていたセルの左側上方のセル（行番号および列番号が小さいセル）に上位階層の値文字列が配置されていれば、対応する「ClassA」要素で階層構造を形成する。このとき、階層構造表用の構造化部１７５は、左方の空列（同じ列に値文字列が１つもない列）は無視する。また、階層構造表用の構造化部１７５は、下位階層の値文字列が配置されていたセルの左方に隣接するセルの上方に上位階層の値文字列が配置されていない場合、上位「ClassA」要素と下位「ClassA」要素との間に左方にズレた数だけ「ダミー」を項目要素の内容とする中間階層の「ClassA」要素を設ける。
【００８２】
また、階層構造表用の構造化部１７５は、左方のセルおよび上方のセルに上位階層の値文字列が配置されていない場合、１列目までのセルの数だけ「ダミー」を項目要素の内容とする「ClassA」要素で階層構造を形成する。そして、階層構造表用の構造化部１７５は、下位階層の値文字列が内容である下位「ClassA」要素を、「ダミー」が内容の階層化された「ClassA」要素のうちの再下位の「ClassA」要素の内容とする。
【００８３】
階層構造表用の構造化部１７５は、上記の処理を最大列から２列目までの下位階層の値文字列全てについて実行する。また、階層構造表用の構造化部１７５は、変換した項目要素に対応する「ClassInfo」要素を参照し、内容が「DataA」である項目要素を「DataA」要素の内容とし、「DataA」要素を同行の値文字列が内容となる最も下位階層の「ClassA」要素の内容とする。そして、階層構造表用の構造化部１７５は、上記の変換処理で変換された全ての「ClassA」要素を、表要素の内容とする。この結果、「階層構造表」から抽出した情報が構造化された情報に変換される。
【００８４】
階層構造表用の構造化部１７５は、例えば、「Table」要素５０５ａの内容を参照して、入れ子階層の階層構造表５２１から抽出した情報を図７（Ｃ）に示す構造化された情報５３０に変換する。
【００８５】
ここで、構造化された情報５３０は、表要素である「○○表」要素５３１を有し、「○○表」要素５３１は、第１「ClassA」要素５３２と第５「ClassA」要素５３３とを内容として有する。第１「ClassA」要素５３２は、「ａ１」が内容の「Ａ」要素５３２ａと、第１「DataA」要素５３２ｂと、第２「ClassA」要素５３２ｃと、第３「ClassA」要素５３２ｄとを有する。第１「DataA」要素５３２ｂは、「ｂ１」が内容の「Ｂ」要素５３２ｅを内容として有する。第２「ClassA」要素５３２ｃは、「ａ２」が内容の「Ａ」要素５３２ｆと、第２「DataA」要素５３２ｇとを有し、第２「DataA」要素５３２ｇは、「ｂ２」が内容の「Ｂ」要素５３２ｈを内容として有する。
【００８６】
第３「ClassA」要素５３２ｄは、「ａ３」が内容の「Ａ」要素５３２ｉと、第３「DataA」要素５３２ｊと、第４「ClassA」要素５３２ｋとを有する。第３「DataA」要素５３２ｊは、「ｂ３」が内容の「Ｂ」要素５３２ｍを内容として有する。第４「ClassA」要素５３２ｋは、「ａ４」が内容の「Ａ」要素５３２ｎと、第４「DataA」要素５３２ｐとを有し、第４「DataA」要素５３２ｐは、「ｂ４」が内容の「Ｂ」要素５３２ｑを内容として有する。
第５「ClassA」要素５３３は、「ａ５」が内容の「Ａ」要素５３３ａと、第５「DataA」要素５３３ｂとを有し、第５「DataA」要素５３３ｂは、「ｂ５」が内容の「Ｂ」要素５３３ｃを内容として有する。
【００８７】
まず、階層構造表用の構造化部１７５は、抽出した項目文字列５２１ａ（「Ａ」、「Ｂ」）および値文字列５２１ｂ（「ａ１」〜「ａ５」、「ｂ１」〜「ｂ５」）を、項目文字列５２１ａが要素名で値文字列５２１ｂが内容の「Ａ」要素５３２ａ，５３２ｆ，５３２ｉ，５３２ｎ，５３３ａと「Ｂ」要素５３２ｅ，５３２ｈ，５３２ｍ，５３２ｑ，５３３ｃとに変換する。ここで、「Ａ」要素５３２ａ〜５３３ａに対応する第１「ClassInfo」要素５０５ｄの内容が「ClassA」であり、「Ｂ」要素５３２ｅ〜５３３ｃに対応する第２「ClassInfo」要素５０５ｆの内容が「DataA」である。このため、階層構造表用の構造化部１７５は、「Ａ」要素５３２ａ〜５３３ａを「ClassA」要素５３２，５３２ｃ，５３２ｄ，５３２ｋ，５３３の内容とし、「Ｂ」要素５３２ｅ〜５３３ｃを「DataA」要素５３２ｂ，５３２ｇ，５３２ｊ，５３２ｐ，５３３ｂの内容とする。
【００８８】
また、値文字列５２１ｂ「ａ４」が配置されたセルの左方に隣接するセルの上方に値文字列５２１ｂ「ａ３」が配置されている。また、値文字列５２１ｂ「ａ２」、「ａ３」が配置されたセルの左方に隣接するセルの上方に値文字列５２１ｂ「ａ１」が配置されている。このため、階層構造表用の構造化部１７５は、第４「ClassA」要素５３２ｋを第３「ClassA」要素５３２ｄの内容とし、第２「ClassA」要素５３２ｃおよび第３「ClassA」要素５３２ｄを第１「ClassA」要素５３２の内容とする。
【００８９】
また、２行目から６行目で列番号が最大の値文字列はそれぞれ「ａ１」、「ａ２」、「ａ３」、「ａ４」、「ａ５」である。このため、階層構造表用の構造化部１７５は、第１「DataA」要素５３２ｂを第１「ClassA」要素５３２の内容とし、第２「DataA」要素５３２ｆを第２「ClassA」要素５３２ｃの内容とする。また、階層構造表用の構造化部１７５は、第３「DataA」要素５３２ｊを第３「ClassA」要素５３２ｄの内容とし、第４「DataA」要素５３２ｐを第４「ClassA」要素５３２ｋの内容とし、第５「DataA」要素５３３ｂを第５「ClassA」要素５３３の内容とする。
【００９０】
そして、階層構造表用の構造化部１７５は、「TableIdentifier」要素５０５ｂの内容「○○表」を要素名とする「○○表」要素５３１の内容を第１「ClassA」要素５３２および第５「ClassA」要素５３３とする。この結果、入れ子階層の階層構造表５２１から抽出した項目文字列５２１ａおよび値文字列５２１ｂが構造化された情報５３０に変換される。
【００９１】
また、階層構造表用の構造化部１７５は、例えば、「Table」要素５０５ａの内容を参照して、分割階層の階層構造表５２２から抽出した情報を図７（Ｄ）に示す構造化された情報５４０に変換する。
【００９２】
ここで、構造化された情報５４０は、表要素である「○○表」要素５４１を有し、「○○表」要素５４１は、第１「ClassA」要素５４２と第６「ClassA」要素５４３とを内容として有する。第１「ClassA」要素５４２は、「ａ１」が内容の「Ａ」要素５４２ａと、第２「ClassA」要素５４２ｂと、第３「ClassA」要素５４２ｃとを有する。第２「ClassA」要素５４２ｂは、「ａ２」が内容の「Ａ」要素５４２ｄと、第１「DataA」要素５４２ｅとを有し、第１「DataA」要素５４２ｅは、「ｂ１」が内容の「Ｂ」要素５４２ｆを内容として有する。
【００９３】
第３「ClassA」要素５４２ｃは、「ａ３」が内容の「Ａ」要素５４２ｇと、第４「ClassA」要素５４２ｈと、第５「ClassA」要素５４２ｉとを有する。第４「ClassA」要素５４２ｈは、「ａ４」が内容の「Ａ」要素５４２ｊと、第２「DataA」要素５４２ｋとを有し、第２「DataA」要素５４２ｋは、「ｂ２」が内容の「Ｂ」要素５４２ｍを内容として有する。第５「ClassA」要素５４２ｉは、「ａ５」が内容の「Ａ」要素５４２ｎと、第３「DataA」要素５４２ｐとを有し、第３「DataA」要素５４２ｐは、「ｂ３」が内容の「Ｂ」要素５４２ｑを内容として有する。
【００９４】
第６「ClassA」要素５４３は、「ａ６」が内容の「Ａ」要素５４３ａと、第８「ClassA」要素５４３ｂとを有する。第８「ClassA」要素５４３ｂは、「ダミー」が内容の「Ａ」要素５４３ｃと、第７「ClassA」要素５４３ｄとを有する。第７「ClassA」要素５４３ｄは、「ａ７」が内容の「Ａ」要素５４３ｅと、第４「DataA」要素５４３ｆとを有し、第４「DataA」要素５４３ｆは、「ｂ４」が内容の「Ｂ」要素５４３ｇを内容として有する。
【００９５】
まず、階層構造表用の構造化部１７５は、抽出した項目文字列５２２ａ（「Ａ」、「Ｂ」）および値文字列５２２ｂ（「ａ１」〜「ａ７」、「ｂ１」〜「ｂ４」）を、項目文字列５２２ａが要素名で値文字列５２２ｂが内容の「Ａ」要素５４２ａ，５４２ｄ，５４２ｇ，５４２ｊ，５４２ｎ，５４３ａ，５４３ｅと「Ｂ」要素５４２ｆ，５４２ｍ，５４２ｑ，５４３ｇとに変換する。ここで、「Ａ」要素５４２ａ〜５４３ｅに対応する第１「ClassInfo」要素５０５ｄの内容が「ClassA」であり、「Ｂ」要素５４２ｆ〜５４３ｇに対応する第２「ClassInfo」要素５０５ｆの内容が「DataA」である。このため、階層構造表用の構造化部１７５は、「Ａ」要素５４２ａ〜５４３ｅを「ClassA」要素５４２，５４２ｂ，５４２ｃ，５４２ｈ，５４２ｉ，５４３，５４３ｄの内容とし、「Ｂ」要素５４２ｆ〜５４３ｇを「DataA」要素５４２ｅ，５４２ｋ，５４２ｐ，５４３ｆの内容とする。
【００９６】
また、値文字列５２２ｂ「ａ４」の左方に隣接して値文字列５２２ｂ「ａ３」が配置され、「ａ５」が配置されたセルの左方に隣接するセルの上方に値文字列５２２ｂ「ａ３」が配置されている。また、値文字列５２２ｂ「ａ２」左方に隣接して値文字列５２２ｂ「ａ１」が配置され、「ａ３」が配置されたセルの左方に隣接するセルの上方に値文字列５２２ｂ「ａ１」が配置されている。このため、階層構造表用の構造化部１７５は、第４「ClassA」要素５４２ｈおよび第５「ClassA」要素５４２ｉを第３「ClassA」要素５４２ｃの内容とし、第２「ClassA」要素５４２ｂおよび第３「ClassA」要素５４２ｃを第１「ClassA」要素５４２の内容とする。
【００９７】
また、値文字列５２２ｂ「ａ７」が配置されたセルの左方に値文字列５２２ｂ「ａ６」が配置されているが、値文字列５２２ｂ「ａ６」と「ａ７」との間には空白のセルが１つだけ配置されている。このため、階層構造表用の構造化部１７５は、「ダミー」が内容の「Ａ」要素５４３ｃを生成し、「Ａ」要素５４３ｃと第７「ClassA」要素５４３ｄとを第８「ClassA」要素５４３ｂの内容とし、第８「ClassA」要素５４３ｂを第６「ClassA」要素５４３の内容とする。
【００９８】
また、２行目から５行目で列番号が最大の値文字列はそれぞれ「ａ２」、「ａ４」、「ａ５」、「ａ７」である。このため、階層構造表用の構造化部１７５は、第１「DataA」要素５４２ｅを第２「ClassA」要素５４２ｂの内容とし、第２「DataA」要素５４２ｋを第４「ClassA」要素５４２ｈの内容とする。また、階層構造表用の構造化部１７５は、第３「DataA」要素５４２ｐを第５「ClassA」要素５４２ｉの内容とし、第４「DataA」要素５４３ｆを第７「ClassA」要素５４３ｄの内容とする。
そして、階層構造表用の構造化部１７５は、「TableIdentifier」要素５０５ｂの内容「○○表」を要素名とする「○○表」要素５４１の内容を第１「ClassA」要素５４２および第６「ClassA」要素５４３とする。この結果、分割階層の階層構造表５２２から抽出した項目文字列５２２ａおよび値文字列５２２ｂが構造化された情報５４０に変換される。
【００９９】
また、階層構造表用の構造化部１７５は、「TableFormat」要素４４３の内容が「階層構造表」であるため、第２「Table」要素４４１の内容を参照して、入力文書２００の一覧表２０２を、出力文書３００の「一覧表」要素３４１に変換する。
【０１００】
まず、階層構造表用の構造化部１７５は、「CellText」要素４４６ａ〜４４８ａの内容（「項番」、「項目」、「備考」）から一覧表２０２の項目文字列２０２ａ（「項番」、「項目」、「備考」）を抽出し、下方の値文字列２０２ｂ（「１」、「２」、「左１」、「左２」、「右１」、「右２」、「備考１」、「備考２」）については配置されているセルの位置情報も取得しながら抽出する。次に、階層構造表用の構造化部１７５は、抽出した項目文字列２０２ａおよび値文字列２０２ｂを、「項番」要素３４２ｅ，３４３ｅ、「項目」要素３４２ａ，３４２ｃ，３４３ａ，３４３ｃ、「備考」要素３４２ｆ，３４３ｆに変換する。
【０１０１】
ここで、「項目」要素３４２ａ〜３４３ｃに対応する「ClassInfo」要素４４７ｂの内容が「ClassA」であり、「項番」要素３４２ｅ，３４３ｅおよび「備考」要素３４２ｆ，３４３ｆに対応する「ClassInfo」要素４４６ｂ，４４８ｂの内容が「DataA」である。このため、階層構造表用の構造化部１７５は、「項目」要素３４２ａ〜３４３ｃを「ClassA」要素３４２，３４２ｂ，３４３，３４３ｂの内容とし、「項番」要素３４２ｅ，３４３ｅおよび「備考」要素３４２ｆ，３４３ｆを「DataA」要素３４２ｄ，３４３ｄの内容とする。
【０１０２】
また、値文字列２０２ｂ「右１」、「右２」の左方に隣接して値文字列２０２ｂ「左１」、「左２」が配置されている。このため、階層構造表用の構造化部１７５は、下位「ClassA」要素３４２ｂ，３４３ｂを上位「ClassA」要素３４２，３４３の内容とする。
また、２行目および３行目で列番号が最大の値文字列はそれぞれ「右１」、「右２」である。このため、階層構造表用の構造化部１７５は、第１「DataA」要素３４２ｄを第１下位「ClassA」要素３４２ｂの内容とし、第２「DataA」要素３４３ｄを第２下位「ClassA」要素３４３ｂの内容とする。
【０１０３】
そして、階層構造表用の構造化部１７５は、「TableIdentifier」要素４４２の内容「一覧表」を要素名とする「一覧表」要素３４１の内容を第１上位「ClassA」要素３４２および第２上位「ClassA」要素３４３とする。この結果、一覧表２０２から抽出した項目文字列２０２ａおよび値文字列２０２ｂが「一覧表」要素３４１に変換される。
【０１０４】
図８は、実施形態１に係る予め設定された自由記述欄および語句検索表の情報を構造化する一例を示す図であり、（Ａ）は「自由記述欄」の一例を示す図、（Ｂ）は「語句検索表」の一例を示す図、（Ｃ）は様式設定ファイルの「Table」要素の内容の一例を示す図、（Ｄ）は（Ｃ）の「Table」要素の内容で（Ａ）の表が構造化された情報を示す図、（Ｅ）は（Ｃ）の「Table」要素の内容で（Ｂ）の表が構造化された情報を示す図である。
【０１０５】
自由記述欄用の構造化部１７６は、予め設定された「自由記述欄」用に設けられた構造化部であり、「自由記述欄」に含まれている情報を構造化された情報に変換する。自由記述欄用の構造化部１７６は、表形式判定部１６０が選択した表に対応する「TableFormat」要素４３３，４４３，４５３の内容が「自由記述欄」である場合に、情報を抽出して構造化された情報に変換する。自由記述欄用の構造化部１７６は、自由記述欄用の抽出部１７６ａを有する。
【０１０６】
自由記述欄用の抽出部１７６ａは、「自由記述欄」から情報を抽出する。自由記述欄用の抽出部１７６ａは、「TableFormat」要素の内容が「自由記述欄」である「Table」要素において、「SearchTag」要素の内容と一致する項目文字列を抽出すると共に、抽出した項目文字列の下方の罫線の外枠に囲まれた全てのセルに配置された値文字列を全て抽出する。
【０１０７】
自由記述欄用の抽出部１７６ａは、例えば、図８（Ｃ）に示す様式設定ファイル５５３の後述する第１「Table」要素５５３ａの内容を参照して、図８（Ａ）に示す自由記述欄５５１から情報を抽出する。
ここで、自由記述欄５５１は、１行目の項目文字列５５１ａ（「Ａ」）と、２行目の値文字列５５１ｂ（「ａ１」）とを有する。なお、値文字列５５１ｂは罫線の外枠に囲まれた連結セルに配置されている。
【０１０８】
また、様式設定ファイル５５３は、第１「Table」要素５５３ａと第２「Table」要素５５３ｂとを有し、第１「Table」要素５５３ａは、「△△表」が内容の「TableIdentifier」要素５５３ｃと、「自由記述欄」が内容の「TableFormat」要素５５３ｄと、「Ａ」が内容の「SearchTag」要素５５３ｅとを内容として有する。また、第２「Table」要素５５３ｂは、「□□表」が内容の「TableIdentifier」要素５５３ｆと、「語句検索表」が内容の「TableFormat」要素５５３ｇと、「Ｂ」が内容の第１「CellText」要素５５３ｈと、「下」が内容の第１「ExtractDirection」要素５５３ｉと、「Ｃ」が内容の第２「CellText」要素５５３ｊと、「右」が内容の第２「ExtractDirection」要素５５３ｋとを内容として有する。
【０１０９】
自由記述欄用の抽出部１７６ａは、「TableFormat」要素５５３ｄの内容が「自由記述欄」であるため、「SearchTag」要素５５３ｅの内容「Ａ」と一致する項目文字列５５１ａ（見出し文字列である「Ａ」）と、下方の連結セルに配置された値文字列５５１ｂ（「ａ１」）とを抽出する。
【０１１０】
自由記述欄用の構造化部１７６は、自由記述欄用の抽出部１７６ａが抽出した情報を構造化された情報に変換する。自由記述欄用の構造化部１７６は、抽出した項目文字列および値文字列を、項目要素に変換し、変換された項目要素を表要素の内容とする。この結果、「自由記述欄」から抽出した情報が構造化された情報に変換される。
【０１１１】
自由記述欄用の構造化部１７６は、例えば、第１「Table」要素５５３ａの内容を参照して、自由記述欄５５１から抽出した情報を図８（Ｄ）に示す構造化された情報５６０に変換する。
ここで、構造化された情報５６０は、表要素である「△△表」要素５６１を有し、「△△表」要素５６１は、「ａ１」が内容の「Ａ」要素５６２を内容として有する。
【０１１２】
まず、自由記述欄用の構造化部１７６は、抽出した項目文字列５５１ａ（「Ａ」）および下方の連結セルに配置された値文字列５５１ｂ（「ａ１」）を、項目文字列５５１ａが要素名で値文字列５５１ｂが内容の「Ａ」要素５６２に変換する。
そして、自由記述欄用の構造化部１７６は、「TableIdentifier」要素５５３ｃの内容「△△表」を要素名とする「△△表」要素５６１の内容を「Ａ」要素５６２とする。この結果、自由記述欄５５１から抽出した項目文字列５５１ａおよび値文字列５５１ｂが構造化された情報５６０に変換される。
【０１１３】
また、自由記述欄用の構造化部１７６は、「TableFormat」要素４５３の内容が「自由記述欄」であるため、第３「Table」要素４５１の内容を参照して、入力文書２００のフッタ表２０３を、出力文書３００の「フッタ表」要素３５１に変換する。
【０１１４】
まず、自由記述欄用の構造化部１７６は、「SearchTag」要素４５４の内容（「補足事項」）からフッタ表２０３の項目文字列２０３ａ（「補足事項」）を抽出し、下方の連結セルの値文字列２０３ｂ（「補足事項１」）も抽出する。そして、自由記述欄用の構造化部１７６は、抽出した項目文字列２０２ａおよび値文字列２０２ｂを「補足事項」要素３５２に変換し、「TableIdentifier」要素４５２の内容「フッタ表」を要素名とする「フッタ表」要素３５１の内容を「補足事項」要素３５２とする。この結果、フッタ表２０３から抽出した項目文字列２０３ａおよび値文字列２０３ｂが「フッタ表」要素３５１に変換される。
【０１１５】
語句検索表用の構造化部１７７は、予め設定された「語句検索表」用に設けられた構造化部であり、「語句検索表」に含まれている情報を構造化された情報に変換する。語句検索表用の構造化部１７７は、表形式判定部１６０が選択した表に対応する「TableFormat」要素４３３，４４３，４５３の内容が「語句検索表」である場合に、情報を抽出して構造化された情報に変換する。語句検索表用の構造化部１７７は、語句検索表用の抽出部１７７ａを有する。
【０１１６】
語句検索表用の抽出部１７７ａは、「語句検索表」から情報を抽出する。語句検索表用の抽出部１７７ａは、「TableFormat」要素の内容が「語句検索表」である「Table」要素において、「CellText」要素の内容と一致する項目文字列を抽出すると共に、抽出した項目文字列から見て「ExtractDirection」要素の内容（「下」、「右」等）の方向のセルに配置された値文字列を抽出する。
【０１１７】
語句検索表用の抽出部１７７ａは、例えば、第２「Table」要素５５３ｂの内容を参照して、図８（Ｂ）に示す語句検索表５５２から情報を抽出する。
ここで、語句検索表５５２は、項目文字列５５２ａ（「Ａ」、「Ｂ」、「Ｃ」）と、値文字列５５２ｂ（「ｂ１」、「ｃ１」）とを有する。
【０１１８】
語句検索表用の抽出部１７７ａは、「TableFormat」要素５５３ｇの内容が「自由記述欄」であるため、「CellText」要素５５３ｈ，５５３ｊの内容（「Ｂ」、「Ｃ」）と一致する項目文字列５５２ａ（「Ｂ」、「Ｃ」）を抽出する。また、語句検索表用の抽出部１７７ａは、「ExtractDirection」要素５５３ｉ，５５３ｋの内容（「下」、「右」）に従って、項目文字列５５２ａ「Ｂ」の下方から値文字列５５２ｂ「ｂ１」を抽出し、項目文字列５５２ａ「Ｃ」の右方から値文字列５５２ｂ「ｃ１」を抽出する。
【０１１９】
語句検索表用の構造化部１７７は、語句検索表用の抽出部１７７ａが抽出した情報を構造化された情報に変換する。語句検索表用の構造化部１７７は、抽出した項目文字列および値文字列を、項目要素に変換し、変換された全ての項目要素を表要素の内容とする。この結果、「語句検索表」から抽出した情報が構造化された情報に変換される。
【０１２０】
語句検索表用の構造化部１７７は、例えば、第２「Table」要素５５３ｂの内容を参照して、語句検索表５５２から抽出した情報を図８（Ｅ）に示す構造化された情報５７０に変換する。
ここで、構造化された情報５７０は、表要素である「□□表」要素５７１を有し、「□□表」要素５６１は、「ｂ１」が内容の「Ｂ」要素５７２と、「ｃ１」が内容の「Ｃ」要素５７３とを内容として有する。
【０１２１】
まず、語句検索表用の構造化部１７７は、抽出した項目文字列５５２ａ（「Ｂ」、「Ｃ」）および値文字列５５１ｂ（「ｂ１」、「ｃ１」）を項目文字列５５２ａが要素名で値文字列５５２ｂが内容の「Ｂ」要素５７２および「Ｃ」要素５７３に変換する。
そして、語句検索表用の構造化部１７７は、「TableIdentifier」要素５５３ｆの内容「□□表」を要素名とする「□□表」要素５７１の内容を「Ｂ」要素５７２および「Ｃ」要素５７３とする。この結果、語句検索表５５２から抽出した項目文字列５５２ａおよび値文字列５５２ｂが構造化された情報５７０に変換される。
【０１２２】
また、語句検索表用の構造化部１７７は、「TableFormat」要素４３３の内容が「語句検索表」であるため、第１「Table」要素４３１の内容を参照して、入力文書２００のヘッダ表２０１を、出力文書３００の「ヘッダ表」要素３３１に変換する。
【０１２３】
まず、語句検索表用の構造化部１７７は、「CellText」要素４３６ａ，４３７ａの内容（「項番」、「項目」）からヘッダ表２０１の項目文字列２０１ａ（「項番」、「項目」）を抽出し、「ExtractDirection」要素４３６ｂ，４３７ｂの内容（「下」、「下」）から下方の値文字列２０３ｂ（「１」、「項目１」）を抽出する。次に、語句検索表用の構造化部１７７は、抽出した項目文字列２０２ａおよび値文字列２０２ｂを「項番」要素３３２および「項目」要素３３３に変換する。そして、語句検索表用の構造化部１７７は、「TableIdentifier」要素４３２の内容「ヘッダ表」を要素名とする「ヘッダ表」要素３３１の内容を「項目」要素３３２および「項目」要素３３３とする。この結果、ヘッダ表２０１から抽出した項目文字列２０１ａおよび値文字列２０１ｂが「ヘッダ表」要素３３１に変換される。
【０１２４】
出力文書作成部１８０は、構造化部１７１〜１７７が変換した情報（構造化された情報）を含む出力文書３００を作成して記憶する。まず、出力文書作成部１８０は、語句検索表用の構造化部１７７が変換した「ヘッダ表」要素３３１と、階層構造表用の構造化部１７５が変換した「一覧表」要素３４１と、自由記述欄用の構造化部１７６が変換した「フッタ表」要素３５１とを「Body」要素３３０の内容とする。また、出力文書作成部１８０は、入力文書２００からファイル名「様式xxx_タイトル１.yyy」を取得して「FileName」要素３２１の内容とし、「FileName」要素３２１を「Header」要素３２０の内容とする。
【０１２５】
そして、出力文書作成部１８０は、「Document」要素３１０の内容を「Header」要素３２０および「Body」要素３３０とし、出力文書３００を作成し、出力文書記憶部１３２に記憶させる。
出力文書作成部１８０と出力文書記憶部１３２とによって実施形態１の文書作成記憶部１８２が構成されている。
【０１２６】
様式更新部１９０は、様式記憶部１３３が記憶している様式設定ファイル４００を、変更された様式設定ファイル４００に更新する。様式更新部１９０は、使用者が入力文書２００の追加に応じて様式設定ファイル４００を追加して更新する入力をした場合、新たな様式設定ファイル４００を様式記憶部１３３に記憶させる。また、様式更新部１９０は、使用者が入力文書２００の改変に応じて様式や、表、抽出方法、変換方法を変更するために様式設定ファイル４００を変更して更新する入力をした場合、予め記憶された変更前の様式設定ファイル４００に替えて、変更後の様式設定ファイル４００を様式記憶部１３３に記憶させる。
【０１２７】
図９は、実施形態１に係る文書変換処理の一例を示すフローチャートである。
図９に示すように、文書変換処理は、入力文書２００を出力文書３００に変換する入力がされることにより開始する。様式判定部１５０は、後述する様式判定処理を実行し、入力文書２００に応じた様式判定条件情報を有する様式設定ファイル４００を選択する（ステップＳ１０１）。
【０１２８】
表形式判定部１６０は、特定の様式設定ファイル４００が選択された場合（ステップＳ１０２；ＹＥＳ）、後述する表形式判定処理を実行し、入力文書２００の各表２０１〜２０３をそれぞれ特定する（ステップＳ１０３）。また、表形式判定部１６０は、様式設定ファイル４００が選択されなかった場合（ステップＳ１０２；ＮＯ）、文書変換処理を終了する。
【０１２９】
１行１データ表用の構造化部１７１は、「TableFormat」要素４３３〜４５３を参照し、選択された表２０１〜２０３に「１行１データ表」が含まれている場合（ステップＳ１０４；ＹＥＳ）、後述する１行１データ表用の構造化処理を実行し、「１行１データ表」を構造化された情報に変換する（ステップＳ１０５）。なお、１行１データ表用の構造化部１７１は、表２０１〜２０３に「１行１データ表」が含まれていない場合（ステップＳ１０４；ＮＯ）、１行１データ表用の構造化処理を実行しない。
【０１３０】
１列１データ表用の構造化部１７２は、選択された表２０１〜２０３に「１列１データ表」が含まれている場合（ステップＳ１０６；ＹＥＳ）、１列１データ表用の構造化処理を実行し、「１列１データ表」を構造化された情報に変換する（ステップＳ１０７）。なお、１列１データ表用の構造化部１７２は、表２０１〜２０３に「１列１データ表」が含まれていない場合（ステップＳ１０６；ＮＯ）、１列１データ表用の構造化処理を実行しない。
【０１３１】
複数行１データ表用の構造化部１７３は、選択された表２０１〜２０３に「複数行１データ表」が含まれている場合（ステップＳ１０８；ＹＥＳ）、複数行１データ表用の構造化処理を実行し、「複数行１データ表」を構造化された情報に変換する（ステップＳ１０９）。また、複数行１データ表用の構造化部１７３は、表２０１〜２０３に「複数行１データ表」が含まれていない場合（ステップＳ１０８；ＮＯ）、複数行１データ表用の構造化処理を実行しない。
【０１３２】
複数列１データ表用の構造化部１７４は、選択された表２０１〜２０３に「複数列１データ表」が含まれている場合（ステップＳ１１０；ＹＥＳ）、複数列１データ表用の構造化処理を実行し、「複数列１データ表」を構造化された情報に変換する（ステップＳ１１１）。また、複数列１データ表用の構造化部１７４は、表２０１〜２０３に「複数列１データ表」が含まれていない場合（ステップＳ１１０；ＮＯ）、複数列１データ表用の構造化処理を実行しない。
【０１３３】
階層構造表用の構造化部１７５は、選択された表２０１〜２０３に「階層構造表」が含まれている場合（ステップＳ１１２；ＹＥＳ）、後述する階層構造表用の構造化処理を実行し、「階層構造表」を構造化された情報に変換する（ステップＳ１１３）。また、階層構造表用の構造化部１７５は、表２０１〜２０３に「階層構造表」が含まれていない場合（ステップＳ１１２；ＮＯ）、階層構造表用の構造化処理を実行しない。
【０１３４】
自由記述欄用の構造化部１７６は、選択された表２０１〜２０３に「自由記述欄」が含まれている場合（ステップＳ１１４；ＹＥＳ）、後述する自由記述欄用の構造化処理を実行し、「自由記述欄」を構造化された情報に変換する（ステップＳ１１５）。また、自由記述欄用の構造化部１７６は、表２０１〜２０３に「自由記述欄」が含まれていない場合（ステップＳ１１４；ＮＯ）、自由記述欄用の構造化処理を実行しない。
【０１３５】
語句検索表用の構造化部１７７は、選択された表２０１〜２０３に「語句検索表」が含まれている場合（ステップＳ１１６；ＹＥＳ）、後述する語句検索表用の構造化処理を実行し、「語句検索表」を構造化された情報に変換する（ステップＳ１１７）。また、語句検索表用の構造化部１７７は、表２０１〜２０３に「語句検索表」が含まれていない場合（ステップＳ１１６；ＮＯ）、語句検索表用の構造化処理を実行しない。
【０１３６】
出力文書作成部１８０は、変換した情報（「ヘッダ表」要素３３１、「一覧表」要素３４１、「フッタ表」要素３５１）やファイル名から「Document」要素３１０を含む出力文書３００を作成し、出力文書記憶部１３２に記憶させ、文書変換処理を終了する（ステップＳ１１８）。
【０１３７】
図１０は、図９の様式判定処理のサブルーチンの一例を示すフローチャートである。
図１０に示すように、様式判定部１５０は、様式記憶部１３３が記憶している全ての様式設定ファイル４００から未判定の様式設定ファイル４００が有る場合（ステップＳ２０１；ＹＥＳ）、判定対象となる様式設定ファイル４００を１つ取得する（ステップＳ２０２）。また、様式判定部１５０は、入力文書２００の表文字列と、「MatchingCell」要素４２３の内容との一致数を「MatchingCell」要素４２３の総数で除算した一致率を求める（ステップＳ２０３）。
【０１３８】
また、様式判定部１５０は、求めた一致率が様式閾値（「MatchingPercentage」要素４２４の内容）以上の場合（ステップＳ２０４；ＹＥＳ）、判定対象の様式設定ファイル４００を入力文書２００に応じた様式判定条件情報を有する様式設定ファイル４００として選択し、様式判定処理を終了する（ステップＳ２０５）。また、様式判定部１５０は、一致率が様式閾値より小さい場合（ステップＳ２０４；ＮＯ）、ステップＳ２０１に戻り、次の未判定の様式設定ファイル４００が有れば判定対象とする。そして、様式判定部１５０は、未判定の様式設定ファイル４００が最初から無い場合や、全て判定済となった場合（ステップＳ２０１；ＮＯ）、様式判定処理を終了する。
【０１３９】
図１１は、図９の表形式判定処理のサブルーチンの一例を示すフローチャートである。
図１１に示すように、表形式判定部１６０は、外枠の罫線内で判定対象の表２０１〜２０３を取得する（ステップＳ３０１）。また、表形式判定部１６０は、背景色のセルの項目文字列２０１ａ〜２０３ａと、「SearchTag」要素４３４〜４５４の内容との一致数を各「Table」要素４３１〜４５１毎の「SearchTag」要素４３４〜４５４の総数で除算した一致率を求める（ステップＳ３０２）。また、表形式判定部１６０は、一致率が表閾値（「MatchingPercentage」要素４３５，４４５，４５５の内容）以上の場合（ステップＳ３０３；ＹＥＳ）、判定対象の表２０１〜２０３を「Table」要素４３１〜４５１に対応する特定の表として選択する（ステップＳ３０４）。
【０１４０】
また、表形式判定部１６０は、特定の表２０１〜２０３が選択された場合や、一致率が表閾値より小さい場合（ステップＳ３０３；ＮＯ）、次の未判定の表２０１〜２０３が有れば（ステップＳ３０５；ＹＥＳ）、ステップＳ３０１に戻る。そして、表形式判定部１６０は、未判定の表２０１〜２０３が全て判定済となった場合（ステップＳ３０５；ＮＯ）、表形式判定処理を終了する。
【０１４１】
図１２は、図９の１行１データ表用の構造化処理のサブルーチンの一例を示すフローチャートである。
図１２に示すように、１行１データ表用の構造化部１７１は、「CellText」要素５０５ｃ，５０５ｅの内容と一致する項目文字列５０１ａを抽出し（ステップＳ４０１）、項目文字列５０１ａの下方の値文字列５０１ｂを１行抽出し（ステップＳ４０２）、項目要素に変換する（ステップＳ４０３）。
【０１４２】
また、１行１データ表用の構造化部１７１は、「ClassInfo」要素５０５ｄ，５０５ｆの内容を参照して、項目要素を対応する「ClassA」要素および「DataA」要素の内容とし（ステップＳ４０４）、全ての「DataA」要素を「ClassA」要素の内容とする（ステップＳ４０５）。また、１行１データ表用の構造化部１７１は、次の行に値文字列５０１ｂが有れば（ステップＳ４０６；ＹＥＳ）、ステップＳ４０２に戻る。そして、１行１データ表用の構造化部１７１は、値文字列５０１ｂが無ければ（ステップＳ４０６；ＮＯ）、全ての「ClassA」要素を表要素（「○○表」要素５１１）の内容とし（ステップＳ４０７）、１行１データ表用の構造化処理を終了する。
【０１４３】
なお、１列１データ表用の構造化処理は、値文字列を項目文字列の右方のセルから抽出する以外は、１行１データ表用の構造化処理と同様の説明となる。また、複数行１データ表用の構造化処理は、値文字列を項目文字列の右方の連結セルから抽出する以外は、１行１データ表用の構造化処理と同様の説明となる。さらに、複数列１データ表用の構造化処理は、値文字列を項目文字列の右方の連結セルから抽出する以外は、１行１データ表用の構造化処理と同様の説明となる。
【０１４４】
図１３は、図９の階層構造表用の構造化処理のサブルーチンの一例を示すフローチャートである。
図１３に示すように、階層構造表用の構造化部１７５は、「CellText」要素４４６ａ〜４４８ａの内容と一致する項目文字列２０２ａを抽出し（ステップＳ５０１）、配置されたセルの位置情報と共に項目文字列２０２ａの下方の値文字列２０２ｂを全て抽出し（ステップＳ５０２）、項目要素に変換する（ステップＳ５０３）。また、階層構造表用の構造化部１７５は、「ClassInfo」要素４４６ｂ〜４４８ｂの内容を参照して、項目要素（「項目」要素３４２ａ，３４２ｃ，３４３ａ，３４３ｃ、「項番」要素３４２ｅ，３４３ｅ、「備考」要素３４２ｆ，３４３ｆ）を対応する「ClassA」要素３４２，３４２ｂ，３４３，３４３ｂおよび「DataA」要素３４２ｄ，３４３ｄの内容とする（ステップＳ５０４）。
【０１４５】
また、階層構造表用の構造化部１７５は、「ClassA」要素３４２，３４２ｂ，３４３，３４３ｂのうち、最後の列で最初の行の下位階層の値文字列２０２ｂ（「右１」）が内容の下位「ClassA」要素３４２ｂを階層構造の変換対象として取得する（ステップＳ５０５）。また、階層構造表用の構造化部１７５は、下位階層の値文字列（「右１」、「右２」）の左方に上位階層の値文字列２０２ｂ（「左１」、「左２」）が有るか否かを求める。
【０１４６】
階層構造表用の構造化部１７５は、上位階層の値文字列２０２ｂが有り（ステップＳ５０６；ＹＥＳ）、左方に隣接するセルに配置されていれば（ステップＳ５０７；ＹＥＳ）、下位「ClassA」要素３４２ｂ，３４３ｂを上位「ClassA」要素３４２，３４３の内容として階層構造を形成する（ステップＳ５０８）。また、階層構造表用の構造化部１７５は、上位階層の値文字列２０２ｂが左方に隣接するセルに配置されていなければ（ステップＳ５０７；ＮＯ）、下位「ClassA」要素を中間階層の「ClassA」要素（「ダミー」が内容の「ClassA」要素）の内容とし、中間階層の「ClassA」要素を上位「ClassA」要素３４２，３４３の内容として階層構造を形成する（ステップＳ５０８）。このとき、階層構造表用の構造化部１７５は、上位階層の値文字列２０２ｂまでの空白のセルの数（階層の数）だけ中間階層の「ClassA」要素を設ける。
【０１４７】
また、階層構造表用の構造化部１７５は、上位階層の値文字列２０２ｂが無い場合（ステップＳ５０６；ＮＯ）、現在の変換対象の値文字列２０２ｂのセルから１列左にシフトし（ステップＳ５１０）、空列であれば（ステップＳ５１１；ＹＥＳ）、ステップＳ５１０を繰り返す。また、階層構造表用の構造化部１７５は、空列でなければ（ステップＳ５１１；ＮＯ）、現在のセルの上方に上位階層の値文字列２０２ｂが有るか否かを求める。
【０１４８】
階層構造表用の構造化部１７５は、上位階層の値文字列２０２ｂが有れば（ステップＳ５１２；ＹＥＳ）、ステップＳ５０８に移り、上位階層の値文字列２０２ｂが無ければ（ステップＳ５１２；ＮＯ）、下位「ClassA」要素を中間階層の「ClassA」要素の内容として階層構造を形成する（ステップＳ５１３）。また、階層構造表用の構造化部１７５は、現在のセルが１列目でなければ（ステップＳ５１４）、ステップＳ５１０に戻り、上方に上位階層の値文字列が配置されたセルまでの空白のセルの数（階層の数）だけ中間階層の「ClassA」要素を設ける（ステップＳ５１０〜Ｓ５１３）。
【０１４９】
また、階層構造表用の構造化部１７５は、変換対象の値文字列２０２ｂ（「右１」）について階層構造が形成された場合、同列下方に下位階層の値文字列２０２ｂがあるか、すなわち、最後の行であるか否かを求める。階層構造表用の構造化部１７５は、最後の行で無ければ（ステップＳ５１５；ＮＯ）、次の行の下位階層の値文字列２０２ｂ（「右２」）が内容の下位「ClassA」要素３４３ｂを階層構造の変換対象として取得し（ステップＳ５１６）、ステップＳ５０６に戻る。
【０１５０】
また、階層構造表用の構造化部１７５は、最後の行であれば（ステップＳ５１５；ＹＥＳ）、下位階層の値文字列２０２ｂがあるか、すなわち、２列目であるか否かを求める。階層構造表用の構造化部１７５は、２列目で無ければ（ステップＳ５１７；ＮＯ）、１つ前の列で最初の行の下位階層の値文字列２０２ｂが内容の下位「ClassA」要素を階層構造の変換対象として取得し（ステップＳ５１８）、ステップＳ５０６に戻る。また、階層構造表用の構造化部１７５は、２列目であれば（ステップＳ５１７；ＹＥＳ）、「DataA」要素３４２ｄ，３４３ｄを同行で最下位の下位「ClassA」要素３４２ｃ，３４３ｃの内容とする（ステップＳ５１９）。そして、階層構造表用の構造化部１７５は、全ての上位「ClassA」要素３４２，３４３を表要素（「一覧表」要素３４１）の内容とし（ステップＳ５２０）、階層構造表用の構造化処理を終了する。
【０１５１】
図１４は、図９の自由記述欄用の構造化処理のサブルーチンの一例を示すフローチャートである。
図１４に示すように、自由記述欄用の構造化部１７６は、「SearchTag」要素４５４の内容と一致する項目文字列２０３ａを抽出し（ステップＳ６０１）、項目文字列２０３ａの下方の外枠に囲まれた全てのセルから値文字列２０３ｂを抽出し（ステップＳ６０２）、項目要素に変換する（ステップＳ６０３）。そして、自由記述欄用の構造化部１７６は、項目要素（「補足事項」要素３５２）を表要素（「フッタ表」要素３５１）の内容とし（ステップＳ６０４）、自由記述欄用の構造化処理を終了する。
【０１５２】
図１５は、図９の語句検索表用の構造化処理のサブルーチンの一例を示すフローチャートである。
図１５に示すように、語句検索表用の構造化部１７７は、「CellText」要素４３６ａ，４３６ａの内容と一致する項目文字列２０１ａを抽出する（ステップＳ７０１）。また、語句検索表用の構造化部１７７は、項目文字列２０１ａから見て「ExtractDirection」要素４３６ｂ，４３７ｂの内容の方向の値文字列２０１ｂを抽出し（ステップＳ７０２）、項目要素に変換する（ステップＳ７０３）。そして、語句検索表用の構造化部１７７は、全ての項目要素（「項番」要素３３２、「項目」要素３３３）を表要素（「ヘッダ表」要素３３１）の内容とし（ステップＳ７０４）、語句検索表用の構造化処理を終了する。
【０１５３】
以上説明したように、実施形態１の文書変換装置１００によれば、様式記憶部１３３が入力文書記憶部１３１に記憶されている全ての入力文書２００についての様式設定ファイル４００を記憶し、様式判定部１７１が入力文書２００に応じた様式判定条件情報を有する特定の様式設定ファイル４００を選択する。このため、文書変換装置１００は、特定の様式設定ファイル４００を参照して、入力文書２００を出力文書３００に変換できる。
【０１５４】
この結果、文書変換装置１００は、様式毎に異なる様式設定ファイル４００を選択して、様式が異なる複数の入力文書２００を出力文書３００に変換できる。
また、文書変換装置１００は、文書変換装置１００の導入前に既に作成された入力文書２００についても、作成済の入力文書２００に応じた様式判定条件情報を有する様式設定ファイル４００を予め作成して様式記憶部１３３に記憶させれば出力文書３００に変換することができる。このため、文書変換装置１００は、新規に作成される入力文書２００だけでなく、既存の入力文書２００についても対応することができる。
【０１５５】
また、実施形態１の文書変換装置１００では、表形式判定部１６０が選択された様式設定ファイル４００の「Table」要素４３１〜４５１を参照し、入力文書２００の表２０１〜２０３をそれぞれ特定の表として選択する。また、文書変換装置１００は、構造化部１７１〜１７７が「Table」要素４３１〜４５１を参照し、選択された表２０１〜２０３を構造化された情報（「ヘッダ表」要素４３１、「一覧表」要素４４１、「フッタ表」要素４５１）にそれぞれ変換する。このため、文書変換装置１００は、複数の表２０１〜２０３を含む入力文書２００から情報を抽出して期待される出力文書３００に変換できる。
【０１５６】
また、実施形態１の文書変換装置１００では、制御部１４０が、変換対象となる全ての入力文書２００で用いる予め設定された７形式の表（「１行１データ表」、「１列１データ表」、…、「語句検索表」）に応じて７個の構造化部１７１〜１７７を備えている。そして、制御部１４０が選択された表２０１〜２０３の形式毎に設けられた構造化部１７７，１７５，１７６を適用して、表２０１〜２０３から情報を抽出して構造化された情報に変換する。
【０１５７】
ここで、例えば、変換対象の１００００個の入力文書２００が１００個の様式の何れか１つを選択して作成されている場合について考える。この場合、様式毎に構造化部を設ける文書変換装置では、全ての入力文書２００を出力文書３００に変換するために、１００個の構造化部（例えば、１００個のプログラムを実行することでそれぞれ実現可能な１００個の機能）を設ける必要がある。
【０１５８】
これに対して、実施形態１の文書変換装置１００は、表の形式毎に構造化部を設けられ、全ての様式が７形式の表の組み合わせの形態で構成されている。このため、文書変換装置１００は、７個の構造化部１７１〜１７７を設けて１００個の様式設定ファイル４００を作成するだけで、全ての入力文書２００を出力文書３００に変換できる。
この結果、文書変換装置１００は、様式毎に構造化部を設ける構成に比べ、全ての構造化部１７１〜１７７を設けるための開発規模や開発期間を低減でき、様式が異なる複数の入力文書２００に柔軟に対応できる。
【０１５９】
特に、実施形態１の文書変換装置１００では、様式更新部１９０が様式設定ファイル４００を追加・変更される等した場合に様式記憶部１３３が記憶している情報を更新する。よって、文書変換装置１００は、例えば、入力文書２００（仕様書等）が追加・改変等されて様式が追加・変更された場合でも、表の形式が追加されなければ、対応する様式設定ファイル４００を追加・変更するだけで、追加・改変等された入力文書２００を出力文書３００に変換できる。また、文書変換装置１００は、仮に様式が追加・変更されて表の形式も追加された場合には、対応する様式設定ファイル４００を追加・改変し、追加された表用に構造化部を新たに設けるだけで、入力文書２００を出力文書３００に変換できる。
【０１６０】
よって、実施形態１の文書変換装置１００は、様式が追加・改変される度に様式用に構造化部を新たに設ける構成に比べ、構造化部を新たに設ける頻度を低減しつつ、新たな構造化部を設けるための開発規模や開発期間も短縮できる。
この結果、実施形態１の文書変換装置１００は、様式に応じて構造化部を設ける構成に比べ、入力文書２００の追加・改変に柔軟に対応できる。
【０１６１】
また、実施形態１の文書変換装置１００は、例えば、入力文書２００の様式や表の形式に改変がなく、表２０１〜２０３の項目文字列２０１ａ〜２０３ａが追加・改変・削除等された場合も、対応する様式設定ファイル４００を更新するだけで、入力文書２００を出力文書３００に変換できる。
【０１６２】
よって、実施形態１の文書変換装置１００は、入力文書２００にマーカーを埋め込んだ従来の構成における、入力文書２００の改変で出力文書３００に変換できなくなる問題や、追加内容が出力文書３００に反映できない問題を解消できる。また、実施形態１の文書変換装置１００は、項目文字列２０１ａ〜２０３ａが追加・改変される度に構造化部を追加・変更等する構成に比べ、入力文書２００の追加・改変に柔軟に対応できる。
【０１６３】
また、実施形態１の文書変換装置１００は、例えば、使用者が出力文書３００の内容を改変（抽出項目や階層構造の変更等）したい場合でも、対応する様式設定ファイル４００を更新するだけで、入力文書２００を使用者が期待する出力文書３００に変換できる。
よって、実施形態１の文書変換装置１００は、出力文書３００に必要な内容が変更される度に構造化部を追加・変更等する構成に比べ、出力文書３００の追加・改変に柔軟に対応できる。
【０１６４】
また、実施形態１の文書変換装置１００では、様式判定部１５０が入力文書２００の表文字列と「MatchingCell」要素４２３の内容との一致率が様式閾値以上となる特定の様式設定ファイル４００を選択する。このため、実施形態１のように様式閾値を「1」より小さい値に調整すれば、文書変換装置１００は、所謂曖昧検索で様式設定ファイル４００を選択できる。
【０１６５】
さらに、実施形態１の文書変換装置１００は、表形式判定部１６０が、様式判定部１５０と同様に、項目文字列２０１ａ〜２０３ａと「SearchTag」要素４３４〜４５４の内容との一致率が表閾値以上となる特定の形式の表を選択する。このため、表閾値を「1」より小さい値に調整すれば、文書変換装置１００は、曖昧検索で表２０１〜２０３を選択できる。
【０１６６】
この結果、文書変換装置１００は、様式設定ファイル４００が入力文書２００の改変に未対応であっても、入力文書２００に応じた様式判定条件情報を有する様式設定ファイル４００を選択して出力文書３００に変換する可能性を高めることができる。よって、実施形態１の文書変換装置１００は、一致率による曖昧検索で様式設定ファイル４００や表２０１〜２０３を選択しない場合に比べ、入力文書２００の追加・改変に柔軟に対応できる。
【０１６７】
また、実施形態１の文書変換装置１００では、表形式判定部１６０が罫線情報を用いて表２０１〜２０３の範囲を求めており、罫線情報を用いない場合に比べ、簡易に表２０１〜２０３の範囲を求めることができる。
また、実施形態１の文書変換装置１００では、表形式判定部１６０が背景色情報を用いて項目文字列２０１ａ〜２０３ａの範囲を求めており、背景色情報を用いない場合に比べ、簡易に項目文字列２０１ａ〜２０３ａの範囲を求めることができる。
【０１６８】
また、実施形態１の各構造化部１７１〜１７４は、「CellText」要素５０５ｃ，５０５ｅを用いて抽出対象の項目（「Ａ」，「Ｂ」）を特定する。また、各構造化部１７１〜１７４は、「ClassInfo」要素５０５ｄ，５０５ｆを用いて抽出した項目をどのような構造（「ClassA」要素５１２，５１３、「DataA」要素５１２ｂ，５１３ｂ）にするかを特定する。そして、各構造化部１７１〜１７４は、各行の全ての「DataA」要素５１２ｂ，５１３ｂが１つの「ClassA」要素５１２，５１３の内容となる階層構造で各表５０１〜５０４を構造化された情報５１０に変換する。
よって、実施形態１の文書変換装置１００は、各構造化部１７１〜１７４が様式設定ファイルの構造化に関する情報を用いて、予め設定されたデータ構造（ＸＭＬ構造）で各表５０１〜５０４を構造化された情報５１０に変換できる。
【０１６９】
また、実施形態１の階層構造表用の構造化部１７５は、各構造化部１７１〜１７４と同様に、「CellText」要素４４６ａ〜４４８ａ，５０５ｃ，５０５ｅで抽出対象の項目を特定し、「ClassInfo」要素４４６ｂ〜４４８ｂ，５０５ｄ，５０５ｆで各項目をどのような構造にするか特定する。そして、階層構造表用の構造化部１７５は、抽出した値文字列の位置情報から、上位階層の値文字列と下位階層の値文字列との階層関係を求めて、「ClassA」要素と「DataA」要素とを階層化し、階層構造表２０２，５２１，５２２を構造化された情報３４１，５３０，５４０に変換する。
よって、実施形態１の文書変換装置１００は、階層構造表用の構造化部１７５が様式設定ファイルの構造化に関する情報と値文字列の位置情報とを用いて、データ構造を自動的に構築して階層構造表２０２，５２１，５２２を構造化された情報５３０に変換できる。
【０１７０】
また、実施形態１の階層構造表用の構造化部１７５は、階層構造表２０２，５２１，５２２の項目文字列や値文字列が追加、改変、削除等されて上位階層の値文字列と下位階層の値文字列との階層関係が崩れている場合、「ダミー」が内容の中間階層の「ClassA」要素５４３ｃを設ける。よって、使用者は、変換された出力文書３００に「ダミー」が内容の「ClassA」要素５４３ｃを検知することにより、階層関係が崩れているか否かを確認できる。
この結果、実施形態１の文書変換装置１００は、入力文書２００の階層構造のエラー解析が可能な出力文書３００を作成できる。
【０１７１】
また、実施形態１の自由記述欄用の構造化部１７６は、「SearchTag」要素４５４，５５３ｅで抽出対象の見出し文字列を特定する。そして、自由記述欄用の構造化部１７６は、見出し文字列の下方の外枠に囲まれた全てのセルに配置された値文字列（全ての語句）を抽出して、見出し文字列が要素名の項目要素の内容とし、自由記述欄２０３，５５１を構造化された情報３５１，５６０に変換する。
よって、実施形態１の文書変換装置１００は、例えば、値文字列２０３ｂ，５５１ｂが長文になり、罫線の外枠の範囲を超えるのを避けるために外枠内のセルが追加された場合でも、自由記述欄２０３，５５１から値文字列を全て抽出して構造化された情報３５１，５６０に変換できる。
【０１７２】
また、実施形態１の語句検索表用の構造化部１７７は、「CellText」要素４３６ａ，４３７ｂ，５５３ｈ，５５３ｊを用いて抽出対象の項目を特定する。また、語句検索表用の構造化部１７７は、「ExtractDirection」要素４３６ｂ，４３７ｂ，５５３ｉ，５５３ｋを用いて抽出する方向を特定して値文字列２０１ｂ，５５２ｂを抽出する。そして、語句検索表用の構造化部１７７は、項目要素を作成して語句検索表２０１，５５２を構造化された情報５７０に変換する。
よって、実施形態１の文書変換装置１００は、項目文字列２０１ａ，５５２ａから見て任意の方向に対応する値文字列２０１ｂ，５５２ｂに配置された場合でも、語句検索表２０１，５５２を構造化された情報５７０に変換できる。
【０１７３】
なお、上記実施形態では、１つの様式設定ファイル４００で１つの様式を設定しているが、例えば、様式設定ファイル４００に様式の数だけ「FormatInfo」要素を設けることにより、１つの様式設定ファイル４００で全ての様式を設定してもよい。
【０１７４】
なお、上記実施形態では、様式判定部１５０が様式設定ファイル４００を参照して様式を求めているが、例えば、様式設定ファイル４００の情報が登録されたＸＭＬデータベースを検索して様式を求めてもよい。
【０１７５】
なお、上記実施形態では、様式判定部１５０が判定対象の様式設定ファイル４００を順次判定対象として、様式閾値以上となる一致率が得られた場合に、その様式設定ファイル４００を選択して様式判定処理を終了したが、例えば、全ての様式設定ファイル４００について入力文書２００との一致率を求めて、一致率が最大となる様式設定ファイル４００を選択してもよい。
【０１７６】
なお、上記実施形態では、表形式判定部１６０が判定対象の表２０１〜２０３を順次判定対象として、１つの「SearchTag」要素について表閾値以上となる一致率が得られた場合に、特定の表２０１〜２０３であると選択して次の表を判定対象としたが、例えば、１つの「SearchTag」要素について全ての表２０１〜２０３との一致率を求めて、一致率が最大となる表２０１〜２０３を特定の表であると選択してもよい。
【０１７７】
なお、上記実施形態では、自由記述欄２０３，５５１以外の表には見出し文字列が付与されていないが、全ての表に見出し文字列を付与してもよい。この場合、見出し文字列が必ず各表に特有の表文字列となるようにし、「SearchTag」要素を見出し文字列に統一すれば、表形式判定部１６０が各表を誤認識することなく、簡易に各表を選択できる。
【０１７８】
なお、上記実施形態では、様式判定部１５０が入力文書２００の表文字列の一致率から様式を求めているが、例えば、属性情報（ファイル名、シート名、印刷用のヘッダ情報、印刷用のフッタ情報）や表文字列が有する書式情報の一致数や一致率から様式を求めてもよい。すなわち、様式判定部１５０が一致するか否かを判定する事項には、入力文書２００の属性情報や表文字列の書式情報等も含まれる。この場合、属性情報が表文字列より改変され難い場合は、使用者が様式設定ファイル４００を更新する頻度を低減できる。
また、例えば、様式判定部１５０が、表文字列の一致率と、属性情報の一致数や一致率との両方を組み合わせて様式を求めてもよい。この場合、様式判定部１５０が様式を求める精度をより高めることができる。
【０１７９】
なお、上記実施形態では、様式判定部１５０が入力文書２００の表文字列と「MatchingCell」要素の内容との「完全一致」の一致率から様式を求めているが、例えば、「完全一致」、「前方一致」、「中間一致（部分一致）」、「後方一致」が内容の新たな要素を「PresumptionByCells」要素４２２に追加して、表文字列と「MatchingCell」要素の内容との「前方一致」や、「中間一致」、「後方一致」の一致率から様式を求めてもよい。この場合、「完全一致」の一致率でなくても様式を求めることができ、曖昧検索の条件を拡張して様式設定ファイル４００を選択し易くすることができる。なお、新たな要素を追加する場合、様式判定部１５０が新たな要素の内容を参照して求めた「完全一致」、「前方一致」、「中間一致」、「後方一致」の何れかで一致率を求めることができるように様式判定部１５０を改変する必要がある。
【０１８０】
なお、上記実施形態では、表形式判定部１６０が表２０１〜２０３の項目文字列２０１ａ〜２０３ａと「SearchTag」要素の内容との「完全一致」の一致率から表２０１〜２０３を求めているが、例えば、「完全一致」、「前方一致」、「中間一致」、「後方一致」が内容の新たな要素を「Table」要素４２２に追加して、項目文字列２０１ａと「SearchTag」要素の内容との「前方一致」や、「中間一致」、「後方一致」の一致率から表２０１〜２０３を求めてもよい。この場合、「完全一致」の一致率でなくても表２０１〜２０３を求めることができ、曖昧検索の条件を拡張して表２０１〜２０３を選択し易くすることができる。なお、新たな要素を追加する場合、表形式判定部１６０が新たな要素の内容を参照して求めた「完全一致」、「前方一致」、「中間一致（部分一致）」、「後方一致」の何れかで一致率を求めることができるように表形式判定部１６０を改変する必要がある。
【０１８１】
なお、上記実施形態では、表形式判定部１６０が外枠の罫線内で背景色が存在する範囲内から各表を特定する表文字列を求めたが、例えば、セルの書式情報（例えば、フォントサイズや、太文字、斜体文字、下線等の装飾）から各表を特定する表文字列を求めてもよい。
【０１８２】
図１６は、図６（Ａ）の１列１データ表の項目に階層構造が追加された階層項目付き１行１データ表の一例を示す図である。
なお、上記実施形態では、入力文書２００の様式が７形式の表の組み合わせの形態であるが、例えば、６形式以下や８形式以上の表の組み合わせの形態としてもよい。ここで、８形式以上とした場合には、追加した表から情報を抽出して構造化する新たな構造化部を追加する必要がある。例えば、図１６に示すように、項目文字列にも階層構造が付与された１行１データ表５８１であれば、新たな形式の「階層項目付き１行１データ表」として新たな階層項目付き１行１データ表用の構造化部を設けてもよい。この場合、１行１データ表用の構造化処理１７１を階層構造の項目文字列にも対応できるように改変して「１行１データ表」の定義を拡張してもよい。このように、構造化部１７１〜１７７を設ける際に、表の形式毎に発生し易い改造パターンを予め検討しておくことにより、改造に対応し易い構造化部１７１〜１７７を構築できる。
【０１８３】
なお、上記実施形態では、表形式判定部１６０が表２０１〜２０３を一括で判定した後、構造化部１７１〜１７７が表２０１〜２０３をそれぞれ変換したが、例えば、表形式判定部１６０が表２０１〜２０３を一つ判定した後、構造化部１７１〜１７７が判定された表２０１〜２０３を変換する処理を判定対象の表が無くなるまで繰り返してもよい。
【０１８４】
なお、上記実施形態では、１行１データ表用の構造化部１７１や複数行１データ表用の構造化部１７３が値文字列５０１ｂ，５０３ｂを１行ずつ抽出して１行ずつ「ClassA」要素および「DataA」要素の階層構造を形成する処理を繰り返したが、例えば、階層構造表用の構造化部１７５と同様に、位置情報を取得しつつ値文字列５０１ｂを一括で取得して「ClassA」要素および「DataA」要素の階層構造を形成する処理を一括で実行してもよい。また、１列１データ表用の構造化部１７２や複数列１データ表用の構造化部１７４についても同様に、が値文字列５０１ｂ，５０３ｂを１列ずつ抽出して１列ずつ「ClassA」要素および「DataA」要素の階層構造を形成する処理を繰り返したが、例えば、位置情報を取得しつつ値文字列５０１ｂを一括で取得して「ClassA」要素および「DataA」要素の階層構造を形成する処理を一括で実行してもよい。
【０１８５】
なお、上記実施形態では、各抽出部１７１ａ〜１７７ａが各表２０１〜２０３，５０１〜５０４，５２１，５２２，５５１，５５２から全ての表文字列を抽出したが、例えば、「KeyCell」要素を削除したり、抽出が不要であることを示す「false」が内容の新たな要素（例えば、「IsExtractTarget」要素）を「KeyCell」要素の内容に追加したりして、抽出不要な項目を抽出しないようにしてもよい。なお、新たな要素を追加する場合、各抽出部１７１ａ〜１７７ａが新たな要素の内容を参照して抽出の要不要であるかを求めて、必要な項目のみ抽出できるように各抽出部１７１ａ〜１７７ａを改変する必要がある。
【０１８６】
なお、上記実施形態では、各構造化部１７１〜１７７が抽出された項目文字列を項目要素の要素名としたが、例えば、要素名が内容の新たな要素（例えば、「ElementName」要素）を「KeyCell」要素の内容に追加して、項目文字列と異なる文字列を項目要素の要素名としてもよい。なお、新たな要素を追加する場合、各構造化部１７１〜１７７が新たな要素の内容を参照して求めた要素名で項目要素を作成できるように各構造化部１７１〜１７７を改変する必要がある。
【０１８７】
なお、上記実施形態では、記憶部１３０が、ＲＡＭ、ＲＯＭ、ハードディスクで構成されているが、例えば、フラッシュメモリ、ハードディスク、ＤＶＤ−ＲＡＭ（Digital Versatile Disc Random-Access Memory）、ＤＶＤ−ＲＷ（Digital Versatile Disc ReWritable）等の不揮発性メモリから構成してもよい。
その他、前記のハードウェア構成やフローチャートは一例であり、任意に変更および修正が可能である。
【０１８８】
なお、文書変換装置１００の各機能を、ＯＳ（オペレーティングシステム）とアプリケーションプログラムの分担、またはＯＳとアプリケーションプログラム（文書変換プログラム）との協働により実現する場合などには、アプリケーションプログラム部分のみを記憶部１３０や、記録媒体、記憶装置等に格納してもよい。
【０１８９】
また、搬送波にアプリケーションプログラム（文書変換プログラム）を重畳し、通信ネットワークを介して配信することも可能である。たとえば、通信ネットワーク上の掲示板（ＢＢＳ：Bulletin Board System）にアプリケーションプログラムを掲示し、ネットワークを介してアプリケーションプログラムを配信してもよい。そして、このアプリケーションプログラムをコンピュータにインストールして起動し、ＯＳの制御下で、他のアプリケーションプログラムと同様に実行することにより、前記の処理を実行できるように構成してもよい。
【符号の説明】
【０１９０】
１００…文書変換装置
１５０…様式判定部
１６０…表形式判定部
１７０…情報変換制御部
１７１…１行１データ表用の構造化部
１７２…１列１データ表用の構造化部
１７３…複数行１データ表用の構造化部
１７４…複数列１データ表用の構造化部
１７５…階層構造表用の構造化部
１７６…自由記述欄用の構造化部
１７７…語句検索表用の構造化部
２００…入力文書
２０１…ヘッダ表
２０２…一覧表
２０３…フッタ表
２０１ａ〜２０３ａ，５０１ａ〜５０４ａ，５２１ａ，５２２ａ，５５１ａ，５５２ａ…項目文字列
２０１ｂ〜２０３ｂ，５０１ｂ〜５０４ｂ，５２１ｂ，５２２ｂ，５５１ｂ，５５２ｂ…値文字列
３３１…「ヘッダ表」要素
３４１…「一覧表」要素
３５１…「フッタ表」要素
４２２…「PresumptionByCells」要素
５１０，５３０，５４０，５６０，５７０…構造化された情報
５２１…入れ子階層の階層構造表
５２２…分割階層の階層構造表
【図１】
2013257852.tif 000003
【図２】
2013257852.tif 000004
【図３】
2013257852.tif 000005
【図４】
2013257852.tif 000006
【図５】
2013257852.tif 000007
【図６】
2013257852.tif 000008
【図７】
2013257852.tif 000009
【図８】
2013257852.tif 000010
【図９】
2013257852.tif 000011
【図１０】
2013257852.tif 000012
【図１１】
2013257852.tif 000013
【図１２】
2013257852.tif 000014
【図１３】
2013257852.tif 000015
【図１４】
2013257852.tif 000016
【図１５】
2013257852.tif 000017
【図１６】
2013257852.tif 000018