(57)【特許請求の範囲】
【請求項１】
少なくとも１つの処理ユニットによって実行される場合に、複数の基本要素を有する文書を解析するプログラムを記憶するマシーン可読媒体であって、
前記プログラムは、
前記文書のカラム内の複数のテキストラインそれぞれについて、前記テキストライン内のワード内のグリフ間のギャップより大きい前記テキストラインの連続するグリフ間のギャップ群と、前記テキストライン内のワード間のギャップ群とを識別するための命令群のセットと、
前記カラム内の連続するテキストライン群で位置揃えされているギャップ群のセットを識別するための命令群のセットと、
リスト項目として前記位置揃えされているギャップ群を含むテキストライン群を識別するために、前記位置揃えされているギャップ群のセットのどれが、リスト項目ラベルとリスト項目との間の間隔を示しているかを判定する命令群のセットと、
前記リスト項目群のアライメント、間隔、及びコンテンツに基づいて、該リスト項目群に対する階層レベル群を識別するための命令群のセットと、
同一の階層レベルを有する前記リスト項目群が同一のリスト内にある前記カラムに対する階層構造のリスト群のセットを定義するための命令群のセットと
を有することを特徴とするマシーン可読媒体。
【請求項２】
前記プログラムは、更に、前記カラム内の第１のリストと該カラムとは異なるカラム内の第２のリストとが１つのリストの一部であることを判定するための命令群のセットを有する
ことを特徴とする請求項１に記載のマシーン可読媒体。
【請求項３】
前記リスト項目のアライメントは、前記文書の前記カラム内の該リスト項目群のインデントのレベル群に基づいて識別される
ことを特徴とする請求項１に記載のマシーン可読媒体。
【請求項４】
前記位置揃えされているギャップ群のセットのどれが、リスト項目ラベルとリスト項目との間の間隔を示しているかを判定するための命令群のセットは、自身の左に１つのワードを有し、かつ自身の右で左に位置揃えされているテキストを有するギャップ群を識別するための命令群のセットを有する
ことを特徴とする請求項１に記載のマシーン可読媒体。
【請求項５】
前記リスト項目群のアライメント、間隔、及びコンテンツに基づいて、該リスト項目群に対する階層レベル群を識別するための命令群のセットは、
リスト項目ラベルとリスト項目との間の間隔を示すギャップを有するテキストラインそれぞれに対して、前記リスト項目ラベルの左にあるギャップ群の数を判定するための命令群のセットと、
前記テキストラインに対する前記リスト項目ラベルの左にあるギャップ群の数に基づいて、前記テキストラインのそれぞれを階層レベルに割り当てる命令群のセットと
を有することを特徴とする請求項１に記載のマシーン可読媒体。
【請求項６】
同一の階層レベルを有する前記リスト項目が同一のリスト内にある前記カラムに対する階層構造のリスト群のセットを定義するための命令群のセットは、追加のリスト項目群を追加することができるリスト群についての情報を記憶する、未処理リスト群のスタック群を作成するための命令群のセットを有する
ことを特徴とする請求項１に記載のマシーン可読媒体。
【請求項７】
同一の階層レベルを有する前記リスト項目が同一のリスト内にある前記カラムに対する階層構造のリスト群のセットを定義するための命令群のセットは、
前記カラムからテキストラインを選択するための命令群のセットと
前記選択されるテキストラインを前記リスト群のセットのリストに割り当てるための命令群のセットと
を繰り返し実行する
ことを特徴とする請求項６に記載のマシーン可読媒体。
【請求項８】
前記選択されるテキストラインを前記リスト群のセットのリストに割り当てるための命令群のセットは、
前記テキストラインのリスト項目ラベルに基づいて、前記テキストラインに対するリストタイプを識別するための命令群のセットと、
前記識別されるリストタイプのリストが、前記未処理リスト群のスタック内で未処理であるかどうかを判定するための命令群のセットと、
前記識別されるリストタイプのリストが未処理である場合、前記テキストラインを前記未処理リストのリスト項目として割り当てるための命令群のセットと、
前記識別されるリストタイプのリストがない場合、前記テキストラインを有する新規のリストをリスト項目として前記未処理リストのスタックに追加するための命令群のセットと
を有することを特徴とする請求項７に記載のマシーン可読媒体。
【請求項９】
前記リストタイプは、他のリスト群との相対的なインデントのレベルと、前記リスト項目ラベルに対して使用されるアルファベットを示している
ことを特徴とする請求項８に記載のマシーン可読媒体。
【請求項１０】
前記識別されるリストタイプのリストが、前記未処理リスト群のスタック内で未処理であるかどうかを判定するための命令群のセットは、
前記スタック内の任意の未処理リスト群が、同一レベルのインデントと同一のアルファベットを有するかどうかを判定するための命令群のセットと、
前記リスト項目ラベルが、前記アルファベットに従って、前記未処理リストの次のリスト項目として照合するかどうかを判定するための命令群のセットと
を有することを特徴とする請求項９に記載のマシーン可読媒体。
【請求項１１】
前記識別されるリストタイプのリストがない場合、前記テキストラインを有する新規のリストをリスト項目として前記未処理リストのスタックに追加するための命令群のセットは、前記階層構造のリスト群のセットの前記新規のリストよりも上位のレベルの任意のリストを、前記未処理リスト群のスタックから削除するための命令群のセットを有する
ことを特徴とする請求項８に記載のマシーン可読媒体。
【請求項１２】
前記識別されるリストタイプのリストが未処理である場合、前記テキストラインを前記未処理リストのリスト項目として割り当てるための命令群のセットは、前記階層構造のリスト群のセットの前記未処理リストよりも上位のレベルの任意のリストを、前記未処理リスト群のスタックから削除するための命令群のセット
ことを特徴とする請求項８に記載のマシーン可読媒体。
【請求項１３】
複数の基本要素を有する文書を解析するための方法であって、
前記文書のカラム内の複数のテキストラインそれぞれについて、前記テキストライン内のワード内のグリフ間のギャップより大きい前記テキストラインの連続するグリフ間のギャップ群と、前記テキストライン内のワード間のギャップ群とを識別するステップと、
前記カラム内の連続するテキストライン群で位置揃えされているギャップ群のセットを識別するステップと、
リスト項目として前記位置揃えされているギャップ群を含むテキストライン群を識別するために、前記位置揃えされているギャップ群のセットのどれが、リスト項目ラベルとリスト項目との間の間隔を示しているかを判定するステップと、
前記リスト項目群のアライメント、間隔、及びコンテンツに基づいて、該リスト項目群に対する階層レベル群を識別するステップと、
同一の階層レベルを有する前記リスト項目群が同一のリスト内にある前記カラムに対する階層構造のリスト群のセットを定義するステップと
を有することを特徴とする方法。
【請求項１４】
更に、前記カラム内の第１のリストと該カラムとは異なるカラム内の第２のリストとが１つのリストの一部であることを判定するステップを有する
ことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記リスト項目のアライメントは、前記文書の前記カラム内の該リスト項目群のインデントのレベル群に基づいて識別される
ことを特徴とする請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
仮出願の優先権の主張
本願は、２０１１年１月１８日に出願された、発明の名称が「文書及びアダプティブグラフィックオブジェクトに対する複数の表現を記憶する、ページ内容を順序付けるリスト群の再構築」である、米国仮出願番号第６１／４３３９５１号、２０１１年１月１８日に出願された、発明の名称が「文書内のリストの再構築」である、米国仮特許出願番号第６１／４３３９５９号の優先権を主張するものである。これらは、参照することによって組み込まれる。
【背景技術】
【０００２】
電子文書の著者は、通常は、リスト編集ツールを使用することなく、そうでなければ、文書内の意味構造とするリストを特定することなく、リストと、それ以外の連続するあるいはグループ化されているコンテンツ（内容）構造（例えば、番号付けされたチャプタ、セクション、脚注、書誌項目等）を作成する。加えて、著者が文書内のこの構造を記号化（符号化）しているとしても、仮想プリンタドライバを通じてＰＤＦ印刷する場合にはその構造が失われてしまう可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
リスト情報が文書内の構造で明示的に示されない場合、これは、様々なアプリケーションが、そのようなリストを活かす機能を使用することを妨げてしまう。アプリケーションは、ユーザに対する追加のリストエントリ群を提案することができず、容易に文書を案内することができない、あるいは正確にリストの部分をコピーすることができない。
【課題を解決するための手段】
【０００４】
本発明のいくつかの実施形態は、リストが明示的に記号化されていない文書に対するリスト群のセットを再構築するための新規の方法を提供する。いくつかの実施形態では、この文書は、１つ以上のカラムを含み、リスト群のセットは、各カラムに対して別々に再構築される。カラム内のリストを再構築するために、いくつかの実施形態は、幾何学的な解析（例えば、テキストラインの水平方向のインデント）と語彙的な解析（例えば、リストラベル群内の文字群に基づいて、リスト群のタイプを識別すること）の組み合わせを使用する。
【０００５】
各カラムに対しては、いくつかの実施形態の方法は、まず、幾何学的な解析と語彙的な解析の組み合わせを実行して、カラム内のリスト間隔を識別する。この方法は、適切な統計的特性を有する位置揃えされたインデントギャップ群の集合に基づいて、リストラベル群とリストコンテンツ間の潜在的なスペーサ群を判定する。これらのリストスペーサ群は、リスト項目を示す特定の基準を検索するための語彙的な解析を使用することによって確認することができる。いくつかの実施形態では、次に、この方法は、異なる識別されるリストスペーサ群に基づいて、カラム内の各リスト項目に対するレベルを判定する。
【０００６】
この情報を使用することで、この方法は、カラム内のリスト群を再構築する。この方法は、リストレベル群とスペーサ群とを使用して、１つのリストの一部となる可能性のあるリスト項目を識別し、そして、リストテンプレートに基づいてリスト群をカテゴリに分けて、そして、リスト項目群が１つのリスト内で整合するかどうかを判定することによって、そのリスト項目群の照合を確認する。カラム内のリスト群が一旦再構築されると、いくつかの実施形態は、連続するカラムとの間で照合しているリスト群を識別して、文書全体に渡ってリスト群を再構築する。カラムは、同一のページ上でにあっても、複数のページ上にあっても良い。
【０００７】
前述の要約は、本発明のいくつかの実施形態の概要の導入として提供することを意図している。これは、本明細書で開示されるすべての発明特徴事項の導入あるいは概要であることを意味するものではない。後続の詳細説明と、その詳細説明が参照する図面は、要約と他の実施形態で説明される実施形態を更に説明するものである。従って、本明細書によって説明されるすべての実施形態を理解するためには、この要約と、詳細説明と図面との完全な精読が必要とされる。また、請求項で定義される特徴事項は、要約で示される詳細、詳細説明及び図面によって制限されるべきでないのものであり、むしろ、請求項によって定義されるべきもである。これは、請求項で定義される特徴事項は、その特徴事項の範囲から逸脱することなく、他の特定の形態で実施することができるからである。
【０００８】
本発明の新規な特養は、添付の請求項で説明される。しかしながら、説明のために、本発明のいくつかの実施形態は、以下の図面で説明される。
【図面の簡単な説明】
【０００９】
【図１】様々なリストを含むカラムの例を示す図である。
【図２】テキストの１つ以上のカラム群に渡るリストを再構築するためのいくつかの実施形態のプロセスを概念的に示す図である。
【図３】人間の目からはリストが属していることが明らかであることがわかる２３個の順序付けされたテキストラインからなる１つのカラムを示す図である。
【図４】カラムの最初の８つのライン群にも生じる、カラムに対して識別されるリスト項目の最初の候補群を示す図である。
【図５】図４のカラムに対するいくつかの実施形態のリストレベル計算を示す図である。
【図６】図４の最初の２つのラインに対して取り得るラベルテンプレートを示す図である。
【図７】テキストライン群のカラム内のリストスペーサ群を識別するためのいくつかの実施形態のプロセスを概念的に示す図である。
【図８Ａ】１つのカラム内のリスト群を再構築するためのいくつかの実施形態のプロセスを概念的に示す図である。
【図８Ｂ】１つのカラム内のリスト群を再構築するためのいくつかの実施形態のプロセスを概念的に示す図である。
【図９】１１段階に渡る未処理リスト群のスタックを概念的に示す図である。
【図１０】複数のラインのリスト項目の例を示す図である。
【図１１】リスト項目との間の段落がリスト項目群としてグループ化され、そして、リスト群のクラスタとはならない場合のカラムを示す図である。
【図１２】入れ子になっているリストヘッダ群の間の段落コンテンツを有するリスト群の一部の例を示す図である。
【図１３】入れ子になっているリスト群の例を示す図である。
【図１４】複数のカラムに渡るリスト群を再構築するためのいくつかの実施形態のプロセスを概念的に示す図である。
【図１５】文書の２つの連続するカラムを示す図である。
【図１６】カラム群のリスト群が組み合わされる場合に、第１のリストがレベルを変更しながら、第２のリストは同一のレベルのままにしているが、単調性の要件が維持されている場合の文書の２つの連続するカラムの例を示す図である。
【図１７】いくつかの実施形態のリスト再構築モジュールのソフトウェアアーキテクチャを概念的に示す図である。
【図１８】本発明のいくつかの実施形態が実現される電子システムを概念的に示す図である。
【発明を実施するための形態】
【００１０】
以下の記載は、いくつかの詳細を説明目的のために説明する。しかしながら、当業者は、本発明が、これらの特定の詳細を使用することなく実施することができることを理解するであろう。他の例では、周知の構造及びデバイス群がブロック図の形式で示されることで、不必要な詳細で本発明の記載を曖昧にしないようにしている。
【００１１】
本発明のいくつかの実施形態は、文書に対するリスト群のセット（集合）を再構築するための新規な方法を提供する。この方法では、リスト群は明示的には記号化されない。いくつかの実施形態では、文書は、１つ以上のカラム（欄：column）を含んでいて、リスト群のセットは、各カラムに対して別々に再構築される。カラム内のリストを再構築するために、いくつの実施形態は、幾何学的な解析（例えば、テキストライン（テキスト行）の水平方向のインデント）と語彙的な解析（例えば、リストラベル（リスト標識）群内の文字群に基づくリスト群のタイプの識別）の組み合わせを使用する。
【００１２】
各カラムに対しては、いくつかの実施形態の方法は、最初に、幾何学的な解析と語彙的な解析の組み合わせを実行して、カラム内のリスト間隔（list spacing：リストスペーシング）を識別する。この方法は、適切な統計的特性を有する位置合わせされているインデントギャップ（indendation gap）群の集合に基づいて、リストラベル群とリスト内容（list content：リストコンテンツ）との間の潜在的なスペーサ（spacer）群を判定する。これらのリストのスペーサ群は、リスト項目の特定の基準指標をサーチするための語彙的な解析を使用することによって確認することができる。いくつかの実施形態では、この方法は、異なる識別されているリストのスペーサ群に基づいて、カラム内の各リスト項目に対するレベルを判定する。
【００１３】
この情報を使用して、この方法は、カラム内のリスト群を再構築する。この方法は、リストのレベルとスペーサを使用して、単一のリストの部分の可能性のあるリスト項目群を識別し、かつ、リストテンプレートに基づいてリスト群をカテゴリに分け、そして、リスト項目群が単一のリスト内で整合するかどうかを判定することによって、これらの照合を確認する。カラム内のリスト群が一旦再構築されると、いくつかの実施形態は、連続するカラム間で照合するリストを識別して、文書全体に渡ってリスト群を再構築する。カラム群は、同一のページ上にあっても良いし、複数のページに渡ってあっても良い。
【００１４】
図１は、様々なリスト群を含むカラム１００の例を示している。人間の目から見て明らかなように、カラムは、「Ｉ」、「ＩＩ」、「ＩＩＩ」のラベルが付けられているメインリストに加えて、このリストの内部に入れ子になっている様々なリスト群を含んでいる。しかしながら、リスト構造がカラム１００を含む文書内で記号化されていない場合には、この文書を使用するアプリケーション群は、このリスト構造を使用することができないことになる。いくつかの実施形態の方法は、幾何学的な解析（例えば、カラム１００内のリスト項目群のインデントの異なるレベルを識別する）と語彙的な解析（「Ｉ」、「ＩＩ」、「ＩＩＩ」のシーケンスを識別する等）の組み合わせを使用して、これらのリストを再構築し、かつ文書のモデルで、このリスト群を記号化する。
【００１５】
本発明のいくつかの実施形態の詳細を以下で説明する。セクションＩは、文書内のリスト群を再構築するためのプロセスの全体フローを説明する。次に、セクションＩＩは、カラム内のリスト群を識別し、かつ再構築するための詳細プロセスを説明する。セクションＩＩＩは、カラム群のセットに渡ってリスト群を照合するための詳細プロセスを説明する。セクションＩＶは、リスト群を再構築するためのいくつかの実施形態のモジュールのソフトウェアアーキテクチャを説明する。そして、セクションＶは、本発明のいくつかの実施形態が実現される電子システムを説明する。
【００１６】
Ｉ．リスト再構築の全体フロー
上述のように、いくつかの実施形態は、電子文書内のリスト群を識別して再構築する。ここで、これらのリスト群は、語彙的な構造として明示的には記号化されない。このようなリスト群は、番号付けされたチャプタ、セクション、脚注、書誌項目、写真、週の日付、命令行、目次の内容、箇条書きの概要等であっても良い。これらのリストは、明示的には記号化されていない場合がある。それは、これらのリストは、リスト作成ツール（例えば、シンプルテキストエディタ）を持たないワードプロセッシングアプリケーションによって、あるいはリスト内の各エントリに対する個々のテキストボックスあるいはレイアウト領域を使用するグラフィック指向プログラムによって、作成されているからである。いくつかの場合、文書は、明示的なリストを伴って作成されている可能性があるが、語義的な構造はフォーマット変換において失われている可能性がある（例えば、文書が、仮想プリンタドライバを通じてＰＤＦファイルに保存される場合）。
【００１７】
文書内のこのような暗黙的なリスト群を検出して、その暗黙的なリスト群を明示的に記号化されたリスト群へと変換することは、その文書を使用するアプリケーションに、そのような記号化された構造の利点を提供することを可能にする。例えば、エディタソフトウェアは、適切なフォーマットで、自動的に生成される次のリスト項目とラベルを提示することができる。ハイパーリンク、リンクされている目次、及び他のそのような電子的に記号化されている、連続的な項目に対するリファレンスを自動的に生成することができ、また、ユーザが文書を編集することで、それらが参照するオブジェクトを移動することができる。文書ビューアアプリケーションは、ユーザに、チャプタ番号あるいは他のそのようなリスト項目を使用して文書を検索して案内することを可能にすることができる。アプリケーション間通信に対して、リストを再構築することは、ユーザに、文書ビューアから暗黙的なリストをコピーして、そのリストを明示的なリストとして文書エディタにペーストすることを可能にすることで、更なる編集を容易にすることができる。加えて、リスト再構築は、ベクトルデータからなるグラフィック文書（例えば、ＰＤＦファイル）を文書編集アプリケーションに完全にインポートするために必要とされる一般的な語義的な再構築の一部として使用することができる。この一般的な語義的な再構築は、米国特許出願第１２／４５５８６６号として出願され、米国特許出願公開第２０１０／０１７４９８５号明細書に詳細に説明されていて、これは、参照することで本明細書に組み込まれる。
【００１８】
いくつかの実施形態では、リスト再構築プロセスは、幾何学的な方法と語彙的な方法の組み合わせを使用して、暗黙的なリスト群を識別して、それらを明示的なリスト群へと変換する。つまり、このプロセスは、コンテンツ（例えば、インデント）の配置と外観（アピアランス）の両方を考慮することに加えて、リスト内のラベル群を形成するために使用される特定の文字（例えば、ローマ数字）を考慮する。
【００１９】
図２は、１つ以上のテキストのカラムに渡るリストを再構築するためのいくつかの実施形態のプロセス２００を概念的に示している。このプロセス２００は、図３−図６を参照することによって説明され、これらは、リスト再構築プロセスの様々な態様を示している。図示されるように、このプロセス２００は、順序付けされたテキストライン群からなる１つ以上のカラムを受信する（２０５）ことによって開始する。記載のように、いくつかの実施形態は、最初に、テキストの各カラムを別々に評価し、次に、連続するカラム間でリスト群を比較する。複数ページの文書に対しては、いくつかの実施形態は、それらのページが１つのカラムからなるページ群である場合でさえも、リスト再構築プロセスに対するセパレートカラム（別欄）として各ページを取り扱う。
【００２０】
いくつかの実施形態では、リスト群が存在しない場合でさえ、テキストライン群とカラム群の順序付けは、文書内で明示的に記号化される。他の実施形態では、その上、テキストライン群とカラム群は意味的に再構築される。このような再構築に対する方法は、米国特許出願公開第２０１０／０１７４９８５号明細書に詳細に記載されており、これは、参照することによって本明細書に組み込まれる。
【００２１】
図３は、人間の目には、明らかにリストに属しているように見える、２３個の順序付けされたテキストラインからなる１つのカラム３００を示している。しかしながら、任意の明示的な記号付けすることなく、電子的なアプリケーションはリスト構造には関知することはないであろう。図示のように、リスト構造は３つのレベルのリスト群を含んでいる。いくつかの実施形態では、改行（ラインブレーク）が文書内のリスト構造内で記号化される一方で、他の実施形態は、文書再構築プロセスを使用して、ワード（単語）とライン（行）を識別して、また、ライン群がすべて１つのカラムであることを識別する。
【００２２】
次に、プロセス２００は、カラム群のそれぞれのリストスペーサを識別する（２１０）。上述のように、いくつかの実施形態は、各カラム内のリスト群を別々に再構築する。当業者は、図２に示されるプロセス２００ではなく、いくつかの実施形態では、カラム群のそれぞれに対する処理２１０−２２０を経由するループを介在する場合があることを認識するであろう。
【００２３】
いくつかの実施形態では、リストスペーサは、テキストライン内で識別されるギャップとなる。ここで、テキストラインは、ギャップがリストラベル（例えば、カラム３００内の最初のライン内の「Ｉ」）とリストコンテンツ（例えば、その同一ライン内の「メインヘッダ１」）との間のセパレータとされる可能性のある候補であることを示す特定の基準を満足するものである。リストスペーサは特定のタイプのスペーサであり、ここで、いくつかの実施形態では、ページコンテンツが含まれない、できるかぎり伸びている縦方向のストリップ（vertical strip）として定義する。
【００２４】
カラム内のリストスペーサを識別するために、いくつかの実施形態は、カラムのテキストライン群内のスプリットギャップ群を識別して、そして、これらのスプリットギャップ群の縦方向縦方向の組立（assembly：アセンブリ）を検出する。まとめると、ベースライン（基準線）のｙ軸によってソートされるテキストライン群を用いて、このプロセスは、ページの下部で開始する。ページの下部から、このプロセスは、連続するテキストライン群から、ｘ−インターバル（間隔）で重複する潜在的なスプリットギャップ群を組み立てる。これは、縦方向に伸びる矩形状のストリップを生成する。この縦方向に伸びる矩形状のストリップは、潜在的なスプリットギャップ群の組み立てられている集合それぞれのギャップを完全に通過するものである。つまり、縦方向のストリップの幅は、その集合でｘ−間隔で組み立てられているすべての交差点に広がっている。テキストラインと重複する潜在的なスプリットギャップを持たないテキストラインにストリップが達するまで、ストリップはできる限り縦方向に延伸される。スプリットギャップ群の縦方向の組立がリスト項目群を示す特定の基準に合致する場合、ギャップ群の組立はリストスペーサとして識別される。図７の以下の説明では、リストスペーサを識別するためのプロセスを詳細に説明する。
【００２５】
図４は、カラム４００に対して識別されるリスト項目が開始する候補群を示していて、これは、カラム３００の最初の８個のラインについてもあてはまる。この場合、テキストライン群のすべてが実際にリスト項目であるので、すべてのラインは、図示のようにリストスペーサに関係している。８個のラインのそれぞれは、ラインの第１番目の単語と第２番目の単語との間に潜在的なスプリットギャップを有していて（第１番目の単語とは、例えば、「Ｉ」、「Ａ」、「Ｂ」、「i」等である）、第２番目の単語は左側に位置合わせされている。これらのスプリットギャップは、図示される３つのリストスペーサに組み立てられる。
【００２６】
図２に戻り、プロセス２００は、リストスペーサ付きの各ラインに対するリストレベルを識別する（２１５）。ラインのリストレベルは、カラム内のラインの相対的なインデントを判定するために使用される。図５は図４におけるカラム４００に対するいくつかの実施形態によるリストレベル計算を示している。図示されるように、いくつかの実施形態は、ベースラインの左エッジからカラムの左エッジへと、リストスペーサ付きの任意のラインのベースラインを伸ばしている。このプロセスは、伸ばされたベースラインが交差する同一のカラム内のテキストライン群に属するリストスペーサ群の数を計数する。図示されるように、この数はカラムの最初のラインに対してはゼロとなる（即ち、伸ばされたベースラインはどのリストスペーサとも交差しない）。第３番目のライン（また、第２番目と第７番目のラインについても）に対しては、この数は１となり、一方で、第５番目のライン（第４番目と第６番目のライン）は、２つのリストスペーサと交差する。これらの数は、テキストラインのリストレベルとして自身の各テキストラインに関連づけられる。いくつかの実施形態は、ゼロではなく１から番号付けを開始する。
【００２７】
次に、このプロセスは、各カラムに対するリスト群を再構築する（２２０）。このリストの再構築プロセスは、図８及び図９を参照して後述するセクションＩＩで詳細に説明する。一般的に、このプロセスは、未処理のリスト群のスタックを作成し、そして、様々なルールを使用して、スタック内に新規のリストを作成し、項目群をリストに追加し、そして、リスト群を打ち切って（クローズアウト（close out）して）、それらをスタックから除去する。このリスト再構築プロセスは、いくつかの実施形態では、ラベルテンプレート識別機能、ラベルレクサー（lexer）機能、及びラベル生成機能を使用する。
【００２８】
ラベルテンプレート識別機能は、いくつかの実施形態では、特定のリストに対して使用され、かつサポートされるアルファベットのセットから選択する、アルファベットあるいはテンプレートを識別する。このようなアルファベットの例には、１０進表記の｛０、１、２、．．．、９｝、小文字のローマ字｛ｉ、ｖ、ｘ、ｌ、ｃ、ｄ、ｍ｝、大文字のローマ字｛Ｉ、Ｖ、Ｘ、Ｌ、Ｃ、Ｄ、Ｍ｝、小文字のラテン文字｛ａ、ｂ、ｃ、．．．、ｚ｝、大文字のラテン文字｛Ａ、Ｂ、Ｃ、．．．、Ｚ｝、小文字のギリシャ文字｛α、β、γ、．．．、ω｝、大文字のギリシャ文字｛Α、Β、Γ、．．．、Ω｝、ディスクビュレット（Disc Bullet）｛●｝、サークルビュレット（Circle Bullet）｛○｝、ダッシュビュレット（Dash Bullet）｛−｝、アスタリスクビュレット（Asterisk Bullet）｛＊｝等がある。
【００２９】
特定のリストエントリに対するラベルテンプレートは、プレフィックスストリング、サフィックスストリング及びビュレットあるいは序数の形式（これらに対しては、アルファベットが使用される）からなる。特定のラベルに対するラベルテンプレートは、ラベル（特定のリスト項目に対するリストスペーサの左側の最初の文字として識別される）の最後の文字から開始して、サポートされるアルファベットの１つと照合する文字に到達するまで逆行することによって識別される。そのような文字が一旦検出されると、その文字がリストタイプとアルファベットを定義する。文字が複数のアルファベット（例えば、「ｉ」、「Ｄ」）内にある場合、複数のテンプレートが選択され、かつリスト再構築の後段の処理で、選択されたものの中から決定される。
【００３０】
このプロセスは、アルファベットに照合するものの内の１つである限り、先行する文字群のチェックを継続する。この文字群の範囲は、いくつかの実施形態では、ラベルに対する序数あるいはビュレットの範囲を定義する。序数の範囲の前にあるラベル内のすべての文字群はプレフィックスを定義し、序数の範囲の後にあるラベル内のすべての文群はサフィックスを定義する。つまり、図６に示されるように、カラム４００の最初のラインに対するラベルテンプレートは、空白のプレフィックス、大文字のローマ字あるいは大文字のラテン文字、「．」のサフィックスである。この場合、大文字のローマ字のテンプレートが大文字のラテン文字よりも優先される。これは、文字「Ｉ」は、特に、カラムの先頭において、大文字のローマ字のアルファベットに属することがよりふさわしいからである。しかしながら、このレベルでの次のリスト項目が「Ｊ」であった場合、大文字のラテン文字がこの時点で選択されることとなる。
【００３１】
いくつかの実施形態は、プレフィックス及びサフィックスの少なくとも一方のプロパティも制限する。このようなプロパティは、ストリング長、文字セット、あるいは正規表現を含んでいても良い。例えば、サフィックスを、１文字長に制限することができ、あるいは、いくつかの特定の値（例えば、「．」、「）」、「：」等）に制限することができる。プレフィックスとサフィックスは、いくつかの実施形態では、特定のタイプ（例えば、ビュレットが付けられているリスト）に対しては完全に認めないようにすることもできる。
【００３２】
プレフィックス定義とサフィックス定義と、序数のタイプに加えて、いくつかの実施形態は、ラベルテンプレートにおけるフォント情報とスタイル情報とを含んでいる。例えば、最初のエントリがカラム３００内の最初のラインであるリストに対するテンプレートは、通常（即ち、非ボールド、非イタリック、下線なし）のＴｉｍｅｓＮｅｗＲｏｍａｎフォントで、空白のプレフィックス、大文字のローマ字の序数、「．」のサフィックスを示すことができる。
【００３３】
特定のリストタイプのラベルレクサー機能は、入力として、ラベルのビュレット部分あるいは序数部分を使用して、リストラベルの項目番号を生成する。例えば、図６に示されるライン群の両方は１の項目番号を有し、一方、図５に示される第３番目のラインは２の項目番号を有している。いくつかの実施形態では、ビュレットがすべて付されているリストタイプあるいはそれ以外の順不同のリストタイプは、常に、１の項目番号を生成する。共通の順序付けられたリストタイプ（例えば、小文字のローマ字、大文字のローマ字等）に対しては、いくつかの実施形態は、周知の技術を使用して、決定性有限オートマン（ＤＦＡ）としてラベルレクサー（語彙解析部）を実装する。最も単純な場合（例えば、１０進表記、小文字のラテン文字、大文字のラテン文字）に対しては、いくつかの実施形態は、文字コード群についての演算を使用するラベルレクサーを実装する。
【００３４】
ラベル生成機能は、本質的には、ラベルレクサー機能の逆の機能である。ラベル生成部は、所与のラベルテンプレートと項目番号に対するラベルを生成する。例えば、図６に示される最初のラインに関連付けられているラベルテンプレートに対しては項目番号４が与えられる場合、ラベルジェネレータは「ＩＶ」を生成することになる。いくつかの実施形態は、ビュレットが付けられているリストに対する入力とは無関係に同一のものを生成する。順序付けされたリスト群の序数部分に対して、ラベル生成部は、いくつかの実施形態では、通常は、底（例えば、１０進表記及びローマ数字に対しては底が１０、ラテン文字に対して底が２６等）の乗数による整数除算を使用して、その底における数の桁を判定し、そして、各桁のストリング記述を順番通りに連結することになる。
【００３５】
図２に戻って、プロセス２００は、カラム間のリスト同士を照合する（２２５）。このリスト照合プロセスは、図１０及び図１２を参照して以下のセクションＩＩＩで詳細に説明する。各カラムに対して再構築されるリストを用いることで、いくかの実施形態では、このプロセスは、最初のカラムの最後にあるオープンリスト群を識別し、これらのオープンリスト群を次のカラムの開始にあるオープンリスト群と照合することを試行して、これらのリスト群を組み合わせる。
【００３６】
上述のように、テキストライン群のカラム内のリストスペーサ群を識別するために、いくつかの処理が実行される。図７は、いくつかの実施形態における、テキストライン群のカラム内のリストスペーサ群を識別するためのプロセス７００を概念的に示している。図示されるように、このプロセス７００は、順序付けされたテキストラインのカラムを受信する（７０５）ことによって開始する。図２を参照して説明されるように、いくつかの実施形態は、文書内のいくつかのカラムそれぞれを別々に評価する。いくつかの実施形態では、リストスペーサは各カラムに対して別々に識別される。
【００３７】
次に、このプロセスは、カラムのテキストライン群内のスプリットギャップ群（あるいは潜在的なスプリットギャップ群）を識別する（７１０）。スプリットギャップ（分割間隔）は、文章（センテンス）内の２つの連続するワード（単語）間の期待されるギャップよりも大きいワード間あるいはその類の内容との間のギャップである。いくつかのフォーマット（例えば、リッチワードプロセッサフォーマット）では、スプリットギャップは、文書内で使用される間隔があけられている文字群に基づいて識別することができる（例えば、タブ文字群、１列に並ぶ複数のスペース文字の連続、カラムを分離する明示的な挿入語句あるいはマージン、浮動画像、及び他の文書内容構造等）。ベクトルグラフィック文書（あるいは、所与の情報だけでグリフ（記号）の位置となる他の文書）に対しては、いくつかの実施形態は、語義再構築プロセスの一部としてスプリットギャップ群を識別し、その詳細は、米国特許出願公開第２０１０／０１７４９８５号明細書に開示され、これは、参照することによって本明細書に組み込まれる。このようないくつかの実施形態は、ワード内のグリフ間の平均的な間隔と、ワード間の平均的な間隔とを判定するためのクラスタ解析を実行し、そして、平均的なワード間の間隔よりも大きいギャップ群をスプリットギャップあるいは潜在的なスプリットギャップに分類する。
【００３８】
スプリットギャップが一旦識別されると、いくつかの実施形態は、米国特許出願公開第２０１０／０１７４９８５号明細書に記載されるようなプロセスを使用して、これらのギャップからスペーサを作成する。まとめると、このプロセスは、縦方向のスプリットギャップ群の集合をスペーサに組み立てる（アセンブルする）。このプロセス７００は、カラムの最下部にある未評価テキストラインを選択する（７１５）。初回の処理７１５を通じて、これは、カラム内の最下部のテキストラインとなる。処理を行う毎に、このプロセスは次のテキストラインを選択することになる。
【００３９】
次に、このプロセスは、選択されているテキストラインが少なくとも１つのスプリットギャップを含んでいるかどうかを判定する（７２０）。テキストラインが任意のスプリットギャップを含んでいない場合、プロセスは７５０に進み、任意のテキストラインがカラム内にまだ残っているかどうかを判定する。この場合、カラムは、テキストラインを通過する任意のリストスペーサを含むことはない。一方、選択されているラインが少なくとも１つのスプリットギャップを含んでいる場合、このプロセスは、テキストラインからスプリットギャップを選択する（７２５）。異なる実施形態では、左から右へ、右から左へ、あるいは任意の順番でスプリットギャップを選択する。
【００４０】
次に、このプロセスは、選択されているスプリットギャップがオープンスペーサのセットと交差する（７３０）かどうかを判定する。以下の段落で説明するように、いくつかの実施形態は、連続するテキストラインの少なくとも部分的に水平に並んでいるスプリットギャップ群のスペーサセット群を作成する。例えば、図４のカラム４００では、第５番目のテキストラインの「ｉｉ」と「第３ヘッダ２」との間のギャップは、第６番目のテキストの「ｉｉｉ」と「第３ヘッダ３」との間のギャップと並んでいる。いくつかの実施形態では、選択されているスプリットギャップが、スプリットギャップ間のライン群内にテキストが介在することなく、先行するライン群の任意のラインを含むスペーサセットと交差するかどうかも判定する。例えば、カラム４００の第１のライン内の「Ｉ」と「メインヘッダ１」との間のギャップは、第８番目のライン内の「ＩＩ」と「メインヘッダ２」との間のギャップと並んでいて、いくつかの実施形態はこれらのスプリットギャップを一列に並べる。これは、第２番目のラインから第７番目のライン内に介在するテキストが存在しないからである。
【００４１】
選択されているスプリットギャップがオープンスペーサセット（即ち、先行するラインを含んでいる、あるいは先行するライン内のテキストによってブロックされていないスペーサセット）と交差しない場合、このプロセスは、選択されているスプリットギャップを含んでいる新規のスペーサセットを作成する（７３５）。例えば、カラム４００において、プロセスは、最初に、第８番目のライン内のスプリットギャップに対するスペーサセットを最初に作成し、そして、この時、評価する第７番目のラインは、「Ｃ」と「第２ヘッダ３」との間のスプリットギャップに対する新規のスペーサセットを作成しなければならいであろう。これは、既に作成されているスペーサセットと交差しないからである。
【００４２】
一方、選択されているスプリットギャップがオープンスペーサセットと交差する場合、このプロセスは選択されているスプリットギャップを、交差しているスペーサセットに追加する。いくつかの実施形態は、スプリットギャップ群の交差点を使用して、スペーサセットによって定義される縦方向のストリップの境界群を判定する。例えば、カラム４００の第４番目のライン、第５番目のライン、第６番目のラインはそれぞれスプリットギャップを有し、また、これらのスプリットギャップはスペーサ４０５を形成するように並んでいる。スペーサ４０５はこれらの３つのギャップの内の最も狭い幅と同じくらい幅しかない。これは、スペーサの幅は、ギャップ群の水平軸に沿う交差点によって定義されるからである。
【００４３】
図３はカラム３００に対して生成されるスペーサ群を示している。図示されるように、いくつかの実施形態は、テキストラインの開始の前にあるスペース（空間）はスプリットギャップとしてはカウントしないが、そのようなスペースを介するスペーサを組み立てることを妨げない。例えば、スペーサ３０５は第５番目のテキストラインから第８番目のテキストラインによってそれぞれ分離される４つのスプリットギャップの組立品である。加えて、３つのスペーサ３１０−３２０が存在していて、これらは、骨子となるメインヘッダ群が互いに接続してしまうことを防いでいて、また、４つのスペーサ３２５−３４０は、メインヘッダと第２ヘッダとが接続してしまうことを防いでいる。これらのスペーサはすべて、自身の右側に左揃えされているテキストを有しいるので、これらのスペーサの幅は、左の境界のテキスト（即ち、リスト項目番号）の右エッジに基づいて判定される。
【００４４】
プロセス７００に戻ると、このプロセスは、次に、更なるスプリットギャップ群がテキストラインに残っているかどうかを判定する（７４５）。更なるギャップが残っている場合、このプロセスは７２５に戻り、次のギャップを選択する。ギャップのすべてが現在選択されているテキストラインに対して評価されている場合、このプロセスは、任意のテキストラインが残っているかどうかを判定する（７５０）。更なるテキストラインが評価される必要がある場合（即ち、現在選択されているテキストラインがカラム内の最上位のラインでない場合）、このプロセスは７１５に戻り、下部の未評価のテキストラインを選択する。カラム内のすべてのギャップ（すべてのテキストラインのすべてのギャップ）の評価後、このプロセスは７５５に進み、組み立てられているスペーサがリストスペーサであるかどうかを判定する。
【００４５】
このプロセス７００は、スペーサセット（即ち、処理７１５−７５０におけるスプリットギャップから構築されているセット群の１つ）を選択する（７５５）。このプロセスは、左から右へ、上から下へ、あるいはそれらの任意の組み合わせで、スペーサセットを選択することができる。
【００４６】
次に、このプロセスは、選択されているスペーサセットがリストスペーサの特徴を有しているかどうかを判定する（７６０）。カラムに対するスペーサ群を構築しながら、いくつかの実施形態は、カラム内で検出されるスペーサ群のすべての統計値を収集する。これらの集計値を使用して、いくつかの実施形態では、リストスペーサ群を特定の基準に合致するスペーサ群として識別する。この基準は、テキストライン内のスプリット（分割）を示す（例えば、カラムを２つに分割すべきであることを示す）スペーサ群と比較して、このスペーサがリストラベルとリストコンテンツ（内容）との間とのギャップの可能性があるという指標である。このような基準の例は、リストスペーサの右にあるワード群が左揃えにされているという要件であり、一方で、リストスペーサと、その左にあるスペーサ（あるいはマージン）との間にはゼロあるいは１つのワードがあるという傾向がある（この１つのワードはリストラベルである）。
【００４７】
リストスペーサが一旦識別されると、いくつかの実施形態では、リストスペーサ群が通過する潜在的なスプリットギャップ群を検査する。例えば、図３のスペーサ３０５の場合、４つのスプリットギャップだけが存在するが、スペーサは縦方向の長さが２３ラインとなっている。テキストラインの第１番目のワードと第２番目のワードとの間をリストスペーサが通過する場合（任意のテキストラインによるスプリットが実行された後）、テキストラインは潜在的なリスト項目の開始の候補としてフラグが付けられ、それに関係するリストスペーサがそのテキストラインに割り当てられる。いくつかの実施形態では、スペーサが薄すぎるためにそうでなければ破棄されるとしても、スペーサがリストスペーサに対するすべての基準に合致する場合にはスペーサ群をリストスペーサとして確保しても良い。
【００４８】
選択されているスペーサがリストスペーサの特徴に合致する場合、プロセス７００は、そのセットをリストスペーサとして識別する（７６５）。いくつかの実施形態では、リストスペーサは、大規模な文書再構築プロセスで使用するためにメモリに記憶される。いくつかの実施形態では、リストスペーサを、文書を記述するファイル内の情報として記憶する（例えば、スペーサ自身を文書オブジェクトとして記憶する）。次に、このプロセスは、評価対象の任意の更なるスペーサセットが残っているかどうかを判定する（７７０）。多くのスペーサセットが残っている場合、このプロセスは７５５に戻り、次のスペーサを選択する。スペーサセットのすべてが評価されると、プロセスは終了する。
【００４９】
ＩＩ  カラム内のリスト群の再構築
上述のように、いくつかの実施形態では、未処理のリスト群のスタックを使用することによって一度に１つのカラム内のリスト群を再構築する。図８は、１つのカラム内のリスト群を再構築するためのいくつかの実施形態のプロセス８００を概念的に示している。プロセス８００は、図４と図９を参照して説明し、ここで、図４は８個のラインを有するカラム４００を示していて、図９は１１個の段階９０５−９５５を介する未処理のリストのスタック９００を概念的に示している。
【００５０】
図示されるように、プロセス８００は、識別されているリストスペーサ群とレベル群とを有するテキストライン群のカラムを受信する（８０２）ことによって開始する。いくつかの実施形態では、リストスペーサ群とレベル群は、上述のセクションＩで説明されるように識別される（即ち、スペーサ群を検出するために潜在的なスプリットギャップ群を使用して、リストスペーサ群であるスペーサ群を判定して、そして、各スペーサに対するレベルを検出することによる）。
【００５１】
次に、このプロセスは、カラムに対する未処理のリストの空のスタックを作成する（８０４）。上述のように、図９はスタック９００を示していて、ここでは、第１段階９０５では空きになっている（即ち、スタック内には未処理のリスト群は存在しない）。このプロセスは、カラムの右エッジのオープン位置も設定する（８０６）。プロセス８００で後述するように、オープン位置は、新規のリストの開始がオープンのままにすることができるか、あるいはクローズされるべきかを判定するために使用される。
【００５２】
次に、このプロセスは、カラム内の次のテキストラインを選択する（８０８）。いくつかの実施形態では、このプロセスは、カラム内の最上位のテキストラインで開始する。カラム４００を参照すると、これは、「Ｉ」で開始するラインである。いくつかの実施形態では、リストスペーサ群を有するラインのみを処理し、それ以外のラインはすべて無視する（即ち、リストとリストとの間にコンテンツ（内容）があるライン群）、一方、他の実施形態は、カラム内のすべてのテキストラインを処理する。
【００５３】
次に、プロセス８００は、選択されているテキストラインがリストスペーサと識別されているレベルを有するかどうかを判定する（８１０）。上述のように、いくつかの実施形態では、リストスペーサ群と識別されているレベル群を有するテキストライン群のみを処理し、他方、他の実施形態では、すべてのテキストラインを処理する。プロセス８００は、すべてのテキストラインを検査し、選択されているテキストラインがリストスペーサと識別されているレベルを有さない場合、このプロセスは、以下で詳細に説明する８５２に進む。
【００５４】
選択されているテキストラインがリストスペーサと識別されているレベルを有する場合、このプロセスは、未処理のリストが、現在のラインと同一のリストスペーサとレベルを有するスタック内にあるかどうかを判定する（８１４）。そのような場合、現在のラインは未処理のリストに属している場合がある。１回目の処理８１４では、もちろん、同一のあるいは異なるリストスペーサとレベルを有する未処理のリストは存在しない。現在選択されているテキストラインと同一のスペーサとレベルを有するリストが、スタック内で未処理の場合、このプロセスは、後述の８４４へ進む。
【００５５】
一方、現在選択されているテキストラインと同一のスペーサとレベルとを有する未処理のリストがスタック内にない場合、このプロセスは、現在のリストに対する任意の候補リストテンプレートを識別する（８１６）。上述のセクションで説明されるように、いくつかの実施形態では、リストスペーサから開始して、ワードを遡ることで、現在のラインが属しているリストに対して使用されるアルファベットを識別することを試行する。いくつかの実施形態では、最初のリスト項目が曖昧な場合に、複数の候補リストテンプレートを識別し、テンプレート決定をオープンのままにすることができる。これは、最初のリスト項目が、複数の異なるアルファベット（例えば、「Ｉ」、「ｉ」等）となり得る特徴を有しているからである。
【００５６】
次に、このプロセスは、現に識別されている候補リストテンプレートそれぞれに対して、現在のテキストラインの最初のワードの序数の部分に、自身のリストタイプのためのレクサーを適用する。この時点で、候補リストテンプレート群の識別により、このプロセスは、プレフィックス、サフィックス、テキストラインの最初のワード（ラベル）の序数部分を判定している。
【００５７】
このプロセスは、テキストラインの最初のワードが、少なくとも１つの候補テンプレートに対して対応する項目番号を有する正規のリストラベルであるかどうかを判定する（＃７２２）。レクサー機能を使用して（８１８）、正しい出力（アルファベットの項目番号の１つとして組み合わせる必要がない）が得られる場合、現在のラインの最初のワードが項目の正規のリストラベルとなる。例えば、ラベル「ｉ」は、２つの正規のアルファベット（小文字のローマ字と大文字のラテン文字）に分解することができる。
【００５８】
ワードが一致するテンプレートが存在しない場合、ラインはリスト項目（リスト再構築を実行するアプリケーションによって認識されるアルファベットでは少なくともない）ではなく、そして、プロセスは後述の８５２に進む。しかしながら、最初のワードが少なくとも１つの一致を有している場合、このプロセスは、オープンエンド状態の新規の未処理リストを作成する（８２４）。リストの最後（エンド）に項目の追加を継続することができる場合、リストはオープンエンド状態を有する。一方、リストの最後に項目をこれ以上追加することが一旦できなくなると、このリストは、クローズエンド状態を有することになる。いくつかの実施形態では、リストは、常に、オープンエンド状態のスタックに追加される。
【００５９】
リストラベルが２つ以上のアルファベットとなり得る場合、新規の未処理リストは明確なテンプレートを有することはなく、むしろ、一致する（処理８２２）任意の候補のテンプレート群がリストに対して記憶されることになる。第２番目のリスト項目がリストに追加される場合、このプロセスは、一致するテンプレート群の１つを選択することによってこのテンプレート決定を解決することになる。
【００６０】
図９の第２の段階９１０は、第１のリスト９６０がスタック９００に追加されていることを示している。図示されるように、リスト９６０は、現在、カラム４００内の最初のラインに対応する、１つの項目だけを有している。このラインに対するリストラベルが「Ｉ」であるので、これは、項目番号１を有する大文字のローマ字あるいは項目番号９を有する大文字のラテン文字のどちらかであり得る。つまり、このリストはスタックに追加され、２つの取り得るテンプレートを記憶する。図示されるように、大文字のローマ字が最初にリストされている、これは、これは、２つの取り得るアルファベットの上位の優先度であるからである。一般的には、リスト内で検出される最初の序数が「Ｉ」あるいは「ｉ」である場合、対応するローマ数字のアルファベットがよりアルファベットらしく、だけれども、もちろん、項目が、先行するカラムから継続するラテン文字のアルファベットリストとなるという可能性は残っている。
【００６１】
次に、プロセス８００は、現在のラインのリストスペーサが、オープンのままであるかどうかを判定する（８２６）。上述のように、いくつかの実施形態は、新規のリストのスタート（開始）状態がオープンのままにされるべきかどうかを判定するためにオープン位置を使用する。リストが、先行するカラム、ページ、セクション等から継続するリストであるという可能性が存在する場合、リストのスタート状態はオープンのままにされる。つまり、リストが、現在のカラム内の先行するリスト内部で入れ子になっていない場合、スタート状態はオープンのままになる。オープン位置は、カラム内の最も左にあるリストを追跡するために使用され、また、この位置の右にあるスペーサ群を有する任意のリスト群は、クローズされているスタート状態を有することになる。
【００６２】
つまり、現在のラインのリストスペーサがオープン位置の左にある場合、このプロセスは、新規のリストのスタート状態をオープンする（８２８）。そうでなければ、現在のラインのリストスペーサがオープン位置に、あるいはオープン位置の右にある場合、このプロセスは、新規のリストのスタート状態をクローズする（８２９）。現在のラインに対するリストスペーサがオープン位置の右にある場合、カラムは、現在のリストスペーサの左に項目群を有するリストを既に有している。このように、現在のスペーサは、先行するカラムから継続するものではなく、新規のリスト内の最初の項目を有しなければならなくなり、これは、少なくとも１つの他のリスト内で入れ子になっているからである。図９の段階９１０で示されるように、第１のリスト９６０がスタックに追加される場合、スタート状態はオープンのままになる。
【００６３】
次に、プロセス８００は、現在のテキストラインがリストの項目となっているそのリストと等しいあるいはそれよりも上位のリストのレベルを有する任意の未処理のリストの最後（エンド）をクローズする（８３０）。このプロセスは、未処理のリストのスタックからクローズされているリストも削除し（８３２）、そして、新規のリストをスタックの先頭に追加する（８３４）。つまり、スタック上の少なくとも１つのリストよりも下位のレベル（即ち、更に左側にある自身のリストスペーサを有している）である新規のリストが追加される場合、これらのリストはクローズされ（エンド（終了）状態で）、そして、スタックから削除される。この場合は、先行するリストの継続を含むカラム内で発生し得る。例えば、レベル３のリスト項目がカラム内の最初の項目であり、かつレベル１のリスト項目が続く場合、レベル１のリストを作成することが、レベル３のリストのエンド（最後）を示すことになる。図９の段階９１０では、このプロセスに対するスタック内にクローズしかつ削除するためのリストは存在しないが、新規のリスト９６０がスタックの先頭に追加される。
【００６４】
次に、プロセス８００は、オープン位置を現在のオープン位置の最も左であって、かつ現在のテキストラインの左側の境界に移動する（８３５）。このプロセスが、カラム内の各テキストラインの処理後にこの処理を実行するので、オープン位置は、常に、任意の処理済のテキストラインの最も左にある境界に存在することになる。しかしながら、いくつかの実施形態は、リストの一部であるテキストライン群の後にあるオープン位置を修正するだけで、そのオープン位置による影響を、意図しないリストの非テキスト（例えば、チャプタの見出し間の本文（ボディテキスト）へ及ぼしてしまうことを防いでいる。
【００６５】
次に、このプロセスは、任意のテキストラインが更にカラム内に残っているかどうかを判定する（８３６）。テキストラインのすべてが一旦検査されると、プロセス８００は、後述する８６０に進む。更なるテキストラインが残っている場合、このプロセスは８０８に戻り、次のテキストラインを選択し、自身のリストのプロパティ群に対するこの新規のラインを検査する。上述のように、いくつかの実施形態では、このプロセスは、カラムの先頭から開始して、下向きに移動する。
【００６６】
上述のように、このプロセスは、スタックが、現在のテキストラインと同一のリストスペーサとレベルとを有する未処理のリストを含んでいることを判定し（８１４）、このプロセスは、８４４へ進む。ここで、このプロセスは、現在のテキストライン内の最初のワードが、少なくとも１つの候補テンプレートに対するリスト内の予期される次の項目と照合するかどうかを判定する（８４４）。この判定は、現在のラインが未処理のリストに加えることができるかどうかについての判定である。現在のラインが未処理のリストに加えることができるかどうかを判定するために、いくつかの実施形態では、取り得る候補テンプレートのそれぞれとこれらのテンプレート群の次の項目番号に対するラベル生成機能を使用する（即ち、リストの最初の項目が「Ｉ」である場合、ラベル生成機能は「ＩＩ」と「Ｊ」を出力するであろう）。照合しない場合、このプロセスは８１６に進んで、項目が新規のリストの開始であるかどうかを判定する。
【００６７】
生成されたラベルが照合するラベルである場合、このプロセスは、その照合するラベルが存在するテンプレートの内、最上位の優先度のテンプレートを選択する（８４５）。この時点で１つの候補テンプレートしか存在しない場合、次に、これは、その候補テンプレートを常に選択することになる。この項目が、リスト内の第３あるいはそれ以降の項目である場合、任意の候補テンプレート間の決定は、常に、解決されることになる。しかしながら、現在のラインが、複数の候補テンプレートを有するリスト内の第２のリスト項目を有する場合、このプロセスは、どのテンプレートでも最上位の優先度を有するテンプレートを選択する。
【００６８】
次に、プロセス８００は、現在のラインを新規のリストとして、自身のレベルにおける現在の未処理のリストに追加する。図９では、第３の段階９１５は、カラム４００の第２のラインが新規のリスト９６５の作成を生じさせている。このプロセスは、クローズされているスタート状態でこの新規のリスト９６５を作成する。これは、カラム４００の第２のラインの開始の左にオープン位置が現在位置しているからである。このリストは、スタックの先頭に追加される。第３のラインは、段階９２０のこのリストに追加される。ここでは、リスト９６５が２つの項目を有している。
【００６９】
新規の項目を未処理のリストに追加した後、このプロセスは、現在の項目よりも上位のレベルを有する任意の未処理のリストのエンド（最後）をクローズし（８４８）、そして、クローズされているリストを未処理のリストのスタックから削除する（８５０）。次に、このプロセスは８３５へ進み、オープン位置を移動して（必要ならば）、任意の追加のテキストラインがカラム内に残っているかどうかを判定する。
【００７０】
つまり、新規の項目が特定のレベルでリストに追加される場合、そのリスト内で入れ子になっている（つまり、より上位のレベルの）任意のリストがクローズされる。カラム４００に戻り、第７番目の列内の項目がレベル１のリスト（大文字のラテン文字）に追加される場合、このプロセスは、レベル２のリスト（下位のローマ字）をクローズする。図９は、このことを、段階９４０で、先の３つの段階の後に示されるように示している。段階９２５は、カラム４００の第４のラインが、新規のリスト９７０の追加を生じさせ、これは、大文字のローマ字あるいは小文字のラテンアルファベットのどちらかを使用することができる。この決定は、カラム４００の第５番目のラインから第２の項目がリスト９７０に追加される場合の段階９３０で解決される。リスト内のこの第２の項目は「ｊ」ではなく「ｉｉ」であり、これは、リストが自身のアルファベットに対する小文字のローマ数字を使用することを示している。カラム４００の第６番目のラインは、段階９３５におけるリスト９７０の第３の項目として追加される。
【００７１】
段階９４０で、第３の項目がスタック９００の第２のリスト９６５に追加され、これは、カラム４００の第７番目のラインに対応する。第３のリスト９７０は、第２のリスト９６５よりも上位のレベルにあるので、プロセスは、第３のリスト９７０をクローズして、そのリストを削除する。図示されるように、いくつかの実施形態は、記憶装置（ＲＡＭのような揮発性メモリ、ハードディスクあるいはフラッシュメモリのような固定記憶装置等）内のリストについての関連する詳細情報（即ち、リスト内の項目群を構成するテキストライン、項目の番号、項目のラベル、使用されるテンプレート等）を記憶する。段階９４５は、スタック９００が２つの未処理リストだけを、最上位のリストとなるリスト９６５とともに有していること示している。段階９５０では、第２の項目が第１のリスト９６０に追加され、これは、カラム４００の第８番目のラインに対応する。この追加は、プロセスに、第２のリスト９６５をクローズさせ、そして、そのリストを削除させる。段階９５０は、第１のリスト９６０だけが、スタック９００内でオープンになっていることを示している。
【００７２】
図８に戻り、現在のテキストラインがリストを形成するために使用することができない場合（例えば、処理８１０あるいは８２２で判定されるように）、プロセス８００は処理８５２に進む。この時点で、プロセスは、現在のテキストラインの左境界の右にあるリストスペーサを有する任意の未処理リストの最後をクローズする（８５２）。このプロセスは、未処理リストのスタックからクローズされているリストを削除する（８５４）。
【００７３】
次に、このプロセスは、未処理のリストのスタックが、そのリストの削除後に空きとなるかどうかを判定する（８５６）。少なくとも１つのリストがスタック内で未処理のままである場合、このプロセスは、現在のテキストラインを、スタックの先頭のリスト内の最新のリスト項目に追加する（８５８）。つまり、リスト項目が複数のラインに渡っている場合、追加のラインはリスト項目でグループされることになる。図１０は、このような複数のラインのリスト項目１０００の例を示している。リスト項目１０００の第２のラインを評価する場合、このプロセスは、１つのリスト項目（項目「Ｉ」）でリストオープンを維持し、そして、第２のラインをそのリスト項目に追加する。これは、それが、リストラベル自身を持っていないばかりか、自身のアライメントによってリストをクローズすることがないからである。図１１は、リスト項目間の段落がリスト項目でグループ化されていて、かつリスト群をクローズすることにならない場合のカラム１１００を示している。カラム１１００の各リスト項目は、３つあるいは４つのラインの関連する段落を有している。これらのラインは、いくつかの実施形態では、リスト項目でグループ化される（例えば、第１の段落は、ラベル「Ｉ」を備えるリスト項目の一部としてグループ化される）。
【００７４】
しかしながら、いくつかの実施形態は、処理８５２と８５４とを実行しないで、あるいは、これらの処理の変形を実行して、より大きな文書内のセクションあるいはチャプタの見出しの識別を実現するとともに、リスト項目間に大量の非リストコンテンツが存在する場合にそのようなリスト群を再構築することを実現する。例えば、いくつかの場合、セクションの見出しは、図４に示されるリストの類として意図されるが、これらの見出しの間では、インデントなしの段落になる（即ち、段落がインデントされていない、カラム１１００と同様の状況）。未処理のリストのスタックを各段落が空にすることよりも、これらの段落は、任意の他のリスト群を締め出すことなく、最新のリスト項目の下のコンテンツ（内容）として追加される。図１２は、入れ子になっているリストヘッダ間の段落内容で、そのようなリストの部分の例を示している。いくつかの実施形態は、文書内の主段落群を（例えば、明示的に記号化されるフォーマット処理あるいは文書再構築技術に基づいて）認識し、そして、リスト再構築プロセスを実行する前にこれらの段落に属するテキストラインを除去する。
【００７５】
カラム内のテキストラインのすべてが一旦評価されると、プロセス８００は、リストを検証して（８６０）、任意の不適格なリストを削除し、そして、必要に応じてリストが記憶されているスタックを修正する。いくつかの実施形態では、リストを正規なものとして認識するための極小条件を含んでいる。例えば、いくつかの実施形態では、少なくとも２つの項目を有することをリストに要求することで、１つの項目リストからなる構造を防ぐいでいる。リストが不適格である場合、このプロセスはそのリストを削除し、自身のテキストラインと任意の入れ子のリスト群とを、記憶されているリスト群のスタックにおける１つ下位のレベルに下げる。テキストラインがリスト群のスタックの下部に下げられる場合、このラインは任意のリスト内には存在しない。
【００７６】
つまり、例えば、カラム４００が自身の第８番目のラインを含まない場合、いくつかの実施形態では、最初（第１）のリスト９６０は不適格となり、そして、リストが記憶されているスタックから削除される。他のリスト９６５と９７０はそれぞれ、１つレベルがあげられる。カラムの第１のラインは任意のリストと関連づけられない。しかしながら、文書が複数のカラムを含んでいる場合、いくつかの実施形態では、このリストを削除することはない。これは、セクションＩＩＩで説明されるように、このリストは後続のカラムに継続する可能性があるからである。
【００７７】
一方、第５番目のラインと第６番目のライン（「ｉｉ」と「ｉｉｉ」）が存在しなかった場合、このリスト９７０は削除され、また、第４番目のテキストラインは、リスト９６５内の第２の項目と関連づけられることになる。この場合、１つの項目リストがクローズされるので、複数のカラムが存在する状況でさえも、このリストは除去され、２つのリストだけが残ることになる。
【００７８】
上述のプロセス８００と説明される変形は、インデントをリストレベルのインジケータとして使用する。いくつかの実施形態では、ネスティング（入れ子状態）が複数のレベルの番号付けを使用して生じている場合に、入れ子になっているリスト群を識別することもできる。図１３は、入れ子になっているリストのセット１３００の例を示している。この入れ子になっているリストのセットでは、リストスペーサが、異なる項目のすべてに対して同一のレベルにあるが、リスト項目群は異なるリストに分割される必要がある。この問題を処理するために、（ｉ）現在のテキストラインが未処理のリストとして同一のレベルにあり、かつ（ｉｉ）未処理のリストの最新のリスト項目（あるいはセパレータ文字を加えている最新のリスト項目）が現在のテキストラインのラベルのプレフィックス部分である場合、いくつかの実施形態では、未処理のリストをクローズしないし、あるいは、新規のリストを先頭に追加する前にスタックからリストを削除する。
【００７９】
上述のように、いくつかの実施形態は、インデントによって入れ子になっているリスト群（例えば、図３に示されるような）と、番号付けによって入れ子になっているリスト群（例えば、図１３に示されるような）との両方を識別することができる。それを実行するために、いくつかの実施形態は、プロセス８００における変形を使用する。処理８３０で、いくつかの実施形態は、新規のリストと同一のレベルの未処理のリスト群を常にクローズしないで、むしろ、複数のレベルの番号付けが、同一のレベルの任意の未処理リストと新規のリストとの間で存在するかどうかを判定する。上述の条件に合致する場合にこのような番号付けが存在する。つまり、この条件とは、未処理の最新のリスト項目（あるいはセパレータ文字を加えた最新のリスト項目）が現在のテキストラインのラベルのプレフィックス部分であるという条件である。
【００８０】
ＩＩＩ  複数のカラムに渡るリスト群の再構築
上述のセクションは、１つのカラム内でリスト群を識別し、そして、再構築するためのいくつかの実施形態のプロセスを説明している。上述のように、いくつかの実施形態は、複数のカラムからなる文書の各カラムにおいてそのようなプロセスを実行し、リスト群を検証する前にカラム群に渡るオープンリスト群を照合する。図１４は、複数のカラムに渡るリスト群を再構築するためのいくつかの実施形態のプロセス１４００を示している。このプロセス１４００は、図１５を参照して説明する。この図１５は、文書内で連続する２つのカラム１５０５と１５１０を示している。
【００８１】
図示されるように、プロセス１４００は、順序付けされたカラム群のセットを受信する（１４０５）。このカラム群は、すべて同一のページの同一のレイアウトあっても良く、あるいは、複数のレイアウト、ページ、セクション等に広がっていても良い。いくつかの実施形態では、カラム群の順序が与えられる（例えば、文書の構造内で記号化されている）。他の実施形態では、リスト再構築は、米国特許出願公開第２０１０／０１７４９８５号明細書に説明されるような、大規模な文書再構築プロセスの一部であり、これは参照することによって本明細書に組み込まれる。
【００８２】
次に、このプロセスは、カラムのすべてのリスト群を識別する（１４１０）。いくつかの実施形態では、プロセス８００のほとんどが実行され（８６０の検証処理を除いて）、カラム群のリスト群を識別する。このことは、オープンスタート状態あるいはオープンエンド状態を伴ういくつかのリストが残る場合がある。例えば、図１５は、第１のカラム１５０５は、オープンエンド状態の３つのリストを有することになる（ライン１、８及び１４のリスト「Ｉ」、「ＩＩ」、「ＩＩＩ」、ライン１５及び１６のリスト「Ａ」及び「Ｂ」、ライン１７からの１つの項目リスト「ｉ」）。この最初のこれらのリスト群は、オープンスタート状態を有することにもなる。第２のカラム１５１０では、２つのリストがオープンスタート状態を有することになる（ライン１及び２のリスト「ｉｉ」及び「ｉｉｉ」と、第３番目のラインと第６番目のラインのリスト「Ｃ」及び「Ｄ」）。後者のこれらの２つのリストは、オープン状態を有することにもなる。
【００８３】
識別されるリストのすべてを用いることで、このプロセスは、カラム群に渡るリスト群との照合を試行することができる。このプロセスは、現在選択されているカラムとして順番に最初（第１）のカラムを設定する（１４１５）。このプロセスは、次のカラムとして選択されているカラムの後のカラムも設定する（１４２０）。いくつかの実施形態では、少なくとも２つのカラムを有する文書に対するプロセス１４００だけを実行する。他の実施形態では、１つのカラムの文書に対してでさえも、常にこのプロセスを実行するが、これには、文書が１つのカラムだけを有している場合に対する終了条件を含んでいる。
【００８４】
文書が２つ以上のカラムを有していると想定すると、このプロセスは、選択されているカラムが、オープンエンド状態の任意のリストを有しているかどうかを判定する（１４２５）。カラムがオープンリストを有していない場合、次に、このプロセスは後述の１４５５に進む。オープンリストが存在しない場合、このプロセスは、現在選択されているカラムと、次のカラムの任意のリストとの照合を試行することはない。これは、２つのカラムの内の最初のカラムのオープンエンドのリストはそのような照合に対する要件であるからである。
【００８５】
次に、このプロセスは、次のカラムがオープンエンド状態の任意のリストを有するかどうかを判定する（１４３０）。カラムのペアの第１のカラムにおけるオープンエンド状態の要件と同様に、このプロセスは、第１のカラムのリストとの比較を行うために、そのペアの第２のカラムがオープンスタート状態の少なくとも１つのリストを有すること要求する。再度、オープンスタート状態のリストが存在しない場合、このプロセスは、カラム群に渡る照合を試行しないで、１４４５に進む。
【００８６】
第１のカラムにオープンエンド状態のリスト群が存在し、第２のカラムにオープンスターチ状態のリスト群が存在する場合、このプロセスは、照合するリストの連続あるいはリストの連続のセットがレベル間で存在するかどうかを判定する（１４３５）。いくつかの実施形態では、第１のカラムの最後の任意のオープンリストが、第２のカラムの開始の任意のオープンリストと照合することができる。これは、すべての照合されるリストのレベルのセットがオリジナル（当初）のレベルの単調増加関数であり、また、第２のカラムを開始する項目ラベル群が第１のカラムのリスト群に対する次の項目ラベルとして比較することができる限りで実行する。つまり、リストレベルの順序は照合を通じて維持されなければならないが、いくつかのリストレベルに対しては、残りを同一にしたまま変更することが可能である。
【００８７】
２つのリストが照合するかどうかを判定するために、いくつかの実施形態は、ラベル生成機能を使用して、第１のカラムのオープンエンド状態のリストの次のリスト項目を生成し、次に、これを、第２のカラムのオープンスタート状態の第１のリスト項目のラベルと照合するかどうかをチェックする。この照合が、第１のカラムのリスト群のそれぞれに対して存在するかどうかを判定した後に、いくつかの実施形態は、任意の要求されているリストレベルが単調性の要件を違反することになるかどうかを判定する。
【００８８】
有効な照合（あるいは照合のセット）が２つのカラムの間で存在する場合、このプロセスは、２つのカラムに渡って照合されるリスト群を組み合わせる（１４４０）。２つのカラム間の１つの有効な照合あるいは照合のセットよりも多い照合が存在することがありそうもない場合には、いくつかの実施形態は、インデント同士（例えば、カラムの左エッジからリストスペーサまでの距離）を比較して、有効な照合の内の最適なものを判定する（同一のインデントを有するリスト群に対するプリファレンスも用いて）。
【００８９】
次に、このプロセス１４００は、選択されているカラムとして次のカラムを設定する（１４４５）。いくつかの実施形態では、次のカラムの一部として従前に選択されているカラムも含めている。つまり、従前に選択されているカラム内の任意のオープンエンド状態のリスト群が照合を検出しておらず、また、比較するより下位のレベルのオープンエンド状態のリスト群の比較によりクローズされている場合、このプロセスは、次のカラム内での照合を検索することができる。いくつかの実施形態では、このプロセスは、従前の選択されているカラムと次のカラムとを連結することで、リスト群を複数のカラムに渡って広げることを可能にする（例えば、特定のリスト内の第１のリスト項目が第１のカラム内にあり、そのリスト内の第２の項目が第３のカラムまでには発生していない場合である）。
【００９０】
このプロセスは、新規に選択されているカラムの後に任意の追加のカラム群が存在するかどうかを判定する（１４５０）。追加のカラムを残しながら、このプロセスは１４２０に戻り、次のカラムとの照合をチェックする。これ以上のカラムが残っていない場合、このプロセスは、カラム内のすべてのリストを検証する（１４５５）。いくつかの実施形態では、これは、後述する、プロセス８００の処理８６０と同一である。つまり、このプロセスは、リストのすべてを検証して、任意の不適格なリストを削除し、そして、必要に応じて、リストが記憶されているリストを修正する。そして、このプロセス１４００は終了する。
【００９１】
図１５では、第２のカラム１５１０の最下位のリストレベルは、第１のカラム１５０５の最下位のリストレベルと一致し（即ち、「Ｃ」のリスト項目は「Ｂ」のリスト項目に続いている）、第２のカラム１５１０の最上位のリストレベルは第１のカラム１５０５の最上位のリストレベルと一致する（即ち、「ｉｉ」のリスト項目は「ｉ」のリスト項目に続いている）。第１のカラムの最下位のレベルのオープンリスト（大文字のローマ字）は、第２のカラムとの一致は有さない。このプロセスは、一致するアルファベット群と、リスト項目群の連続する序数とに基づいて、これらのリストを容易に照合することができる。
【００９２】
図１６は、１つのリストがレベルを変更しながら、第２のリストが同一のレベルのままである場合の例を示している。但し、ここでは、単調性の要件は維持されている。この図では、第２のカラム１６１０は、それぞれレベル０とレベル１を有する２つのリストを有している。レベル０の大文字のローマ字のリストは、第１のカラム１６０５のレベル０の大文字のローマ字のリストと一致するが、第２のカラム１６１０のレベル１の小文字のローマ字のリストは、第１のカラムのオープンレベル２の小文字のローマ字リストと一致する。
【００９３】
上述のように、文書に対して完全に再構築されているリスト群を用いると、様々な機能を実現することができる。これらの機能は、追加のリスト項目群の自動生成、ハイパーリンク群の自動生成、連続する項目群の他のリファレンス群の自動生成、リスト項目による検索及びナビゲーション機能、フォーマット間のコピーアンドペースト等を含むことができる。
【００９４】
ＩＶ  ソフトウェアアーキテクチャ
いくつかの実施形態では、上述のプロセスは特定のマシーン（装置）上で動作する、あるいは、コンピュータ可読媒体に記憶されるソフトウェアとして実現される。このマシーンには、例えば、コンピュータあるいは携帯デバイスがある。図１７は、いくつかの実施形態のリスト再構築モジュール１７００のソフトウェアアーキテクチャを概念的に示している。いくつかの実施形態では、リスト再構築モジュール１７００はスタンドアローンアプリケーションであり、あるいは、１つのアプリケーションに統合されていて（例えば、文書再構築アプリケーションの一部として）、一方で、他の実施形態では、アプリケーションは、オペレーティングシステム内で実現されても良い。また、いくつかの実施形態では、このモジュールは、サーバベースのソリューションの一部として提供される。このようないくつかの実施形態では、このモジュールは、シンクライアントを介して提供される。つまり、このモジュールはサーバ上で動作し（例えば、サーバ上で動作するアプリケーションの一部として）、一方で、ユーザは、サーバからリモートで、別のマシーン（装置）を介してアプリケーションと対話する。このような他の実施形態では、このモジュールはシッククライアントを介して提供される。つまり、このモジュールは、サーバからクライアント装置へ配信され（例えば、サーバから配信されるアプリケーションの一部として）、そのクライアント装置上で動作する。
【００９５】
このリスト再構築モジュール１７００は、リストスペーサ識別部１７０５、リストレベル識別部１７１０、リスト再構築部１７１５、交差カラム照合部１７２０、リスト検証部１７２２、及びリストテンプレート機能１７４０を含んでいる。加えて、リスト再構築モジュール１７００は、文書記憶装置１７４５、未処理リストのスタック用の記憶装置１７５０、テンプレート定義１７５５を使用する。文書記憶装置１７４５は、リスト再構築モジュール１７００がリストを識別し、かつ再構築するための１つ以上の文書についての情報を記憶する。この情報は、カラム及びテキストラインの情報を含むことができ、また、これらの文書のオブジェクトの境界も含んでいる。いくつかの実施形態では、文書記憶装置１７４５は、米国特許出願公開第２０１０／０１７４９８５号明細書に記載されているように、文書オブジェクトモデルを記憶する。これは参照することによって本明細書に組み込まれる。未処理のリスト群のスタックの記憶装置１７５０は、リスト再構築プロセス中の取り得るリスト群の未処理スタックを記憶する。いくつかの実施形態では、この情報はＲＡＭに記憶される。テンプレート定義群は、アルファベットのリストと、リストテンプレート機能１７４０によって必要とされるアルファベットについての情報を記憶する。いくつかの実施形態では、文書情報、未処理スタック、及びテンプレート定義群は、１つの物理的な記憶装置に記憶される。他の実施形態では、これらの情報は異なる物理記憶装置に記憶され、例えば、文書情報とテンプレート定義群は固定記憶装置に記憶され、一方で、未処理スタックはＲＡＭに記憶される。加えて、記憶装置の１つが、複数の物理的な記憶装置に渡って実際に分割されていても良い（例えば、異なる文書は異なるディスクに記憶されていても良い）。
【００９６】
リストスペーサ識別部１７０５は、文書情報１７４５を使用して、文書内のリストスペーサ群を識別する。いくつかの実施形態では、リストスペーサ識別部１７０５は、文書内のカラム内の潜在的なスプリットギャップ群を識別し、重複するスプリットギャップ群の縦方向のストリップとするスペーサ群を組み立て、スペーサ群がリストスペーサ群に対する要件に合致するかどうかを判定する。
【００９７】
リストレベル識別部１７１０は、リストスペーサと文書情報１７４５を使用して、リストスペーサを有する各テキストラインに対するリストレベルを識別する。上述のように、いくつかの実施形態は、テキストラインのベースラインの左エッジで開始し、そして、どれくらいの数のリストスペーサが、カラムの左エッジの地点で交差するかを判定する。この数は、テキストラインに対するリストレベルとなる。
【００９８】
リスト再構築部１７１５はリストスペーサとリストレベルの情報と、文書記憶装置１７４５からの文書の情報（例えば、テキストライン内の単語（ワード）と文字の少なくとも一方についての情報）を使用して、カラム内のリスト群を再構築する。いくつかの実施形態と、リスト再構築部１７１５は、図８に示されるプロセス８００のいくつかあるいはすべてを実行する。
【００９９】
いくつかの実施形態では、リスト再構築部１７１５は、リストテンプレート機能１７４０を使用する。これらは、テンプレート識別部１７２５、ラベルレクサー１７３０、及びラベル生成部１７３５を含んでいる。これらの機能のすべては、ビュレットあるいは序数のタイプ及びそれらのアルファベットを含んでいる、テンプレート定義１７５５を使用する。テンプレート識別部１７２５は、所与のリストラベルに対するテンプレートを識別する。テンプレート識別部は、リストラベルの文字を検査して、自身のアルファベットを識別し、そして、アルファベットが一旦識別されると、リストテンプレートに対するプレフィックスとサフィックスとを判定する。ラベルレクサー１７３０は、ラベルのビュレットあるいは序数部分を入力とし、出力として、ラベルによって再現される項目番号を生成する。ラベル生成部１７３５は、本質的には、ラベルレクサー１７３０の逆機能を実行して、項目番号とラベルテンプレートとをラベルへと変換する。
【０１００】
交差カラム照合部１７２０は複数の順序付けられているカラムに対するリスト再構築部１７１５の出力を使用して、カラム間のリスト群を照合する。いくつかの実施形態では、上述のように、交差カラム照合部は、オープンエンド状態の第１のカラムのリスト群と、オープンスタート状態の次のカラムのリスト群との間で特定の基準を満足する照合結果を探し出す。これらの照合結果を識別するために、交差カラム照合部１７２０はリストテンプレート機能１７４０を利用する。
【０１０１】
リスト検証部１７２２は、交差カラム照合部の出力（リスト群の最終的なセット）を使用して、リスト群を検証する。特定の検証基準を満足しない任意のリスト群はそのリスト群のセットから削除され、任意の入れ子のリストは必要に応じて修正される。いくつかの実施形態では、これらの基準は、各リストが少なくとも２つの項目を含んでいるということを義務付けている。
【０１０２】
機能群の多くは１つのモジュール（例えば、リスト再構築部１７１５、リストスペーサ識別部１７０５等）によって実行されるように説明されているが、当業者は、本明細書で説明される機能群が複数のモジュール群に分けられていても良いことを認識するであろう。同様に、複数の異なるモジュール群によって実行されるように記載されている機能群は、いくつかの実施形態においては１つのモジュールによって実行されても良い（例えば、交差カラム照合部１７２０は、リスト再構築部１７１５の一部であっても良い）。
【０１０３】
Ｖ．電子システム
上述の多くの機能及びアプリケーションは、コンピュータ可読記憶媒体（以下では、コンピュータ可読媒体）に記録されている命令群のセットとして特定されるソフトウェアプロセスとして実現される。これらの命令群が１つの計算あるいは処理ユニット（群）によって実行される場合（例えば、１つ以上のプロセッサ、プロセッサ群のコア、あるいは他の処理ユニット）、これらは、処理ユニット（群）に、命令群で指示される動作群を実行させる。コンピュータ可読媒体の例には、限定されるものでないものとして、ＣＤ−ＲＯＭ、フラッシュドライブ、ランダムアクセスメモリ（ＲＡＭ）チップ、ハードドライブ、消去可能プログマラブルリードオンリーメモリ（ＥＰＲＯＭ）、電子的消去可能プログマラブルリードオンリーメモリ（ＥＥＰＲＯＭ）等を含んでいる。コンピュータ可読媒体は、搬送波、及び無線あるいは有線接続を介して伝送される電子信号は含まない。
【０１０４】
本明細書では、用語「ソフトウェア」は、リードオンリーメモリに常駐するファームウェア、あるいは磁気記憶装置に記憶されるアプリケーションを含むことを意味するものである。ここで、アプリケーションはプロセッサによって処理するためにメモリに読み出すことができる。また、いくつかの実施形態では、複数のソフトウェア発明を、異なるソフトウェアの発明を残しながら、より大規模なプログラムの一部分として実現することができる。いくつかの実施形態では、複数のソフトウェア発明は、別々のプログラムとして実現することもできる。そして、本明細書で説明されるソフトウェア発明を併せて実現する、別々のプログラムの任意の組み合わせは、本発明の範囲内にある。いくつかの実施形態では、ソフトウェアプログラムは、１つ以上の電子システムで処理するためにインストールされる場合、１つ以上の特定のマシーンの実装を定義し、これは、ソフトウェアプログラムの処理を実行して機能させる。
【０１０５】
図１８は、本発明のいくつかの実施形態が実現される電子システム１８００を概念的に示している。電子システム１８００は、コンピュータ（例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ等）、電話、ＰＤＡ、あるいは任意の他の電子デバイスの類である。このような電子システムは、様々なタイプのコンピュータ可読媒体、及コンピュータ可読媒体の様々なタイプ用のインタフェースを含んでいる。電子システム１８００は、バス１８０５、処理ユニット（群）１８１０、グラフィック処理ユニット（ＧＰＵ）１８１５、システムメモリ１８２０、ネットワーク１８２５、リードオンリーメモリ１８３０、固定記憶装置１８３５、入力デバイス１８４０、及び出力デバイス１８４５を含んでいる。
【０１０６】
バス１８０５は、すべてのシステムバス、周辺バス、及びチップセットバスを集約的に表現したものであり、これらは、電子ステム１８００の内部デバイス群を通信によって接続する。例えば、バス１８０５は、処理ユニット（群）１８１０を、通信によって、リードオンリーメモリ１８３０、ＧＰＵ１８１５、システムメモリ１８２０、及び固定記憶装置１８３５と接続する。
【０１０７】
様々なメモリユニット群から、処理ユニット（群）１８１０は、本発明のプロセス群を実行するために、実行するための命令群と処理するためのデータを取得する。処理ユニット（群）は、様々な実施形態として、１つプロセッサあるいは複数のコアプロセッサであっても良い。いくつかの命令は、ＧＰＵ１８１５によって渡されて、かつ実行される。ＧＰＵ１８１５は、処理ユニット（群）１８１０によって提供される画像処理の様々な計算あるいは補完を解放することができる。いくつかの実施形態では、このような機能は、コアイメージのカーネルシェーディング言語を使用して提供することができる。
【０１０８】
リードオンリーメモリ（ＲＯＭ）１８３０は、処理ユニット（群）１８１０と電子システムの他のモジュール群によって必要とされる静的なデータ及び命令群を記憶する。一方、固定記憶装置１８３５は、リードライトメモリデバイスである。このデバイスは、不揮発性メモリユニットであり、電子ステム１８００が電源オフにされても命令群及びデータを記憶する。本発明のいくつかの実施形態は、大容量記憶装置（例えば、磁気あるいは光ディスク、及びそれに対応するディスクドライブ）を固定記憶装置１８３５として使用する。
【０１０９】
他の実施形態は、リムーバル記憶デバイス（例えば、フロッピーディスク、フラッシュメモリデバイス等、及びそれに対応するドライブ）を固定記憶装置として使用する。固定記憶装置１８３５と同様に、システムメモリ１８２０はリードライトメモリデバイスである。しかしながら、固定記憶装置１８３５と異なり、システム１８２０は揮発性リードライトメモリであり、これには、ランダムアクセスメモリがある。システムメモリ１８２０は、プロセッサがライタイムで必要とするいくつかの命令群及びデータを記憶する。いくつかの実施形態では、本発明のプロセスは、システムメモリ１８２０、固定記憶装置１８３５及びリードオンリーメモリ１８３０の少なくともいずれかに記憶される。例えば、様々なメモリユニット群には、いくつかの実施形態に従う処理マルチメディアクリップ群に対する命令群を含んでいる。これらの様々なメモリユニット群から、処理ユニット（群）１８１０は、いくつかの実施形態のプロセスを実行するために、実行するための命令群と処理するためのデータとを取得する。
【０１１０】
バス１８０５は、入力デバイス１８４０と出力デバイス１８４５も接続する。入力デバイス１８４０は、電子システムとの情報通信とコマンド選択を行うことをユーザに可能にする。入力デバイス１８４０は、英数字キーボード、ポインティングデバイス（「カーソル制御デバイス」とも呼ばれる）、カメラ（例えば、ウェブカメラ）、マイク、あるいは同様の音声コマンドを受信するデバイス等を含んでいる。出力デバイス１８４５は、電子システムあるいはそれ以外の出力データによって生成される画像を表示する。出力デバイス１８４５は、プリンタ及び、陰極線管（ＣＲＴ）あるいは液晶ディスプレイ（ＬＣＤ）のようなディスプレイデバイス、スピーカあるいは同様のオーディオ出力デバイスを含んでいる。いくつかの実施形態は、入力デバイス及び出力デバイスとして機能するタッチスクリーンのようなデバイスを含んでいる。
【０１１１】
最後に、図１８に示されるように、バス１８０５は、ネットワークアダプタ（不図示）を通じて、電子システム１８００をネットワーク１８２５にも接続する。この方法では、コンピュータは、ネットワークのコンピュータ群（例えば、ローカルエリアネットワーク（「ＬＡＮ」、ワイドエリアネットワーク（「ＷＡＮ」））の一部、あるいは、イントラネットの一部、あるいはネットワーク群の１つのネットワーク、例えば、インターネットの一部とすることができる。電子ステム１８００の任意のあるいはすべてのコンポーネント群は、本発明とともに使用することができる。
【０１１２】
いくつかの実施形態は、電子コンポーネント群を含み、これには、マイクロプロセッサ、記憶装置及びメモリがあり、メモリは、マシーン可読媒体あるいはコンピュータ可読媒体（選択的には、コンピュータ可読記憶媒体、マシーン可読媒体あるいはマシーン可読記憶媒体とも呼ばれる）にコンピュータプログラム命令群を記憶する。このようなコンピュータ可読媒体のいくつかの例には、ＲＡＭ、ＲＯＭ、リードオンリーコンパクトディスク（ＣＤ−ＲＯＭ）、レコーダブルコンパクトディスク（ＣＤ−Ｒ）、リライタブルコンパクトディスク（ＣＤ−ＲＷ）、リードオンリーデジタル多用途ディスク（例えば、ＤＶＤ−ＲＯＭ、デュアルレイヤーＤＶＤ−ＲＯＭ）、様々なレコーダブル／リライタブルＤＶＤ（例えば、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ等）、フラッシュメモリ（例えば、ＳＤカード、ミニＳＤカード、マイクロＳＤカード等）、磁気ハードドライブ及びソリッドステートハードライブの少なくとも一方、リードオンリー及びレコーダブルブルーレイ（登録商標）ディスク、ウルトラデンシティーオプティカルディスク、任意の他の光あるいは磁気媒体、及びフロッピーディスクを含んでいる。コンピュータ可読媒体は、コンピュータプログラムを記憶することができ、このコンピュータプログラムは少なくとも１つの処理ユニットによって実行可能であり、また、様々な処理を実行するための命令群のセットを含んでいる。コンピュータプログラムあるいはコンピュータコードの例には、例えば、コンパイラによって生成されるマシーンコード、コンピュータによって実行される上位レベルのコードを含むファイル、電子コンポーネント、あるいはインタプリタを使用するマイクロプロセッサを含んでいる。
【０１１３】
上述の説明は主にソフトウェアを実行するマイクロプロセッサあるいはマルチコアプロセッサを参照しているが、いくつかの実施形態は、１つ以上の集積回によって実行される。この集積回路には、例えば、特定用途集積回路（ＡＳＩＣ）あるいはフィールドプログラマグルゲートアレイ（ＦＰＧＡ）がある。いくつかの実施形態では、このような集積回路は、回路自身に記憶されている命令群を実行する。加えて、いくつかの実施形態は、プログラマブルロジックデバイス（ＰＬＤ）、ＲＯＭ、ＲＡＭデバイスに記憶されるソフトウェアを実行する。
【０１１４】
本明細書で使用されるように、また、本願の任意の請求項で使用されるように、用語「コンピュータ」、「サーバ」、「プロセッサ」及び「メモリ」は、すべて、電子デバイスあるいは他の技術上のデバイスを言及するものである。これらの用語は、人間あるいは人間のグループを除外する。本明細書の目的のために、用語、表示（ディスプレイ）あるいは表示することは、電子デバイス上で表示することを意味する。本明細書で使用されるように、また、本願の任意の請求項で使用されるように、用語「コンピュータ可読媒体」、「コンピュータ可読メディア」、及び「マシーン可読媒体」は、有形で、かつ物理的なオブジェクト（物体）に完全に制限されるものであり、これは、コンピュータによって読出可能な形式で情報を記憶している。これらの用語は、任意の無線信号、有線によってダウンロードされる信号、及び任意の他の一時的な信号は除外している。
【０１１５】
本発明は、いくつかの特定の詳細を参照して説明しているが、当業者は、本発明が、本発明の精神から逸脱することなく他の特定の実施形態で実施することができることを認識するであろう。例えば、本明細書の説明は、テキストが左から右へ、また、上から下へと読まれることを想定している。当業者は、同様のプロセスを、右から左及び下から上の少なくとも一方で読まれるテキストに使用できることを認識するであろう。加えて、いくつかの図（図２、図７、図８、及び図１４を含む）は、概念的にプロセスを示している。これらのプロセスの特定の処理は、図示されかつ記載される順序に厳格に実行されなくても良い。特定の処理は、１つの連続する処理群の並びで実行されなくても良く、異なる特定の処理群が異なる実施形態で実行されても良い。また、プロセスは、いくつかのサブプロセッサを使用して実現することができ、あるいは大規模のマクロプロセスの一部として実現することができる。つまり、当業者は、本発明が上述の詳細な説明に限定されるものではなく、むしろ、添付の請求項によって定義されるべきものであることを理解するであろう。
【図１】
0005480920.tif 000002
【図２】
0005480920.tif 000003
【図３】
0005480920.tif 000004
【図４】
0005480920.tif 000005
【図５】
0005480920.tif 000006
【図６】
0005480920.tif 000007
【図７】
0005480920.tif 000008
【図８Ａ】
0005480920.tif 000009
【図８Ｂ】
0005480920.tif 000010
【図９】
0005480920.tif 000011
【図１０】
0005480920.tif 000012
【図１１】
0005480920.tif 000013
【図１２】
0005480920.tif 000014
【図１３】
0005480920.tif 000015
【図１４】
0005480920.tif 000016
【図１５】
0005480920.tif 000017
【図１６】
0005480920.tif 000018
【図１７】
0005480920.tif 000019
【図１８】
0005480920.tif 000020