(57)【要約】【課題】個別処理を一つずつ順に実行する場合と比較して、全処理手続が完了するまでの処理時間を低減できるデータ処理装置及びデータ処理プログラムを提供する。【解決手段】データ処理装置１０は、文書に対するタスクの進行を管理し、タスクに含まれるプラグインの進行は管理しない進行管理部１０１と、進行管理部１０１によって進行が管理されない一連のプラグインを、文書を構成する文書要素に対して実行するプラグイン実行部１０２と、一連のプラグインに含まれる各プラグインが、複数の文書要素に対して並行して実行されるように、プラグイン実行部１０２を制御するプラグイン管理部１０３と、を有する。【選択図】図３
2020004091.tif 000002
【特許請求の範囲】
【請求項１】
文書に対する処理手続の進行を管理し、前記処理手続に含まれる個別処理の進行は管理しない進行管理部と、
前記進行管理部によって進行が管理されない一連の個別処理を、前記文書を構成する文書要素に対して実行する個別処理実行部と、
前記一連の個別処理に含まれる各個別処理が、複数の前記文書要素に対して並行して実行されるように、前記個別処理実行部を制御する個別処理管理部と、
を有するデータ処理装置。
【請求項２】
前記個別処理管理部は、前記一連の個別処理における最初の個別処理が一の文書要素に対して実行された後、前記一連の個別処理における次の個別処理が前記一の文書要素に対して実行される際に、別の文書要素に対して前記最初の個別処理が実行されるように、前記個別処理実行部を制御する請求項１に記載のデータ処理装置。
【請求項３】
前記個別処理管理部は、前記一連の個別処理における最後の個別処理が前記一の文書要素に対して実行された後、前記最後の個別処理が前記別の文書要素に対して実行されるように、前記個別処理実行部を制御する請求項２に記載のデータ処理装置。
【請求項４】
前記文書要素による前記文書の構成を表す構成情報を更新する更新部であって、前記個別処理実行部により前記文書要素に対して個別処理が実行されると、個別処理が実行された前記文書要素について前記構成情報を更新する更新部を有する請求項１〜３のいずれか一項に記載のデータ処理装置。
【請求項５】
前記更新部は、並行して個別処理が実行される複数の前記文書要素について、同時に前記構成情報を更新可能である請求項４に記載のデータ処理装置。
【請求項６】
前記更新部は、並行して個別処理が実行される複数の前記文書要素について、排他制御によって前記構成情報を更新可能である請求項４に記載のデータ処理装置。
【請求項７】
前記処理手続は複数あり、前記一連の個別処理は、複数の処理手続きに亘って実行される請求項１〜５のいずれか一項に記載のデータ処理装置。
【請求項８】
文書に対する処理手続の進行を管理し、前記処理手続に含まれる個別処理の進行は管理しない進行管理工程と、
前記進行管理工程によって進行が管理されない一連の個別処理を、前記文書を構成する文書要素に対して実行する個別処理実行工程と、
前記一連の個別処理に含まれる各個別処理が、複数の前記文書要素に対して並行して実行されるように、前記個別処理実行工程を制御する個別処理管理工程と、
をコンピュータに実行させるデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の技術は、データ処理装置及びデータ処理プログラムに関する。
【背景技術】
【０００２】
特許文献１には、オブジェクトの状態遷移制御された処理のための方法であって、制御システムによりオブジェクトが、選択され、複数の処理状態を含む状態構造化された処理フローにしたがって処理され、それぞれの処理状態に対して１つ以上の処理タスクが前記制御システムにより実行され、前記の選択されたオブジェクトは、１つの処理状態から後続の処理状態へと処理され、前記選択されたオブジェクトの状態パラメータが前記制御システムのキャプチャ手段によりキャプチャされ、処理状態が前記のキャプチャされた状態パラメータに基づいて判定され、前記選択されたオブジェクトに割り当てられることと、前記選択されたオブジェクトの処理状態および／または状態パラメータに基づいて、少なくとも１つの処理タスクが前記制御システムにより生成され、特定的な処理状態に対して、生成された処理タスクが、処理タスクに割り当てられたタスク・パラメータに依存して活性化されることと、１つ以上の動作タグが、生成され、処理タスクまたは処理フローに拡張可能に割り当てられ、前記動作タグは、関連付けられた処理タスクの動作を前記制御システムにより制御し、および／または前記処理タスクの処理に対して動作制約を加え、および／またはタスク状態を拡張または指示する、動的に変更可能な動作パラメータを含むことと、前記状態構造化された処理フローは前記制御システムにより動的に動作され、前記制御システムにより、前記動作タグの動作パラメータに基づいて前記の割り当てられた処理タスクを実行することにより、オブジェクトが前記の判定された処理状態から後続の処理状態へと処理されることと、を特徴とする、方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１６−５２７６１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
タスクと呼ばれる処理手続の単位でコンピュータ上の作業の進捗を管理するワークフロー管理装置がある。各タスクにおいては、個別処理が実行される。個別処理は、例えば、プラグインと呼ばれるプログラムにより実行される。
【０００５】
特許文献１記載の技術では、一つの処理手続の中に一連の個別処理が存在する場合、又は複数の処理手続に亘って一連の個別処理が存在する場合でも、個別処理は一つずつ順に実行されることしかできなかった。
【０００６】
本発明は、個別処理を一つずつ順に実行する場合と比較して、全処理手続が完了するまでの処理時間を低減できるデータ処理装置及びデータ処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
請求項１記載の発明は、文書に対する処理手続の進行を管理し、前記処理手続に含まれる個別処理の進行は管理しない進行管理部と、前記進行管理部によって進行が管理されない一連の個別処理を、前記文書を構成する文書要素に対して実行する個別処理実行部と、前記一連の個別処理に含まれる各個別処理が、複数の前記文書要素に対して並行して実行されるように、前記個別処理実行部を制御する個別処理管理部と、を有するデータ処理装置である。
【０００８】
請求項２記載の発明においては、前記個別処理管理部は、前記一連の個別処理における最初の個別処理が一の文書要素に対して実行された後、前記一連の個別処理における次の個別処理が前記一の文書要素に対して実行される際に、別の文書要素に対して前記最初の個別処理が実行されるように、前記個別処理実行部を制御する。
【０００９】
請求項３記載の発明においては、前記個別処理管理部は、前記一連の個別処理における最後の個別処理が前記一の文書要素に対して実行された後、前記最後の個別処理が前記別の文書要素に対して実行されるように、前記個別処理実行部を制御する。
【００１０】
請求項４記載の発明においては、前記文書要素による前記文書の構成を表す構成情報を更新する更新部であって、前記個別処理実行部により前記文書要素に対して個別処理が実行されると、個別処理が実行された前記文書要素について前記構成情報を更新する更新部を有する。
【００１１】
請求項５記載の発明においては、前記更新部は、並行して個別処理が実行される複数の前記文書要素について、同時に前記構成情報を更新可能である。
【００１２】
請求項６記載の発明においては、前記更新部は、並行して個別処理が実行される複数の前記文書要素について、排他制御によって前記構成情報を更新可能である。
【００１３】
請求項７記載の発明においては、前記処理手続は複数あり、前記一連の個別処理は、複数の処理手続きに亘って実行される。
【００１４】
請求項８記載の発明は、文書に対する処理手続の進行を管理し、前記処理手続に含まれる個別処理の進行は管理しない進行管理工程と、前記進行管理工程によって進行が管理されない一連の個別処理を、前記文書を構成する文書要素に対して実行する個別処理実行工程と、前記一連の個別処理に含まれる各個別処理が、複数の前記文書要素に対して並行して実行されるように、前記個別処理実行工程を制御する個別処理管理工程と、をコンピュータに実行させるデータ処理プログラムである。
【発明の効果】
【００１５】
請求項１記載の発明によれば、個別処理を一つずつ順に実行する場合と比較して、全処理手続が完了するまでの処理時間を低減できる。
【００１６】
請求項２記載の発明によれば、一連の個別処理の開始をずらして、同じ文書要素に対して同時に別の個別処理が実行されないように制御できる。
【００１７】
請求項３記載の発明によれば、一連の個別処理の終了をずらして、同じ文書要素に対して同時に別の個別処理が実行されないように制御できる。
【００１８】
請求項４記載の発明によれば、全文書要素に対して個別処理が完了しなくても、個別処理の実行に伴い、文書要素毎に構成情報を更新できる
【００１９】
請求項５記載の発明によれば、複数の文書要素を同時に更新できる。
【００２０】
請求項６記載の発明によれば、複数の文書要素を排他制御により更新できる。
【００２１】
請求項７記載の発明によれば、複数の処理手続に亘る一連の個別処理を並行処理できる。
【００２２】
請求項８記載の発明によれば、個別処理を一つずつ順に実行する場合と比較して、全処理手続が完了するまでの処理時間を低減できる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施形態に係るデータ処理装置がタスクを管理する様子を示す概念図である。
【図２】データ処理装置のハードウェア構成を示すブロック図である。
【図３】データ処理装置の機能構成の例を示すブロック図である。
【図４】文書に含まれるコンテンツの構成を示す構成図である。
【図５】プラグインの進行状況を示すテーブルを示す図である。
【図６】データ処理装置によるデータ処理の流れを示すフローチャートである。
【図７】複数プラグイン並行処理の流れを示すフローチャートである。
【図８】プラグインが実行されるタイミングを示す図である。
【図９】第２実施形態に係るデータ処理装置がタスクを管理する様子を示す概念図である。
【図１０】第２実施形態におけるデータ処理の流れを示すフローチャートである。
【図１１】第２実施形態におけるプラグインが実行されるタイミングを示す図である。
【図１２】第３実施形態におけるデータ処理装置によるデータ処理の流れを示すフローチャートである。
【図１３】プラグインの実行処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００２４】
以下、本発明の技術の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において同一又は等価な構成要素及び部分には同一の参照符号を付与している。また、図面の寸法比率は、説明の都合上誇張されており、実際の比率とは異なる場合がある。
【００２５】
（第１実施形態）
図１は、本発明の実施形態に係るデータ処理装置がタスクを管理する様子を示す概念図である。
【００２６】
データ処理装置１０は、いわゆるコンピュータであり、タスク単位でコンピュータ上の処理の進捗を管理する。タスクは、文書、文書を表す文書データ又は文書を構成する文書要素に対して実行される様々な処理手続である。図１に示す例では、データ処理装置１０は、タスクＴ１、タスクＴ２、タスクＴ３の順に進捗を管理する。タスクの数は、適宜変更可能である。
【００２７】
各タスクにおいては、プラグインと呼ばれるプログラムにより、個別処理が実行される。プラグインは、各タスクＴ１〜Ｔ３に少なくとも一つ含まれる。図１に示す例では、データ処理装置１０は、タスクＴ１ではプラグインＰ１を実行し、タスクＴ２ではプラグインＰ２を実行し、タスクＴ３ではプラグインＰ３〜Ｐ５を実行する。
【００２８】
プラグインＰ１〜Ｐ５の具体的な処理は、例えば、次の通りである。プラグインＰ１は、文書データを得るために、紙媒体の文書をスキャンするスキャン処理である。プラグインＰ２は、文書データにおける文書の構造を解析するための文書解析処理である。プラグインＰ３は、文書データの各ページのフォームを解析するためのフォーム解析処理である。プラグインＰ４は、各ページに含まれる不要なコンテンツを削除するためのコンテンツ削除処理である。プラグインＰ５は、コンテンツに含まれる文字を認識する光学的文字認識（ＯＣＲ）処理である。プラグインＰ１〜Ｐ５は、データ処理装置１０内で完結する処理として実行されても良いし、図示しない外部の装置により実行されても良い。外部の装置によりプラグインが実行される場合、データ処理装置１０は、当該外部の装置を制御する。上記のプラグインＰ１〜Ｐ５の処理はあくまで例示であり、データ処理の設計に従って、いかなる処理にも変更可能である。
【００２９】
図２は、データ処理装置のハードウェア構成を示すブロック図である。
【００３０】
図２に示すように、データ処理装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３、ストレージ１４、入力部１５、表示部１６及び通信インタフェース１７の各構成を有する。各構成は、バス１８を介して相互に通信可能に接続されている。
【００３１】
ＣＰＵ１１は、中央演算処理ユニットであり、各種プログラムを実行したり、各部を制御したりする。すなわち、ＣＰＵ１１は、ＲＯＭ１２又はストレージ１４からプログラムを読み出し、ＲＡＭ１３を作業領域としてプログラムを実行する。ＣＰＵ１１は、ＲＯＭ１２又はストレージ１４に記録されているプログラムにしたがって、上記各構成の制御及び各種の演算処理を行う。本実施形態では、ＲＯＭ１２又はストレージ１４には、データ処理を行なうためのデータ処理プログラムが格納されている。
【００３２】
ＲＯＭ１２は、各種プログラム及び各種データを格納する。ＲＡＭ１３は、作業領域として一時的にプログラム又はデータを記憶する。ストレージ１４は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）又はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）により構成され、オペレーティングシステムを含む各種プログラム、及び各種データを格納する。
【００３３】
入力部１５は、マウス等のポインティングデバイス、及びキーボードを含み、各種の入力を行うために使用される。
【００３４】
表示部１６は、たとえば、液晶ディスプレイであり、各種の情報を表示する。表示部１６は、タッチパネル方式を採用して、入力部１５として機能しても良い。
【００３５】
通信インタフェース１７は、他の機器と通信するためのインタフェースであり、たとえば、イーサネット（登録商標）、ＦＤＤＩ、Ｗｉ−Ｆｉ（登録商標）等の規格が用いられる。
【００３６】
次に、データ処理装置１０の機能構成について説明する。
【００３７】
図３は、データ処理装置の機能構成の例を示すブロック図である。図４は、文書に含まれるコンテンツの構成を示す構成図である。図５は、プラグインの進行状況を示すテーブルを示す図である。
【００３８】
図３に示すように、データ処理装置１０は、機能構成として、進行管理部１０１、プラグイン実行部（個別処理実行部）１０２、プラグイン管理部（個別処理管理部）１０３、記憶部１０４及び更新部１０５を有する。各機能構成は、ＣＰＵ１１がＲＯＭ１２又はストレージ１４に記憶されたデータ処理プログラムを読み出して、ＲＡＭ１３に展開して実行することにより実現される。
【００３９】
進行管理部１０１は、タスクの進行を管理する。具体的には、進行管理部１０１は、処理の進行に従って、実行が完了したタスク、及び実行中のタスクを確認することにより、タスクの進捗を管理する。
【００４０】
プラグイン実行部１０２は、プラグインＰ１〜Ｐ５を実行し、或いは、他の装置にプラグインＰ１〜Ｐ５の処理を実行させる。例えば、プラグイン実行部１０２は、文書データに対して、プラグインＰ２を実行し、文書解析処理を実行する。文書解析処理においては、例えば、図４に示すように、文書を構成するページ及びページを構成するコンテンツ等の文書要素に、文書が分解され、文書要素間の関係が構造化される。図４に示す文書構造では、文書は、「文書メタデータ」及び「ページメタデータ」に分類される。文書メタデータは、文書に固有に割り振られた「文章ＩＤ」、報告書、稟議書、議事録等の文書の属性を示す「文書属性」等を含む。また、ページメタデータは、ページ毎に固有に割り振られた「ページＩＤ」、文書、画像及び図形等のページを構成するコンテンツ（オブジェクト）毎に固有に割り振られた「コンテンツＩＤ」、コンテンツ等の格納先を表す「データ格納先」等を含む。また、ページメタデータは、更に、「コンテンツメタデータ」及び「ページ実データ」に分類される。コンテンツメタデータは、コンテンツ毎に固有に割り振られた「コンテンツＩＤ」、ページにおけるコンテンツの位置（座標）を示す「コンテンツ位置情報座標」、文書、画像及び図形等のコンテンツの種別を示す「属性」等を含む。「ページ実データ」は、元々のページのデータである。
【００４１】
プラグイン管理部１０３は、プラグインＰ１〜Ｐ５の進行を管理する。特に、プラグイン管理部１０３は、プラグインによる処理対象が文書全体ではなく、文書データに含まれるページ又はコンテンツ等の文書要素である場合、ページ毎又はコンテンツ毎にどのプラグインの実行が完了したかを管理する。ここで、プラグイン管理部１０３は、図５に示すようなプラグインの進行状況を示すテーブルを参照し、プラグインＰ１〜Ｐ５が完了する度、及び、コンテンツに対してプラグインＰ１〜Ｐ５を始める度に、図５のテーブルを更新する。なお、プラグイン管理部１０３は、プラグインＰ１〜Ｐ５を一括して管理するように一つの機能構成として設けられても良いし、プラグインＰ１〜Ｐ５をそれぞれ個別に管理するように複数の機能構成として設けられても良い。
【００４２】
記憶部１０４は、各種データを記憶する。記憶部１０４は、例えば、図４に示すような、プラグインＰ２により実行された文書解析処理により得られた文書構造を示す構成情報を記憶する。また、記憶部１０４は、図５に示すような、プラグインの進行状況を示すテーブルを記憶する。
【００４３】
更新部１０５は、プラグインＰ１〜Ｐ５が図４に示す文書要素であるページ又はコンテンツに実行されると、プラグインの実行結果に基づいて、構成情報を更新する。例えば、更新部１０５は、プラグインの実行によりあるコンテンツが削除された場合は、削除されたコンテンツを構成情報から削除する。
【００４４】
次に、データ処理装置１０の作用について説明する。
【００４５】
図６は、データ処理装置によるデータ処理の流れを示すフローチャートである。ＣＰＵ１１がＲＯＭ１２又はストレージ１４からデータ処理プログラムを読み出して、ＲＡＭ１３に展開して実行することにより、データ処理が行なわれる。
【００４６】
ＣＰＵ１１は、初期値として、変数ｉに１を代入する（ステップＳ１０１）。変数ｉは、データ処理装置１０により管理されるタスクのＩＤを示すための数値である。本実施形態では、タスクのＩＤは、Ｔｉとして表され、実行される順に昇順で変数ｉが増加するように、タスクに付与される。最初に実行されるタスクは、タスクＴ１であるため、初期値として、変数ｉに１が代入される。なお、タスクに付与されるＩＤは、上記に限定されず、順序の管理さえできればいかなるＩＤが付与されても良い。
【００４７】
ＣＰＵ１１は、初期値として、変数ｊに１を代入する（ステップＳ１０２）。変数ｊは、プラグイン実行部１０２に実行されるプラグインのＩＤを示すための数値である。本実施形態では、プラグインのＩＤは、Ｐｊとして表され、実行される順に昇順で変数ｊが増加するように、プラグインに付与される。なお、プラグインに付与されるＩＤは、上記に限定されず、順序の管理さえできればいかなるＩＤが付与されても良い。
【００４８】
ＣＰＵ１１は、タスクＴｉを開始する（ステップＳ１０３）。初めてステップＳ１０３を行なう際には、ＣＰＵ１１は、タスクＴ１を開始し、進行管理部１０１として、以降のタスクの進行管理を開始する。
【００４９】
ＣＰＵ１１は、タスクＴｉにおいて実行されるプラグインが複数存在するか否か判断する（ステップＳ１０４）。例えば、図１に示すタスクＴ１を実行する場合、タスクＴ１にはプラグインＰ１しか存在しない。一方、図１に示すタスクＴ３を実行する場合、複数のプラグインＰ３〜Ｐ５が存在する。
【００５０】
複数のプラグインが存在する場合（ステップＳ１０４：ＹＥＳ）、ＣＰＵ１１は、プラグイン管理部１０３として、複数のプラグインを並行処理する（ステップＳ１０５）。複数のプラグインの並行処理の詳細については、図７を参照して後述する。
【００５１】
複数のプラグインが存在しない場合（ステップＳ１０４：ＮＯ）、ＣＰＵ１１は、文書又は文書データに対して、プラグインＰｊを実行し（ステップＳ１０６）、変数ｊを１だけインクリメントする（ステップＳ１０７）。
【００５２】
ＣＰＵ１１は、全タスクが完了したか否か判断する（ステップＳ１０８）。ここで、ＣＰＵ１１は、記憶部１０４に記憶されているタスクの実行計画を参照し、これまでに完了したタスクのＩＤを実行計画に照らして、全タスクの実行が完了したか判断する。
【００５３】
全タスクが完了していない場合（ステップＳ１０８：ＮＯ）、ＣＰＵ１１は、進行管理部１０１として、変数ｉを１だけインクリメントして（ステップＳ１０９）、ステップＳ１０３の処理に戻る。ＣＰＵ１１は、変数ｉが１インクリメントされることにより、タスクが一つ進んだことを管理する。
【００５４】
全タスクが完了した場合（ステップＳ１０８：ＹＥＳ）、ＣＰＵ１１は、データ処理を終了する。
【００５５】
次に、上記のステップＳ１０５における、複数のプラグインの並行処理について詳細に説明する。例えば、図１に示す例では、タスクＴ３の際に、複数のプラグインＰ３〜Ｐ５が実行される。したがって、タスクＴ３の処理まで進むと、ＣＰＵ１１は、ステップＳ１０４において、複数のプラグインが存在すると判断し、ステップＳ１０５の複数プラグイン並行処理に進む。
【００５６】
図７は、複数プラグイン並行処理の流れを示すフローチャートである。なお、同じ処理対象に対して同時に異なるプラグインの処理を実行できないため、複数プラグイン並行処理においては、異なる処理対象が必要となる。従って、複数プラグイン並行処理における処理対象は、文書又は文書データではなく、文書データに複数含まれうるページ又はコンテンツ等の文書要素である。以下では、コンテンツＣ１〜Ｃ３に対して、複数のプラグインＰ３〜Ｐ５の処理が実行される場合を例に説明する。
【００５７】
ＣＰＵ１１は、変数ｐに現在の変数ｊの値を代入する（ステップＳ２０１）。変数ｊは、上述の通り、プラグインのＩＤを示すための値である。現在の変数ｊは、次に実行するプラグインのＩＤを示す値となっている。例えば、これまでに、プラグインＰ２まで完了している場合であれば、次に実行するプラグインは、プラグインＰ３であるため、現在の変数ｊの値は３である。この場合、変数ｐにも３が代入される。
【００５８】
ＣＰＵ１１は、変数ｋに１を代入する（ステップＳ２０２）。変数ｋは、コンテンツのＩＤを示すための数値である。本実施形態では、コンテンツのＩＤは、Ｃｋとして表され、図４に示す文書構造においてコンテンツ毎に固有に割り振られる。
【００５９】
ＣＰＵ１１は、プラグイン実行部１０２として、プラグインＰｐ〜Ｐｊの一部又は全ての処理が未完了のコンテンツＣ１〜Ｃｋに対して、ＩＤ番号が小さいコンテンツほど、ＩＤ番号が大きいプラグインにより処理を実行する（ステップＳ２０３）。例えば、図１のタスクＴ３を開始する場合、次に実行するプラグインＰｊはプラグインＰ３であるため、図７のステップＳ２０１では変数ｐに３が代入されている。また、変数ｋは初期値として１が代入されている。従って、変数ｐと変数ｊがいずれも３であり、変数ｋが１であるため、ステップＳ２０３では、ＣＰＵ１１は、プラグインＰ３が未完了のコンテンツＣ１に対して、プラグインＰ３により処理を実行する。
【００６０】
ＣＰＵ１１は、変数ｊが進行中のタスクにおける最大値か否か判断する（ステップＳ２０４）。変数ｊの最大値とは、現在進行中のタスクにおいて、最後に実行されるプラグインのＩＤを示す値である。例えば、図１のタスクＴ３においては、最後に実行されるプラグインＰｊは、プラグインＰ５である。従って、ステップＳ２０４では、ｊが５であるか否かが判断される。プラグインＰ３しか実行されていない場合であれば、ｊ＝３なので、ｊが最大値ではないと判断される。
【００６１】
変数ｊが最大値ではない場合（ステップＳ２０４：ＮＯ）、ＣＰＵ１１は、変数ｊを１だけインクリメントし（ステップＳ２０５）、ステップＳ２０６に進む。変数ｊが最大値である場合（ステップＳ２０４：ＹＥＳ）、ＣＰＵ１１は、ステップＳ２０６に進む。
【００６２】
ＣＰＵ１１は、変数ｋが最大値か否か判断する（ステップＳ２０６）。ここでは、ＣＰＵ１１は、今回のタスクＴｉの処理において、全てのコンテンツＣｋが処理対象になっているか否かを判断するために、ｋが最大値か否か判断する。従って、最大値は、コンテンツの個数である。なお、ＣＰＵ１１は、図４に示す文書構造を参照することによって、コンテンツの個数、すなわち、ｋの最大値を確認可能である。
【００６３】
変数ｋが最大値でない場合（ステップＳ２０６：ＮＯ）、ＣＰＵ１１は、変数ｋを１だけインクリメントし（ステップＳ２０７）、ステップＳ２０３に戻る。
【００６４】
変数ｋが最大値である場合（ステップＳ２０６：ＹＥＳ）、ＣＰＵ１１は、全てのコンテンツＣ１〜Ｃｋに対して、今回のタスクＴｉで実行する全てのプラグインＰｐ〜Ｐｊが完了したか否か判断する（ステップＳ２０８）。
【００６５】
全コンテンツに対してプラグインＰｐ〜Ｐｊが完了していない場合（ステップＳ２０８：ＮＯ）、ＣＰＵ１１は、ステップＳ２０３に戻る。全コンテンツに対してプラグインＰｐ〜Ｐｊが完了した場合（ステップＳ２０８：ＹＥＳ）、ＣＰＵ１１は、複数プラグイン並行処理を終了し、図６のステップＳ１０８に進む。
【００６６】
上記の複数プラグイン並行処理により、複数のプラグインが並行に実行可能である。図１及び図６〜図８を参照して、並行に実行されるプラグインについて、具体例を用いて説明する。
【００６７】
図８は、プラグインが実行されるタイミングを示す図である。図８では、横軸を単位時間としている。理解の容易のため、いずれのプラグインも同じ単位時間で実行される場合を仮定する。実際には、プラグインの実行に要する時間は、プラグインごとに異なり、図８のように同じ単位時間で完了しない場合もある。
【００６８】
以下に説明する具体例では、図１に示すように、データ処理装置１０は、タスクＴ１〜Ｔ３を管理し、タスクＴ１ではプラグインＰ１が実行され、タスクＴ２ではプラグインＰ２が実行され、タスクＴ３ではプラグインＰ３〜Ｐ５が実行されるとする。また、プラグインＰ１〜Ｐ５の具体的な処理内容として、プラグインＰ１はスキャン処理、プラグインＰ２は文書解析処理、プラグインＰ３は、フォーム解析処理、プラグインＰ４は、コンテンツ削除処理、プラグインＰ５は、光学的文字認識処理であるとする。また、データ処理装置１０により扱われる文書データに含まれるコンテンツは、コンテンツＣ１〜Ｃ３の三つであるとする。プラグインＰ１及びＰ２は、文書（文書データ）全体に対する処理であり、プラグインＰ３〜Ｐ５は、各コンテンツＣ１〜Ｃ３に対する処理である。
【００６９】
以上の具体的な条件に基づいて、図６を参照する。ＣＰＵ１１は、まずタスクＴ１を開始し（ステップＳ１０３）、タスクＴ１には複数のプラグインが含まれない（ステップＳ１０４：ＮＯ）ので、プラグインＰ１を実行する（ステップＳ１０６）。これにより、図８に示すように、時間ｔ１において、文書に対してプラグインＰ１が実行される。
【００７０】
図６に戻って、全タスクが完了していないので（ステップＳ１０８：ＮＯ）、ＣＰＵ１１は、ステップＳ１０３に戻って、タスクＴ２を開始する。タスクＴ２には複数のプラグインが含まれない（ステップＳ１０４：ＮＯ）ので、ＣＰＵ１１は、プラグインＰ２を実行する（ステップＳ１０６）。これにより、図８に示すように、時間ｔ２において、文書に対してプラグインＰ２が実行される。
【００７１】
図６に戻って、全タスクが完了していないので（ステップＳ１０８：ＮＯ）、ＣＰＵ１１は、ステップＳ１０３に戻って、タスクＴ３を開始する。タスクＴ３には複数のプラグインＰ３〜Ｐ５が含まれる（ステップＳ１０４：ＹＥＳ）ので、ＣＰＵ１１は、図７の複数プラグイン並行処理に移行する。
【００７２】
複数プラグイン並行処理では、最初に、ＣＰＵ１１は、変数ｐに３を代入し（ステップＳ２０１）、変数ｋに１を代入する（ステップＳ２０２）。そして、ＣＰＵ１１は、コンテンツＣ１に対して、プラグインＰ３による処理を実行する（ステップＳ２０３）。図８に示すように、時間ｔ３において、コンテンツＣ１に対してプラグインＰ１が実行される。
【００７３】
ＣＰＵ１１は、変数ｊ及び変数ｋを１ずつインクリメントし（ステップＳ２０５、ステップＳ２０７）、ステップＳ２０３に戻る。ＣＰＵ１１は、コンテンツＣ１に対してプラグインＰ４による処理を実行し、コンテンツＣ２に対してプラグインＰ３による処理を実行する（ステップＳ２０３）。これにより、図８に示すように、時間ｔ４において、プラグインＰ３及びＰ４が並行して実行される。
【００７４】
図７に戻って、ＣＰＵ１１は、さらに、変数ｊ及び変数ｋを１ずつインクリメントし（ステップＳ２０５、ステップＳ２０７）、ステップＳ２０３に戻る。ＣＰＵ１１は、コンテンツＣ１に対してプラグインＰ５による処理を実行し、コンテンツＣ２に対してプラグインＰ４による処理を実行し、コンテンツＣ３に対してプラグインＰ３による処理を実行する（ステップＳ２０３）。これにより、図８に示すように、時間ｔ５において、プラグインＰ３〜Ｐ５が並行して実行される。
【００７５】
図７に戻って、ＣＰＵ１１は、変数ｊが５で最大値であり（ステップＳ２０４：ＹＥＳ）、変数ｋが３で最大値である（ステップＳ２０６：ＹＥＳ）ことを判断して、ステップＳ２０８に進む。しかし、コンテンツＣ２に対してはプラグインＰ５が完了しておらず、コンテンツＣ３に対してはプラグインＰ４及びＰ５が完了していない（ステップＳ２０８：ＮＯ）ので、ＣＰＵ１１は、ステップＳ２０３の処理に再び戻る。
【００７６】
ＣＰＵ１１は、コンテンツＣ２に対してプラグインＰ５による処理を実行し、コンテンツＣ３に対してプラグインＰ４による処理を実行する（ステップＳ２０３）。これにより、図８に示すように、時間ｔ６において、プラグインＰ４及びＰ５が並行して実行される。
【００７７】
図７に戻って、ＣＰＵ１１は、再度、変数ｊが５で最大値であり（ステップＳ２０４：ＹＥＳ）、変数ｋが３で最大値である（ステップＳ２０６：ＹＥＳ）ことを確認して、ステップＳ２０８に進む。しかし、コンテンツＣ３に対してはプラグインＰ５が完了していない（ステップＳ２０８：ＮＯ）ので、ＣＰＵ１１は、ステップＳ２０３の処理に再び戻る。
【００７８】
ＣＰＵ１１は、コンテンツＣ３に対して、プラグインＰ５による処理を実行する（ステップＳ２０３）。図８に示すように、時間ｔ７において、プラグインＰ５が実行される。
【００７９】
このように、図６及び図７のフローチャートの処理に従えば、時間ｔ４〜ｔ６の間において、複数のコンテンツＣ１〜Ｃ３に対して並行処理が実現される。なお、同じコンテンツＣ１〜Ｃ３に対して、同時に異なるプラグインＰ３〜Ｐ５の処理が実行されることはない。従って、プラグインＰ３〜Ｐ５は、排他制御の関係を満たしつつ、並行して実行される。
【００８０】
なお、データ処理装置１０は、進行管理部１０１として、タスクの進行を管理する。すなわち、データ処理装置１０は、時間ｔ１が過ぎるまでをタスクＴ１の処理中とし、時間ｔ２が過ぎるまでをタスクＴ２の処理中とし、その後時間ｔ７が過ぎるまでをタスクＴ３の処理中とする。また、ＣＰＵ１１は、更新部１０５として、並行してプラグインＰ３〜Ｐ５が実行される複数の文書要素Ｃ１〜Ｃ３について、構成情報を更新する。構成情報は、処理されたコンテンツＣ１〜Ｃ３について、プラグインＰ３〜Ｐ５がそれぞれ完了する度に排他制御として更新されても良いし、特定の更新タイミングで同時に更新されても良い。
【００８１】
（第２実施形態）
次に、データ処理装置１０について、第２実施形態を説明する。
【００８２】
第２実施形態において、第１実施形態と同じ構成には同様の参照番号を付し、説明を省略する。第２実施形態においても、第１実施形態と同様に、データ処理装置１０は、タスク単位でコンピュータ上の処理の進捗を管理する。
【００８３】
図９は、第２実施形態に係るデータ処理装置がタスクを管理する様子を示す概念図である。
【００８４】
第１実施形態においては、タスクＴ３にのみ複数のプラグインＰ３〜Ｐ５が含まれていた。第２実施形態においては、タスクＴ２及びタスクＴ３に、それぞれ複数のプラグインＰ２及びＰ３、並びにプラグインＰ４及びＰ５が含まれる場合を例示する。なお、プラグインＰ１の処理対象は文書であり、プラグインＰ２〜Ｐ５の処理対象はコンテンツＣ１〜Ｃ３であるものとする。
【００８５】
図１０は、第２実施形態におけるデータ処理の流れを示すフローチャートである。ＣＰＵ１１がＲＯＭ１２又はストレージ１４からデータ処理プログラムを読み出して、ＲＡＭ１３に展開して実行することにより、データ処理が行なわれる。図１１は、第２実施形態におけるプラグインが実行されるタイミングを示す図である。
【００８６】
ＣＰＵ１１は、変数ｊ、変数ｋ及び変数ｐにそれぞれ１を代入する（ステップＳ３０１）。第１実施形態と同様に、変数ｊは、プラグインのＩＤに関し、変数ｋは、コンテンツのＩＤに関する。
【００８７】
ＣＰＵ１１は、次に行なうプラグインＰｊの処理対象が文書又は文書データであるか否か、すなわち、処理対象が文書データに含まれるコンテンツでないか否かを判断する（ステップＳ３０２）。例えば、図９のプラグインＰ１の処理を開始する場合、プラグインＰ１の処理対象は文書であるため、ＣＰＵ１１は、ステップＳ３０２において「ＹＥＳ」と判断する。一方、図９のプラグインＰ２の処理を開始する場合、プラグインＰ２の処理対象はコンテンツであるため、ＣＰＵ１１は、ステップＳ３０２において「ＮＯ」と判断する。
【００８８】
処理対象がコンテンツではなく、文書又は文書データである場合（ステップＳ３０２：ＹＥＳ）、ＣＰＵ１１は、プラグインＰｊの処理を実行し（ステップＳ３０３）、ステップＳ３１０に進む。
【００８９】
処理対象がコンテンツであり、文書又は文書データでない場合（ステップＳ３０２：ＮＯ）、ＣＰＵ１１は、プラグイン実行部１０２として、プラグインＰｐ〜Ｐｊの一部又は全ての処理が未完了のコンテンツＣ１〜Ｃｋに対して、ＩＤ番号が小さいコンテンツほど、ＩＤ番号が大きいプラグインにより処理を実行する（ステップＳ３０４）。例えば、図９のプラグインＰ２の処理を初めて実行する場合、ＣＰＵ１１は、コンテンツＣ１に対して、プラグインＰ１の処理を実行する。
【００９０】
ＣＰＵ１１は、次のプラグインＰ（ｊ＋１）の処理対象が文書又は文書データであるか否か判断する（ステップＳ３０５）。次のプラグインＰ（ｊ＋１）の処理対象が文書等である場合（ステップＳ３０５：ＹＥＳ）、並行処理はできないので、ＣＰＵ１１は、ステップＳ３０７に進む。次のプラグインＰ（ｊ＋１）の処理対象が文書等でない場合（ステップＳ３０５：ＮＯ）、ＣＰＵ１１は、次のプラグインＰ（ｊ+１）も並行処理するように、変数ｊを１だけインクリメントする（ステップＳ３０６）。
【００９１】
ＣＰＵ１１は、変数ｋが最大値か否か判断する（ステップＳ３０７）。ここでは、ＣＰＵ１１は、ステップＳ３０４において全てのコンテンツＣ１〜Ｃ３が処理対象になっているか否かを判断するために、ｋが最大値である３であるか否か判断する。
【００９２】
変数ｋが最大値ではない場合（ステップＳ３０７：ＮＯ）、ＣＰＵ１１は、変数ｋを１だけインクリメントし（ステップＳ３０８）、ステップＳ３０９に進む。変数ｋが最大値である場合（ステップＳ３０７：ＹＥＳ）、ＣＰＵ１１は、ステップＳ３０９に進む。
【００９３】
ＣＰＵ１１は、全コンテンツに対してプラグインＰｐ〜Ｐｊの処理が完了したか否か判断する（ステップＳ３０９）。全コンテンツに対してプラグインＰｐ〜Ｐｊの処理が完了していない場合（ステップＳ３０９：ＮＯ）、ＣＰＵ１１は、ステップＳ３０４に戻る。
【００９４】
全コンテンツに対してプラグインＰｐ〜Ｐｊの処理が完了した場合（ステップＳ３０９：ＹＥＳ）、ＣＰＵ１１は、ステップＳ３１０に進む。
【００９５】
ＣＰＵ１１は、変数ｐに、変数ｊ＋１の値を代入する（ステップＳ３１０）。これにより、変数ｐには、処理が完了したプラグインの次に実行されるプラグインのＩＤに対応する数値が代入される。
【００９６】
ＣＰＵ１１は、全プラグインＰ１〜Ｐ５の処理が完了したか否か判断する（ステップＳ３１１）。全プラグインＰ１〜Ｐ５の処理が完了した場合（ステップＳ３１１：ＹＥＳ）、ＣＰＵ１１は、データ処理を終了する。
【００９７】
全プラグインＰ１〜Ｐ５の処理が完了していない場合（ステップＳ３１１：ＮＯ）、ＣＰＵ１１は、変数ｊを１だけインクリメントし（ステップＳ３１２）、ステップＳ３０２に戻る。
【００９８】
以上のように、データ処理を行なうことで、例えば、図１１に示すように、プラグインＰ１は文書全体に対する処理なので独立で実行される。一方、プラグインＰ２〜Ｐ４は、タスクＴ２及びタスクＴ３間に亘って並行処理される。
【００９９】
なお、データ処理装置１０は、進行管理部１０１としてタスクの進行を管理する。しかし、第２実施形態では、図１１のように、タスクＴ２のプラグインＰ２及びＰ３が完了する前にタスクＴ３のプラグインＰ４及びＰ５が開始する。従って、データ処理装置１０は、全てのコンテンツＣ１〜Ｃ３に対してタスクＴ２のプラグインＰ２及びＰ３の処理が完了するまでを、タスクＴ２の実行中として管理する。或いは、データ処理装置１０は、タスクＴ３のプラグインＰ４が開始するまでをタスクＴ２の実行中として管理しても良い。
【０１００】
上記実施形態では、タスクＴ１〜Ｔ３にプラグインＰ１〜Ｐ５が含まれ、文書、文書データ及びコンテンツＣ１〜Ｃ３を処理する場合を例示して説明した。しかし、言うまでもないが、本発明は、上記具体例に限定されず、タスク、プラグイン及びコンテンツの数に関係なく、本発明は適用可能である。
（第３実施形態）
上記第１実施形態において、図６及び図７により説明した、データ処理装置１０の作用は、以下に説明する、図１２及び図１３の処理により置き換え可能である。以下、第３実施形態における、データ処理装置１０の作用について説明する。
【０１０１】
図１２は、第３実施形態におけるデータ処理装置によるデータ処理の流れを示すフローチャートである。ＣＰＵ１１がＲＯＭ１２又はストレージ１４からデータ処理プログラムを読み出して、ＲＡＭ１３に展開して実行することにより、データ処理が行なわれる。
【０１０２】
ＣＰＵ１１は、初期値として、変数ｉに１を代入する（ステップＳ３０１）。変数ｉは、データ処理装置１０により管理されるタスクのＩＤを示すための数値である。本実施形態では、タスクのＩＤは、Ｔｉとして表され、実行される順に昇順で変数ｉが増加するように、タスクに付与される。最初に実行されるタスクは、タスクＴ１であるため、初期値として、変数ｉに１が代入される。なお、タスクに付与されるＩＤは、上記に限定されず、順序の管理さえできればいかなるＩＤが付与されても良い。
【０１０３】
ＣＰＵ１１は、初期値として、変数ｊに１を代入する（ステップＳ３０２）。変数ｊは、プラグイン実行部１０２に実行されるプラグインのＩＤを示すための数値である。本実施形態では、プラグインのＩＤは、Ｐｊとして表され、実行される順に昇順で変数ｊが増加するように、プラグインに付与される。なお、プラグインに付与されるＩＤは、上記に限定されず、順序の管理さえできればいかなるＩＤが付与されても良い。
【０１０４】
ＣＰＵ１１は、タスクＴｉを開始する（ステップＳ３０３）。初めてステップＳ３０３を行なう際には、ＣＰＵ１１は、タスクＴ１を開始し、進行管理部１０１として、以降のタスクの進行管理を開始する。
【０１０５】
ＣＰＵ１１は、タスクＴｉに存在するプラグインＰｊを実行する（ステップＳ３０４）。ＣＰＵ１１は、プラグインＰｊの完了を待つ必要があるか否かを判断する（ステップＳ３０５）。完了を待つ必要がある場合とは、例えば、プラグインＰｊが文書中のページに対する処理を行なう場合である。この場合、ページの処理が終わらないと、次のプラグインが、例え、ページ中の一コンテンツに対する処理を実行するものであっても、次のプラグインは実行できない。
【０１０６】
プラグインＰｊの完了を待つ必要がない場合（ステップＳ３０５：ＮＯ）、ＣＰＵ１１は、ステップＳ３０７の処理に進む。一方、プラグインＰｊの完了を待つ必要がある場合（ステップＳ３０５：ＹＥＳ）、ＣＰＵ１１は、プラグインＰｊ完了したか否か判断する（ステップＳ３０６）。プラグインＰｊが完了しない場合（ステップＳ３０６：ＮＯ）、ＣＰＵ１１は、プラグインＰｊが完了するまで待機する。プラグインＰｊが完了した場合（ステップＳ３０６：ＹＥＳ）、ＣＰＵ１１は、ステップＳ３０７の処理に進む。
【０１０７】
ＣＰＵ１１は、現在処理中のタスクＴｉの全プラグインによる処理が完了したか否か判断する（ステップＳ３０７）。タスクＴｉの全プラグインが完了していない場合（ステップＳ３０７：ＮＯ）、ＣＰＵ１１は、変数ｊを１だけインクリメントして（ステップＳ３０８）、ステップＳ３０４の処理に戻る。これにより、次のプラグインが実行されることになる。
【０１０８】
タスクＴｉの全プラグインが完了した場合（ステップＳ３０７：ＹＥＳ）、ＣＰＵ１１は、タスクＴｉの完了により、全てのタスクの処理が完了したか否か判断する（ステップＳ３０９）。全てのタスクが完了していない場合（ステップＳ３０９：ＮＯ）、ＣＰＵ１１は、変数ｉを１だけインクリメントして（ステップＳ３１０）、ステップＳ３０３の処理に戻る。これにより、次のタスクが実行されることになる。
【０１０９】
次に、図１２のステップＳ３０４における、プラグインＰｊの実行について詳細に説明する。
【０１１０】
図１３は、プラグインの実行処理の流れを示すフローチャートである。
【０１１１】
ＣＰＵ１１は、変数ｋに１を代入する（ステップＳ４０１）。変数ｋは、コンテンツのＩＤを示すための数値である。本実施形態では、コンテンツのＩＤは、Ｃｋとして表され、図４に示す文書構造においてコンテンツ毎に固有に割り振られる。
【０１１２】
ＣＰＵ１１は、コンテンツＣｋに対して、プラグインＰｊの処理を実行する（ステップＳ４０２）。ＣＰＵ１１は、コンテンツＣｋに対する処理の完了を待つ必要があるか否か判断する（ステップＳ４０３）。コンテンツＣｋに対する処理の完了を待つ必要がある場合とは、例えば、コンテンツＣｋに対する変更が、他のコンテンツに影響する場合である。このような場合、コンテンツＣｋに対する処理が独立して完了する必要がある。
【０１１３】
コンテンツＣｋに対する処理の完了を待つ必要がない場合（ステップＳ４０３：ＮＯ）、ＣＰＵ１１は、ステップＳ４０５の処理に進む。一方、コンテンツＣｋの完了を待つ必要がある場合（ステップＳ４０３：ＹＥＳ）、ＣＰＵ１１は、コンテンツＣｋに対する処理が完了したか否か判断する（ステップＳ４０４）。コンテンツＣｋに対する処理が完了しない場合（ステップＳ４０４：ＮＯ）、ＣＰＵ１１は、コンテンツＣｋに対する処理が完了するまで待機する。コンテンツＣｋに対する処理が完了した場合（ステップＳ４０４：ＹＥＳ）、ＣＰＵ１１は、ステップＳ４０５の処理に進む。
【０１１４】
ＣＰＵ１１は、現在処理中のプラグインＰｊにより、全コンテンツに対する処理が完了したか否か判断する（ステップＳ４０５）。全コンテンツに対する処理が完了していない場合（ステップＳ４０５：ＮＯ）、ＣＰＵ１１は、変数ｋを１だけインクリメントして（ステップ４０６）、ステップＳ４０２の処理に戻る。これにより、次のコンテンツに対するプラグインＰｊの処理が実行されることになる。
【０１１５】
上記の処理は、専用のハードウェア回路によっても実現することもできる。この場合には、１つのハードウェアで実行されてもよいし、複数のハードウェアで実行されてもよい。
【０１１６】
また、データ処理装置１０を動作させるプログラムは、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等のコンピュータ読み取り可能な記録媒体によって提供されてもよいし、インターネット等のネットワークを介してオンラインで提供されてもよい。この場合、コンピュータ読み取り可能な記録媒体に記録されたプログラムは、通常、メモリ又はストレージ等に転送され記憶される。また、このプログラムは、たとえば、単独のアプリケーションソフトとして提供されてもよいし、データ処理装置１０の一機能としてその各装置のソフトウェアに組み込んでもよい。
【符号の説明】
【０１１７】
１０   データ処理装置
１１   ＣＰＵ
１２   ＲＯＭ
１３   ＲＡＭ
１４   ストレージ
１５   入力部
１６   表示部
１７   通信インタフェース
１８   バス
１０１ 進行管理部
１０２ プラグイン実行部
１０３ プラグイン管理部
１０４ 記憶部
１０５ 更新部
【図１】
2020004091.tif 000003
【図２】
2020004091.tif 000004
【図３】
2020004091.tif 000005
【図４】
2020004091.tif 000006
【図５】
2020004091.tif 000007
【図６】
2020004091.tif 000008
【図７】
2020004091.tif 000009
【図８】
2020004091.tif 000010
【図９】
2020004091.tif 000011
【図１０】
2020004091.tif 000012
【図１１】
2020004091.tif 000013
【図１２】
2020004091.tif 000014
【図１３】
2020004091.tif 000015