(57)【特許請求の範囲】
【請求項１】
画像に対しての処理を行うフロー内の処理間の依存関係を保つように、該フローを分割する分割手段と、
前記分割手段によって分割された処理群を、他の情報処理装置に割り当てる割当手段と、
処理の順序の定義に基づいて、依存関係にある処理の順序を入れ替える入替手段
を具備し、
前記割当手段は、前記入れ替えられた処理群を割り当て、
前記定義には、ノイズ処理を最初に行うことが定義されている
ことを特徴とする情報処理装置。
【請求項２】
各情報処理装置における処理速度又は過去の処理時間を用いて、前記分割手段によって分割された処理群を処理するための時間を算出する算出手段
をさらに具備し、
前記割当手段は、前記算出手段によって算出された処理時間に基づいて、割当処理を行う
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記割当手段は、前記算出手段によって算出された処理時間から、最も遅い時間に終了する情報処理装置に、前記フローにおける最終処理を割り当てる
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
コンピュータを、
画像に対しての処理を行うフロー内の処理間の依存関係を保つように、該フローを分割する分割手段と、
前記分割手段によって分割された処理群を、他の情報処理装置に割り当てる割当手段と、
処理の順序の定義に基づいて、依存関係にある処理の順序を入れ替える入替手段
として機能させ、
前記割当手段は、前記入れ替えられた処理群を割り当て、
前記定義には、ノイズ処理を最初に行うことが定義されている
情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理プログラムに関する。
【背景技術】
【０００２】
特許文献１には、外部から入力したデータを加工するデータ入出力装置において、外部から入力されるデータの構造の種類が増加する毎に新たなデータ入出力装置を用意する必要を無くすことで、製造コストの削減と、外部からデータの多様化への対応が短期間かつ低コストで行えるデータ入出力装置を提供することを課題とし、データを入力するための入力部と、識別子とそれに対応する加工規則の組み合わせを複数記憶した規則部と、入力されたデータに付加された識別子に対応する加工規則を規則部から読み出し、読み出した規則に基づいて入力されたデータを加工する加工部と、前記加工部で処理したデータを出力する出力部を備えることが開示されている。
【０００３】
特許文献２には、フローベースの制御に加え、個々のリンクにおける転送制御ポリシーを加味したパケット転送を実現することを課題とし、通信システムは、フローを特定するための照合規則と、前記照合規則に適用する処理内容とを対応付けた処理規則に従って、受信パケットを処理する転送ノードと、フロー毎にパケットの転送経路を計算する経路計算部と、前記転送ノードに適用させるパケットの転送制御ポリシーを管理する転送制御ポリシー管理部と、を備え、前記計算した経路に従って、前記転送制御ポリシーの内容を反映した処理規則を設定する制御装置と、を含むことが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−０６３４７６号公報
【特許文献２】特表２０１４−５０４０４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、フロー内の処理を他の情報処理装置に分散させる場合に、フロー内の処理間の依存関係が保たれないような処理の割り当てが行われてしまうことを抑制するようにした情報処理装置及び情報処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項１の発明は、画像に対しての処理を行うフロー内の処理間の依存関係を保つように、該フローを分割する分割手段と、前記分割手段によって分割された処理群を、他の情報処理装置に割り当てる割当手段と、処理の順序の定義に基づいて、依存関係にある処理の順序を入れ替える入替手段を具備し、前記割当手段は、前記入れ替えられた処理群を割り当て、前記定義には、ノイズ処理を最初に行うことが定義されていることを特徴とする情報処理装置である。
【０００８】
請求項２の発明は、各情報処理装置における処理速度又は過去の処理時間を用いて、前記分割手段によって分割された処理群を処理するための時間を算出する算出手段をさらに具備し、前記割当手段は、前記算出手段によって算出された処理時間に基づいて、割当処理を行うことを特徴とする請求項１に記載の情報処理装置である。
【０００９】
請求項３の発明は、前記割当手段は、前記算出手段によって算出された処理時間から、最も遅い時間に終了する情報処理装置に、前記フローにおける最終処理を割り当てることを特徴とする請求項２に記載の情報処理装置である。
【００１０】
請求項４の発明は、コンピュータを、画像に対しての処理を行うフロー内の処理間の依存関係を保つように、該フローを分割する分割手段と、前記分割手段によって分割された処理群を、他の情報処理装置に割り当てる割当手段と、処理の順序の定義に基づいて、依存関係にある処理の順序を入れ替える入替手段として機能させ、前記割当手段は、前記入れ替えられた処理群を割り当て、前記定義には、ノイズ処理を最初に行うことが定義されている情報処理プログラムである。
【発明の効果】
【００１１】
請求項１の情報処理装置によれば、フロー内の処理を他の情報処理装置に分散させる場合に、フロー内の処理間の依存関係が保たれないような処理の割り当てが行われてしまうことを抑制することができる。
【００１３】
請求項２の情報処理装置によれば、各情報処理装置での処理時間に基づいて、割当処理を行うことができる。
【００１４】
請求項３の情報処理装置によれば、最も遅い時間に終了する情報処理装置に、フローにおける最終処理を割り当てることができる。
【００１５】
請求項４の情報処理プログラムによれば、フロー内の処理を他の情報処理装置に分散させる場合に、フロー内の処理間の依存関係が保たれないような処理の割り当てが行われてしまうことを抑制することができる。
【図面の簡単な説明】
【００１６】
【図１】本実施の形態の構成例についての概念的なモジュール構成図である。
【図２】本実施の形態を利用したシステム構成例を示す説明図である。
【図３】本実施の形態による処理例を示すフローチャートである。
【図４】本実施の形態による処理例を示す説明図である。
【図５】本実施の形態による処理例を示す説明図である。
【図６】処理依存関係定義テーブルのデータ構造例を示す説明図である。
【図７】処理時間テーブルのデータ構造例を示す説明図である。
【図８】本実施の形態による処理例を示すフローチャートである。
【図９】本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図１は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア（コンピュータ・プログラム）、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム（コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム）、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するという意味である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、１モジュールを１プログラムで構成してもよいし、複数モジュールを１プログラムで構成してもよく、逆に１モジュールを複数プログラムで構成してもよい。また、複数モジュールは１コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって１モジュールが複数コンピュータで実行されてもよい。なお、１つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続（データの授受、指示、データ間の参照関係等）の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じて定まることの意を含めて用いる。「予め定められた値」が複数ある場合は、それぞれ異なった値であってもよいし、２以上の値（もちろんのことながら、全ての値も含む）が同じであってもよい。また、「Ａである場合、Ｂをする」という意味を有する記載は、「Ａであるか否かを判断し、Ａであると判断した場合はＢをする」の意味で用いる。ただし、Ａであるか否かの判断が不要である場合を除く。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク（一対一対応の通信接続を含む）等の通信手段で接続されて構成されるほか、１つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」（社会システム）にすぎないものは含まない。
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、外部記憶媒体、通信回線を介した記憶装置、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）内のレジスタ等を含んでいてもよい。
【００１８】
本実施の形態である情報処理装置１００（以下、サーバーともいう）は、複数の処理によって構成されている１つのフローを他の情報処理装置（以下、サーバーともいう）に分散させて処理させるものであって、図１の例に示すように、フロー受付モジュール１０５、データ受付モジュール１１０、フロー分割モジュール１１５、依存関係定義記憶モジュール１２５、処理時間算出モジュール１３０、処理速度記憶モジュール１３５、サーバー割当モジュール１４０、サーバー通信モジュール１４５を有している。
なお、ここでフローとは、システム（例えば、後述する画像処理装置２１０、情報処理装置１００、サーバー２５０等に構成されているシステム）に投入されたデータを、どのように処理するかを定義したものであり、複数のプラグイン機能の組み合わせで定義される。
そして、ジョブとは、フローにしたがって、自動的に実行される処理の単位の意である。
また、プラグインとは、フローにおける特定の機能の意であり、例えば、入力検知、ドキュメント処理等がある。
【００１９】
フローに応じて処理の入力、加工、配信を行う情報処理装置がある。例えば、ジョブの高速化や高度化のために１つのサーバーでは処理しきれない場合がある。このような場合に対応するために、複数のサーバー間で処理を分散させて行うこと（いわゆる分散システム）が必要である。
しかし、処理を分散させるために、フロー内の複数の処理を分割する必要があるが、その処理には、依存関係（例えば、ある処理Ｂを行うためには、処理Ａが行われた後でなければならない等）がある処理があり、その依存関係がある処理は１つの情報処理装置で行う必要がある。
また、分散先である情報処理装置の処理状況によっては、一部の情報処理装置に対して負荷が偏り、システム全体として最適なパフォーマンスとならない場合がある。分散先である情報処理装置の台数を増やし、処理のピーク時の負荷を軽減する方法も考えられるが、処理が不要な場合には無駄な資産となってしまう。
情報処理装置１００は、分散処理を行うために、フロー内の処理を分割する。例えば、フロー定義内のプラグインの依存関係を考慮してフローを分割する。そして、各情報処理装置での現在の稼働状況、過去の処理実績からフローの処理完了の見込み時間を算出する。処理完了見込みの早い情報処理装置で、分割されたフロー処理を実施させるように割り振る。そして、処理が割り振られた情報処理装置のうち、最も遅い時間に終了する情報処理装置に、最終結果をマージさせて配信する処理を割り振る。
【００２０】
フロー受付モジュール１０５は、フロー分割モジュール１１５と接続されている。フロー受付モジュール１０５は、対象となるフローを受け付ける。フローは、複数の処理によって構成されている。フローは、ユーザーの操作によって作成されたものであってもよいし、記憶装置に予め記憶されたものであってもよい。記憶装置に予め記憶されたものである場合は、受け付けるフローは、例えば、予め定められたフローであってもよいし、ユーザーの操作によって指定されたフローであってもよいし、データ受付モジュール１１０で受け付けたデータの種別に対応するフローであってもよい。
【００２１】
データ受付モジュール１１０は、処理時間算出モジュール１３０、サーバー通信モジュール１４５と接続されている。データ受付モジュール１１０は、フローの処理対象となるデータを受け付ける。データとして、テキストデータの他に、画像データ等であってもよい。データを受け付けるとは、例えば、スキャナ、カメラ等で画像を読み込むこと、ファックス等で通信回線を介して外部機器から画像を受信すること、ハードディスク（コンピュータに内蔵されているものの他に、ネットワークを介して接続されているもの等を含む）等に記憶されているデータを読み出すこと等が含まれる。画像としては、２値画像、多値画像（カラー画像を含む）であってもよい。受け付ける画像は、１枚であってもよいし、複数枚であってもよい。また、画像の内容として、ビジネスに用いられる文書、広告宣伝用のパンフレット等であってもよい。例えば、画像処理装置からその画像処理装置が読み込んだ文書の画像データ等を受け付ける。
【００２２】
フロー分割モジュール１１５は、処理入替モジュール１２０を有しており、フロー受付モジュール１０５、依存関係定義記憶モジュール１２５、処理時間算出モジュール１３０、サーバー割当モジュール１４０と接続されている。フロー分割モジュール１１５は、フロー受付モジュール１０５によって受け付けられたフロー内の処理間の依存関係を保つように、そのフローを分割する。フロー内の処理間の依存関係の定義は、依存関係定義記憶モジュール１２５内に記憶されている。
処理入替モジュール１２０は、依存関係定義記憶モジュール１２５内に記憶されている処理の順序の定義に基づいて、依存関係にある処理の順序を入れ替える。
【００２３】
依存関係定義記憶モジュール１２５は、フロー分割モジュール１１５と接続されている。依存関係定義記憶モジュール１２５は、フロー内の処理間の依存関係の定義、フロー内の処理の順序の定義を記憶している。例えば、処理依存関係定義テーブル６００を記憶している。図６は、処理依存関係定義テーブル６００のデータ構造例を示す説明図である。処理依存関係定義テーブル６００は、プラグイン欄６１０、依存関係欄６２０、プラグイン・タイプ欄６３０を有している。プラグイン欄６１０は、プラグインを記憶している。依存関係欄６２０は、そのプラグインと依存関係があるプラグインを記憶している。また、依存関係欄６２０では、フロー内の処理の順序の定義を定めるようにしてもよい。例えば、依存関係欄６２０内のプラグインＢは、プラグイン欄６１０内のプラグインＡに対して、先に行うこと（つまり、プラグインＢによる処理結果に対して、プラグインＡによる処理を行うこと）を意味している。もちろんのことながら、逆の関係（つまり、プラグインＡによる処理結果に対して、プラグインＢによる処理を行うこと）であってもよい。さらに、依存関係欄６２０内に複数のプラグインがある場合は、その順番で処理を行うことを意味している。依存関係欄６２０内に２つのプラグインＢ１、プラグインＢ２が、この順番で記憶されている場合は、プラグインＢ１による処理結果に対して、プラグインＢ２による処理を行い、その処理結果に対して、プラグインＡによる処理を行うことを意味している。具体的には、処理依存関係定義テーブル６００の２行目は、「文字認識」と「ノイズ除去」と「回転」の間には、「文字認識」の前に「ノイズ除去」、「回転」を行う必要があり、その処理順序は、「ノイズ除去」、「回転」、「文字認識」であるという依存関係にある。プラグイン・タイプ欄６３０は、そのプラグインのプラグイン・タイプを記憶している。プラグインには、「入力」、「加工」、「配信」の３タイプ（種類）がある。
【００２４】
処理時間算出モジュール１３０は、データ受付モジュール１１０、フロー分割モジュール１１５、処理速度記憶モジュール１３５、サーバー割当モジュール１４０と接続されている。処理時間算出モジュール１３０は、各情報処理装置における処理速度又は過去の処理時間を用いて、フロー分割モジュール１１５によって分割された処理群（１つ以上の処理）を処理するための時間を算出する。具体的には、データ受付モジュール１１０が受け付けたデータの種類、データ量を、処理速度記憶モジュール１３５に記憶されている各情報処理装置における処理速度又は過去の処理時間（ログ情報）に適用させて、各情報処理装置でフロー分割モジュール１１５によって分割された処理群を行う処理時間を算出する。
また、処理時間算出モジュール１３０は、各情報処理装置に、その情報処理装置における現在の処理状況における処理時間を問い合わせるようにしてもよい。そして、問い合わせが行われた各情報処理装置では、その処理状況に応じて、フロー分割モジュール１１５によって分割された処理群を行う処理時間を算出し、それを処理時間算出モジュール１３０に返信するようにしてもよい。
【００２５】
処理速度記憶モジュール１３５は、処理時間算出モジュール１３０と接続されている。処理速度記憶モジュール１３５は、各情報処理装置における処理速度又は過去の処理時間を記憶している。例えば、処理時間テーブル７００を記憶している。図７は、処理時間テーブル７００のデータ構造例を示す説明図である。処理時間テーブル７００は、プラグイン欄７１０、処理時間（ｐｅｒ  ｄｏｃ  ｓｉｚｅ）欄７２０、文書タイプ欄７３０を有しており、情報処理装置毎にある。プラグイン欄７１０は、プラグイン（プラグイン名称、プラグインＩＤ（ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）等）を記憶している。処理時間（ｐｅｒ  ｄｏｃ  ｓｉｚｅ）欄７２０は、その情報処理装置におけるそのプラグインでの処理時間（ｐｅｒ  ｄｏｃ  ｓｉｚｅ）を記憶している。対象とするデータの文書タイプ毎（文書タイプ欄７３０）の処理時間を示している。文書タイプ欄７３０は、対象とするデータの文書タイプを記憶している。
処理時間テーブル７００の処理時間（ｐｅｒ  ｄｏｃ  ｓｉｚｅ）欄７２０内のデータは、予め測定された値であってもよいし、過去の処理時間を計測した値の統計値（平均値、中央値、最頻値等）であってもよい。
【００２６】
サーバー割当モジュール１４０は、フロー分割モジュール１１５、処理時間算出モジュール１３０、サーバー通信モジュール１４５と接続されている。サーバー割当モジュール１４０は、フロー分割モジュール１１５によって分割された処理群を、他の情報処理装置に割り当てる。
また、サーバー割当モジュール１４０は、処理入替モジュール１２０によって入れ替えられた処理群を、他の情報処理装置に割り当てるようにしてもよい。
また、サーバー割当モジュール１４０は、処理時間算出モジュール１３０によって算出された処理時間に基づいて、割当処理を行うようにしてもよい。例えば、各処理群に対して、その処理群の処理時間が最も短い情報処理装置を選択するようにしてもよい。
また、サーバー割当モジュール１４０は、処理時間算出モジュール１３０によって算出された処理時間から、最も遅い時間に終了する情報処理装置に、フローにおける最終処理を割り当てるようにしてもよい。最終処理として、各情報処理装置での処理結果をマージする処理、そのマージ結果（最終結果のデータ）を、目的とする情報処理装置（単なる記憶装置等であってもよい）へ配信する処理がある。したがって、最も遅い時間に終了する情報処理装置Ａが最終処理を行えば、他の情報処理装置Ｂは、そのフローから解放され（つまり、他の情報処理装置Ｂが情報処理装置Ａによる処理結果を待つことなく）、他の処理に対応することができるようになる。
サーバー通信モジュール１４５は、データ受付モジュール１１０、サーバー割当モジュール１４０と接続されている。サーバー通信モジュール１４５は、サーバー割当モジュール１４０による割り当て結果にしたがって、その情報処理装置に対して、データ受付モジュール１１０によって受け付けられたデータ、割り当てられた処理群を送信し、処理を行わせる。
なお、情報処理装置１００自身も、処理群を割り当てる情報処理装置としてもよい。
【００２７】
フローの対象データを受け付ける画像処理装置２１０、フローのジョブ処理を行う複数のサーバー２５０と、サーバーへのジョブの振り分けを行う情報処理装置１００によって構成されているシステムである例を示す。
図２（Ａ）に示す例では、情報処理装置１００Ａは、画像処理装置２１０Ａ、画像処理装置２１０Ｂ、画像処理装置２１０Ｃ、サーバー２５０Ａ、サーバー２５０Ｂ、サーバー２５０Ｃ、サーバー２５０Ｄと接続されている。情報処理装置１００Ｂは、画像処理装置２１０Ｄ、画像処理装置２１０Ｅ、画像処理装置２１０Ｆ、サーバー２５０Ａ、サーバー２５０Ｂ、サーバー２５０Ｇ、サーバー２５０Ｈと接続されている。ユーザーの操作によって、画像処理装置２１０で文書が読み込まれ、フローの選択が行われ、画像処理装置２１０から情報処理装置１００に対して指示が行われる。そして、情報処理装置１００では、そのフローを分割して、分割後の処理群を複数のサーバー２５０に割り振る。割り振られたサーバー２５０で処理が行われる。
図２（Ｂ）に示す例では、情報処理装置１００Ａ、画像処理装置２１０Ａ、画像処理装置２１０Ｂ、画像処理装置２１０Ｃ、サーバー２５０Ａ、サーバー２５０Ｂ、サーバー２５０Ｃ、サーバー２５０Ｅは、通信回線２９０を介してそれぞれ接続されている。通信回線２９０は、無線、有線、これらの組み合わせであってもよく、例えば、通信インフラとしてのインターネット、イントラネット等であってもよい。また、情報処理装置１００、サーバー２５０による機能は、クラウドサービスとして実現してもよい。
【００２８】
図３は、本実施の形態による処理例を示すフローチャートである。
ステップＳ３０２では、ユーザーの操作によって、画像処理装置２１０で文書２０５を読み込み、情報処理装置１００へ文書データを投入する。
ステップＳ３０４では、情報処理装置１００は、ユーザーの操作又は文書データに応じて、処理するフローを選択する。
ステップＳ３０６では、情報処理装置１００は、処理分割可能な単位にフローを分割する。このとき分割後のフローに処理ＩＤ（ＦｌｏｗＩＤ）を付与する。
ステップＳ３０８では、情報処理装置１００は、文書データのサイズ、フォーマット（文書タイプ）、フロー処理の種別（プラグイン）から、各サーバーにおける予測処理時間を算出する。
【００２９】
ステップＳ３１０では、情報処理装置１００は、サーバー２５０Ａ、サーバー２５０Ｂに対し、予測処理時間及び分割後のフロー定義情報、文書情報（サイズ、フォーマット）を送信する。
ステップＳ３１２では、サーバー２５０Ａ、サーバー２５０Ｂは、自サーバーの現在の処理状況、ジョブのキュー状態、及び文書情報から予測処理時間を算出し、情報処理装置１００に応答する。
ステップＳ３１４では、情報処理装置１００は、ステップＳ３１２の結果から自身（情報処理装置１００）で処理するべきか否かを判断する。
【００３０】
ステップＳ３１６では、情報処理装置１００は、サーバー２５０Ａ、サーバー２５０Ｂに対し、分割後のフロー定義情報、文書データ、ＳｅｒｖｅｒＩＤ、処理ＩＤを送信する。
ステップＳ３１８では、各サーバー（サーバー２５０Ａ、サーバー２５０Ｂ）で処理を実行する。文書サイズあたりの処理時間を計測し、履歴としてデータを保存する。前述の処理時間テーブル７００内のデータを生成するための実績データとなる。
ステップＳ３２０では、情報処理装置１００は、処理ＩＤを基に各サーバー（サーバー２５０Ａ、サーバー２５０Ｂ）から得た結果をマージする。
ステップＳ３２２では、情報処理装置１００は、最終的な処理結果を配信する。例えば、フローが文字認識処理を行うものである場合は、文書２０５の画像データと文字認識結果を文書管理装置に送信する。
【００３１】
図４は、本実施の形態による処理例を示す説明図である。フローの例を示すものである。
このフローでは、入力処理４１０、加工処理４２０、配信処理４４０の処理が行われる。そして、入力処理４１０には、フォルダー入力処理４１２が含まれている。加工処理４２０には、回転処理４２２、ノイズ除去処理４２４、文字認識処理４２６、ＰＤＦ化処理４２８、属性取得処理４３０が含まれている。配信処理４４０には、文書管理処理４４２が含まれている。
このフローは、具体的には、以下のような処理を行う。画像処理装置２１０で読み取られた画像が、予め定められたフォルダーに格納される。フォルダー入力処理４１２では、そのフォルダーから画像を入力する。加工処理４２０では、その画像を回転処理４２２（傾き補正）し、その回転結果に対してノイズ除去処理４２４を行い、そのノイズ除去結果に対して文字認識処理４２６を行い、画像のＰＤＦ化処理４２８を行い、画像の属性取得処理４３０を行い。そして、文字認識処理４２６、ＰＤＦ化処理４２８、属性取得処理４３０の処理結果をマージして、文書管理処理４４２（文書管理装置への格納）を行う。
【００３２】
図５は、本実施の形態による処理例を示す説明図である。情報処理装置１００が、処理依存関係定義テーブル６００に応じて、図４の例に示したフローを分割した結果を示している。具体的には、３つの処理群に分割している。
処理依存関係定義テーブル６００から「文字認識処理４２６」、「回転処理４２２」、「ノイズ除去処理４２４」は依存関係があり、「ノイズ除去処理４２４」と「回転処理４２２」は依存関係があることから、図５（Ａ）の例に示すような加工処理５２０に分割する。他の処理（ＰＤＦ化処理４２８、属性取得処理４３０）では、依存関係がないこと（依存関係欄６２０が空白であること）から、図５（Ｂ）、図５（Ｃ）の例に示すように加工処理５３０、加工処理５４０に分けている。つまり、依存関係がない処理は、その処理単独の処理群となるように分割が行われる。加工処理５２０には、ノイズ除去処理５２２、回転処理５２４、文字認識処理５２６が含まれている。加工処理５３０にはＰＤＦ化処理５３２が含まれている。加工処理５４０には、属性取得処理５４２が含まれている。
【００３３】
また、処理依存関係定義テーブル６００の依存関係欄６２０における順序の定義が、フロー内の処理の順序と異なる場合は、処理依存関係定義テーブル６００の依存関係欄６２０にしたがってフロー内の処理の順序を入れ替えることを行う。具体的には、回転処理４２２とノイズ除去処理４２４の順序が、処理依存関係定義テーブル６００の依存関係欄６２０における順序の定義と異なるので、図５（Ａ）の例に示すように、ノイズ除去処理５２２、回転処理５２４、文字認識処理５２６の順序で処理を行うように処理群を修正する。一般的に、ノイズ除去を最初に行って、処理対象を減少させることが望ましい。そこで、処理依存関係定義テーブル６００の依存関係欄６２０では、ノイズ除去、回転処理、文字認識の順序が定義されている。そして、図４の例で示したフローは、ユーザーによって作成されたものであり、画像処理等に精通していない場合がある。そこで、ノイズ除去、回転処理、文字認識の順序になるように、分割後の処理順序を変更している。
また、分割された処理群（加工処理５２０、加工処理５３０、加工処理５４０）には、それぞれ処理ＩＤ（ＦｌｏｗＩＤ）が付与される。
【００３４】
図８は、本実施の形態による処理例を示すフローチャートである。最終処理（各処理群の処理結果をマージして、配信する処理）を、情報処理装置１００以外のサーバー２５０に行わせるようにした処理例である。
まず、図３の例に示したフローチャート内のステップＳ３０２〜ステップＳ３１６までの処理を行う。
ステップＳ８１８では、分割された各フロー（各処理群）の各サーバー２５０、情報処理装置１００での完了時刻を予測する。例えば、開始時刻を「１６：００」とした場合、ＦｌｏｗＩＤ：ｘｘｘｘｘｘ−１の加工処理５２０（図５（Ａ））のサーバー２５０Ａでの完了予測は「１６：１０」であり、ＦｌｏｗＩＤ：ｘｘｘｘｘｘ−２の加工処理５３０（図５（Ｂ））の情報処理装置１００での完了予測は「１６：０５」であり、ＦｌｏｗＩＤ：ｘｘｘｘｘｘ−３の加工処理５４０（図５（Ｃ））のサーバー２５０Ｂでの完了予測は「１６：０８」である。したがって、最も遅い時間に完了するＦｌｏｗＩＤ：ｘｘｘｘｘｘ−１の処理を行うサーバー２５０Ａに最終処理を行わせるように割り振りを行う。
【００３５】
ステップＳ８２０−１では、サーバー２５０Ａは、ＦｌｏｗＩＤ：ｘｘｘｘｘｘ−１の処理を実行する。文書サイズあたりの処理時間を計測し、履歴としてデータを保存する。前述の処理時間テーブル７００内のデータを生成するための実績データとなる。
ステップＳ８２０−２では、情報処理装置１００は、ＦｌｏｗＩＤ：ｘｘｘｘｘｘ−２の処理を実行する。文書サイズあたりの処理時間を計測し、履歴としてデータを保存する。前述の処理時間テーブル７００内のデータを生成するための実績データとなる。
ステップＳ８２０−３では、サーバー２５０Ｂは、ＦｌｏｗＩＤ：ｘｘｘｘｘｘ−３の処理を実行する。文書サイズあたりの処理時間を計測し、履歴としてデータを保存する。前述の処理時間テーブル７００内のデータを生成するための実績データとなる。
ステップＳ８２２では、サーバー２５０Ａは、処理ＩＤを基に各サーバー（情報処理装置１００、サーバー２５０Ｂ）から得た結果をマージする。
ステップＳ８２４では、サーバー２５０Ａが、最終的な処理結果を配信する。
【００３６】
なお、本実施の形態としてのプログラムが実行されるコンピュータのハードウェア構成は、図９に例示するように、一般的なコンピュータであり、具体的にはパーソナルコンピュータ、サーバーとなり得るコンピュータ等である。つまり、具体例として、処理部（演算部）としてＣＰＵ９０１を用い、記憶装置としてＲＡＭ９０２、ＲＯＭ９０３、ＨＤ９０４を用いている。ＨＤ９０４として、例えばハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を用いてもよい。フロー受付モジュール１０５、データ受付モジュール１１０、フロー分割モジュール１１５、処理入替モジュール１２０、処理時間算出モジュール１３０、サーバー割当モジュール１４０、サーバー通信モジュール１４５等のプログラムを実行するＣＰＵ９０１と、そのプログラムやデータを記憶するＲＡＭ９０２と、本コンピュータを起動するためのプログラム等が格納されているＲＯＭ９０３と、依存関係定義記憶モジュール１２５、処理速度記憶モジュール１３５としての機能を有する補助記憶装置（フラッシュメモリ等であってもよい）であるＨＤ９０４と、キーボード、マウス、タッチパネル、マイク等に対する利用者の操作に基づいてデータを受け付ける受付装置９０６と、ＣＲＴ、液晶ディスプレイ、スピーカー等の出力装置９０５と、ネットワークインタフェースカード等の通信ネットワークと接続するための通信回線インタフェース９０７、そして、それらをつないでデータのやりとりをするためのバス９０８により構成されている。これらのコンピュータが複数台互いにネットワークによって接続されていてもよい。
【００３７】
前述の実施の形態のうち、コンピュータ・プログラムによるものについては、本ハードウェア構成のシステムにソフトウェアであるコンピュータ・プログラムを読み込ませ、ソフトウェアとハードウェア資源とが協働して、前述の実施の形態が実現される。
なお、図９に示すハードウェア構成は、１つの構成例を示すものであり、本実施の形態は、図９に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア（例えば特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）等）で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続しているような形態でもよく、さらに図９に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、特に、パーソナルコンピュータの他、携帯情報通信機器（携帯電話、スマートフォン、モバイル機器、ウェアラブルコンピュータ等を含む）、情報家電、ロボット、複写機、ファックス、スキャナ、プリンタ、複合機（スキャナ、プリンタ、複写機、ファックス等のいずれか２つ以上の機能を有している画像処理装置）などに組み込まれていてもよい。
【００３８】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通等のために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク（ＤＶＤ）であって、ＤＶＤフォーラムで策定された規格である「ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭ等」、ＤＶＤ＋ＲＷで策定された規格である「ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等」、コンパクトディスク（ＣＤ）であって、読出し専用メモリ（ＣＤ−ＲＯＭ）、ＣＤレコーダブル（ＣＤ−Ｒ）、ＣＤリライタブル（ＣＤ−ＲＷ）等、ブルーレイ・ディスク（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、光磁気ディスク（ＭＯ）、フレキシブルディスク（ＦＤ）、磁気テープ、ハードディスク、読出し専用メモリ（ＲＯＭ）、電気的消去及び書換可能な読出し専用メモリ（ＥＥＰＲＯＭ（登録商標））、フラッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリーカード等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、又は無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、又は別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して記録されていてもよい。また、圧縮や暗号化等、復元可能であればどのような態様で記録されていてもよい。
【符号の説明】
【００３９】
１００…情報処理装置
１０５…フロー受付モジュール
１１０…データ受付モジュール
１１５…フロー分割モジュール
１２０…処理入替モジュール
１２５…依存関係定義記憶モジュール
１３０…処理時間算出モジュール
１３５…処理速度記憶モジュール
１４０…サーバー割当モジュール
１４５…サーバー通信モジュール
２０５…文書
２１０…画像処理装置
２５０…サーバー
２９０…通信回線
【図１】
0006565391.tif 000002
【図２】
0006565391.tif 000003
【図３】
0006565391.tif 000004
【図４】
0006565391.tif 000005
【図５】
0006565391.tif 000006
【図６】
0006565391.tif 000007
【図７】
0006565391.tif 000008
【図８】
0006565391.tif 000009
【図９】
0006565391.tif 000010