(57)【要約】【課題】装飾されたテキスト列を含む画像であっても、概念検索といった高度な検索を高精度に実行可能な電子文書処理装置および電子文書処理方法を提供すること。【解決手段】本発明の一実施形態では、ステップＳ４０１において、レイアウト情報を含む電子文書からテキスト列を抽出し、抽出されたテキスト列のベースラインを検出する。次いで、ベースライン上の、前方に線分Ａを設け、かつ後方に線分Ａとは異なる種類の線分Ｂを設けて、線分Ａおよび線分Ｂを電子文書の座標上に配置する。ステップＳ４０２では、異なるテキスト列について、線分Ａと線分Ｂとが重なった場合に異なるテキスト列は連鎖していると判断する。【選択図】図４
2010055512.tif 000002
【特許請求の範囲】
【請求項１】
レイアウト情報を含む電子文書から複数のテキスト列を抽出する手段と、
前記抽出されたテキスト列それぞれのベースラインを検出する手段と、
前記ベースライン上の、前方に第１の線分を設け、かつ後方に前記第１の線分とは異なる種類の第２の線分を設けて、前記第１の線分および第２の線分を前記電子文書の座標上に配置する手段と、
異なる複数のテキスト列について、前記第１の線分と前記第２の線分とが重なる場合に、当該異なる複数のテキスト列同士は連鎖していると判断する手段と
を備えることを特徴とする電子文書処理装置。
【請求項２】
前記判断する手段は、前記第１の線分と前記第２の線分とが、条件とする角度で交差している場合に、前記異なるテキスト列は連鎖していると判断することを特徴とする請求項１に記載の電子文書処理装置。
【請求項３】
前記条件とする角度の許容範囲を切り替える手段をさらに備えることを特徴とする請求項２に記載の電子文書処理装置。
【請求項４】
前記抽出されたテキスト列に該テキスト列の識別用の識別子を割り当てる手段をさらに備え、
前記判断する手段は、前記連鎖していると判断されたテキスト列のペア毎に前記識別子のペアを作成し、前記識別子のペアの組み合わせに基づいて、前記識別子のペアを１次元にソートすることを特徴とする請求項１乃至３のいずれかに記載の電子文書処理装置。
【請求項５】
前記連鎖を判定する上でのバロメータとなるベースライン上の前方および後方に設ける第１および第２の線分の長さを切り替える手段をさらに備えることを特徴とする請求項１乃至４のいずれかに記載の電子文書処理装置。
【請求項６】
前記判断する手段は、前記連鎖の判断において、１つのテキスト列の後段に複数のテキスト列の連鎖が認められる場合に、テキスト列の連鎖が認められる中で最も、前段のテキスト列と後段のテキスト列との成す角度が小さい方のテキスト列を優先して、テキスト列を連鎖させることを特徴とする請求項１乃至５のいずれかに記載の電子文書処理装置。
【請求項７】
連鎖されたと判断されたテキスト列を１つのグループにグループ化する手段をさらに備えることを特徴とする請求項１乃至６のいずれかに記載の電子文書処理装置。
【請求項８】
前記グループに該グループの識別用の識別を与える手段をさらに備えることを特徴とする請求項７に記載の電子文書処理装置。
【請求項９】
前記グループ化されたテキスト列のオフセット座標を検出し、該オフセット座標の座標値によって整列させることで、テキスト列の抽出順位を決める手段をさらに備えることを特徴とする請求項７に記載の電子文書処理装置。
【請求項１０】
レイアウト情報を含む電子文書から複数のテキスト列を抽出する工程と、
前記抽出されたテキスト列それぞれのベースラインを検出する工程と、
前記ベースライン上の、前方に第１の線分を設け、かつ後方に前記第１の線分とは異なる種類の第２の線分を設ける工程と、
異なる複数のテキスト列について、前記第１の線分と前記第２の線分とが重なった場合に、当該異なる複数のテキスト列同士は連鎖していると判断する工程と
を有することを特徴とする電子文書処理方法。
【請求項１１】
前記判断する工程は、前記第１の線分と前記第２の線分とが、条件とする角度で交差している場合に、前記異なるテキスト列は連鎖していると判断することを特徴とする請求項１０に記載の電子文書処理方法。
【請求項１２】
前記条件とする角度の許容範囲を切り替える工程をさらに有することを特徴とする請求項１１に記載の電子文書処理方法。
【請求項１３】
前記抽出されたテキスト列に該テキスト列の識別用の識別子を割り当てる工程をさらに有し、
前記判断する工程は、前記連鎖していると判断されたテキスト列のペア毎に前記識別子のペアを作成し、前記識別子のペアの組み合わせに基づいて、前記識別子のペアを１次元にソートすることを特徴とする請求項１０乃至１２のいずれかに記載の電子文書処理方法。
【請求項１４】
前記連鎖を判定する上でのバロメータとなるベースライン上の前方および後方に設ける第１および第２の線分の長さを切り替える工程をさらに有することを特徴とする請求項１０乃至１３のいずれかに記載の電子文書処理方法。
【請求項１５】
前記判断する工程は、前記連鎖の判断において、１つのテキスト列の後段に複数のテキスト列の連鎖が認められる場合に、テキスト列の連鎖が認められる中で最も、前段のテキスト列と後段のテキスト列との成す角度が小さい方のテキスト列を優先して、テキスト列を連鎖させることを特徴とする請求項１０乃至１４のいずれかに記載の電子文書処理方法。
【請求項１６】
連鎖されたと判断されたテキスト列を１つのグループにグループ化する工程をさらに有することを特徴とする請求項１０乃至１５のいずれかに記載の電子文書処理方法。
【請求項１７】
前記グループに該グループの識別用の識別を与える工程をさらに有することを特徴とする請求項１６に記載の電子文書処理方法。
【請求項１８】
前記グループ化されたテキスト列のオフセット座標を検出し、該オフセット座標の座標値によって整列させることで、テキスト列の抽出順位を決める工程をさらに有することを特徴とする請求項１６に記載の電子文書処理方法。
【請求項１９】
コンピュータに請求項１０乃至１８のいずれかに記載の電子文書処理方法を実行させるためのコンピュータプログラム。
【請求項２０】
コンピュータにより読み出し可能なプログラムを格納した記憶媒体であって、請求項１９記載のコンピュータプログラムを格納したことを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は電子文書処理装置及び電子文書処理方法に関し、特に、電子文書レイアウト情報を保持した電子文書からテキストを抽出するための電子文書処理装置及び電子文書処理方法に関するものである。
【背景技術】
【０００２】
従来、電子文書におけるテキストの検索は、電子文書内に含まれるテキストを抽出し、その中に検索キーが含まれるかどうかを判定することによって行っている。検索手法としては、抽出された文字の中に検索キーが一部でも含まれるかどうかによって判定する方法が一般的である。
【０００３】
より限定的な検索手法としては、単語が完全に含まれるかどうかで判定する完全一致単語検索、空白を含めた複数の単語などからなるフレーズを検索キーとするフレーズ検索がある。また、電子文書を総なめにして検索語がないかを探し出し、仮に検索語と一致するテキストを含んだ電子文書が見つかれば、そのテキストがどのような個所に書かれたものかを検索結果として持ってくる全文検索がある。  
さらには、検索したい内容を文章として入力し、その文章に近い内容の情報を探すことができる概念検索といった高度な検索手法も存在している。
【０００４】
たとえば、電子文書から抽出されるテキストが、“He is a good boy. But, she is a bad girl.”であるとする。概念検索では“good boy”は勿論のこと、“nice boy”でも検索がヒットする。また、“bad boy”では検索にヒットしない。これは、抽出されたテキストが意味する概念に則しているかについて、検索処理を提供できているからである。
したがって概念検索を行う場合、抽出されたテキストは、日本語であれば日本語としての文章性であったり、英語であれば英語としての文章性であったりが保たれている必要がある。
【０００５】
一方、文字のレイアウト情報を保持する電子文書において、テキスト描画を表すコマンド（以降、テキスト描画コマンドと呼ぶ）の順番と、テキスト描画コマンドがページ上で指定される描画開始位置が、それぞれ独立している場合がある。例えば、ページ上の中心あたりから、１つ目のテキスト描画コマンドがはじまり、次にページ上の下方あたりから２つ目のテキスト描画コマンドがはじまり、最後にページ上の上方あたりから最後のテキスト描画コマンドがはじまるといったケースである。
【０００６】
実際の電子文書の例で、ＰＤＦ (Ｐｏｒｔａｂｌｅ Ｄｏｃｕｍｅｎｔ Ｆｏｒｍａｔ；登録商標) やＰＤＬ (Ｐａｇｅ Ｄｅｓｃｒｉｐｔｉｏｎ Ｌａｎｇｕａｇｅ)などでそのような表現がなされる場合がある。例えば、ＰＤＦを作成するソフトウェアの１つに、プリンタドライバ型のソフトウェアがある。これは、元の原稿を作成したワープロアプリケーションやドローアプリケーションにおいて、印刷指示を行う際、通常のプリンタドライバの代わりに、このＰＤＦ作成用ドライバを選択すると、印刷コマンドからＰＤＦファイルを作成するソフトウェアである。
【０００７】
このとき、元の原稿を作成したアプリケーションが、どのようなテキスト描画の順番で、印刷コマンドをＰＤＦ作成ドライバに渡すかは、そのアプリケーションに依存する。例えば、そのアプリケーションがレイアウトフリーな電子原稿作成アプリケーション（例えば、Ｍｉｃｒｏｓｏｆｔ Ｏｆｆｉｃｅ ＰｏｗｅｒＰｏｉｎｔ、Ｍｉｃｒｏｓｏｆｔ Ｏｆｆｉｃｅ Ｖｉｓｉｏ；共に登録商標）である場合等である。このアプリケーションでは、ページ上の文章の構成を考慮しないようにテキスト描画をしている場合、ＰＤＦ作成ドライバで作成されるＰＤＦファイルには、テキスト描画コマンドが並べられる順番として文章性を大きく欠いた結果で入力される場合がある。これは、テキスト描画コマンドが表すページ上の座標位置は正しいが、そのテキスト描画コマンドのＰＤＦファイル内での順番はばらばらであるということである。
【０００８】
レイアウトフリーな電子原稿作成アプリケーションの場合、操作者がテキストオブジェクトを生成した順に、そのオブジェクトをシーケンシャルに番号を振って管理している。しかし、操作者はレイアウトフリーに操作できる特性を活かして原稿を作成するので、テキストオブジェクトを生成した順番に則して文章性を保つようにテキストオブジェクトを配置していくことは必ずしも行われない。このような電子原稿から、ＰＤＦファイルを作成した場合、例えば図１に示すようなＰＤＦファイルが生成される。
【０００９】
図１では、レイアウトフリーな電子原稿作成アプリケーションから作成されたＰＤＦファイルのプレビュー１０１と、そのＰＤＦファイル内のテキスト描画コマンドの配列１０２の例を示している。配列１０２のようなテキスト描画コマンドの配列になった原因は、レイアウトフリーな電子原稿作成アプリケーションにて、テキストオブジェクトを生成したことに起因する。このときのテキストオブジェクトを生成した順番は、「Michael」「Confidential」「sushi」「Michael」「Possibly」「appreciates」の順である。ただし、その後に並べ変えて符号１０１のプレビューで示すような配置にし、操作者が意図する通りの文章に構成している。この電子原稿から、ＰＤＦファイルに変換した場合、配列１０２に示す順番でテキスト描画コマンドが入力されてしまう。
【００１０】
このようなＰＤＦファイルからテキストを抽出しても文章性は保たれていないので、このような結果を受け取った検索エンジンは単語検索程度しかままならず、概念検索等の高度な検索において精度を落としてしまうという問題がある。
【００１１】
こういった基本的な問題に対応するため、ページ内のテキストを取得する際にテキスト描画コマンドを座標に応じてソートする先行技術の例として、特許文献１では「ページ記述言語ファイル内に記載されている単語を識別する装置及び方法」が開示されている。特許文献１では、電子文書内のテキスト描画コマンドが記載されている順にテキストを抽出するのではなく、一旦すべてのテキスト描画コマンドと、それに紐付いた座標等のリソース情報を取り出す。さらに、テキスト描画コマンドのオフセット座標（テキスト描画の開始位置）をソートして、そのソート結果の順にテキストを抽出し、テキストの配置位置に則したテキスト抽出結果を得る技術がある。
【００１２】
【特許文献１】特開平０８−１９４６９７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかし、レイアウトフリーな電子原稿作成ソフト（アプリケーション）では、例えばアーチ状に並ぶような、装飾されたテキスト列を作成されることもあり、テキスト描画コマンドのオフセット座標の順にソートしてもうまくテキストが取得できないケースがある。
【００１４】
なお、本明細書において、「装飾されたテキスト列」とは、例えば、アーチ状、ウェーブ状、サークル（ループ）状、スクエア状、スター状というように、所定の一方向にテキストを整然と並べて形成するテキスト列ではないテキスト列を指す。
【００１５】
図２は、図１に示したＰＤＦファイルを例に、テキスト描画コマンドのオフセット座標の順にソートしてもうまくテキストが取得できない例を示している。
【００１６】
図２において、テキスト群（テキスト列）が、アーチ状に並ぶように装飾されている。テキスト２０２は、「Possibly」を示しており、その座標は（４、２０）である。テキスト２０３は、「Michael」を示しており、その座標は（８、２５）である。テキスト２０４は、「appreciates」を示しており、その座標は（１２、２５）である。テキスト２０５は、「sushi」を示しており、その座標は（２０、１７）である。テキスト２０６は、「Michael」を示しており、その座標は（５、１０）である。テキスト２０７は、「Confidential」を示しており、その座標は（１０、１０）である。
【００１７】
これをテキスト描画コマンドのオフセット座標順にソートすると、上記各テキストの座標に基づいて、図２に示す各テキストは次の順番で取得される。すなわち、テキスト２０３、テキスト２０４、テキスト２０２、テキスト２０５、テキスト２０６、テキスト２０７の順で取得されてしまう。しかしながら、図２のようなＰＤＦファイルの場合、このページのデザインが意図するテキストの順番は、テキスト２０２、テキスト２０３、テキスト２０４、テキスト２０５、テキスト２０６、テキスト２０７が自然である。
【００１８】
装飾されたテキスト列の装飾によっては、上述の、テキスト描画コマンドのオフセット座標順のソートにより、取得されるテキスト列がバラバラになることもある。
【００１９】
このように、従来では、装飾されたテキスト列を含む画像において概念検索といったページ全体の文章性が必要な高度な検索を行う場合、テキスト列の抽出で得られたテキスト列が本来の文章とは異なる場合があった。
【００２０】
本発明は、このような問題に鑑みてなされたもので、その目的とするところは、装飾されたテキスト列を含む画像であっても、概念検索といった高度な検索を高精度に実行可能な電子文書処理装置および電子文書処理方法を提供することにある。
【課題を解決するための手段】
【００２１】
このような目的を達成するために、本発明は、電子文書処理装置であって、レイアウト情報を含む電子文書から複数のテキスト列を抽出する手段と、前記抽出されたテキスト列それぞれのベースラインを検出する手段と、前記ベースライン上の、前方に第１の線分を設け、かつ後方に前記第１の線分とは異なる種類の第２の線分を設けて、前記第１の線分および第２の線分を前記電子文書の座標上に配置する手段と、異なる複数のテキスト列について、前記第１の線分と前記第２の線分とが重なった場合に、当該異なる複数のテキスト列同士は連鎖していると判断する手段とを備えることを特徴とする。
【００２２】
また、本発明は、電子文書処理方法であって、レイアウト情報を含む電子文書から複数のテキスト列を抽出する工程と、前記抽出されたテキスト列それぞれのベースラインを検出する工程と、前記ベースライン上の、前方に第１の線分を設け、かつ後方に前記第１の線分とは異なる種類の第２の線分を設ける工程と、異なる複数のテキスト列について、前記第１の線分と前記第２の線分とが重なった場合に、当該異なる複数のテキスト列同士は連鎖していると判断する工程とを有することを特徴とする。
【発明の効果】
【００２３】
本発明によれば、テキスト列の連鎖を検知することができるので、装飾されたテキスト列を含む画像であっても、概念検索といった高度な検索を高精度に実行することができる。
【発明を実施するための最良の形態】
【００２４】
以下、図面を参照して本発明の実施形態を詳細に説明する。なお、以下で説明する図面で、同一機能を有するものは同一符号を付け、その繰り返しの説明は省略する。  
本発明の一実施形態は、装飾されたテキスト列を含む画像に対しても、画像に含まれる文章を再現しつつテキスト列を抽出可能とするために、上記装飾されたテキスト列においてテキスト列の連鎖を検知する。
【００２５】
すなわち、本発明の一実施形態に係る電子文書処理装置（情報処理装置とも言う）は、テキスト抽出する電子文書が先述したような装飾により並べられた場合、テキストの連鎖を検知するために、以下の構成をシーケンシャルに実行する機能を備える。
【００２６】
工程１；電子文書処理装置は、各テキスト描画コマンドが指すテキスト列のベースラインを元に、２種類の線分を作成する（例えば、テキスト列の前方に線分Ａ（第１の線分）、テキスト列の後方に線分Ｂ（第２の線分）を作成する）。  
工程２；電子文書処理装置は、工程１で作成した２種類の線分である、線分Ａと線分Ｂを座標上にマッピングする。  
工程３；電子文書処理装置は、該電子文書処理装置にて定義した条件で、第１のテキスト列の線分Ａと第２のテキスト列の線分Ｂとが重なる場合、その線分Ａ側のテキスト列（第１のテキスト列）と線分Ｂ側のテキスト列とは連鎖していると判断する。そして、該連鎖していると判断されたテキスト列をつなげる（グループ化する）。
工程４；電子文書処理装置は、工程３にてグループ化したテキスト列を座標順にソートする。
工程５；電子文書処理装置は、工程４でソートした結果のテキストを抽出する。
【００２７】
このように、本発明の一実施形態では、テキスト列の連鎖を検知してテキスト列をつなげる仕組みを有している。よって、レイアウトフリーな電子原稿作成機能を有するアプリケーションが起源の、テキスト列に装飾が施されているような電子文書であっても、ページ全体の文章性を損なうことなくテキストを取得することができる。
【００２８】
よって、例えば、検索エンジンに本発明の一実施形態にかかる電子文書処理装置を適用することで、概念検索などページ全体の文章性が必要とされるような高度な検索において、その精度を向上させることができる。
【００２９】
（第１の実施形態）  
図３は、本実施形態の電子文書処理装置（情報処理装置）の構成例を示すブロック図である。
【００３０】
符号３０１は演算制御用のＣＰＵである。符号３０２はデータ及び指示入力のためのキーボードである。符号３０３は電子文書画像を表示するディスプレイである。符号３０４は電子文書を格納するハードディスクである。３０５は装置を制御するプログラムや必要な情報をあらかじめ記憶するＲＯＭである。符号３０６は様々なワークエリアとして利用されるＲＡＭである。
【００３１】
符号３０７は、電子文書の構造を解析する解析手段に相当し、電子文書内のテキスト描画コマンドが指すテキスト列の配置特性を解析するレイアウト解析処理部である。符号３０８は、異なるテキスト列が連鎖しているか否かを判断し、連鎖している場合は、該異なるテキスト列をつなげてグループ化するテキスト列結合処理部である。すなわち、テキスト列結合処理部３０８は、本電子文書処理装置に予め定義された条件で、異なるテキスト列同士の線分Ａと線分Ｂとが重なる場合、その線分Ａ側のテキスト列と線分Ｂ側のテキスト列とは連鎖していると判断してテキスト列をつなげる。次いで、該つながったテキスト列をグループ化する。符号３０９はグループ化されたテキスト列群を座標順にソートする整列処理部である。
【００３２】
尚、レイアウト解析処理部３０７や、テキスト列結合部３０８や、整列処理部３０９は、ＲＯＭ３０５に格納されたコンピュータプログラムをＣＰＵ３０１が実行することで実現される。すなわち、コンピュータプログラムは、本実施形態に係る電子文書処理装置といったコンピュータを、レイアウト解析処理部３０７や、テキスト列結合部３０８や、整列処理部３０９として機能させることができる。なお、コンピュータプログラムが記憶されるコンピュータ読み取り可能な記憶媒体は、ＲＯＭ３０５に限るものではなく、例えばハードディスク３０４であってもよい。
【００３３】
（本実施形態の電子文書処理装置（情報処理装置）の動作例）  
図４は、本実施形態に係る文書処理を行うフローチャートである。
【００３４】
ステップＳ４０１では、レイアウト解析処理部３０７は、図５にて後述するレイアウト解析処理を行う。ステップＳ４０２では、テキスト列結合処理部３０８は、図８、９、１１にて後述するテキスト列結合処理を行う。ステップＳ４０３では、整列処理部３０９は、図１２にて後述する整列処理を行う。ステップＳ４０４では、電子文書処理装置は、ステップＳ４０１−Ｓ４０３の処理結果をもって、整列された順番にテキスト列のテキストを抽出する。
【００３５】
図５は、Ｓ４０１にて行うレイアウト解析処理を表すフローチャートと、その補足図である。  
ステップＳ５０１において、レイアウト解析処理部３０７は、電子文書が保持するページ内のテキスト描画コマンドのすべてを取得する。なお、電子文書としてＰＤＦファイルを例とする場合、テキスト描画コマンドはTjで表され、図１の配列１０２で示すような記載が電子文書中でなされている。
【００３６】
ステップＳ５０２では、レイアウト解析処理部３０７は、符号５Ａで示すように、取得したテキスト描画コマンドに対応するフォント情報から、テキスト描画コマンドが表すテキスト列のベースラインを取得する。ベースラインは図６の符号６０１で示すように、書体の構成要素であって、フォント情報の構成要素のひとつである。このベースラインは、テキスト列の並びの視線を誘導する役割として必要なラインで、単にラインと呼ばれることもある。テキスト列を並べる際には、図６に示すようにベースライン６０１の一直線上にそれぞれの文字が並ぶことになる。
【００３７】
ステップＳ５０３では、レイアウト解析処理部３０７は、符号５Ｂで示すように、ステップＳ５０２にて取得されたベースラインのオフセット座標を取得する。ベースラインのオフセット座標は、先頭文字のベースラインの開始位置となる。
【００３８】
ステップＳ５０４では、レイアウト解析処理部３０７は、符号５Ｃで示すように、ベースライン上において、テキスト列の先頭文字から前方に第１の線分としての線分Ａを作成する。続いてステップＳ５０５にて、レイアウト解析処理部３０７は、符号５Ｄで示すように、ベースライン上において、テキスト列の最終文字から後方に、第１の線分とは種類が異なる第２の線分としての線分Ｂを作成する。ステップＳ５０５の後にはレイアウト解析処理を終了する。
【００３９】
このように、本実施形態では、レイアウト解析処理部３０７は、テキスト列から検出されたベースラインの前方および後方のそれぞれに、互いに異なる種類の線分を設け、該線分を文書画像の座標上に配置する。  
本実施形態では、後述するが、ある２つのテキスト列（第１のテキスト列および第２のテキスト列とする）に着目した場合、第１および第２のテキスト列の種類の異なる線分同士が所定の条件で重なるか否かで連鎖しているか否かを判断する。そして、互いに種類の異なる線分のうち、線分Ａはテキスト列の前方の配置される線分であり、線分Ｂはテキスト列の後方に配置される線分である。従って、線分Ａと線分Ｂとが重なるか否かで連鎖性を判断することで、前段のテキスト列の最後尾の後に後段のテキスト列の最前を配置することができる。
【００４０】
なお、レイアウト解析処理部３０７は、線分Ａ、Ｂを作成する際に、ベースラインの座標上での方向や予め定められた線分の長さ等に基づいて、各テキスト列に対する線分ＡおよびＢのそれぞれの関数を求める。この線分Ａ（線分Ｂ）の関数情報には、線分Ａの関数（軸に平行な関数か、傾きを持った関数か）、線分の長さ、線分の両端の座標を含めることができる。従って、線分Ａおよび線分Ｂの関数情報を用いれば、線分Ａおよび線分Ｂを座標上に配置することができる。すなわち、線分Ａおよび線分Ｂの関数情報は、各線分を座標上に配置するための情報といえる。
【００４１】
レイアウト解析処理部３０７は、該求められた線分Ａの関数情報および線分Ｂの関数情報をＲＡＭ３０６に格納する。
【００４２】
線分Ａと線分Ｂの長さは、テキスト列の連鎖を検知する上で、最も重要なバロメータのひとつとなる。本実施形態における電子文書処理装置には、テキスト列の連鎖検知のための線分Ａと線分Ｂの長さを操作者に入力させることができるユーザーインターフェースを提供することができる。なお図７は、バロメータを入力するためのユーザーインターフェースの好適な例を示している。
【００４３】
図７に示すユーザーインターフェースがディスプレイ３０３に表示されると、操作者は、キーボード３０２やポインティングデバイスを用いて、連鎖検知用に設けられる線分の長さを所望に応じて入力することができる。該入力が行われると、ＣＰＵ３０１は、線分の長さに関するユーザ入力を受付け、該ユーザ入力に応じて、ベースライン上の前方および後方に設ける線分の長さを切り替える。レイアウト解析処理部３０７は、この切り替えられた線分の長さにて線分を作成することができる。  
なお、本実施形態では、上記線分の長さをユーザ入力により変更可能な構成としても良いし、予め定められた長さを用いるようにしても良い。
【００４４】
図８は、本実施形態に係る、テキスト列結合処理を表すフローチャートと、その補足図である。  
ステップＳ８０１において、テキスト列結合処理部３０８は、ステップ５０１にて取得されたテキスト描画コマンドの数と同じ数だけバッファを用意する。それぞれのバッファには、テキスト列を構成するテキストと、そのテキスト列が表す線分Ａと線分Ｂの関数情報と、識別用のＩＤ（識別子）を収める。識別用のＩＤは処理順にシーケンシャルに割り当てる。
【００４５】
ステップＳ８０２では、テキスト列結合処理部３０８は、テキスト列の連鎖検知として、バッファの全数（ｎ1とする）から、２個を選ぶ組み合わせに対し、線分Ａおよび線分Ｂの関数情報に基づいて線分Ａと線分Ｂが平行に重なるケースがあるか確認する。これは、符号８Ｂで示すように、線分Ａと線分Ｂの関数が同じで、さらに線分Ａと線分ＢのＸ座標領域が共有する箇所があるかの確認処理を行えばよい。すなわち、符号８Ｂにおいて、テキスト列８１における、線分Ａを線分ａとし、線分Ｂを線分ｂとし、テキスト列８２における、線分Ａを線分ｃとし、線分Ｂを線分ｄとする。このとき、テキスト列結合処理部３０８は、線分Ａおよび線分Ｂの関数情報に基づいて、テキスト列８１とテキスト列８２の互いに種類が異なる線分である線分ｂと線分ｃとを比較して、線分ｂと線分ｃとが重なるか否かを判断する。なお、傾きが同じ線分Ａと線分Ｂの位置が、誤差により、上下（または左右）に少しズレている場合が考えられるので、数ドット（例えば１〜３ドット）のズレがあったとしても重なっていると判断するように、誤差の許容範囲を予め設けておくのが望ましい。例えば、傾きが同じ線分Ａと線分Ｂそれぞれに数ドットの線幅を定義したとき、その線幅で各線分が描画される領域が重なれば、それらのテキスト列はほぼ平行に重なっていると判断するようにしてもよい。また、各線分の傾きが同じである場合に線分Ａと線分Ｂの距離を求め、その距離が所定の閾値以内であれば、それらの線分に関連するテキスト列は平行に重なっていると判断するようにしてもよい。
【００４６】
なお、上記２個を選ぶ組み合わせは、コンビネーションの数式を用いると、符号８Ａに示すようにn1Ｃ2と表せる。
【００４７】
ステップＳ８０３では、テキスト列結合処理部３０８は、ステップＳ８０２の処理結果を踏まえて、線分Ａと線分Ｂが平行に重なるケースがあるのかを判断し、Ｙｅｓの場合にはステップＳ８０４に進み、Ｎｏの場合にはステップＳ８０５に進む。ステップＳ８０４では、テキスト列結合処理部３０８は、線分Ａと線分Ｂが平行に重なるバッファ同士を、符号８Ｃに示すようにグループ化する。
【００４８】
図９は、ステップＳ８０４で行う、線分Ａと線分Ｂが平行に重なるバッファ同士をグループ化する処理の詳細である。本実施形態では、テキスト列の終端から後方に延びる線分Ｂと、テキスト列の先端から前方に延びる線分Ａの重なりはテキスト列が連鎖している判断する。  
ここで、ステップＳ９０１では、テキスト列結合処理部３０８は、符号９Ａに示すように、重なり合った線分Ｂ→線分ＡのバッファのＩＤがペアになったものを作成する。すなわち、テキスト列結合処理部３０８は、線分Ｂと線分Ａとが重なったテキスト列のペア毎に、これら重なっているテキスト列に対するＩＤのペアを作成する。  
上述したように、各テキスト列において線分Ｂは、テキスト列の後方に延びているので、ある２つのテキスト列に着目した場合、線分Ｂの後に該線分Ｂと重なる線分Ａが配置されると、一方のテキスト列の後に他方のテキスト列が配置されるようになる。
【００４９】
なお、例えば、符号９Ａに示すように４つのテキスト列が一直線に連鎖するのであれば、バッファのＩＤのペアは３つ作成される。  
符号９Ａにおいて、テキスト列９１の、線分Ａを線分ｉとし、線分Ｂを線分ｊとする。また、テキスト列９２の、線分Ａを線分ｋとし、線分Ｂを線分ｌとする。また、テキスト列９３の、線分Ａを線分ｍとし、線分Ｂを線分ｎとする。さらに、テキスト列９４の、線分Ａを線分ｏとし、線分Ｂを線分ｐとする。また、テキスト列９１のＩＤを「７」とし、テキスト列９２のＩＤを「２」とし、テキスト列９３のＩＤを「９」とし、テキスト列９４のＩＤを「３」とする。  
なお、本明細書において、「Ｘ（Ｘ；自然数）」は、テキスト列の識別用のＩＤを指す。
【００５０】
符号９Ａに示すように、テキスト列９１の線分Ｂである線分ｊとテキスト列９２の線分Ａである線分ｋとが重なっているので、「７」と「２」とがペアになる。同様に、各テキスト列の線分Ａ、Ｂの重なりにより、「２」と「９」とがペアになり、「９」と「３」とがペアになる。
【００５１】
ステップＳ９０２では、テキスト列結合処理部３０８は、ステップＳ９０１にて取得されたバッファのＩＤのペアの組み合わせから、ＩＤを１次元に並ぶようにソートする。例えば、３つのＩＤのペアを１次元にソートすると、符号９Ｂに示すような順でソートされる。
【００５２】
ステップＳ９０３では、テキスト列結合処理部３０８は、バッファのＩＤのペアを１次元にソートできないケースがあるか否かを判断する。例えば符号９Ｃに示すように、テキスト列が重ねられて配置されるケース（符号９Ｃでは、テキスト列９３とテキスト列９５とが重なっている）があり、この場合、バッファのＩＤのペアをソートしても分岐ができてしまう。  
なお、符号９Ｃにおいて、テキスト列９５は、線分Ａとして線分ｑを有し、線分Ｂとして線分ｒを有する。また、テキスト列９５のＩＤは、「１０」である。  
ステップＳ９０３の判断において、Ｙｅｓの場合にはステップＳ９０４に進み、Ｎｏの場合にはステップＳ９０５に進む。なお、ステップＳ９０３において、Ｙｅｓとなるケースは少なく、例外的な対応の処理としてステップＳ９０４を用意している。
【００５３】
ステップＳ９０４では、テキスト列結合処理部３０８は、バッファのＩＤのペアをソートしても分岐ができてしまっているケースについて、バッファのＩＤの数字が小さい方を優先してソートし、バッファのＩＤを１次元にソートする処理を行う。  
例えば、符号９Ｃに示すように、テキスト列９３とテキスト列９５とが重なっている場合、バッファのＩＤの並びは「７」「２」の後に「９」「３」と「１０」「３」の系ができるので、１次元にソートできていない。これを、符号９Ｄに示すように、「７」「２」の後の、「９」「３」と「１０」「３」に対しバッファのＩＤの数字が小さい方の「９」を優先して、「７」「２」「９」「３」「１０」「３」の順で一旦並べる。「３」は重複しているので、１つになるように削除する。ここで、連結後のテキスト列の最後尾に線分Ｂが出やすいように、重複する場合は最後方の重複しているバッファのＩＤ（本例の場合「１０」の後ろの「３」）が残るように削除処理を行う。その結果、ＩＤが「７」「２」「９」「１０」「３」の１次元の並びとなる。
【００５４】
なお、本実施形態では、分岐ができる場合にバッファのＩＤの数字が小さい方を優先してソートしているが、これに限定されず、バッファのＩＤの数字が大きい方を優先してソートするようにしても良い。
【００５５】
ステップＳ９０５では、テキスト列結合処理部３０８は、符号９Ｅに示すように、グループ化の処理として、新たにバッファを用意し、ソートの結果を結合したものをそのバッファに収める。該新たなバッファのＩＤにも、以前の処理で使用されていない新しいＩＤ（符号９Ｅでは、「１００」）を付与する。すなわち、テキスト列結合処理部３０８は、連鎖したテキスト列を１つのグループとし、該グループ毎にグループを識別するためのＩＤ（識別子）を付与する。  
ステップＳ９０６では、テキスト列結合処理部３０８は、ステップＳ９０５で新たにグループ化されて不要になったバッファの削除を行う。
【００５６】
ステップＳ８０５において、レイアウト解析処理部３０７は、テキスト列の連鎖検知として、電子文書処理装置に設定された条件として定義されている角度（条件とする角度）で交差（クロス）しているか否かを確認する。すなわち、ステップＳ８０３とステップＳ８０４の処理を通過した後の、残りのバッファの全数（ｎ２とする）から、２個を選ぶ組み合わせに対し、線分Ａと線分Ｂの関数が互いに交じり合い、かつ、条件として定義されている角度にてクロスしているか確認する。条件とする角度は符号８Ｅに示すように、例えば、線分Ａと線分Ｂがクロスする角度が９０度以内の場合に連鎖検知するように定義する。  
なお、上記２個を選ぶ組み合わせは、コンビネーションの数式を用いると符号８Ｄに示すようにn2Ｃ2と表せる。
【００５７】
線分Ａと線分Ｂのクロスする角度の条件は、テキスト列の連鎖を検知する上で、最も重要なバロメータのひとつとなる。本実施形態における電子文書処理装置には、テキスト列の連鎖検知のための線分Ａと線分Ｂのクロスする角度の条件を操作者に入力させることができるユーザーインターフェースを提供する。なお図１０は、バロメータを入力するためのユーザーインターフェースの好適な例を示している。
【００５８】
図１０に示すユーザーインターフェースがディスプレイ３０３に表示されると、操作者は、キーボード３０２やポインティングデバイスを用いて、連鎖検知用に設けられる線分が交差される角度θを所望に応じて入力することができる。該入力が行われると、ＣＰＵ３０１は、線分が交差される角度θに関するユーザ入力を受付け、該ユーザ入力に応じて、線分が交差する角度の許容範囲を切り替える。  
なお、本実施形態では、上記角度θをユーザ入力により変更可能な構成としても良いし、予め定められた角度を用いるようにしても良い。
【００５９】
ステップＳ８０６では、レイアウト解析処理部３０７は、ステップＳ８０５の処理結果を踏まえて、線分Ａと線分Ｂが定義された連鎖条件でクロスしているケースがあるのかを判断する。Ｙｅｓの場合にはステップＳ８０７に進み、Ｎｏの場合にはテキスト列結合処理を終了する。
【００６０】
ステップＳ８０７では、テキスト列結合処理部３０８は、線分Ａと線分Ｂが定義された連鎖条件でクロスしているバッファ同士を、符号８Ｆに示すようにグループ化する。すなわち、符号８Ｆにおいて、テキスト列８３における、線分Ａを線分ｅとし、線分Ｂを線分ｆとし、テキスト列８４における、線分Ａを線分ｇとし、線分Ｂを線分ｈとする。このとき、テキスト列結合処理部３０８は、線分Ａおよび線分Ｂの関数情報に基づいて、テキスト列８１とテキスト列８２の互いに種類が異なる線分である線分ｆと線分ｇとを比較して、線分ｆと線分ｇとがクロスするか否かを判断する。
【００６１】
図１１は、ステップＳ８０７で行う、線分Ａと線分Ｂが定義された連鎖条件でクロスしているバッファ同士をグループ化する処理の詳細である。本実施形態では、テキスト列の終端から後方に延びる線分Ｂと、テキスト列の先端から前方に延びる線分Ａの条件下でのクロスはテキスト列の連鎖であると判断する。
【００６２】
ここで、ステップＳ１１０１では、テキスト列結合処理部３０８は、符号１１Ａに示すように、クロスした線分Ｂ→線分ＡのバッファのＩＤがペアになったものを作成する。なお、例えば、符号１１Ａに示すように、４つのテキスト列が条件下のクロスにより連鎖するのであれば、バッファのＩＤのペアは３つ作成される。  
符号１１Ａにおいて、テキスト列１１１の、線分Ａを線分ｉとし、線分Ｂを線分ｊとする。また、テキスト列１１２の、線分Ａを線分ｋとし、線分Ｂを線分ｌとする。また、テキスト列１１３の、線分Ａを線分ｍとし、線分Ｂを線分ｎとする。さらに、テキスト列１１４の、線分Ａを線分ｏとし、線分Ｂを線分ｐとする。また、テキスト列１１１のＩＤを「７」とし、テキスト列１１２のＩＤを「２」とし、テキスト列１１３のＩＤを「９」とし、テキスト列１１４のＩＤを「３」とする。
【００６３】
ステップＳ１１０２では、テキスト列結合処理部３０８は、ステップＳ１１０１にて取得されたバッファのＩＤのペアの組み合わせから、ＩＤを１次元に並ぶようにソートする。例えば、４つのＩＤのペアを１次元にソートすると、符号１１Ｂに示すような順でソートされる。
【００６４】
ステップＳ１１０３では、テキスト列結合処理部３０８は、バッファのＩＤのペアが、連鎖のループにより１次元にソートできないケースがあるか否かを判断する。  
例えば符号１１Ｃに示すように、テキスト列がループして配置されるケースがある。この場合、バッファのＩＤのペアをソートしてもループになっていることにより、バッファＩＤの始点と終点が定まらないことが確認できる。
【００６５】
符号１１Ａにおいて、テキスト列１１５の、線分Ａを線分Ｃとし、線分Ｂを線分Ｄとする。また、テキスト列１１６の、線分Ａを線分Ｅとし、線分Ｂを線分Ｆとする。また、テキスト列１１７の、線分Ａを線分Ｇとし、線分Ｂを線分Ｈとする。また、テキスト列１１８の、線分Ａを線分Ｉとし、線分Ｂを線分Ｊとする。また、テキスト列１１９の、線分Ａを線分Ｋとし、線分Ｂを線分Ｌとする。また、テキスト列１２０の、線分Ａを線分Ｍとし、線分Ｂを線分Ｎとする。また、テキスト列１２１の、線分Ａを線分Ｏとし、線分Ｂを線分Ｐとする。さらに、テキスト列１２２の、線分Ａを線分Ｑとし、線分Ｂを線分Ｒとする。
【００６６】
また、テキスト列１１５のＩＤを「１」とし、テキスト列１１６のＩＤを「９」とし、テキスト列１１７のＩＤを「３」とし、テキスト列１１８のＩＤを「６」とし、テキスト列１１９のＩＤを「７」とする。さらに、テキスト列１２０のＩＤを「４」とし、テキスト列１２１のＩＤを「５」とし、テキスト列１２２のＩＤを「８」とする。
【００６７】
ステップＳ１１０３の判断において、Ｙｅｓの場合にはステップＳ１１０４に進み、Ｎｏの場合にはステップＳ１１０５に進む。  
ステップＳ１１０４では、テキスト列結合処理部３０８は、バッファのＩＤのペアをソートしてもループ状態となってしまっているケースについて、線分Ｂ側に最も小さい数のバッファのＩＤを持つバッファをテキスト列連鎖の開始位置とし、１次元にソートする。例えば、符号１１Ｃに示すようなテキスト列の並びの場合、線分Ｂ側に最も小さい数のバッファのＩＤを持つバッファは、テキスト列１１５（「１」）であるので、テキスト列連鎖の開始は、テキスト列１１５となる。従って、バッファＩＤの並びは符号１１Ｄに示すように「１」「９」「３」「６」「７」「４」「５」「８」の結果となる。
【００６８】
なお、テキスト列連鎖の開始位置となるテキスト列は、線分Ｂ側に最も大きい数のバッファＩＤを持つものとしても良い。また、線分Ｂ側に最も小さい数（または最も大きい数）から所定番目に大きい（小さい）数のバッファＩＤを持つものとしても良い。
【００６９】
さらに、ステップＳ１１０５では、テキスト列結合処理部３０８は、バッファのＩＤのペアが分岐により１次元にソートできないケースがあるか判断する。  
例えば符号１１Ｅに示すように、テキスト列の連鎖において、分岐が発生するように配置されるケースがあり、この場合、バッファのＩＤのペアをソートしても分岐ができてしまう。ステップＳ１１０５の判断において、Ｙｅｓの場合にはステップＳ１１０６に進み、Ｎｏの場合にはステップＳ１１０７に進む。なお、ステップＳ１１０５の判定において、Ｙｅｓとなるケースは少なく、例外的な対応の処理としてステップＳ１１０６を用意している。
【００７０】
符号１１Ｅにおいて、テキスト列１２３の、線分Ａを線分ｑとし、線分Ｂを線分ｒとする。また、テキスト列１２４の、線分Ａを線分ｓとし、線分Ｂを線分ｔとする。さらに、テキスト列１２５の、線分Ａを線分ｕとし、線分Ｂを線分ｖとする。また、テキスト列１２３のＩＤを「１０」とし、テキスト列１２４のＩＤを「１５」とし、テキスト列１２５のＩＤを「１６」とする。
【００７１】
ステップＳ１１０６では、テキスト列結合処理部３０８は、バッファのＩＤのペアをソートしても分岐ができてしまっているケースについて、１次元のソートする処理を行う。  例えば、符号１１Ｅに示すようなテキスト列の並びの場合、バッファＩＤの並びは「７」「２」の後に「９」「３」「１０」と「１５」「１６」「１０」の系ができる。符号１１Ｆに示すように、分岐の場合は、「７」「２」の後の、「９」「３」「１０」と「１５」「１６」「１０」に対しバッファＩＤの数字が小さい方の「９」を優先して、「７」「２」「９」「３」「１０」「１５」「１６」「１０」の順で一旦並べる。
【００７２】
上記一旦並べられた配列において、「１０」は重複しているので、１つになるように削除する。重複ＩＤの削除の条件として、分岐の時点で「９」「３」「１０」と「１５」「１６」「１０」の系に対し、「９」「３」「１０」の系を優先したので「９」「３」「１０」の並びが維持されるように「１０」を残す。よって、「１５」「１６」「１０」の系に属する「１０」を削除する条件にすると、「７」「２」「９」「３」「１０」「１５」「１６」「１０」の並びとなる。
【００７３】
ステップＳ１１０６のソート方法にはテキスト列の分岐ポイントの交わる角度によって、合理的に判断する方法もあるので、後述する他の実施形態で示す。
【００７４】
なお、本実施形態では、分岐ができる場合にバッファのＩＤの数字が小さい方を優先してソートしているが、これに限定されず、バッファのＩＤの数字が大きい方を優先してソートするようにしても良い。
【００７５】
ステップＳ１１０７では、テキスト列結合処理部３０８は、符号９Ｅに示したものと同様に、グループ化の処理として、新たにバッファを用意し、ソートの結果を結合したものをそのバッファに収める。バッファのＩＤにも、以前の処理で使用されていない新しいＩＤを付与する。すなわち、テキスト列結合処理部３０８は、連鎖したテキスト列を１つのグループとし、該グループ毎にグループを識別するためのＩＤ（識別子）を付与する。
【００７６】
ステップＳ１１０８では、テキスト列結合処理部３０８は、ステップＳ１１０７で新たにグループ化されて不要になったバッファの削除を行う。ステップＳ１１０８の後には線分Ａと線分Ｂが定義された連鎖条件でクロスしているバッファ同士をグループ化する処理を終了し、さらにテキスト列結合処理も終了する。
【００７７】
ステップＳ４０３では、ステップＳ４０２でグループ化したバッファ群の整列処理を行う。ステップＳ４０３で行う整列処理の詳細を図１２に示す。  
ステップＳ１２０１では、整列処理部３０９は、ステップＳ４０２にてグループ化できなかったテキスト列について、そのテキスト列単体で１グループとみなし、ページ内での整列処理をページ内のグループ間で行えるようにする。すなわち、本ステップにより、対象ページ内の全てのテキスト列が何らかのグループにグループ化されることになる。  
ステップＳ１２０２では、整列処理部３０９は、符号１２Ａに示すように、グループ内で持つ先頭テキスト列のオフセット座標をそのグループの基準座標とする。
【００７８】
ステップＳ１２０３では、整列処理部３０９は、グループの基準座標の縦方向（Ｙ座標方向）の座標の数字が大きいほどソート順位が優先されるルールでグループ群をソートする。つまり、ページ上において、上方に位置するテキスト列を持つグループが、ソート後の１次元の並びとして前方にくるようにソートする。
【００７９】
ステップＳ１２０４では、整列処理部３０９は、縦方向の座標が同じになるグループがあるか否かの判断を行う。ステップＳ１２０４の判断において、Ｙｅｓの場合にはステップＳ１２０５に進み、Ｎｏの場合には整列処理を終了する。
【００８０】
ステップＳ１２０５では、整列処理部３０９は、横方向（Ｘ座標方向）の座標が小さいほどソート順位が優先されるルールでグループ群をソートする。つまり、ページ上において、左方に位置するテキスト列を持つグループが、ソート後の１次元の並びとして前方にくるようにソートする。ステップＳ１２０５の処理の後には整列処理を終了する。
【００８１】
このように整列処理部３０９は、グループ化されたテキスト列のオフセット座標を基準座標として検出し、該オフセット座標の座標値によって各テキスト列を整列させる。このような整列により、整列処理部３０９は、テキスト列の抽出準位を決定することができる。
【００８２】
ステップＳ４０４では、ＣＰＵ３０１は、ステップＳ４０３の整列処理によってソートされた順にグループのテキストを抽出する。このように、文書レイアウトに則したテキスト抽出を行うことで、ページ全体の文章性を損なうことなくテキストを取得することができる。
【００８３】
このように、本実施形態では、電子文書処理装置は、テキスト列の前方を表すものとして機能する線分Ａ（第１の線分）と、テキスト列の後方を表すものとして機能する線分Ｂ（第２の線分）とをベースラインに基づいて各テキスト列に設けている。そして、各線分を座標上で展開するための情報を線分の関数情報として保持し、該関数情報に基づいて、各テキスト列の線分Ａ、Ｂを座標上にマッピングする。そして、該マッピングされた線分のうち、異なる種類の線分で重なった場合に、それら線分を有するテキスト列が連鎖していると判断し、グループ化している。よって、隣り合うテキスト列がある角度を持って配列されていても、それらテキスト列が連鎖していると判断することができる。すなわち、装飾されたテキスト列についても、高精度にテキスト列の連鎖の再現を行うことができる。
【００８４】
よって、例えば、検索エンジン等に本実施形態の電子文書処理装置を適用すると、概念検索などページ全体の文章性が必要とされるような高度な検索において、その精度を向上させることができる。
【００８５】
（第２の実施形態）  
上述した実施形態のステップＳ１１０６では、テキスト列の分岐ポイントにおいて、ＩＤの数字が小さい方のテキスト列を優先してソートされるルールとしていた。しかし、ステップＳ１１０６において、よりテキストレイアウトに則してテキスト列の連鎖の優先順位を付ける方法がある。
【００８６】
図１３は、本実施形態に係る、テキスト列が連鎖し、かつ、分岐が出来ている状態を示している。  
図１３において、テキスト列１３１の、線分Ａを線分ａとし、線分Ｂを線分ｂとする。また、テキスト列１３２の、線分Ａを線分ｃとし、線分Ｂを線分ｄとする。さらに、テキスト列１３３の、線分Ａを線分ｅとし、線分Ｂを線分ｆとする。また、テキスト列１１３１のＩＤを「５」とし、テキスト列１３２のＩＤを「８」とし、テキスト列１３３のＩＤを「７」とする。
【００８７】
図１３では、ＩＤが「５」のテキスト列１３１に対し、ＩＤが「８」のテキスト列１３２とＩＤが「５」のテキスト列１３３とが連鎖し、かつ、分岐状態となっている。テキスト列１３１の線分Ｂである線分ｂの関数に対し、テキスト列１３２の線分Ａである線分ｃの関数はθ1の角度を成している。また、テキスト列１３１の線分ｂの関数に対し、テキスト列１３３の線分Ａである線分ｅの関数はθ2の角度を成している。  
なお、互いに交わる２つの１次関数が成す角度θは、平面三角法により容易に算出できることは言うまでも無い。
【００８８】
ここで、θ1＜θ2の場合に、角度が小さい方のθ1を形成する、「５」のテキスト列１３１から「８」のテキスト列１３２をつなぐ方が連鎖として自然である。よって、テキスト列の連鎖時に分岐が出来る場合には、お互いの交わる角度が小さい方を優先してテキスト列をソートするのが良い。すなわち、テキスト列結合処理部３０８は、１つのテキスト列の後に複数のテキスト列の連鎖が認められる場合には、前方のテキスト列と後方のテキスト列との角度に応じて抽出順位を決定することができる。すなわち、テキスト列の連鎖が認められる中で、後段にある複数のテキスト列において、前段のテキスト列と後段のテキスト列との成す角度が小さい方のテキスト列を優先して、テキスト列を連鎖させるようにしても良い。
【００８９】
ただ、テキストレイアウトに則した厳密なソート処理はシステムにとって高負荷であり、パフォーマンスに影響を与えかねない。よって、この方法による処理を行うかどうかは選択できたほうが良い。本実施形態における電子文書処理装置には、テキストレイアウトに則した厳密な処理を行うか、またはパフォーマンスを優先して処理を行うかについて、操作者に選択させることができるユーザーインターフェースを提供する。なお図１４は、ユーザに処理レベルを選択させるためのユーザーインターフェースの好適な例を示している。
【００９０】
（その他の実施形態）  
本発明は、複数の機器（例えばコンピュータ、インターフェース機器、リーダ、プリンタなど）から構成されるシステムに適用することも、１つの機器からなる装置（複合機、プリンタ、ファクシミリ装置など）に適用することも可能である。
【００９１】
前述した実施形態の機能を実現するように前述した実施形態の構成を動作させるプログラムを記憶媒体に記憶させ、該記憶媒体に記憶されたプログラムをコードとして読み出し、コンピュータにおいて実行する処理方法も上述の実施形態の範疇に含まれる。即ちコンピュータ読み取り可能な記憶媒体も実施例の範囲に含まれる。また、前述のコンピュータプログラムが記憶された記憶媒体はもちろんそのコンピュータプログラム自体も上述の実施形態に含まれる。
【００９２】
かかる記憶媒体としてはたとえばフロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ―ＲＯＭ、磁気テープ、不揮発性メモリカード、ＲＯＭを用いることができる。
【００９３】
また前述の記憶媒体に記憶されたプログラム単体で処理を実行しているものに限らず、他のソフトウエア、拡張ボードの機能と共同して、ＯＳ上で動作し前述の実施形態の動作を実行するものも前述した実施形態の範疇に含まれる。
【図面の簡単な説明】
【００９４】
【図１】従来の、ＰＤＦファイルのプレビュー例と、そのＰＤＦファイル内のテキスト描画コマンドの配列の例を示す図である。
【図２】図１で示したＰＤＦファイルを例に、テキスト描画コマンドのオフセット座標の順にソートしてもうまくテキストが取得できない例を示す図である。
【図３】本発明の一実施形態の、電子文書処理装置を実現するハードウェア構成例を示すブロック図である。
【図４】本発明の一実施形態の、文書処理の手順例を示すフローチャートである。
【図５】本発明の一実施形態の、レイアウト解析処理を示すフローチャートと、その補足図である。
【図６】本発明の一実施形態の、書体の構成要素となるベースラインの例を示す図である。
【図７】本発明の一実施形態の、条件入力のためのユーザーインターフェースの例を示す図である。
【図８】本発明の一実施形態の、テキスト列結合処理を表すフローチャートと、その補足図である。
【図９】本発明の一実施形態の、テキスト列のグループ化処理を示すフローチャートである。
【図１０】本発明の一実施形態の、条件入力のためのユーザーインターフェースの例を示す図である。
【図１１】本発明の一実施形態の、テキスト列のグループ化処理を示すフローチャートである。
【図１２】本発明の一実施形態の、グループ化されたテキスト列の整列処理を示すフローチャートである。
【図１３】本発明の一実施形態の、テキスト列が連鎖し、かつ、分岐が出来ている状態の例を示す図である。
【図１４】本発明の一実施形態の、条件入力のためのユーザーインターフェースの例を示す図である。
【符号の説明】
【００９５】
３０１    ＣＰＵ
３０２    キーボード
３０３    ディスプレイ
３０４    ハードディスク
３０５    ＲＯＭ
３０６    ＲＡＭ
３０７    レイアウト解析処理部
３０８    テキスト列結合処理部
３０９    整列処理部
【図１】
2010055512.tif 000003
【図２】
2010055512.tif 000004
【図３】
2010055512.tif 000005
【図４】
2010055512.tif 000006
【図５】
2010055512.tif 000007
【図６】
2010055512.tif 000008
【図７】
2010055512.tif 000009
【図８】
2010055512.tif 000010
【図９】
2010055512.tif 000011
【図１０】
2010055512.tif 000012
【図１１】
2010055512.tif 000013
【図１２】
2010055512.tif 000014
【図１３】
2010055512.tif 000015
【図１４】
2010055512.tif 000016