IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士ゼロックス株式会社の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024038698
(43)【公開日】2024-03-21
(54)【発明の名称】情報処理装置及びプログラム
(51)【国際特許分類】
   G06F 40/137 20200101AFI20240313BHJP
【FI】
G06F40/137
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022142922
(22)【出願日】2022-09-08
(71)【出願人】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
(74)【代理人】
【識別番号】100125346
【弁理士】
【氏名又は名称】尾形 文雄
(72)【発明者】
【氏名】横瀬 太郎
(72)【発明者】
【氏名】菊地 崇
【テーマコード(参考)】
5B109
【Fターム(参考)】
5B109NH07
(57)【要約】
【課題】特定の文字や記号等を用いて構造化されていない文書を構造化する場合に比して、より多くの構造の抽出を可能にする。
【解決手段】プロセッサにより、レイアウト上の第1の特徴に基づいて、構造化されていない文書の上位構造を与える文字列の集団を抽出し、レイアウト上の第2の特徴に基づいて、抽出された各集団に含まれる各文字列の下位構造を決定する情報処理装置。
【選択図】図4
【特許請求の範囲】
【請求項1】
プロセッサを有し、
前記プロセッサは、
レイアウト上の第1の特徴に基づいて、構造化されていない文書の上位構造を与える文字列の集団を抽出し、
レイアウト上の第2の特徴に基づいて、抽出された各集団に含まれる各文字列の下位構造を決定する、
情報処理装置。
【請求項2】
前記プロセッサは、
文字の並び方向における各文字列の開始位置の違いにより、各文字列に付与する下位構造を決定する、
請求項1に記載の情報処理装置。
【請求項3】
前記プロセッサは、
各文字列の開始位置と基準位置との間に1文字未満の端数が含まれる場合、当該端数に予め定めた規則を適用し、各文字列に付与する下位構造を決定する、
請求項2に記載の情報処理装置。
【請求項4】
前記プロセッサは、
前記端数の切り下げにより、各文字列に付与する下位構造を決定する、
請求項3に記載の情報処理装置。
【請求項5】
前記プロセッサは、
前記端数の四捨五入により、各文字列に付与する下位構造を決定する、
請求項3に記載の情報処理装置。
【請求項6】
前記プロセッサは、
文字の並び方向における各文字列の開始位置に基づいて前記集団を決定する、
請求項1に記載の情報処理装置。
【請求項7】
前記プロセッサは、
同じ行内に、閾値以上離れた複数の文字列が存在する場合、当該複数の文字列を異なる集団に割り当てる、
請求項6に記載の情報処理装置。
【請求項8】
前記プロセッサは、
文字列を記述する文字種、文字枠、囲み枠のいずれか1つ又はこれらの組み合わせに基づいて前記集団を決定する、
請求項1に記載の情報処理装置。
【請求項9】
前記プロセッサは、
対応する集団が共通する複数の文字列を一まとまりに出力する、
請求項1に記載の情報処理装置。
【請求項10】
前記プロセッサは、
一まとまりに出力される前記文字列の文字下げ量を、前記下位構造の違いにより決定する、
請求項9に記載の情報処理装置。
【請求項11】
前記プロセッサは、
各文字列の前後に、前記上位構造と前記下位構造を示すタグを付与する、
請求項1に記載の情報処理装置。
【請求項12】
コンピュータに、
レイアウト上の第1の特徴に基づいて、構造化されていない文書の上位構造を与える文字列の集団を抽出する機能と、
レイアウト上の第2の特徴に基づいて、抽出された各集団に含まれる各文字列の下位構造を決定する機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及びプログラムに関する。
【背景技術】
【0002】
見出しや箇条書きの先頭に現れる特定の文字や記号(以下「ヘディング情報」という。)に基づいて、構造化されていない文書に論理構造を付与する技術がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第3940491号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、ヘディング情報を用いて文をグループに分類する技術では、文の包含関係又は階層関係を示す情報が失われてしまう。
【0005】
本発明は、特定の文字や記号等を用いて構造化されていない文書を構造化する場合に比して、より多くの構造の抽出を可能にすることを目的とする。
【課題を解決するための手段】
【0006】
請求項1に記載の発明は、プロセッサを有し、前記プロセッサは、レイアウト上の第1の特徴に基づいて、構造化されていない文書の上位構造を与える文字列の集団を抽出し、レイアウト上の第2の特徴に基づいて、抽出された各集団に含まれる各文字列の下位構造を決定する、情報処理装置である。
請求項2に記載の発明は、前記プロセッサは、文字の並び方向における各文字列の開始位置の違いにより、各文字列に付与する下位構造を決定する、請求項1に記載の情報処理装置である。
請求項3に記載の発明は、前記プロセッサは、各文字列の開始位置と基準位置との間に1文字未満の端数が含まれる場合、当該端数に予め定めた規則を適用し、各文字列に付与する下位構造を決定する、請求項2に記載の情報処理装置である。
請求項4に記載の発明は、前記プロセッサは、前記端数の切り下げにより、各文字列に付与する下位構造を決定する、請求項3に記載の情報処理装置である。
請求項5に記載の発明は、前記プロセッサは、前記端数の四捨五入により、各文字列に付与する下位構造を決定する、請求項3に記載の情報処理装置である。
請求項6に記載の発明は、前記プロセッサは、文字の並び方向における各文字列の開始位置に基づいて前記集団を決定する、請求項1に記載の情報処理装置である。
請求項7に記載の発明は、前記プロセッサは、同じ行内に、閾値以上離れた複数の文字列が存在する場合、当該複数の文字列を異なる集団に割り当てる、請求項6に記載の情報処理装置である。
請求項8に記載の発明は、前記プロセッサは、文字列を記述する文字種、文字枠、囲み枠のいずれか1つ又はこれらの組み合わせに基づいて前記集団を決定する、請求項1に記載の情報処理装置である。
請求項9に記載の発明は、前記プロセッサは、対応する集団が共通する複数の文字列を一まとまりに出力する、請求項1に記載の情報処理装置である。
請求項10に記載の発明は、前記プロセッサは、一まとまりに出力される前記文字列の文字下げ量を、前記下位構造の違いにより決定する、請求項9に記載の情報処理装置である。
請求項11に記載の発明は、前記プロセッサは、各文字列の前後に、前記上位構造と前記下位構造を示すタグを付与する、請求項1に記載の情報処理装置である。
請求項12に記載の発明は、コンピュータに、レイアウト上の第1の特徴に基づいて、構造化されていない文書の上位構造を与える文字列の集団を抽出する機能と、レイアウト上の第2の特徴に基づいて、抽出された各集団に含まれる各文字列の下位構造を決定する機能と、を実現させるためのプログラムである。
【発明の効果】
【0007】
請求項1記載の発明によれば、特定の文字や記号等を用いて構造化されていない文書を構造化する場合に比して、より多くの構造の抽出を可能にできる。
請求項2記載の発明によれば、同じ集団に属する文字列に包含関係を付与できる。
請求項3記載の発明によれば、1文字未満の開始位置のずれがあっても下位構造を決定できる。
請求項4記載の発明によれば、1文字未満の開始位置のずれを下位階層の違いから無視できる。
請求項5記載の発明によれば、1文字未満の開始位置の違いを下位階層の違いに反映できる。
請求項6記載の発明によれば、文字列の開始位置に基づいて、構造化されていない文書から複数の集団を抽出できる。
請求項7記載の発明によれば、同じ行内にある文字列でも特定の条件を満たせば異なる集団に分離できる。
請求項8記載の発明によれば、文字種に基づいて、構造化されていない文書から複数の集団を抽出できる。
請求項9記載の発明によれば、出力される文書の可読性を向上できる。
請求項10記載の発明によれば、同じ集団に属する複数の文字列の包含関係を表現できる。
請求項11記載の発明によれば、検索のヒット率を向上できる。
請求項12記載の発明によれば、特定の文字や記号等を用いて構造化されていない文書を構造化する場合に比して、より多くの構造の抽出を可能にできる。
【図面の簡単な説明】
【0008】
図1】実施の形態1における情報処理システムの構成例を説明する図である。
図2】サーバのハードウェア上の構成例を示す図である。
図3】ユーザ端末のハードウェア上の構成例を示す図である。
図4】実施の形態1における処理動作例を説明するフローチャートである。
図5】処理対象とする文書の一例を示す図である。
図6】実施の形態1におけるクラスタの抽出例を説明する図である。
図7】文書からの構造の抽出結果の一例を説明する図表である。
図8】実施の形態1による処理動作で抽出されたレイアウト上の構造を用いた文書の出力例を示す図である。
図9】文書内の文字列を網羅的に抽出して構造化した文書の出力例を示す図である。
図10】実施の形態1による処理動作で抽出されたレイアウト上の構造を用いた文書の他の出力例を示す図である。
図11】文書から抽出された階層に紐づけるタグの関係を説明する図である。
図12】実施の形態1による処理動作で抽出されたレイアウト上の構造を用いた文書の他の出力例を示す図である。
図13】実施の形態2における処理動作例を説明するフローチャートである。
図14】実施の形態2で処理対象とする文書の一例を示す図である。
図15】文書に設定されている文字枠を説明する図である。
図16】実施の形態2におけるクラスタの抽出例を説明する図である。
図17】実施の形態3における処理動作例を説明するフローチャートである。
図18】実施の形態3で処理対象とする文書の一例を示す図である。
図19】文字種の情報を用いた文字の統合を説明する図である。
図20】実施の形態4における処理動作例を説明するフローチャートである。
図21】実施の形態4で処理対象とする文書の一例を示す図である。
図22】囲み枠の外側と内側を説明する図である。
図23】他の実施の形態(2)で処理対象とする文書の一例を示す図である。
【発明を実施するための形態】
【0009】
以下、図面を参照して、本発明の実施の形態を説明する。
<用語>
まず、実施の形態で使用する用語を説明する。
「文書」は、例えば印刷物、電子文書、電子化された文書である。実施の形態で想定する文書は、文字で記述されている。なお、文字の並び方向は横方向でも縦方向でもよい。また、実施の形態で想定する文書には写真、イラスト等の画像が含まれてもよい。
「印刷物」は、表面に文字や画像が定着された用紙やフィルムその他の媒体をいう。
「電子文書」は、情報機器やソフトウェアを用いて作成されたデジタル形式の文書をいう。ソフトウェアには、例えばオフィスソフトがある。
「電子化された文書」は、電子化されていない文書から生成された文書をいう。ここでの文書には、スキャナで取り込んだ印刷物等の画像イメージ、カメラで撮像された印刷物等の画像イメージも含まれる。
【0010】
「構造化されている文書」は、論理構造が付された電子文書又は電子化文書をいう。ここでの論理構造には、文字列間の階層構造が含まれる。
「構造化されていない文書」は、論理構造が付されていない電子文書又は電子化文書をいう。
「レイアウト上の特徴」は、構造化されていない文書のレイアウトに現れる特徴をいう。特徴には、例えば文字列の開始位置、2つの文字列の間隔、文字種、文字枠、囲み枠がある。
「2つの文字列の間隔」は、文字の並び方向に出現する2つの文字列の間の空白部分の長さ又は幅をいう。
【0011】
「文字列」は、文字の並び方向に連続する複数の文字をいう。句点や読点は1文字として扱われる。
「文字種」は、例えばフォント、サイズ、色、スタイル、文字の装飾をいう。スタイルには、例えば標準文字、斜体文字、太文字がある。文字の装飾には、例えば取り消し線、下線、上付き、下付きがある。
「文字枠」は、文字を入力する位置と範囲を指定する枠である。文字枠は、電子文書を記述するデータの一部である。文字枠は、視認可能な場合と視認されない場合がある。
【0012】
「囲み枠」は、文字列の可読性を高める装飾の一種である。囲み枠は、文字枠とは独立に設けられる。なお、囲み枠は、枠線として文字列を囲むだけでなく、他の文字列との境界を表す罫線や記号でもよい。例えば文字列の四隅に配置される記号は、枠線と同様の機能を発揮する。同様に、2つの文字列の間に配置される罫線は、2つの文字列を区別する機能を発揮する。なお、特定の文字列の背景色の違いや模様の違いによって、他の文字列との区別が可能になる場合には、囲み枠に準ずるものとし扱う。なお、囲み枠も、文字枠と同様、視認可能な場合と視認されない場合がある。
【0013】
「レイアウト上の構造」は、レイアウト上の特徴から抽出が可能な構造をいう。実施の形態では、上位構造と下位構造の2つを扱う。
「上位構造」は、構造化されていない文書に現れる1又は複数の文字列で構成されるクラスタ(すなわち集団)をいう。換言すると、上位構造は、レイアウト的に区別される文字列のクラスタ(すなわち集団)に対応する。
「下位構造」は、クラスタ(すなわち集団)に属する複数の文字列のレイアウト上の構造をいう。換言すると、下位構造は、レイアウト的に区別されるサブクラスタ(すなわち部分集団)であり、例えば階層関係を規定する。
【0014】
<実施の形態1>
<システム構成>
図1は、実施の形態1における情報処理システム1の構成例を説明する図である。
図1に示す情報処理システム1は、ネットワークNに接続されたサーバ10とユーザ端末20で構成されている。
説明の都合上、図1に示す情報処理システム1は、ユーザAが操作するユーザ端末20とユーザBが操作するユーザ端末20のみを表している。
以下では、ユーザAとユーザBを区別しない場合、ユーザと表記する。
【0015】
サーバ10は、情報処理装置の一例であり、構造化されていない文書からレイアウト上の構造を抽出する機能を有している。
本実施の形態で説明するサーバ10は、レイアウト上の構造を抽出する機能に特化している必要はなく、文書を管理する機能や印刷の実行を制御する機能を有してもよい。文書を管理する機能を有するサーバは、文書管理サーバとも呼ばれる。また、印刷の実行を制御する機能を有するサーバは、印刷サーバとも呼ばれる。
【0016】
サーバ10は、クラウド型のサーバでもオンプレミス型のサーバでもよい。すなわち、ネットワークNは、インターネットでもLAN(=Local Area Network)でもよい。なお、ネットワークNは、5Gその他の移動体通信システムでもよい。因みに、サーバ10は1台に限らず、複数台でもよい。
【0017】
ユーザ端末20も、情報処理装置の一例である。本実施の形態の場合、ユーザ端末20は、サーバ10に対する文書のアップロードと、サーバ10による情報処理の結果(すなわち処理結果)の閲覧やダウンロードに使用される。
アップロードする文書は、例えば構造化されていない文書である。また、処理結果には、レイアウト上の構造の情報が付された電子文書がある。ここでの電子文書には、例えばHTML(=HyperText Markup Language)文書やXML(=Extensible Markup Language)文書がある。これらの文書の場合、構造上の情報がタグとして埋め込まれる。
本実施の形態の場合、ユーザ端末20として、デスクトップ型の端末、ノート型の端末、タブレット型の端末、スマートフォンを使用する。なお、ユーザ端末20は、ウェアラブル端末でもよい。
【0018】
<端末構成>
図2は、サーバ10のハードウェア上の構成例を示す図である。
図2に示すサーバ10は、装置全体の動作を制御するプロセッサ11と、BIOS(=Basic Input Output System)等が記憶されたROM(=Read Only Memory)12と、プロセッサ11のワークエリアとして用いられるRAM(=Random Access Memory)13と、補助記憶装置14と、通信モジュール15を有している。なお、プロセッサ11と他のデバイスとは、バス等の信号線16を通じて接続されている。
【0019】
プロセッサ11と、ROM12と、RAM13は、いわゆるコンピュータとして機能する。
プロセッサ11は、プログラムの実行を通じ、各種の機能を実現する。例えばプロセッサ11は、構造化されていない文書からレイアウト上の構造を抽出する処理を実行する。
補助記憶装置14は、例えばハードディスク装置や半導体ストレージである。補助記憶装置14には、OS(=Operating System)等のプログラムの他、電子文書や電子化された文書が記憶される。
通信モジュール15は、ネットワークNに接続されたユーザ端末20等との通信を可能にするデバイスである。通信モジュール15には、イーサネット(登録商標)、Wi-Fi(登録商標)その他の任意の通信規格に準拠したモジュールが使用される。
【0020】
図3は、ユーザ端末20のハードウェア上の構成例を示す図である。
図3に示すユーザ端末20は、装置全体の動作を制御するプロセッサ21と、BIOS等が記憶されたROM22と、プロセッサ21のワークエリアとして用いられるRAM23と、補助記憶装置24と、ディスプレイ25と、I/Oインタフェース26と、通信モジュール27を有している。なお、プロセッサ21と他のデバイスとは、バス等の信号線28を通じて接続されている。
【0021】
プロセッサ21と、ROM22と、RAM23は、いわゆるコンピュータとして機能する。プロセッサ21は、プログラムの実行を通じ、各種の機能を実現する。
補助記憶装置24は、例えばハードディスク装置や半導体ストレージである。補助記憶装置24には、OS等のプログラムの他、電子文書等が記憶される。
ディスプレイ25は、例えば液晶ディスプレイや有機EL(=ElectroLuminescent)ディスプレイである。ディスプレイ25には、処理対象である電子文書や電子化された文書が表示される。
【0022】
I/Oインタフェース26は、例えばキーボードやマウスを用いたユーザからの入力を受け付ける装置である。具体的には、I/Oインタフェース26は、マウスカーソルの位置決めや移動、クリック等の入力を受け付ける。I/Oインタフェース26は、外部端末にデータを出力する装置でもある。
通信モジュール27は、ネットワークNに接続されたサーバ10等との通信を可能にするデバイスである。通信モジュール27には、イーサネット(登録商標)、Wi-Fi(登録商標)その他の任意の通信規格に準拠したモジュールが使用される。
【0023】
<処理動作例>
図4は、実施の形態1における処理動作例を説明するフローチャートである。なお、記号のSはステップを意味する。
まず、サーバ10(図1参照)は、処理対象とする文書を受け付ける(ステップ1)。前述したように、処理対象とする文書は、ユーザ端末20(図1参照)からアップロードされる。もっとも、処理対象とする文書がサーバ10で管理されている場合には、ユーザ端末20からの指示により、処理対象とする文書が特定される。
図5は、処理対象とする文書の一例を示す図である。図5に示す文書は、文字の並び方向が横向きの例である。なお、横向きをX軸とし、縦方向をY軸とする。いずれも文書の左上隅を原点とする。
【0024】
図4の説明に戻る。
次に、サーバ10は、処理対象とする行を特定する(ステップ2)。
本実施の形態では、文字の並び方向が横向きであるためである。ステップ2においては、処理対象とする行が上から順番に1つ特定される。
ここでの行は、文字が記述されている行をいう。従って、写真、イラスト等の画像が現れる行は、ステップ2における処理対象から除外される。もっとも、処理対象として特定された行に文字が記述されていない場合、サーバ10は、次の行を処理対象に変更してもよい。
因みに、文字の並び方向が縦向きの場合、ステップ2において、処理対象とする列が特定される。
【0025】
次に、サーバ10は、同一行内で連続する文字を文字列として統合する(ステップ3)。
連続する文字とは、各文字と右隣の文字との間に、フォントサイズの1文字以上の空白が現れないことをいう。1つの行内に複数の文字列が見つかる場合もある。
続いて、サーバ10は、対となる文字列を特定する(ステップ4)。対となる文字列とは、処理対象に特定された行に見つかった1つの文字列とその1つ上の行に見つかった文字列との組み合わせとして設定される。
なお、処理対象とする行が最初の行(すなわち1番上の行)の場合、1つ上の行は存在しない。この場合、ステップ4では、対となる文字列が特定されない。この場合、後述するステップ5で否定結果が得られる。
【0026】
1つ上の行に複数の文字列が見つかっている場合には、各文字列との間で対が構成される。
例えば1つ上の行に3つの文字列A、B、Cが見つかっており、処理対象とする行に2つの文字列X、Yが見つかっている場合、(文字列X,文字列A)、(文字列X,文字列B)、(文字列X,文字列C)、(文字列Y,文字列A)、(文字列Y,文字列B)、(文字列Y,文字列C)の6つの対が特定される。
【0027】
次に、サーバ10は、対となる2つの文字列について、開始点のx座標が近く、かつ、y座標が近いか否かを判定する(ステップ5)。
x座標は、開始点の横方向の位置を特定する情報の一例である。本実施の形態の場合、x座標の原点は、図5で説明したように、文書の左端である。x座標は、例えば原点から右方向(すなわちx軸方向)に開始点が見つかるまでのピクセル数やドット数で与えられる。もっとも、x座標は、原点からの長さで与えてもよい。また、文書内で使用されるフォントサイズが全て同じであれば、X座標を、文書の左端からの文字数で与えてもよい。
【0028】
y座標は、開始点の縦方向の位置を特定する情報の一例である。本実施の形態の場合、y座標の原点は、図5で説明したように、文書の上端である。y座標は、例えば原点から下方向(すなわちy軸方向)に開始点が見つかるまでのピクセル数やドット数で与えられる。もっとも、y座標は、原点からの長さで与えてもよい。また、文書内で使用されるフォントサイズが全て同じであれば、Y座標を、文書の上端からの文字数で与えてもよい。
【0029】
本実施の形態の場合、「開始点のx座標が近い」とは、2つの開始点のx座標の差分が基準値#1以下であることをいう。基準値#1には、例えば2文字分に相当するピクセル数等を用いる。
「開始点のy座標が近い」とは、2つの開始点のy座標の差分が基準値#2以下であることをいう。基準値#2には、例えば1行分に相当するピクセル数等を用いる。
【0030】
判定の条件を満たす場合、ステップ5で肯定結果が得られる。この場合、サーバ10は、縦方向に対となる文字列を統合する(ステップ6)。
一方、判定の条件を満たさない場合、ステップ5で否定結果が得られる。この場合、又は、ステップ6の実行後、サーバ10は、全ての対を処理したか否かを判定する(ステップ7)。
【0031】
全ての対を処理していない場合、ステップ7で否定結果が得られる。この場合、サーバ10は、ステップ4に戻り、残る対の1つを処理対象に特定する。
一方、全ての対を処理した場合、ステップ7で肯定結果が得られる。この場合、サーバ10は、全ての行を処理したか否かを判定する(ステップ8)。
【0032】
全ての行の処理が終わっていない場合、ステップ8で否定結果が得られる。この場合、サーバ10は、ステップ2に戻る。
一方、全ての行の処理が終わっている場合、ステップ8で肯定結果が得られる。この場合、サーバ10は、文書の上位構造を与える文字列のクラスタ(すなわち集団)を抽出する(ステップ9)。具体的には、サーバ10は、統合後の文字列の開始点のX座標に着目して文書の上位構造を与える文字列のクラスタを抽出する。なお、開始点のX座標は、「レイアウト上の第1の特徴」の一例である。
【0033】
サーバ10は、例えば以下に示す基準を使用し、同じ行内の横方向に出現する複数の文字列の統合と分離を判断する。
・基準1:
同じ行内の横方向に出現する2番目以降の文字列の開始点が左端から10文字未満の場合、対象とする文字列を1番目の文字列に統合するが、同開始点が左端から10文字を超える場合、対象とする文字列を1番目の文字列に統合しない。
・基準2:
同じ行内に出現する2つの文字列の間の空白が2文字以内の場合、2つの文字列を統合するが、空白が3文字以上の場合、2つの文字列を統合しない。
【0034】
因みに、「統合する」とは同じクラスタ(集団)に含めることを意味し、「統合しない」とは同じクラスタ(集団)に含めないことを意味する。同じクラスタ(集団)に含めないとは、別のクラスタ(集団)に分離することを意味する。
このステップ9の処理により、ステップ2~ステップ8で抽出された文字列のクラスタ(集団)が統合又は分離される。
【0035】
図6は、実施の形態1におけるクラスタの抽出例を説明する図である。図6に示す文書は、図5に例示した文書を前提としている。
図6では、4つのクラスタ#1~#4が抽出されている。これら4つのクラスタ#1~#4の抽出が、上位構造の抽出である。
例えばクラスタ#1には4つの文字列が含まれ、クラスタ#2には7つの文字列が含まれ、クラスタ#3には3つの文字列が含まれ、クラスタ#4には2つの文字列が含まれている。
【0036】
図4に説明に戻る。
ステップ9の実行により文書に含まれるクラスタの抽出が完了すると、サーバ10は、処理対象とするクラスタを特定する(ステップ10)。例えば図6におけるクラスタ#1が処理対象に特定される。
次に、サーバ10は、各文字列の開始点のX座標に着目してクラスタ内の下位構造を抽出する(ステップ11)。
本実施の形態の場合、サーバ10は、処理対象とする文字列毎に「クラスタ」の左端を基準に文字下げ量を特定する。各文字列の開始点のX座標や文字下げ量は、「レイアウト上の第2の特徴」の一例である。
【0037】
図6の場合、クラスタ#1やクラスタ#2の左端は、文書の左端と一致する。このため、クラスタ#1やクラスタ#2に含まれる文字列の文字下げ量は、開始点のX座標に一致する。
一方、クラスタ#3やクラスタ#4の左端は、文書の左端と一致しない。この場合、クラスタ#3やクラスタ#4に含まれる文字列の文字下げ量は、クラスタの左端のX座標と開始点のX座標との差分値として与えられる。
【0038】
サーバ10は、例えば文字下げ量が1文字増えるたびに、1つ下のサブクラスタに振り分ける。例えば文字下げ量が0(ゼロ)の文字列は「サブクラスタ#1」に分類され、文字下げ量が1の文字列は「サブクラスタ#2」に分類され、文字下げ量が2の文字列は「サブクラスタ#3」に分類される。以下、同様である。
ここでのサブクラスタは、各クラスタ(すなわち集団)に含まれる文字列の下位構造の一例である。
【0039】
ところで、文字下げ量には、1文字未満の端数が生じる場合がある。サーバ10は、この端数に予め定めた規則を適用してサブクラスタを決定する。
以下に規則の例を示す。
・規則1:
端数を切り下げた後、切り下げ後の文字下げ量より階層を決定する。
例えば文字下げ量が2.4文字の場合、0.4を切り下げて、文字下げ量を2文字とする。そして、対応する文字列を「サブクラスタ#3」に分類する。
例えば文字下げ量が1.8文字の場合、0.8を切り下げて、文字下げ量を1文字とする。そして、対応する文字列を「サブクラスタ#2」に分類する。
【0040】
・規則2:
端数を四捨五入した後、四捨五入後の文字下げ量より階層を決定する。
例えば文字下げ量が2.4文字の場合、文字下げ量を2文字とする。そして、対応する文字列を「サブクラスタ#3」に分類する。
例えば文字下げ量が1.8文字の場合、文字下げ量を2文字とする。そして、対応する文字列を「サブクラスタ#3」に分類する。
【0041】
下位構造が決定されると、サーバ10は、下位構造を基準に各文字列の階層を決定する(ステップ12)。
本実施の形態の場合、「サブクラスタ#1」に分類された文字列の階層は「階層1」に決定され、「サブクラスタ#2」に分類された文字列の階層は「階層2」に決定され、「サブクラスタ#3」に分類された文字列の階層は「階層3」に決定される。
【0042】
この後、サーバ10は、全てのクラスタを処理したか否かを判定する(ステップ13)。
全てのクラスタを処理していない場合、ステップ13で否定結果が得られる。この場合、サーバ10は、ステップ10に戻り、残るクラスタの1つを処理対象に特定する。
一方、全てのクラスタを処理した場合、ステップ13で肯定結果が得られる。この場合、サーバ10は、構造の抽出処理を終了する。
図7は、文書からの構造の抽出結果の一例を説明する図表である。図7に示す抽出結果は、図5及び図6に示す文書を前提としたものである。
【0043】
図7には、図6で説明した4つのクラスタ#1~#4に分類された各文字列についての階層の決定例が示されている。
図7に示すように、クラスタ#3とクラスタ#4に属する文字列の文字下げ量はいずれも0(ゼロ)である。このため、クラスタ#3とクラスタ#4に属する文字列の全てが「階層1」に決定されている。
【0044】
<出力例>
以下では、抽出されたレイアウト上の構造に基づいた文書の出力例を説明する。
<例1>
図8は、実施の形態1による処理動作で抽出されたレイアウト上の構造を用いた文書の出力例を示す図である。図8の出力例は、図5に示す文書を元文書としている。
【0045】
図8に示す出力例の場合、各文字列は、上位構造を与えるクラスタ単位で一まとまりに配置されている。すなわち、クラスタ#1が一段目に配置され、クラスタ#2が二段目に配置され、クラスタ#3が3段目に配置され、クラスタ#4が4段目に配置されている。
図6に示した文書のレイアウトとは異なるが、情報としての意味の単位でまとまって配置されるので可読性が向上する。
【0046】
また、図8に示す出力例の場合、階層1の文字列は強調表示される。すなわち、クラスタ#1の「項目1:」、クラスタ#2の「項目2:」、クラスタ#3の3つの文字列、クラスタ#4の2つの文字列のいずれもが、最大のフォントサイズかつ太文字で表示されている。なお、強調表示の手法は、これに限らず、文字の色や飾りの追加等と組み合わせてもよい。
【0047】
また、階層2の文字列は、階層1の文字列よりも1文字下げて配置され、階層3の文字列は、階層2の文字列よりも1文字下げて配置される。すなわち、処理前の文書が備えていたレイアウト上の階層構造が、構造化された文書でも保持されている。
このように、本実施の形態で説明した処理動作を適用すれば、上位構造としてのクラスタと、下位構造としてのクラスタ内の階層構造が保持された出力が可能になる。
【0048】
<比較例>
図9は、文書内の文字列を網羅的に抽出して構造化した文書の出力例を示す図である。図9の場合も、図5に示す文書を元文書とする。
図9の場合、文字列は網羅的に抽出されているが、レイアウト上の構造は失われている。例えば文頭の文字下げが全て失われるだけでなく、「項目1:」や「項目2:」の並びに次の行の文字列が連続して配置されている。
また、図8であればクラスタ#3やクラスタ#4として抽出される文字列も、図9では並んで配置されている。
このように、比較例では、元文書のレイアウト上の構造が失われている。このため、実施の形態1の出力例に比して、著しく可読性が低下している。
【0049】
<例2>
図10は、実施の形態1による処理動作で抽出されたレイアウト上の構造を用いた文書の他の出力例を示す図である。図10の出力例も、図5に示す文書を元文書としている。
図10に示す出力例は、抽出された上位構造と下位構造を用いたタグが文字列に付与されている。
図11は、文書から抽出された階層に紐づけるタグの関係を説明する図である。
図11に示すように、階層1は「Chapter>Text」と表現され、階層2は「Chapter>Paragraph>Text」と表現され、階層3は「Chapter>Paragraph>List>Text」と表現される。
【0050】
例えば図10の場合、クラスタ#1の階層1に位置する文字列の「項目1:」は、<Chapter><Text>項目1:</Text>として表されている。
なお、クラスタ#3の階層1に位置する文字列の「1~3小計:xxx円」は、<Chapter><Text>1~3小計:xxx円</Text></Chapter>として表されている。クラスタ#3の他の文字列やクラスタ#4の文字列も同様である。
このタグ付きの文書の出力により、ユーザ端末20(図1参照)には、図8に示すようなレイアウトの表示が可能になる。
【0051】
<例3>
前述した例1(図8参照)の場合、クラスタ#3の文字列とクラスタ#4の文字列の全てが、クラスタ#1やクラスタ#2のタイトルと同じ態様で表示されることに違和感が生じる可能性がある。
この違和感は、元文書におけるクラスタ#3やクラスタ#4に属する階層1の文字列が、クラスタ#1やクラスタ#2に属する階層1の文字列等と論理上の意味が異なることに起因している。つまり、クラスタ#1やクラスタ#2に属する階層1の情報が「タイトル」であるのに対し、クラスタ#1やクラスタ#2に属する階層1の情報が「注釈」や「補足説明」等であることに起因している。
【0052】
処理対象となる文書の全てについて違和感を生じさせない規則は存在しないが、少なくとも、文書内の3つ目以降に出現するクラスタの論理上の重みは、文書内の2つ目までに出現するクラスタの論理上の重みに比して小さいと仮定することも可能である。
図12は、実施の形態1による処理動作で抽出されたレイアウト上の構造を用いた文書の他の出力例を示す図である。図12の出力例も、図5に示す文書を元文書としている。
【0053】
図12では、3つ目以降に出現するクラスタの階層1に対応付ける分類名を、2つ目までのクラスタの階層1に対応付ける分類名から変更している。具体的には、ChapterタグからAnnotationタグに変更している。
これにより、タグ付き文書を表示する場合にも、クラスタ#3とクラスタ#4における階層1の文字列の表示の態様を、クラスタ#1やクラスタ#2における階層1の文字列の表示の態様と異なせることが可能になる。
【0054】
なお、例3の場合、3つ目と4つ目のクラスタには階層1の文字列しか含まれていないが、階層2や階層3が含まれる場合には、タグの階層構造が保存されるようにタグを変更してもよい。
また、例3の場合には、文書内の3つ目以降のクラスタの各階層に適用するタグを注釈タグ(Annotationタグ)に変更しているが、他の手法も可能である。例えば文書内の3つ目以降のクラスタの各階層に属する文字列には、更に1つ下の階層の分類名を対応付けてもよい。例えばクラスタ#3の階層1に属する文字列には、「Chapter>Paragraph>Text」を対応付けてもよい。以下、1つずつ下の階層の位置を表すタグを、対応する文字列に付与する。これにより、3つ目以降のクラスタに属する文字列を、2つ目までのクラスタに属する同じ階層の文字列よりも下位の階層として表現することが可能になる。
【0055】
<実施の形態2>
実施の形態2でも、情報処理システム1(図1参照)を想定する。違いは、サーバ10(図1参照)で実行される処理動作の内容である。
図13は、実施の形態2における処理動作例を説明するフローチャートである。図13には、図4との対応部分に対応する符号を付して示している。
図13の場合も、サーバ10は、処理対象とする文書を受け付ける(ステップ1)。
【0056】
図14は、実施の形態2で処理対象とする文書の一例を示す図である。図14の場合も、文字の並び方向が横向きの例である。なお、横向きをX軸とし、縦方向をY軸とする。いずれも文書の左上隅を原点とする。
図14の場合、文書の1行目と2行目には「ABCDEFG HIJK MNOPQ RSTUV」の文字列が配置され、3行目には「MNOPQ RSTUV」の文字列が配置され、4行目には「ABCD EFGHIJK」の文字列が配置され、5行目には「ABCD EFGHIJK NM OPQRSTUV」の文字列が配置されている。
【0057】
図13の説明に戻る。
次に、サーバ10は、処理対象とする文字枠を特定する(ステップ21)。
文字枠とは、文字を入力する位置と範囲を指定する枠であり、電子文書を記述するデータの一部である。このように、図13に示す処理動作は、処理対象とする文書が電子文書であって、文書内に文字枠が配置されている場合を想定する。
図15は、文書に設定されている文字枠を説明する図である。図15に示す文書には、2つの文字枠#1、#2が含まれており、それぞれに4つの文字列が含まれる例を表している。
【0058】
図13の説明に戻る。
処理対象とする文字枠が特定されると、サーバ10は、特定された文字枠に含まれる文字列を縦方向に統合する。統合のための処理は実施の形態1と同様である。すなわち、ステップ4~7が実行される。
図15の場合であれば、文字枠#1の1行目から2つの文字列「ABCDEFG」、「HIJK」が抽出される。文字枠#1の2行目からも2つの文字列「ABCDEFG」、「HIJK」が抽出される。そして、1行目と2行目の文字列「ABCDEFG」が縦方向に統合され、1行目と2行目の文字列「HIJK」が縦方向に統合される。
【0059】
図13の説明に戻る。
1つ目の文字枠#1について縦方向の統合が終わると、サーバ10は、全ての文字枠を処理したか否かを判定する(ステップ22)。
全ての文字枠の処理が終わっていない場合、ステップ22で否定結果が得られる。この場合、サーバ10は、ステップ21に戻る。
一方、全ての文字枠の処理が終わっている場合、ステップ22で肯定結果が得られる。この場合、サーバ10は、文書の上位構造を与える文字列のクラスタ(すなわち集団)を抽出する(ステップ9A)。具体的には、サーバ10は、統合後の文字列の開始点のX座標に着目して文書の上位構造を与える文字列のクラスタを抽出する。つまり、横方向に文字列を統合する。
【0060】
文字列の横方向の統合には、前述した基準1と基準2を使用する。ただし、文字枠が異なる文字列は統合の対象から除外する。
図16は、実施の形態2におけるクラスタの抽出例を説明する図である。図16に示す文書は、図14に例示した文書を前提としている。
図16に示すクラスタ#1の文字列「ABCDEFG HIJK」とクラスタ#3の文字列「MNOPQ RSTUV」とは横方向に2文字しか離れていないが、異なる文字枠の文字列は統合しないという基準により、それぞれ異なるクラスタとして抽出されている。クラスタ#2とクラスタ#4についても同様である。
以下の処理動作は、実施の形態1と同様であるので説明を省略する。図14に例示した文書の場合、文字下げが含まれないので、各クラスタに属する各文字列は階層1として扱われる。
【0061】
<実施の形態3>
実施の形態3でも、情報処理システム1(図1参照)を想定する。違いは、サーバ10(図1参照)で実行される処理動作の内容である。
図17は、実施の形態3における処理動作例を説明するフローチャートである。図17には、図4との対応部分に対応する符号を付して示している。
図17の場合も、サーバ10は、処理対象とする文書を受け付ける(ステップ1)。
図18は、実施の形態3で処理対象とする文書の一例を示す図である。図18の場合も、文字の並び方向が横向きの例である。なお、横向きをX軸とし、縦方向をY軸とする。いずれも文書の左上隅を原点とする。
【0062】
図18の場合、文書の1行目には、「[1]ABCDEFGHIJK(ここまでのフォントはArial) [2]abcdefghijk(ここまでのフォントはTimes New Roman)」の文字列が配置されている。
図18の場合、文書の2行目には、「[3]ABCDEFGHIJK(ここまでのフォントはArial) [4]abcdefghijk(ここまでのフォントはTimes New Roman)」の文字列が配置されている。
【0063】
図17の説明に戻る。
次に、サーバ10は、処理対象とする行を特定する(ステップ2)。
続いて、サーバ10は、同一行内の同一文字種の文字を文字列として統合する(ステップ31)。
図19は、文字種の情報を用いた文字の統合を説明する図である。図19も、図18に示した文書を前提とする。
まず、サーバ10は、文書の1行目に現れる文字列「[1]ABCDEFGHIJK [2]abcdefghijk」を、文字種の違いにより、2つの文字列#1と文字列#2として抽出する。
文書の2行目についても同様である。
【0064】
図17の説明に戻る。
次に、サーバ10は、対となる文字列を特定する(ステップ4)。
図18に示す文書の場合、「[1]ABCDEFGHIJK」と「[3]ABCDEFGHIJK」の対、「[1]ABCDEFGHIJK」と「[4]abcdefghijk」の対、「[2]abcdefghijk」と「[3]ABCDEFGHIJK」の対、「[2]abcdefghijk」と「[4]abcdefghijk」の対の4つの中から1つの対が特定される。
【0065】
この後、サーバ10は、特定された対となる文字列についてステップ5及び6を実行し、縦方向に文字列の統合を試みる。
図19の例では、「[1]ABCDEFGHIJK」と「[3]ABCDEFGHIJK」が1つの文字列に統合され、「[2]abcdefghijk」と「[4]abcdefghijk」が1つの文字列に統合されている。
【0066】
図17の説明に戻る。
全ての行の処理が終わっている場合、サーバ10は、文書の上位構造を与える文字列のクラスタ(すなわち集団)を抽出する(ステップ9B)。具体的には、サーバ10は、統合後の文字列の開始点のX座標に着目して文書の上位構造を与える文字列のクラスタを抽出する。つまり、横方向に文字列を統合する。
この場合も、サーバ10は、前述した基準1と基準2を使用して、横方向に文字列を統合する。
【0067】
基準1と基準2だけを用いる場合、図19に示す統合文字列#1と#2は1つの文字列に統合される。
ただし、基準1と基準2に加え、文字種が異なる文字列は横方向にも統合しない基準を適用する場合、統合文字列#1がクラスタ#1となり、統合文字列#2がクラスタ#2となる。
以下の処理動作は、実施の形態1と同様であるので説明を省略する。図18に例示した文書の場合、文字下げが含まれないので、各クラスタに属する各文字列は階層1として扱われる。
【0068】
<実施の形態4>
実施の形態4でも、情報処理システム1(図1参照)を想定する。違いは、サーバ10(図1参照)で実行される処理動作の内容である。
図20は、実施の形態4における処理動作例を説明するフローチャートである。図20には、図4との対応部分に対応する符号を付して示している。
図20の場合も、サーバ10は、処理対象とする文書を受け付ける(ステップ1)。
【0069】
図21は、実施の形態4で処理対象とする文書の一例を示す図である。図21の場合も、文字の並び方向が横向きの例である。なお、横向きをX軸とし、縦方向をY軸とする。いずれも文書の左上隅を原点とする。
図21の場合、文書の1行~3行目には「ABCDEFG abcdefghijklm」の文字列が配置され、4行目には「ABCDEFG」の文字列が配置され、5行目には「ABCDEFGHIJKLMNOPQRSTUVWXYZ」の文字列が配置されている。
なお、図21の場合、小文字の文字列の周囲には囲み枠が描画され、大文字の文字列と区別されている。
【0070】
図20の説明に戻る。
次に、サーバ10は、囲み枠の外側と内側を特定する(ステップ41)。
図22は、囲み枠の外側と内側を説明する図である。
囲み枠の外側と内側が特定されると、それぞれについてステップ4~7の処理が実行される。処理の内容は、図4で説明した通りである。
図22の場合であれば、まず囲み枠の外側に出現する文字列が縦方向に統合される。
統合処理が終了すると、サーバ10は、囲み枠の外側と内側の両方を処理したか否かを判定する(ステップ42)。
【0071】
両方の処理が終了していない場合、ステップ42で否定結果が得られる。この場合、サーバ10は、ステップ41に戻る。
一方、両方の処理が終了していた場合、ステップ42で肯定結果が得られる。この場合、サーバ10は、文書の上位構造を与える文字列のクラスタ(すなわち集団)を抽出する(ステップ9C)。具体的には、サーバ10は、統合後の文字列の開始点のX座標に着目して文書の上位構造を与える文字列のクラスタを抽出する。つまり、横方向に文字列を統合する。
この場合も、サーバ10は、前述した基準1と基準2を使用して、横方向に文字列を統合する。
【0072】
基準1と基準2だけを用いる場合、図22に示す囲み枠の外側の文字列と囲み枠の内側の文字列は1つの文字列に統合される。
ただし、基準1と基準2に加え、囲み枠の外側の文字列と囲み枠の内側の文字列を横方向にも統合しない基準を適用する場合、囲み枠の外側の文字列と囲み枠の内側の文字列は統合されない。
以下の処理動作は、実施の形態1と同様であるので説明を省略する。図21に例示した文書の場合、文字下げが含まれないので、各クラスタに属する各文字列は階層1として扱われる。
【0073】
<他の実施の形態>
(1)以上、本発明の実施の形態について説明したが、本発明の技術的範囲は前述した実施の形態に記載の範囲に限定されない。前述した実施の形態に、種々の変更又は改良を加えたものも、本発明の技術的範囲に含まれることは、特許請求の範囲の記載から明らかである。
【0074】
(2)前述の実施の形態2と実施の形態4を組み合わせた場合が考えられる。
図23は、他の実施の形態(2)で処理対象とする文書の一例を示す図である。図23に示す文書と図21に示す文書は見かけ上同じである。ただし、図23に示す文書には、文字枠が設定されており、その文字枠の範囲は囲み枠も含んでいる。
この種の文書が処理対象の場合、サーバ10は、最初に処理対象とする文字枠を特定する(ステップ21)。次に、サーバ10は、特定された文字枠内に囲み枠が含まれるか判定し、囲み枠が含まれる場合には、特定された文字枠に含まれる文字を囲み枠の外側と内側に分ける(ステップ41)。この後は、実施の形態4と同様の処理を実行する。
【0075】
(3)前述の実施の形態では、サーバ10が構造化されていない文書からレイアウト上の構造を抽出する機能を実行しているが、ユーザ端末20が単独で実行してもよい。この場合、対応する機能は、ユーザ端末20で実行されるプログラムとして提供される。
【0076】
(4)前述した各実施の形態におけるプロセッサは、広義的な意味でのプロセッサを指し、汎用的なプロセッサ(例えばCPU等)の他、専用的なプロセッサ(例えばGPU(=Graphical Processing Unit)、ASIC(=Application Specific Integrated Circuit)、FPGA(=Field Programmable Gate Array)、プログラム論理デバイス等)を含む。
また、前述した各実施の形態におけるプロセッサの動作は、1つのプロセッサが単独で実行してもよいが、物理的に離れた位置に存在する複数のプロセッサが協働して実行してもよい。また、プロセッサにおける各動作の実行の順番は、前述した各実施の形態に記載した順番のみに限定されるものでなく、個別に変更してもよい。
【0077】
<付記>
(((1)))
プロセッサを有し、前記プロセッサは、レイアウト上の第1の特徴に基づいて、構造化されていない文書の上位構造を与える文字列の集団を抽出し、レイアウト上の第2の特徴に基づいて、抽出された各集団に含まれる各文字列の下位構造を決定する、情報処理装置。
(((2)))
前記プロセッサは、文字の並び方向における各文字列の開始位置の違いにより、各文字列に付与する下位構造を決定する、(((1)))に記載の情報処理装置。
(((3)))
前記プロセッサは、各文字列の開始位置と基準位置との間に1文字未満の端数が含まれる場合、当該端数に予め定めた規則を適用し、各文字列に付与する下位構造を決定する、(((2)))に記載の情報処理装置。
(((4)))
前記プロセッサは、前記端数の切り下げにより、各文字列に付与する下位構造を決定する、(((3)))に記載の情報処理装置。
(((5)))
前記プロセッサは、前記端数の四捨五入により、各文字列に付与する下位構造を決定する、(((3)))に記載の情報処理装置。
(((6)))
前記プロセッサは、文字の並び方向における各文字列の開始位置に基づいて前記集団を決定する、(((1)))~(((5)))のいずれか1つに記載の情報処理装置。
(((7)))
前記プロセッサは、同じ行内に、閾値以上離れた複数の文字列が存在する場合、当該複数の文字列を異なる集団に割り当てる、(((6)))に記載の情報処理装置。
(((8)))
前記プロセッサは、文字列を記述する文字種、文字枠、囲み枠のいずれか1つ又はこれらの組み合わせに基づいて前記集団を決定する、(((1)))~(((5)))のいずれか1つに記載の情報処理装置。
(((9)))
前記プロセッサは、対応する集団が共通する複数の文字列を一まとまりに出力する、(((1)))~(((8)))のいずれか1つに記載の情報処理装置。
(((10)))
前記プロセッサは、一まとまりに出力される前記文字列の文字下げ量を、前記下位構造の違いにより決定する、(((9)))に記載の情報処理装置。
(((11)))
前記プロセッサは、各文字列の前後に、前記上位構造と前記下位構造を示すタグを付与する、(((1)))~(((8)))のいずれか1つに記載の情報処理装置。
(((12)))
コンピュータに、レイアウト上の第1の特徴に基づいて、構造化されていない文書の上位構造を与える文字列の集団を抽出する機能と、レイアウト上の第2の特徴に基づいて、抽出された各集団に含まれる各文字列の下位構造を決定する機能と、を実現させるためのプログラム。
【符号の説明】
【0078】
1…情報処理システム、10…サーバ、11、21…プロセッサ、12、22…ROM、13、23…RAM、14、24…補助記憶装置、15、27…通信モジュール、16、28…信号線、20…ユーザ端末、25…ディスプレイ、26…I/Oインタフェース
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23