(57)【要約】【課題】表形式データの階層構造を認識する。【解決手段】階層構造抽出部は、表形式データの各文字列をレイアウトしたときに、各文字列が行方向に沿って伸び、かつ各文字列が列方向に並んで配列される場合に、文字列それぞれの属性に基づき、表形式データをレイアウトしたときの文字列それぞれの占有領域を特定する。そして、階層構造抽出部は、注目領域において文字列が存在しない空白が列方向に沿って延びており、かつ、空白の行方向の一側の領域の見出しと、他側の領域の見出しとが予め定めた見出し文字であった場合に、各領域を同一階層として表形式データの階層構造を認識する。【選択図】図１６
2020060905.tif 000002
【特許請求の範囲】
【請求項１】
表形式データの表示対象要素それぞれをレイアウトしたときに、前記表示対象要素が行方向に沿って伸び、かつ前記表示対象要素が列方向に並んで配列される場合に、前記表示対象要素それぞれの属性に基づき、前記表形式データをレイアウトしたときの前記表示対象要素それぞれの占有領域を特定し、
所定行数の注目領域において、前記占有領域が存在しない空白部分が前記列方向に沿って延びており、かつ、前記空白部分の前記行方向の一側に存在する第１の表示対象要素群の前記行方向の先頭に位置する文字又は文字群と、前記空白部分の前記行方向の他側に存在する第２の表示対象要素群の前記行方向の先頭に位置する文字又は文字群とが予め定めたものであった場合に、前記第１、第２の表示対象要素群を同一階層として前記表形式データの階層構造を認識する、
処理をコンピュータに実行させるための階層構造認識プログラム。
【請求項２】
前記表形式データの所定領域において、前記行方向の先頭に位置する文字又は文字群が予め定めたものである前記表示対象要素を特定して、特定した前記表示対象要素に基づいて前記表形式データを複数領域に分割し、該複数領域それぞれを前記注目領域とする処理を前記コンピュータに更に実行させる、請求項１に記載の階層構造認識プログラム。
【請求項３】
前記複数領域それぞれを前記階層構造における同一階層とする処理を前記コンピュータに更に実行させる、請求項２に記載の階層構造認識プログラム。
【請求項４】
前記認識する処理の後、前記注目領域又は前記第１、第２の表示対象要素群を前記所定領域として、前記注目領域とする処理と前記認識する処理とを実行する、ことを特徴とする請求項２又は３に記載の階層構造認識プログラム。
【請求項５】
前記表示対象要素のいずれかの選択を受け付け、
前記表形式データの階層構造に基づいて、選択された前記表示対象要素の前記階層構造に関する情報を出力する、ことを特徴とする請求項１〜４のいずれか一項に記載の階層構造認識プログラム。
【請求項６】
表形式データの表示対象要素それぞれをレイアウトしたときに、前記表示対象要素が行方向に沿って伸び、かつ前記表示対象要素が列方向に並んで配列される場合に、前記表示対象要素それぞれの属性に基づき、前記表形式データをレイアウトしたときの前記表示対象要素それぞれの占有領域を特定し、
所定行数の注目領域において、前記占有領域が存在しない空白部分が前記列方向に沿って延びており、かつ、前記空白部分の前記行方向の一側に存在する第１の表示対象要素群の前記行方向の先頭に位置する文字又は文字群と、前記空白部分の前記行方向の他側に存在する第２の表示対象要素群の前記行方向の先頭に位置する文字又は文字群とが予め定めたものであった場合に、前記第１、第２の表示対象要素群を同一階層として前記表形式データの階層構造を認識する、
処理をコンピュータが実行することを特徴とする階層構造認識方法。
【請求項７】
表形式データの表示対象要素それぞれをレイアウトしたときに、前記表示対象要素が行方向に沿って伸び、かつ前記表示対象要素が列方向に並んで配列される場合に、前記表示対象要素それぞれの属性に基づき、前記表形式データをレイアウトしたときの前記表示対象要素それぞれの占有領域を特定する特定部と、
所定行数の注目領域において、前記占有領域が存在しない空白部分が前記列方向に沿って延びており、かつ、前記空白部分の前記行方向の一側に存在する第１の表示対象要素群の前記行方向の先頭に位置する文字又は文字群と、前記空白部分の前記行方向の他側に存在する第２の表示対象要素群の前記行方向の先頭に位置する文字又は文字群とが予め定めたものであった場合に、前記第１、第２の表示対象要素群を同一階層として前記表形式データの階層構造を認識する認識部と、
を備える階層構造認識装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層構造認識プログラム、階層構造認識方法及び階層構造認識装置に関する。
【背景技術】
【０００２】
従来、ＯＣＲ（光学的文字認識）装置、複写機、ファクシミリ等の電子装置において、入力画像に対して抽出された文字領域に読み順を付ける文字の順序付け技術が知られている（例えば、特許文献１等参照）。
【０００３】
また、紙文書、又は文書の画像データから電子文書データを出力仕様に制限のあるフォーマットで生成する際に、レイアウト及び論理構造の再現率を両立させる技術が知られている（例えば、特許文献２等参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０８−１４７４１０号公報
【特許文献２】特開２０１３−２５４３２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、表形式のシート上に文書を記載した場合において、文書構造を解析したいという要望がある。しかしながら、表形式のシート上には様々な形式や配置で文書を記載できるため、上記特許文献１、２等の技術を用いたとしても、表形式のシート上に記載した文書の構造を解析することはできない。
【０００６】
１つの側面では、本発明は、表形式データの階層構造を認識することが可能な階層構造認識プログラム、階層構造認識方法及び階層構造認識装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
一つの態様では、階層構造認識プログラムは、表形式データの表示対象要素それぞれをレイアウトしたときに、前記表示対象要素が行方向に沿って伸び、かつ前記表示対象要素が列方向に並んで配列される場合に、前記表示対象要素それぞれの属性に基づき、前記表形式データをレイアウトしたときの前記表示対象要素それぞれの占有領域を特定し、所定行数の注目領域において、前記占有領域が存在しない空白部分が前記列方向に沿って延びており、かつ、前記空白部分の前記行方向の一側に存在する第１の表示対象要素群の前記行方向の先頭に位置する文字又は文字群と、前記空白部分の前記行方向の他側に存在する第２の表示対象要素群の前記行方向の先頭に位置する文字又は文字群とが予め定めたものであった場合に、前記第１、第２の表示対象要素群を同一階層として前記表形式データの階層構造を認識する、処理をコンピュータに実行させるためのプログラムである。
【発明の効果】
【０００８】
表形式データの階層構造を認識することができる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態に係るコンテクスト情報提供装置のハードウェア構成を概略的に示す図である。
【図２】コンテクスト情報提供装置の機能ブロック図である。
【図３】一実施形態に係る表形式データを示す図である。
【図４】コンテクスト情報提供装置の処理を示すフローチャートである。
【図５】表形式データの領域の定義について説明するための図である。
【図６】図４のステップＳ１０の処理を示すフローチャートである。
【図７】シートテーブルの一例を示す図である。
【図８】図８（ａ）は、領域管理テーブルを初期化した状態を示す図であり、図８（ｂ）は、シートテーブルの初期化においてＣ２列を追加した状態を示す図である。
【図９】図６のステップＳ２４の詳細処理を示すフローチャートである。
【図１０】図１０（ａ）〜図１０（ｄ）は、図９の処理を説明するための図である。
【図１１】図１１は、図９の処理の結果、分割された領域を示す図である。
【図１２】図６のステップＳ２６の詳細処理を示すフローチャートである。
【図１３】図１３（ａ）〜図１３（ｄ）は、図１２の処理を説明するための図（その１）である。
【図１４】図１４（ａ）〜図１４（ｃ）は、図１２の処理を説明するための図（その２）である。
【図１５】図１２の処理を説明するための図（その３）である。
【図１６】図１６（ａ）は、図１５に対応して一時領域管理テーブルに格納される情報を示す図であり、図１６（ｂ）は、図１６（ａ）の一時領域管理テーブルに格納された領域を示す図である。
【図１７】図１２の処理の結果が格納された領域管理テーブルを示す図である。
【図１８】図３の表形式データにおいて分割された領域を示す図である。
【図１９】図４のステップＳ１２の詳細処理を示すフローチャートである。
【図２０】入力された対象セルと、特定される見出しを示す図である。
【図２１】図１９の処理で利用される領域管理テーブルを示す図である。
【図２２】出力例を示す図である。
【発明を実施するための形態】
【００１０】
以下、一実施形態について、図１〜図２２に基づいて詳細に説明する。図１には、階層構造認識装置としてのコンテクスト情報提供装置１０のハードウェア構成が示されている。本実施形態のコンテクスト情報提供装置１０は、表形式データ（表計算ソフトなどにおいて表形式のシート上に文書を記載したデータ）において文書に含まれる表示対象要素（文字列）それぞれの階層構造を認識する。そして、コンテクスト情報提供装置１０は、表形式データ中の文字列のいずれかがユーザによって選択された場合に、選択された文字列の階層構造に関する情報（コンテクスト情報）を出力する。
【００１１】
ここで、表形式データは、例えば、図３に示すようなデータであるものとする。具体的には、表形式データは、図３に示すように表形式のシートにおいて文字列が記載されたものである。また、文字列は、行方向に延びる横書きであり、縦方向（列方向）に配列されているものとする。また、図３の２行目に記載されている「共通機能要件補足」は、先頭文字が位置するセル（行，列）＝（２，１）が選択された状態で入力された文字列である。同様に、６行目に記載されている「ＤＢに蓄積されたデータを用い、各種分析を行う」は、セル（行，列）＝（６，２）が選択された状態で入力された文字列である。
【００１２】
さらに、表形式データには、以下の制約があるものとする。
（１）最上位の見出し（図３の「１．」、「２．」…から始まる文字列）は必ず縦（列方向）に並ぶように配置され、横（行方向）に並ぶことはない。
（２）見出しレベルが同じ文字列（表形式データの階層構造において同一階層に位置する文字列）は、同一列に位置するセル又は同一行に位置するセルが選択された状態で入力される。
例えば、１３行目の「(1)」、「(2)」から始まる文字列は、同一行のセル（１３，２）、（１３，２３）が選択された状態で入力されたものである。また、３列目の丸数字から始まる文字列は、同一列のセル（１４，３）、（１８，３）が選択された状態で入力されたものである。
（３）段組がある場合は、段につき必ず１行の見出しを含む。また、見出しの先頭には、予め定められている見出し文字や見出し文字群（同形式の連番「１．」、「２．」、…や「(1)」、「(2)」、…、同一マーク「■」、「■」、…など）が存在するものとする。なお、以下においては、説明の便宜上「１．」や「(1)」など複数の文字を含む見出し文字群についても「見出し文字」と表記するものとする。
【００１３】
なお、表形式データにおいては、セル結合はなく、各セルの設定は左揃えであり、セル内に改行記号を含まないものとする。また、フォント幅はほぼ一定であるものとする。
【００１４】
コンテクスト情報提供装置１０は、図１に示すように、ＣＰＵ（Central Processing Unit）９０、ＲＯＭ（Read Only Memory）９２、ＲＡＭ（Random Access Memory）９４、記憶部（ここではＨＤＤ（Hard Disk Drive））９６、ネットワークインタフェース９７、表示部９３、入力部９５、及び可搬型記憶媒体用ドライブ９９等を備えている。表示部９３は液晶ディスプレイ等を含み、入力部９５はキーボードやマウス、タッチパネル等を含む。これらコンテクスト情報提供装置１０の構成各部は、バス９８に接続されている。コンテクスト情報提供装置１０では、ＲＯＭ９２あるいはＨＤＤ９６に格納されているプログラム（階層構造認識プログラムを含む）、或いは可搬型記憶媒体用ドライブ９９が可搬型記憶媒体９１から読み取ったプログラム（階層構造認識プログラムを含む）をＣＰＵ９０が実行することにより、図２に示す各部の機能が実現されている。なお、図２の各部の機能は、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）等の集積回路により実現されてもよい。
【００１５】
図２は、コンテクスト情報提供装置１０の機能ブロック図である。図２に示すように、コンテクスト情報提供装置１０では、ＣＰＵ９０がプログラムを実行することにより、階層構造抽出部２０、及びコンテクスト情報抽出部２２、としての機能が実現されている。
【００１６】
階層構造抽出部２０は、表形式データから、表形式データに含まれる各文字列の階層構造を抽出する。なお、階層構造抽出部２０は、階層構造を抽出する際に、シートテーブル３０及び一時領域管理テーブル３２を利用し、抽出した階層構造の情報を領域管理テーブル３４に格納する。なお、各テーブルの詳細については、後述する。
【００１７】
コンテクスト情報抽出部２２は、ユーザによって表形式データに含まれる文字列のいずれかが選択された場合に、選択された文字列の階層構造に関する情報（コンテクスト情報）を、領域管理テーブル３４を参照して抽出する。また、コンテクスト情報抽出部２２は、抽出したコンテクスト情報を出力する（例えば表示部９３に表示する）。
【００１８】
次に、コンテクスト情報提供装置１０の処理について、図４〜図２２に基づいて詳細に説明する。
【００１９】
本実施形態では、図４に示すように、階層構造抽出部２０によって階層構造の抽出処理（ステップＳ１０）が実行されるとともに、コンテクスト情報抽出部２２によってコンテクスト情報の抽出処理（ステップＳ１２）が実行される。以下、各処理について、詳細に説明する。なお、処理の前提として、表形式データにおいては、図５に示すように、領域をＲＣ座標で定義する。すなわち、領域は、左上座標と右下座標の組で示し、図５の矩形領域は、（(Ｒ１，Ｃ１)、（Ｒ２，Ｃ２））で表される。また、各セルの座標は、セルの左上の座標で表すものとする。例えば、図３において最も左側かつ最も上側に位置するセルの座標は（１，１）であり、その右隣のセルの座標は、（１，２）となる。なお、図３においては、各セルの形状は正方形であり、各セルの列方向（縦方向）及び行方向（横方向）の寸法は「１」であるものとする。
【００２０】
（階層構造の抽出処理（Ｓ１０））
ステップＳ１０の階層構造の抽出処理は、表形式データがコンテクスト情報提供装置１０に入力された場合において実行される処理であり、図６のフローチャートに沿って実行される。なお、コンテクスト情報提供装置１０に表形式データが入力されると、表形式データの情報として、図７に示すようなシートテーブル３０が入力されることになる。シートテーブル３０には、表形式データに含まれる各文字列（content）の情報と、各文字列が入力されたセルの座標（Ｒ１，Ｃ１）と、各文字列のフォントサイズ（fontsize）の情報が格納されている。なお、シートテーブル３０に格納されている情報は、各文字列の属性であると言える。
【００２１】
図６のステップＳ２０では、階層構造抽出部２０が、テーブルの初期化を実行する。ここで、初期化するテーブルは、一時領域管理テーブル３２、領域管理テーブル３４、シートテーブル３０である。
【００２２】
階層構造抽出部２０は、一時領域管理テーブル３２（図１６（ａ）参照）については、データを全て消去することで初期化を行う。一方、階層構造抽出部２０は、領域管理テーブル３４（図１０（ｄ）や図１７参照）については、一旦データを全て消去した後、図８に示すように、表形式データの全体領域（（１，１）、（６５５３５，６５５３５））を示すデータを格納する。なお、全体領域の領域ＩＤは、「０」であるものとする。
【００２３】
また、階層構造抽出部２０の初期化においては、シートテーブル３０（図７）に対し、図８（ｂ）に示すようにＣ２列を追加する。すなわち、階層構造抽出部２０は、各文字列の最後尾の文字が行方向のどの位置（セル）にあるかを特定し、特定した位置を示す情報（Ｃ２）をシートテーブル３０に追加する。ここで、各文字列（content）のＣ２は、次式（１）から求めることができる。なお、次式（１）のCEILNG関数は、切り上げを意味し、セルパディングは、セル内の左右の余白を意味する。
Ｃ２＝Ｃ１＋CEILING（（文字列のバイト数×２×（フォントサイズ＋字送り）＋２×セルパディング）／（セルピクセル数＋罫線太さ）)      …（１）
【００２４】
なお、日本語は１文字が２バイトであるので、上式（１）において文字数のバイト数を２倍している。
【００２５】
上述したようにしてシートテーブル３０に対してＣ２列を追加することで、文字列の見た目上の占有領域を特定することができる。
【００２６】
次いで、ステップＳ２２では、階層構造抽出部２０が、継続フラグを「false」に設定する。
【００２７】
次いで、ステップＳ２４では、階層構造抽出部２０が、領域分割（縦）を実行する。なお、ステップＳ２４（領域分割（縦））の処理は、表形式データの所定の範囲（注目領域と呼ぶ）を、列方向に並ぶ複数の領域に分割する処理である。階層構造抽出部２０は、ステップＳ２４の処理として、図９のフローチャートに沿った処理を実行する。
【００２８】
（領域分割（縦））
図９の処理において、階層構造抽出部２０は、まずステップＳ３０の注目領域の初期化処理を実行する。ここでは、図１０（ａ）に示すように注目領域を表形式データの全体領域（（１，１）、（６５５３５，６５５３５））とする。
【００２９】
次いで、ステップＳ３２では、階層構造抽出部２０が、余白の除去を実行する。本実施形態では、図３に示すように、行方向の２３番目よりも下側及び列方向の４６番目よりも右側には文字列が存在していないため、文字列が存在していない範囲を除外した図１０（ｂ）に示す領域（（１，１）、（２３，４６））を注目領域とする。
【００３０】
次いで、ステップＳ３４では、階層構造抽出部２０が、注目領域１列目のうち、見出し文字を含む文字列をパターンマッチングにより抽出する。階層構造抽出部２０は、図３の１列目セル（Ｃ１＝１の文字列）についてのパターンマッチングを行い、予め定めている見出し文字（同形式の連番「１．」、「２．」、…や「(1)」、「(2)」、…、同一マーク「■」、「■」、…など）を含む文字列を抽出する。図３の例では、１列目セルに「1.」、「2.」、「3.」、「4.」を含む文字列があるため、階層構造抽出部２０は、これらの見出し文字を含む文字列を抽出する。階層構造抽出部２０が抽出した結果が、図１０（ｃ）に示されている。
【００３１】
次いで、ステップＳ３６では、階層構造抽出部２０が、共通の見出し文字を含む文字列が２つ以上あったか否かを判断する。ここで、共通の見出し文字とは、同形式の連番、同一マークを意味する。図３の例では、同形式の連番が４箇所に存在していたので、ステップＳ３６の判断は肯定され、ステップＳ３８に移行する。
【００３２】
ステップＳ３８に移行すると、階層構造抽出部２０は、領域管理テーブル３４を更新する。ここでは、階層構造抽出部２０は、図１０（ｄ）に示すように、親領域ＩＤを「０」として、抽出した文字列を境界として分割される各領域の情報を領域管理テーブル３４に格納する。具体的には、注目領域（全体の領域）が、図１１に示すように、抽出した文字列（見出し）を境界として領域００〜０４に分割されるため、階層構造抽出部２０は、各領域００〜０４の範囲を示す座標（Ｒ１，Ｃ１）、（Ｒ２，Ｃ２）を領域管理テーブル３４に格納する。なお、各領域には、見出しは含まれないものとする。
【００３３】
次いで、ステップＳ４０では、階層構造抽出部２０が、継続フラグを「true」に設定する。その後は、ステップＳ４２に移行する。なお、図９のステップＳ３６の判断が否定された場合には、ステップＳ３８、Ｓ４０を経ずにステップＳ４２に移行する。ステップＳ４２に移行すると、階層構造抽出部２０は、次の注目領域があるか否かを判断する。本例では、分割前の領域が存在しないため、ステップＳ４２の判断は否定され、図９の全処理（ステップＳ２４の処理）を終了し、図６のステップＳ２６に移行する。ここでは、一例として、図１１に示すように領域００〜０４に分割された状態で、ステップＳ２６に移行したとする。なお、ステップＳ４２の判断が肯定された場合には、階層構造抽出部２０は、ステップＳ４４において次の注目領域を設定した後、ステップＳ３２に戻る。ステップＳ３２に戻った後は、ステップＳ３２以降の処理を上述と同様にして実行する。なお、本実施形態では、図９のステップＳ２４の処理が１回行われる間に新たに分割された（生成された）領域は、表形式データの階層構造における同一階層の領域となる。
【００３４】
図６のステップＳ２６に移行すると、階層構造抽出部２０は、ステップＳ２４で分割された領域に対する領域分割（横）の処理を実行する。なお、ステップＳ２６（領域分割（横））の処理は、ステップＳ２４で分割された領域を注目領域として、注目領域内を行方向に並ぶ複数の領域に分割する処理である。階層構造抽出部２０は、ステップＳ２６の処理として、図１２のフローチャートに沿った処理を実行する。
【００３５】
（領域分割（横））
図１２の処理において、階層構造抽出部２０は、まずステップＳ５０の注目領域の初期化処理を実行する。ここでは、一例として、図１３（ａ）に示すように、上記ステップＳ２４で新たに分割された領域００（（１，１）、（４，４６））が注目領域として設定されたものとする。
【００３６】
次いで、ステップＳ５２では、階層構造抽出部２０が、余白の除去を行う。これにより、注目領域の上下の余白と左右の余白が除去され、図１３（ｂ）に示すように注目領域が、（（２，１）、（２，６））となったとする。
【００３７】
次いで、ステップＳ５４では、階層構造抽出部２０が、長さが注目領域の幅に等しい配列Ａを“空”で初期化する。この場合の配列Ａは、図１３（ｃ）に示すような配列である。
【００３８】
次いで、ステップＳ５６では、階層構造抽出部２０が、注目領域に含まれるセルのうち文字が存在しているセルに対応する配列Ａの値を“１”に更新する。本例では、図１３（ｄ）に示すように、配列Ａの全ての値が１になる。
【００３９】
次いで、ステップＳ５８では、階層構造抽出部２０が、配列Ａにおいて値“空”が連続する箇所があるか否かを判断する。このステップＳ５８では、注目領域において、文字列と文字列の間に挟まれる空白列が存在しているか否かを判断していると言える。図１３（ｄ）の場合、“空”が連続する箇所が存在しないため、判断は否定され、ステップＳ７０に移行する。
【００４０】
ステップＳ７０に移行すると、階層構造抽出部２０は、次の注目領域があるか否かを判断する。ここでは、ステップＳ２４で分割された領域のうち、領域ＩＤ＝０１〜０４の領域がまだ残っているので、判断は肯定されて、ステップＳ７２に移行する。
【００４１】
ステップＳ７２に移行すると、階層構造抽出部２０は、次の注目領域を設定し、ステップＳ５２に戻る。なお、領域０１や領域０２については、上述した領域００と同様、空白部分が連続する箇所が無く、ステップＳ５８の判断が否定されるため、説明は省略するものとする。ここでは、次の注目領域として、図１４（ａ）に示すように、領域０３（（１３，１）、（２０，４６））が設定された場合について、詳細に説明する。
【００４２】
ステップＳ７２において、階層構造抽出部２０が注目領域として領域０３を設定した後、ステップＳ５２に移行すると、階層構造抽出部２０は、余白の除去を行う。これにより、注目領域の左側と下側の余白が除去され、図１４（ｂ）に示すように注目領域が（（１３，２）、（１９，４６））（図１５に示す領域）となったとする。
【００４３】
次いで、ステップＳ５４では、階層構造抽出部２０が、長さが注目領域の幅に等しい配列Ａを“空”で初期化する。この場合の配列Ａは、図１４（ｃ）に示すような配列である。
【００４４】
次いで、ステップＳ５６では、階層構造抽出部２０が、注目領域に含まれるセルのうち文字が存在しているセルに対応する配列Ａを“１”に更新する。本例では、図１５に示すように、配列Ａのうち、２０〜２２列目の値が連続して“空”となり、その他が“１”となる。 
【００４５】
次いで、ステップＳ５８では、階層構造抽出部２０が、配列Ａにおいて値“空”が連続する箇所（空白列）があるか否かを判断する。図１５の場合、“空”が連続する箇所が存在するため、判断は肯定され、ステップＳ６０に移行する。
【００４６】
ステップＳ６０では、階層構造抽出部２０が、“空”が連続する箇所を境界として新しい領域を一時領域管理テーブル３２に追加する。ここで、一時領域管理テーブル３２は、図１６（ａ）に示すような領域管理テーブル３４と同様の構造を有する。ステップＳ６０では、図１６（ｂ）に示す“空”が連続する箇所の左側の領域と、右側の領域とを一時領域管理テーブル３２に格納する（図１６（ａ）参照）。ここで、一時領域管理テーブル３２に格納される２つの領域の親領域は０３であるため、各領域の領域ＩＤを「０３０」、「０３１」としている。なお、領域０３０の範囲と領域０３１の範囲には、先頭行の文字列（見出し）は含まれないようにしている。なお、本実施形態の領域０３０（見出しも含む）は、“空”が連続する箇所の行方向の一側に存在する第１の表示対象要素群であるといえる。また、領域０３１（見出しも含む）は、“空”が連続する箇所の行方向の他側に存在する第２の表示対象要素群であるといえる。
【００４７】
次いで、ステップＳ６２では、階層構造抽出部２０が、新しい領域に対応する見出しの左端部分をパターンマッチングし、見出し文字を抽出する。ここでは、「(1)」と「(2)」が抽出される。
【００４８】
次いで、ステップＳ６４では、階層構造抽出部２０が、共通の見出し文字を含む見出しが複数あったか否かを判断する。このステップＳ６４の判断が否定された場合には、ステップＳ７０に移行するが、判断が肯定されると、ステップＳ６６に移行し、階層構造抽出部２０は、一時領域管理テーブル３２のデータを領域管理テーブル３４に追加する。本例では、２つの見出し文字「(1)」、「(2)」が抽出されたため、ステップＳ６４の判断は肯定され、ステップＳ６６に移行する。ステップＳ６６に移行すると、階層構造抽出部２０は、領域管理テーブル３４に図１７において矢印を付して示すデータを追加する。
【００４９】
次いで、ステップＳ６８では、階層構造抽出部２０が、継続フラグを「true」に設定する。その後は、ステップＳ７０に移行し、階層構造抽出部２０は、次の注目領域があるか否かを判断する。このステップＳ７０の判断が肯定された場合には、階層構造抽出部２０は、ステップＳ７２において次の注目領域を設定した後、ステップＳ５２に戻り、ステップＳ５２以降の処理を実行する。一方、ステップＳ７０の判断が否定された場合には、図１２の全処理（Ｓ２６の処理）を終了し、図６のステップＳ２８に移行する。なお、本実施形態では、図１２のステップＳ２６の処理が１回行われる間に新たに分割された（生成された）領域は、表形式データの階層構造における同一階層の領域となる。
【００５０】
図６のステップＳ２８に移行すると、階層構造抽出部２０は、継続フラグが「true」であるか否かを判断する。このステップＳ２８の判断が肯定された場合には、ステップＳ２２に戻り、継続フラグが「TRUE」である限り、上述した処理を再帰的に繰り返す。すなわち、図９の処理で新たに領域が分割されるか、図１２の処理で新たに領域が分割された場合には、分割された領域に対して、ステップＳ２４，Ｓ２６を繰り返し実行する。
【００５１】
一方、ステップＳ２８の判断が否定された場合には、図６の全処理（ステップＳ１０の処理）を終了する。以上の処理により、入力された表形式データの階層構造を記述した領域管理テーブル３４が完成する。領域管理テーブル３４には、各領域の座標と、各領域の階層構造（親子関係）が登録される。
【００５２】
なお、図３の表形式データは、最終的には、図１８に示すように領域分割され、各領域の階層構造（親子関係）が領域管理テーブル３４に登録されるようになっている。図１８において、領域ＩＤの数字の数（桁数）が同一の領域は同一階層の領域を意味し、ある領域とその領域内に含まれる領域の関係は親子関係となる。
【００５３】
（コンテクスト情報の抽出処理（Ｓ１２））
次に、図４のステップＳ１２において実行されるコンテクスト情報の抽出処理について説明する。コンテクスト情報抽出部２２は、ステップＳ１２の処理として、図１９のフローチャートに沿った処理を実行する。
【００５４】
図１９の処理では、まず、ステップＳ８０において、コンテクスト情報抽出部２２が、対象セルの入力があるまで待機する。ここで、ユーザは、対象セルをクリックするなどして、文字列の選択を行う。対象セルがユーザによって入力されると、ステップＳ８２に移行する。なお、本実施形態では、図２０において符号Ａで示すセル（文字列「Excel上で分析軸の変更、…」）がユーザによって選択されたものとする。なお、本明細書及び図面に記載の「Excel」は、登録商標である。
【００５５】
ステップＳ８２に移行すると、コンテクスト情報抽出部２２が、領域管理テーブル３４から対象セルを含む領域を特定し、各領域の見出しを連結して出力する。この場合、コンテクスト情報抽出部２２は、入力された対象セルの座標（１９，２７）を含む領域を領域管理テーブル３４から特定する。具体的には、図２１の領域管理テーブル３４に格納されている領域の中から対象セルの座標（１９，２７）を含む領域を特定し、図２１の最も右側の列のうち、特定した領域に対応する欄に「TRUE」を入力する。なお、「TRUE」が入力された領域の見出しは、図２０において破線枠で示す文字である。そして、コンテクスト情報抽出部２２は、各領域の見出しを連結して、図２２に示すようなコンテクスト情報「3.運用イメージ (2)Analysis Servicesの場合※バッチによる更新処理が必要 『2』分析軸の設定 Excel上で分析軸の変更、ソート順の変更、グラフ作成等が可能。」を生成し、表示部９３上に出力する。なお、上記コンテクスト情報の『2』は、図２２における丸数字の２を意味している。
【００５６】
なお、領域管理テーブル３４においては、各領域に対して親領域ＩＤが対応付けられている。したがって、コンテクスト情報抽出部２２は、ステップＳ８２において、親領域ＩＤを順に追跡することで、コンテクスト情報を生成するようにしてもよい。
【００５７】
これまでの説明からわかるように、本実施形態では、階層構造抽出部２０により、文字列の占有領域を特定する特定部、及び領域を分割して表形式データの階層構造を認識する認識部、としての機能が実現されている。
【００５８】
以上詳細に説明したように、本実施形態によると、階層構造抽出部２０は、表形式データの文字列をレイアウトしたときに、文字列が行方向に沿って伸び、かつ文字列が列方向に並んで配列される場合に、文字列それぞれの属性に基づき、表形式データをレイアウトしたときの文字列それぞれの占有領域を特定する（Ｓ２０）。そして、階層構造抽出部２０は、注目領域において文字列が存在しない空白が列方向に沿って延びており、かつ、空白の行方向の一側の領域の見出しと、他側の領域の見出しとが予め定めた見出し文字であった場合に、各領域を同一階層として表形式データの階層構造を認識する（Ｓ２６）。これにより、本実施形態では、表形式データにおいて、行方向に伸びる文字列が行方向に配列される階層構造を有していても、表形式データの階層構造を認識することができる。
【００５９】
また、本実施形態では、階層構造抽出部２０は、ステップＳ２４の領域分割（縦）において、注目領域の行方向の先頭に位置する文字又は文字群が予め定めた見出し文字である文字列を特定して、特定した文字列に基づいて列方向（縦方向）に複数領域に分割する。そして、階層構造抽出部２０は、分割後の領域に対して、ステップＳ２６の領域分割（横）の処理を実行する。これにより、行方向に伸びる文字列が列方向及び行方向に配列される階層構造を有していても、表形式データの階層構造を認識することができる。
【００６０】
また、本実施形態では、ステップＳ２４の領域分割（縦）と、ステップＳ２６の領域分割（横）を大きい領域から順に再帰的に実行するため、表形式データの階層構造（親子関係）を適切に認識することができる。
【００６１】
また、本実施形態では、コンテクスト情報抽出部２２は、文字列のいずれかの選択を受け付けると、領域管理テーブル３４（表形式データの階層構造）に基づいて、選択された文字列のコンテクスト情報（階層構造に関する情報）を出力する。これにより、ユーザは選択した文字列のコンテクスト情報を確認することが可能となる。
【００６２】
なお、上記実施形態では、１つの装置（コンテクスト情報提供装置１０）が、階層構造抽出部２０と、コンテクスト情報抽出部２２を有する場合について説明したがこれに限られるものではない。例えば、階層構造抽出部２０を外部装置（例えばクラウドサーバなど）が有し、コンテクスト情報抽出部２２を外部装置に接続された端末（クライアント端末など）が有していてもよい。
【００６３】
なお、上記実施形態では、図１５において、空白列が１つある場合に、横方向に注目領域を２つの領域に分割する例について説明したが、これに限られるものではない。例えば、空白列が複数（ｎ個）ある場合であれば、注目領域を横方向に（ｎ＋１）個の領域に分割するようにすればよい。
【００６４】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記憶媒体（ただし、搬送波は除く）に記録しておくことができる。
【００６５】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ（Digital Versatile Disc）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）などの可搬型記憶媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００６６】
プログラムを実行するコンピュータは、例えば、可搬型記憶媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記憶媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００６７】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【００６８】
なお、以上の実施形態の説明に関して、更に以下の付記を開示する。
（付記１）  表形式データの表示対象要素それぞれをレイアウトしたときに、前記表示対象要素が行方向に沿って伸び、かつ前記表示対象要素が列方向に並んで配列される場合に、前記表示対象要素それぞれの属性に基づき、前記表形式データをレイアウトしたときの前記表示対象要素それぞれの占有領域を特定し、
所定行数の注目領域において、前記占有領域が存在しない空白部分が前記列方向に沿って延びており、かつ、前記空白部分の前記行方向の一側に存在する第１の表示対象要素群の前記行方向の先頭に位置する文字又は文字群と、前記空白部分の前記行方向の他側に存在する第２の表示対象要素群の前記行方向の先頭に位置する文字又は文字群とが予め定めたものであった場合に、前記第１、第２の表示対象要素群を同一階層として前記表形式データの階層構造を認識する、
処理をコンピュータに実行させるための階層構造認識プログラム。
（付記２）  前記表形式データの所定領域において、前記行方向の先頭に位置する文字又は文字群が予め定めたものである前記表示対象要素を特定して、特定した前記表示対象要素に基づいて前記表形式データを複数領域に分割し、該複数領域それぞれを前記注目領域とする処理を前記コンピュータに更に実行させる、付記１に記載の階層構造認識プログラム。
（付記３）  前記複数領域それぞれを前記階層構造における同一階層とする処理を前記コンピュータに更に実行させる、付記２に記載の階層構造認識プログラム。
（付記４）  前記認識する処理の後、前記注目領域又は前記第１、第２の表示対象要素群を前記所定領域として、前記注目領域とする処理と前記認識する処理とを実行する、ことを特徴とする付記２又は３に記載の階層構造認識プログラム。
（付記５）  前記表示対象要素のいずれかの選択を受け付け、
前記表形式データの階層構造に基づいて、選択された前記表示対象要素の前記階層構造に関する情報を出力する、ことを特徴とする付記１〜４のいずれかに記載の階層構造認識プログラム。
（付記６）  表形式データの表示対象要素それぞれをレイアウトしたときに、前記表示対象要素が行方向に沿って伸び、かつ前記表示対象要素が列方向に並んで配列される場合に、前記表示対象要素それぞれの属性に基づき、前記表形式データをレイアウトしたときの前記表示対象要素それぞれの占有領域を特定し、
所定行数の注目領域において、前記占有領域が存在しない空白部分が前記列方向に沿って延びており、かつ、前記空白部分の前記行方向の一側に存在する第１の表示対象要素群の前記行方向の先頭に位置する文字又は文字群と、前記空白部分の前記行方向の他側に存在する第２の表示対象要素群の前記行方向の先頭に位置する文字又は文字群とが予め定めたものであった場合に、前記第１、第２の表示対象要素群を同一階層として前記表形式データの階層構造を認識する、
処理をコンピュータが実行することを特徴とする階層構造認識方法。
（付記７）  表形式データの表示対象要素それぞれをレイアウトしたときに、前記表示対象要素が行方向に沿って伸び、かつ前記表示対象要素が列方向に並んで配列される場合に、前記表示対象要素それぞれの属性に基づき、前記表形式データをレイアウトしたときの前記表示対象要素それぞれの占有領域を特定する特定部と、
所定行数の注目領域において、前記占有領域が存在しない空白部分が前記列方向に沿って延びており、かつ、前記空白部分の前記行方向の一側に存在する第１の表示対象要素群の前記行方向の先頭に位置する文字又は文字群と、前記空白部分の前記行方向の他側に存在する第２の表示対象要素群の前記行方向の先頭に位置する文字又は文字群とが予め定めたものであった場合に、前記第１、第２の表示対象要素群を同一階層として前記表形式データの階層構造を認識する認識部と、
を備える階層構造認識装置。
（付記８）  前記表形式データの所定領域において、前記行方向の先頭に位置する文字又は文字群が予め定めたものである前記表示対象要素を特定して、特定した前記表示対象要素に基づいて前記表形式データを複数領域に分割し、該複数領域それぞれを前記注目領域とする処理部を更に備える付記７に記載の階層構造認識装置。
（付記９）  前記処理部は、前記複数領域それぞれを前記階層構造における同一階層とすることを特徴とする付記８に記載の階層構造認識装置。
（付記１０）  前記認識部の処理の後、前記注目領域又は前記第１、第２の表示対象要素群を前記所定領域として、前記処理部及び前記認識部が処理を実行する、ことを特徴とする付記８又は９に記載の階層構造認識装置。
（付記１１）  前記表示対象要素のいずれかの選択を受け付け、前記表形式データの階層構造に基づいて、選択された前記表示対象要素の前記階層構造に関する情報を出力する出力部を更に備える付記７〜１０のいずれかに記載の階層構造認識装置。
【符号の説明】
【００６９】
１０  コンテクスト情報提供装置（階層構造認識装置）
２０  階層構造抽出部（特定部、認識部、処理部）
２２  コンテクスト情報抽出部（出力部）
【図１】
2020060905.tif 000003
【図２】
2020060905.tif 000004
【図３】
2020060905.tif 000005
【図４】
2020060905.tif 000006
【図５】
2020060905.tif 000007
【図６】
2020060905.tif 000008
【図７】
2020060905.tif 000009
【図８】
2020060905.tif 000010
【図９】
2020060905.tif 000011
【図１０】
2020060905.tif 000012
【図１１】
2020060905.tif 000013
【図１２】
2020060905.tif 000014
【図１３】
2020060905.tif 000015
【図１４】
2020060905.tif 000016
【図１５】
2020060905.tif 000017
【図１６】
2020060905.tif 000018
【図１７】
2020060905.tif 000019
【図１８】
2020060905.tif 000020
【図１９】
2020060905.tif 000021
【図２０】
2020060905.tif 000022
【図２１】
2020060905.tif 000023
【図２２】
2020060905.tif 000024