(57)【要約】      （修正有）【課題】視覚的に表形式として構造化されていない文字列から表構造を特定する装置、情報処理方法及びプログラムを提供する。【解決手段】行畳み込み処理及び空白リストマージ処理であって、領域１４０１は、元の領域間の行間を埋めたものであり、この文字集合に対して、行畳み込み処理を実施し、文字情報１４０２として、文字が存在する列と存在しない列を得る。領域１４０１の１行目にある文字列「Ｓｅｔ  １」及び文字列「Ｓｅｔ  ２」にある空白文字は、空白リストには存在しないので、その列が非空白文字となり、文字情報１４０３を得る。これにより、何れの列が境界であるかが判明するため、当該列に罫線を引くことで表を特定する。【選択図】図１４
2019121018.tif 000002
【特許請求の範囲】
【請求項１】
文書の分析処理を行う情報処理装置であって、
分析対象となる文書から行における文字列を検出する検出手段と、
前記検出手段により検出した行における文字列が存在する列の情報と、他の行における文字列が存在する列の情報とを用いて、当該文字列の存在しない列に表を構成する項目間の境界を特定する特定手段と、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記特定手段は、行において文字列が存在しない連続した列に関する情報と、当該列に関する情報と、他の行において文字列が存在しない連続した列に関する情報とを用いて、当該文字列の存在しない列に表を構成する項目間の境界を特定することを特徴とする請求項１に記載の情報処理装置。。
【請求項３】
前記境界により特定される表を構成する項目の文字列を有効グラフとして出力する出力手段を備えたことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
文書の分析処理を行う情報処理装置の制御方法であって、
前記情報処理装置は、
分析対象となる文書から行における文字列を検出する検出ステップと、
前記検出ステップにより検出した行における文字列が存在する列の情報と、他の行における文字列が存在する列の情報とを用いて、当該文字列の存在しない列に表を構成する項目間の境界を特定する特定ステップと、
を実行することを特徴とする情報処理装置の制御方法。
【請求項５】
文書の分析処理を行う情報処理装置で読取実行可能なプログラムであって、
前記情報処理装置を、
分析対象となる文書から行における文字列を検出する検出手段と、
前記検出手段により検出した行における文字列が存在する列の情報と、他の行における文字列が存在する列の情報とを用いて、当該文字列の存在しない列に表を構成する項目間の境界を特定する特定手段と、
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書の分析処理において文書から情報を抽出するための分析技術に関するものであり、特に電子化された文書データから表データを抽出する技術及びその管理技術に関する。
【背景技術】
【０００２】
様々な組織で日々膨大な量の文書が作成されており、これらの文書の内容が正しいかどうかの検証作業について、多くの人的コストをかけて実施しているのが現状である。
【０００３】
例えば、実験データや統計処理されたデータを表として記載し、その説明文を記述する場合、文章中に記述された数値や表の項目名等に食い違いがないかどうか、あるいは文書中のどこに説明文が記述されているのか、あるいは記述の見落としがないか等、目視で検査を行っている現状がある。
【０００４】
特に申請文書のような文書に関しては、高度で且つ精密な検証作業が求められており、このような検証作業を効率的に実施したり、人的コストを削減したりすることは重要な課題である。
【０００５】
このとき、表計算ソフト等のように構造化された形式で提供されているデータは、機械的な読み取りが容易なため、検証作業の一部を自動化する等して作業コストを削減することが可能だが、データが単純なテキストファイルとして提供されている場合（ＣＳＶ形式等ではない）や、書式が定型化していない自由な書式で記載されている場合等では、表データ内の項目名や数値を機械的に読み取ることが困難となり、検証作業にかかるコストを低減させることが難しい。
【０００６】
このような課題に対して、特許文献１には、帳票書式を自動的に定義するために画像データを用いて文字が書かれている領域を特定する手法について開示しており、また、特許文献２では、ＨＴＭＬ形式等で記述されたデータからタグ情報を用いて抽象化したデータ構造に変換することで、文書の構造を読み取る手法について開示している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−１７８８０２号公報
【特許文献２】特開２００７−２８６８６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
前述のようなテキストで記述された表データの場合、特許文献１の手法ではテキストデータを一度画像データに変換する必要があり、また、特許文献２の手法では、テキスト内にタグが存在しないため、抽象化したデータ構造に変換できない。
【０００９】
また、図３に示すような垂直方向に罫線がない表の場合、いずれの手法でも表内の項目や数値を認識してデータとして抽出することが困難である。
【００１０】
そのため、このような文字情報で記述された表データに対しても、正しく項目名や数値を読み取り、構造化されたデータとして扱えるようにすることが望まれる。
【００１１】
本発明は、上記課題を解決するためになされたものであり、視覚的に表形式として構造化されていない文字列から表構造を特定することが可能な情報処理装置、制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するための第１の発明は、文書の分析処理を行う情報処理装置であって、分析対象となる文書から行における文字列を検出する検出手段と、前記検出手段により検出した行における文字列が存在する列の情報と、他の行における文字列が存在する列の情報とを用いて、当該文字列の存在しない列に表を構成する項目間の境界を特定する特定手段と、を備えたことを特徴とする。
【００１３】
上記目的を達成するための第２の発明は、文書の分析処理を行う情報処理装置の制御方法であって、前記情報処理装置は、分析対象となる文書から行における文字列を検出する検出ステップと、前記検出ステップにより検出した行における文字列が存在する列の情報と、他の行における文字列が存在する列の情報とを用いて、当該文字列の存在しない列に表を構成する項目間の境界を特定する特定ステップと、を実行することを特徴とする。
【００１４】
上記目的を達成するための第３の発明は、文書の分析処理を行う情報処理装置で読取実行可能なプログラムであって、前記情報処理装置を、分析対象となる文書から行における文字列を検出する検出手段と、前記検出手段により検出した行における文字列が存在する列の情報と、他の行における文字列が存在する列の情報とを用いて、当該文字列の存在しない列に表を構成する項目間の境界を特定する特定手段と、して機能させるためのプログラムである。
【発明の効果】
【００１５】
本発明によれば、文字情報で記述された表データから正しく項目名や数値を読み取って構造化されたデータに再構築することが可能となり、文書とのマッチング等の検証作業を効率的に実施することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態における文書分析装置の構成例を示す図である。
【図２】本発明の実施形態における文書分析装置のハードウェア構成の一例を示す図である。
【図３】本発明の実施形態における文字表の一例を説明するための説明図である。
【図４】本発明の実施形態における表の罫線付与の一例を説明するための説明図である。
【図５】本発明の実施形態における表のグラフ化の実施例を説明するための説明図である。
【図６】本発明の実施形態における文書分析処理のフローチャートである。
【図７】本発明の実施形態におけるテキスト抽出処理のフローチャートである。
【図８】本発明の実施形態における文字表解析処理のフローチャートである。
【図９】本発明の実施形態における行解析処理のフローチャートである。
【図１０】本発明の実施形態における文字密度算出処理のフローチャートである。
【図１１】本発明の実施形態における列解析処理のフローチャートである。
【図１２】本発明の実施形態における構文解析の一例を説明するための説明図である。
【図１３】本発明の実施形態における文字密度の一例を説明するための説明図である。
【図１４】本発明の実施形態における行畳み込み及び空白リストマージの実施例を説明するための説明図である。
【図１５】本発明の実施形態におけるグラフ化処理のフローチャートである。
【発明を実施するための形態】
【００１７】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【００１８】
図１は、本発明の実施形態における文書分析装置（情報処理装置）の構成を示す図である。
【００１９】
文書分析装置１００は、解析部１０１と、解析データ１０２と、出力部１０３を備える。なお、解析データ１０２は後述する外部メモリ２１１等の記憶装置に記憶されている。
【００２０】
文書分析装置１００は、解析部１０１において文書１０４を解析して表データを取り出し、構造化されたデータに再構築して解析データ１０２に記憶する。出力部１０３は、外部プログラム等の要求に応じて、解析データ１０２から当該データを取り出し、任意の書式で出力する。これら一連の文書分析手法については、詳しく後述する。
【００２１】
図２は、本発明の実施形態におけるハードウェア構成の一例を示すブロック図である。
【００２２】
図２に示すように、情報処理装置は、システムバス２０４を介してＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３、入力コントローラ２０５、ビデオコントローラ２０６、メモリコントローラ２０７、よび通信Ｉ／Ｆコントローラ２０８が接続される。
【００２３】
ＣＰＵ２０１は、システムバス２０４に接続される各デバイスやコントローラを統括的に制御する。
【００２４】
ＲＯＭ２０２あるいは外部メモリ２１１は、ＣＰＵ２０１が実行する制御プログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）やＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や、本情報処理方法を実現するためのコンピュータ読み取り実行可能なプログラムおよび必要な各種データ（データテーブルを含む）を保持している。
【００２５】
ＲＡＭ２０３は、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。ＣＰＵ２０１は、処理の実行に際して必要なプログラム等をＲＯＭ２０２あるいは外部メモリ２１１からＲＡＭ２０３にロードし、ロードしたプログラムを実行することで各種動作を実現する。
【００２６】
入力コントローラ２０５は、キーボードやマウス等のポインティングデバイス等の入力装置２０９からの入力を制御する。入力装置２０９がタッチパネルの場合、ユーザがタッチパネルに表示されたアイコンやカーソルやボタンに合わせて押下（指等でタッチ）することにより、各種の指示を行うことができることとする。
【００２７】
また、タッチパネルは、マルチタッチスクリーンなどの、複数の指でタッチされた位置を検出することが可能なタッチパネルであってもよい。
【００２８】
ビデオコントローラ２０６は、表示装置２１０などの外部出力装置への表示を制御する。表示装置２１０は本体と一体になったノート型パソコンのディスプレイも含まれるものとする。なお、表示装置２１０はディスプレイに限ったものははく、例えばプロジェクタであってもよい。また、前述のタッチ操作を受け付け可能な装置については、入力装置も提供する。
【００２９】
なおビデオコントローラ２０６は、表示制御を行うためのビデオメモリ（ＶＲＡＭ）を制御することが可能で、ビデオメモリ領域としてＲＡＭ２０３の一部を利用することもできるし、別途専用のビデオメモリを設けることも可能である。
【００３０】
メモリコントローラ２０７は、外部メモリ２１１へのアクセスを制御する。外部メモリとしては、ブートプログラム、各種アプリケーション、フォントデータ、ユーザファイル、編集ファイル、および各種データ等を記憶する外部記憶装置（ハードディスク）、フレキシブルディスク（ＦＤ）、或いはＰＣＭＣＩＡカードスロットにアダプタを介して接続されるコンパクトフラッシュ（登録商標）メモリ等を利用可能である。
【００３１】
通信Ｉ／Ｆコントローラ２０８は、ネットワークを介して外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、ＴＣＰ／ＩＰを用いた通信やＩＳＤＮなどの電話回線、および携帯電話の３Ｇ回線を用いた通信が可能である。
【００３２】
なお、ＣＰＵ２０１は、例えばＲＡＭ２０３内の表示情報用領域へアウトラインフォントの展開（ラスタライズ）処理を実行することにより、表示装置２１０上での表示を可能としている。また、ＣＰＵ２０１は、表示装置２１０上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【００３３】
以上が文書分析装置１００のハードウェア構成の説明であるが、後述する各種の処理を実行可能であれば、必ずしも図２に記載のハードウェア構成を有していなくとも構わないことは言うまでもない。
【００３４】
次に、文書分析装置１００における文書分析処理について、図３〜図１５を用いて、詳しく説明する。
【００３５】
図６は文書分析処理のフローチャートを示す図である。文書分析処理では、何らかの論理構造を持つ単数あるいは複数の文書ファイルを分析対象としており、例えば、ＯｐｅｎＸＭＬで記述された文書ファイルやＲＴＦ（Ｒｉｃｈ  Ｔｅｘｔ  Ｆｏｒｍａｔ）で記述された文書ファイルである。
【００３６】
ステップＳ６０１において、解析対象となる文書群を指定する。解析対象となる文書群は単一の文書ファイルでもよいし、複数の文書ファイルから構成されるフォルダ名を指定する形式でもよい。
【００３７】
続くステップＳ６０２において、ステップＳ６０１で指定した文書群を展開する。フォルダ名を指定する複数の文書ファイルから構成される形式では、指定したフォルダ名以下に格納されたすべてのファイルがファイル名リストとして得られるものとする。
【００３８】
続くステップＳ６０３以降において、ステップＳ６０２で得られたそれぞれのファイルに対して文書解析処理を実施する。まず、ステップＳ６０３において、当該ファイルの最初のページ番号を設定する。ページ番号の設定では、当該文書ファイルにページ番号情報を含まない形式の場合は１を設定し、ページ番号情報を含む場合は、当該ページ番号情報を抽出して設定する。このようなページ番号情報の抽出方法については、文書ファイルの形式ごとに抽出方法が公開されていることが一般的であるため、ここで詳細な説明は行わない。
【００３９】
続くステップＳ６０４において、当該文書ファイルからテキスト抽出を実施する。
【００４０】
図７はテキスト抽出処理のフローチャートを示す図である。テキスト抽出処理では、何らかの論理構造を持つ文書ファイルを解析してテキスト情報を抽出する処理である。例えば、ＯｐｅnＸＭＬ形式の場合、「＜ｗ：ｔ＞」タグが付与されているか、等でテキスト情報を抽出できる。また、ＲＴＦ形式の場合は制御タグの部分を読み飛ばすことでテキスト情報を抽出できる。このようなテキスト抽出の手法は、それぞれの形式ごとに公開されているため、ここで詳細な説明は行わない。
【００４１】
ステップＳ７０１において、当該文書ファイルから前述したようにテキスト情報を抽出する。続くステップＳ７０２において、抽出したテキスト情報をページ単位で取り出す。ページの区切りは、例えば、ＲＴＦ形式であれば、ＦＦ（ＦｏｒｍＦｅｅｄ）を示す文字があれば、これをページ区切りとする。
【００４２】
続くステップＳ７０３において、抽出したテキストが文字表であるかどうかを調べる。文字表であるかどうかの判断は、例えば、ページの１行目や２行目等に特定の文字列が存在するか、或いは解析対象となっている文書ファイル名に特定の文字列が存在するか（例えば、ＴＡＢＬＥ００１．ＲＴＦというような「ＴＡＢＬＥ」文字列を含むファイル名になっている）、等から判断する。これらの判断情報は予めルールとして登録しておき、システム管理者が修正できるものとする。
【００４３】
ステップＳ７０３において文字表と判断した場合、ステップＳ７０４に進み、文字表解析を実施する。図８〜図１１に文字表解析のフローチャートを示す。
【００４４】
図８に文字表解析処理のフローチャートを示す。文字表解析処理では、行単位で解析を行った後、その結果から列境界を算出する処理となる。まず、ステップＳ８０１において、行解析を行う。
【００４５】
図９に行解析処理のフローチャートを示す。当該ページにあるすべての行について、ステップＳ９０１から処理を開始する。続くステップＳ９０２において、改ページを表す文字が出現した場合（ステップＳ９０２で「はい」の場合）、行解析処理を終了する。改ページ文字ではない場合（ステップＳ９０２で「いいえ」の場合）、ステップＳ９０３に進む。
【００４６】
ステップＳ９０３において、当該行が横罫線であるかどうかを確認する。横罫線は行を構成する文字の種類を確認し、空白文字以外の文字が1種類で且つ行全体の文字数に対して空白文字以外の文字が半分以上を占めている状態である場合、横罫線と見なす。図３の例で示すと、領域３０１と領域３０２の間の半角ハイフン文字で構成された行、及び領域３０２と領域３０３の間の半角ハイフン文字で構成された行、及び領域３０３と領域３０４の間の半角ハイフン文字で構成された行が横罫線として検出される。横罫線と判定した行については、続くステップＳ９０４において、その構成文字（図３の例では半角ハイフン文字）と占有率（図３の例では１００％）をセットにして行番号と共に登録し、ステップＳ９０５に進む。
【００４７】
横罫線と判断しない場合（ステップＳ９０３で「いいえ」の場合）、ステップＳ９０５に進む。ステップＳ９０５では行の文字密度算出処理を実施する。文字密度算出処理のフローチャートを図１０に示す。
【００４８】
ステップＳ１００１において、文字密度リストを作成する。文字密度リストとは、任意の文字数を基準にして、行を構成する空白文字以外の文字の密度を算出したリストである。
【００４９】
図１３に文字密度の一例を示す。図１３において文字数３に対する文字密度を算出すると、文字列１３０１はすべて空白以外の文字であるので密度１である。同様に文字列１３０２では1文字の空白文字を含むため密度０．６、文字列１３０３では２文字の空白文字を含むので密度０．３、文字列１３０４はすべて空白文字であるので密度０となる。このような文字密度をすべての文字位置について算出し、リストにして保持する。尚、この文字数３というのは、任意に変更することが可能であり、例えば、対象とする文書の種類によって数値を変えても良い。
【００５０】
図１０に戻って、続くステップＳ１００２において、文字列開始位置検出処理を実施する。前述した文字密度リストの結果から、密度０である部分を文字列の区切りとみなし、文字列の開始位置を算出する。図１３の例では、開始位置１３０５、開始位置１３０６を検出することができる。
【００５１】
図１０に戻って、続くステップＳ１００３において、文字列生成処理を実施する。ステップＳ１００２で検出した文字列開始位置を参照して、行を構成する文字列とその開始位置を登録する。図１３の例では、開始位置０に文字列“Ａｎａｌｙｓｉｓ  Ｓｅｔ”、及び開始位置１８に文字列“ｎ  （％）”が生成される。
【００５２】
図９に戻って、続くステップＳ９０６において、空白リスト生成処理を実施する。空白リストは前述した文字列生成処理で文字列としてみなした部分以外を空白文字として扱うためのリストである。図１３の例では、空白領域１３０７を構成する位置「１２、１３、１４、１５、１６、１７」を空白リストとして登録する。
【００５３】
図９に戻って、続くステップＳ９０７に進み、すべての行について処理が終了していなければ、ステップＳ９０２に戻る。すべての行について処理が終了していれば、行解析処理を終了する。このように行解析処理では、行を構成する文字情報から横罫線、及び構成文字列と空白文字列を分別して登録することが可能となる。
【００５４】
図８に戻って、ステップＳ８０２において、ヘッダ抽出処理を実施する。前述したようにステップＳ８０１の行解析処理によって各行の状態が登録されている。ヘッダ抽出では、ヘッダ領域を最初の横罫線より前にある行とみなすことができる。図３の例の場合、領域３０１に該当する。この領域に含まれる文字列情報を検索すると、「Ｔａｂｌｅ  １：  Ｓｕｍｍａｒｙ  ｏｆ  Ａｎａｌｙｓｉｓ  Ｓｅｔｓ  ｏｆ  Ｄａｔａ  Ａ−１」がひとつ含まれていることがわかる。この場合、例えば、「：」文字を区切りとし、その前に表番号が記述されている、という表記が文書群の中で定められているならば、正規表現を用いて表番号と表題を自動的に検出することが可能となる。前述の例では表番号「１」、表題「Ｓｕｍｍａｒｙ  ｏｆ  Ａｎａｌｙｓｉｓ  Ｓｅｔｓ  ｏｆ  Ｄａｔａ  Ａ−１」と抽出できる。
【００５５】
続くステップＳ８０３において、フッタ抽出処理を実施する。前述したヘッダ抽出処理と同様に、最後の横罫線より後にある行をフッタ領域と見なすことができる。図３の例の場合、領域３０４が該当する。ヘッダ領域と同様に「：」文字を区切りとして、正規表現を用いて、項目名「Ｎｏｔｅ」、項目内容「ｘｘｘｘｘ」を自動的に検出することが可能となる。
【００５６】
なお、ステップＳ８０２及びステップＳ８０３における正規表現等の指定は、システム管理者によって任意に指定できるものである。
【００５７】
次に、ステップＳ８０４に進み、列解析処理を実施する。図１１に列解析処理のフローチャートを示す。図１１のステップＳ１１０１において、当該文字表の行を畳み込む処理を行う。畳み込み対象となる部分は、ヘッダ部とフッタ部を除く領域で、図３の例では領域３０２及び領域３０３となる。当該領域のすべての行データについて、横罫線を除き、１行に畳み込む。その結果、文字が存在する列とそうでない列に分別される。
【００５８】
続くステップＳ１１０２において、空白リストマージ処理を実施する。空白リストマージ処理は、図９のステップＳ９０６で生成した空白リストについて、すべての行において空白と登録されている列及びそうでない列の情報を、図１１のステップ１１０１で得られた畳み込み情報にマージする。
【００５９】
図１４に行畳み込み処理及び空白リストマージ処理の実施例を示す。領域１４０１は図３における領域３０２及び領域３０３の行間を埋めたものである。この文字集合に対して、行畳み込み処理を実施すると、図１４の文字情報１４０２として、文字が存在する列と存在しない列が得られる。文字情報１４０２では、文字が存在する列を「Ｘ」で、文字が存在しない列を空白文字で表している。続く空白リストマージ処理では、領域１４０１の１行目にある文字列「Ｓｅｔ  １」及び文字列「Ｓｅｔ  ２」にある空白文字は、空白リストには存在しないので、その列が非空白文字となり、文字情報１４０３を得る。
【００６０】
図１１に戻り、ステップＳ１１０２で得られた文字情報から空白となっている領域を、ステップＳ１１０３において列境界として登録する。連続した空白文字列では最も左側にある列を登録する。
【００６１】
続くステップＳ１１０４以降において、任意の分割パターンが各列に存在するかを調べる処理を実施する。任意の分割パターンとは、例えば、図３における「ｎ  （％）」である。列境界の特定が困難な場合や、明確に列境界として分割したい場合、システムに予め分割パターンを登録しておくことで、列境界の検出精度を上げる目的で利用する。
【００６２】
対象となるのはステップＳ１１０１で畳み込みを実施した行であり、ステップＳ１１０４において当該行を選択し、続くステップＳ１１０５において、ステップＳ１１０３で登録した列境界情報に基づいて当該行を列分割する。ここで得られた列データについて、続くステップＳ１１０６以降で分割パターンが存在するかどうかを調べる。
【００６３】
後述する分割列として登録されている列であれば（ステップＳ１１０７において「はい」の場合）、ステップＳ１１１２に進み、分割列として指定された項目に列データを分割するための列境界情報を追加する。分割列として登録されていない列である場合（ステップＳ１１０７において「いいえ」の場合）、ステップＳ１１０８に進む。
【００６４】
ステップＳ１１０８において、任意の分割パターンと列データが一致するかどうかを調べる。一致する場合（ステップＳ１１０８において「はい」の場合）、ステップＳ１１０９に進み、当該列が分割対象列であることを登録する。登録された列情報は前述したステップＳ１１０７において参照される。分割パターンと一致しない場合（ステップＳ１１０８で「いいえ」の場合）、ステップＳ１１１０に進み、次の列データの処理を実施する。
【００６５】
すべての列データの確認を終了すると、ステップＳ１１１１に進み、すべての畳み込み行に対して列分割を実施すれば、列解析処理を終了する。
【００６６】
列解析処理が終了すると、図８に戻って、文字表解析を終了する。この時点で、例えば、図３の例を解析したことで、図４に示すような縦罫線情報を得ていることを意味している。
【００６７】
図７に戻って、続くステップＳ７０５に進み、表のグラフ化を実施する。
【００６８】
図１５に文字表のグラフ化についてのフローチャートを、図５に図３の文字表をグラフ化した実施例を示す。
【００６９】
文字表のグラフ化は領域ごとに順に実施することができる。ステップＳ１５０１において、ヘッダ領域から表題を登録する。表題は前述したように図８におけるステップＳ８０２で抽出したものである。図５において、ノード５０１からアーク「ｔｉｔｌｅ」が定義され、その先にノード５０２が設定される。
【００７０】
続くステップＳ１５０２において、各列の形式を取得する。例えば、図４において、セル４０１の下にセル４０２とセル４０３があることがわかるので、この場合ひとつのアークを２つに分割した構造を持つグラフとして定義できる。即ち、図５におけるノード５０３の構造として定義される。
【００７１】
続くステップＳ１５０３からステップＳ１５０６にかけて、各行のデータを登録する。図４における行４０４を例に説明する。ステップＳ１５０４において当該行データを登録する。図５において、ノード５０４が作成され、アーク「Ａｎａｌｙｓｉｓ  Ｓｅｔ」を通じてノード５０５が作成される。数値と割合については前述したノード５０３の構造を用いて、ノード５０８及びノード５０９及びノード５１０が作成される。
【００７２】
続くステップＳ１５０５において、付属情報をノードに付与する。行４０４は表内において５行目であるので、アーク「ｒｏｗ」を通じてノード５０７が作成される。また、ノード５０５内の文字「ｍｏｄｅｌ Ａ」は字下げされているのでノード５０５からアーク「ｉｎｄｅｎｔ」を通じてノード５０６が作成される。さらに、ノード５０８及びノード５０９及びノード５１０の各末端ノードに対して、表の列番号を表すアーク「ｃｏｌ」を通じて列番号を登録するノードが生成される。
【００７３】
すべての行データが登録されると、ステップＳ１５０７に進み、フッタ部を登録する。アーク「ｆｏｏｔｅｒ」を通じてノード５１１を作成される。また前述した付属情報と同等なノードを作成し、さらに列連結を表すアーク「ｃｏｌｓｐａｎ」を通じてノード５１２を作成して、列連結数７を格納する。
【００７４】
なお、各ノードに付与される付属情報については、図５に示したもの以外にも必要に応じて自由に定義及び作成できることは言うまでもない。
【００７５】
図７に戻って、ステップＳ７０６に進み、次のページデータの解析を進める。すべてのページの解析が終了すると、テキスト抽出処理を終了する。
【００７６】
ステップＳ７０３において文字表と判断しない場合、ステップＳ７０７に進み、テキスト解析を実施する。テキスト解析では、構文解析を行い、文章をマッチング可能な構造化された状態にしておく。
【００７７】
図１２は文章「Ｍｏｄｅｌ  ＡはＳｅｔ  １を用いたとき、５５件（２３．９％）になった。」を構文解析した結果を示したものである。ここで簡単な文章と表のマッチングの実施例を示しておく。各ノードから名詞句及び数値を取り出すと、ノード１２０１からは「Ｍｏｄｅｌ  Ａ」、ノード１２０２からは「Ｓｅｔ  １」、ノード１２０３からは「５５」及び「２３．９」が抽出できる。このとき、得られたキー「Ｍｏｄｅｌ  Ａ」について、図５の有向グラフ上を探索すると、ノード５０４以下にあるノード上にあることがわかる。ここからアーク「Ｓｅｔ  １」をたどると、ノード５０８に到達し、そこに格納されている数値「５５」及び「２３．９」を得ることができる。前記文章から得られた数値も「５５」及び「２３．９」であるので、前記文章の記述に誤りがないことがわかる。
【００７８】
図７に戻り、ステップＳ７０７でテキスト解析を行った後、ステップＳ７０６に進み、次のページデータの解析を進める。すべてのページの解析が終了すると、テキスト抽出処理を終了する。
【００７９】
図６に戻り、テキスト抽出処理が終了すると、ステップＳ６０５に進み、ステップＳ６０４で得られた表及び文章の解析データを登録する。続くステップＳ６０６に進み、次の文書があればステップＳ６０３に進み、文書がなければ文書解析処理を終了する。
【００８０】
なお、図６のステップＳ６０１の文書群の指定方法について、複数の文書ファイルから構成される場合、前述したようにフォルダを指定する形式を基本とするが、圧縮ファイルで指定する形式やファイル名リストで指定する等、いずれの形式においてもステップＳ６０２以降で示したような同等の展開ができる形式であれば、その指定形式はどのような形式でもよいことは言うまでもない。
【００８１】
以上、本発明によれば、文字情報で記述された表データから正しく項目名や数値を読み取って構造化されたデータに再構築することが可能となり、文書とのマッチング等の検証作業を効率的に実施することが可能となる。
【００８２】
以上、実施形態例を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【００８３】
なお、上述した各種データの構成及び表示の構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な内容で構成されることは言うまでもない。
【００８４】
また、本発明は、複数の機器から構成されるシステムに適用しても、ひとつの機器から成る装置に適用しても良い。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適用できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【００８５】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【００８６】
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【００８７】
１００  文書分析装置
１０１  解析部
１０２  解析データ
１０３  出力部
１０４  文書
２０１  ＣＰＵ
２０２  ＲＡＭ
２０３  ＲＯＭ
２０４  システムバス
２０５  入力コントローラ
２０６  ビデオコントローラ
２０７  メモリコントローラ
２０８  通信Ｉ／Ｆ（インターフェース）コントローラ
２０９  入力装置
２１０  表示装置
２１１  外部メモリ
【図１】
2019121018.tif 000003
【図２】
2019121018.tif 000004
【図３】
2019121018.tif 000005
【図４】
2019121018.tif 000006
【図５】
2019121018.tif 000007
【図６】
2019121018.tif 000008
【図７】
2019121018.tif 000009
【図８】
2019121018.tif 000010
【図９】
2019121018.tif 000011
【図１０】
2019121018.tif 000012
【図１１】
2019121018.tif 000013
【図１２】
2019121018.tif 000014
【図１３】
2019121018.tif 000015
【図１４】
2019121018.tif 000016
【図１５】
2019121018.tif 000017