以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰返さない。
図1は、本発明の実施の形態の1つにおける画像処理システムの全体概要を示す図である。図1を参照して、画像処理システム1は、画像処理装置として機能する複合機(以下、「MFP」という)100と、パーソナルコンピューター(以下、「PC」という)200A,200B,200C,200Dと、サーバー300と、を含む。MFP(Multi Function Peripheral)100およびPC200A,200B,200C,200Dそれぞれは、ネットワーク3に接続される。なお、図ではネットワーク3に1台のMFP100が接続され、4台のPC200,200A,200B,200C,200Dが接続される例を示しているが、MFP100およびPC200A,200B,200C,200Dの数はこれに限定されるものではなく、それぞれ1台以上であればよい。また、MFP100に代えて、別の画像処理装置を用いることができる。画像処理装置の一例としては、スキャナ装置、ファクシミリ装置、プリンター等がある。
ネットワーク3は、ローカルエリアネットワーク(LAN)であり、接続形態は有線または無線を問わない。また、ネットワーク3は、LANに限らず、ワイドエリアネットワーク(WAN)、公衆交換電話網(PSTN)、インターネット等であってもよい。
ネットワーク3は、インターネット5と接続されている。サーバー300は、インターネット5に接続されている。MFP100およびPC200A〜200Dそれぞれは、ネットワーク3およびインターネット5を介してサーバー300と通信可能である。
PC200A,200B,200C,200Dは、一般的なコンピューターである。それらのハードウエア構成および機能は周知なので、ここでは説明を繰り返さない。PC200A,200B,200C,200Dそれぞれは、MFP100に対応するドライバープログラムがインストールされており、ドライバープログラムを実行することにより、MFP100を制御して、MFP100に、画像処理、画像形成処理、原稿読取処理等を実行させることが可能である。画像処理は、文字認識処理を含む。
本実施の形態における画像処理システム1においては、サーバー300は、画像データを文字認識する文字認識処理を実行するサービスを提供する。MFP100は、画像データをサーバー300に送信し、サーバー300に画像データに対して文字認識処理を実行させ、サーバー300から文字認識処理を実行した結果を受信する。文字認識処理を実行した結果は、例えば、文字列と、文字列の配置を含む情報である。文字認識処理を実行した結果は、テキストデータであってもよい。MFP100が、サーバー300に送信する画像データは、原稿を読み取って得られる画像データ、MFP100に記憶された画像データを含み、それらの画像データの一部を含む。
図2は、MFPの外観を示す斜視図である。図3は、MFPのハードウエア構成の一例を示すブロック図である。図2および図3を参照して、MFP100は、自動原稿搬送装置(以下「ADF」という)121と、原稿読取部123と、原稿読取部123が原稿を読み取って出力する画像データに基づいて用紙等に画像を形成する画像形成部125と、画像形成部125に用紙を供給する給紙部127と、画像が形成された用紙を処理する後処理部128と、ユーザーインターフェースとしての操作パネル129と、メイン回路110と、を含む。
ADF121は、原稿給紙トレイ上にセットされた複数枚の原稿を1枚ずつ自動的に原稿読取部123のプラテンガラス上に設定された所定の原稿読み取り位置まで搬送し、原稿読取部123により原稿画像が読み取られた原稿を原稿排紙トレイ上に排出する。原稿読取部123は、原稿読取位置に搬送されてきた原稿に光を照射する光源と、原稿で反射した光を受光する光電変換素子とを含み、原稿のサイズに応じて原稿画像を走査する。光電変換素子は、受光した光を電気信号である画像データに変換して、画像形成部125に出力する。給紙部127は、給紙トレイに収納された用紙を画像形成部125に搬送する。
画像形成部125は、周知の電子写真方式により画像を形成するものであって、外部から受信された画像データ、または、原稿読取部123から入力される画像データにシェーディング補正などの各種のデータ処理を施し、データ処理後の画像データに基づいて、給紙部127により搬送される用紙に画像を形成する。
後処理部128は、画像が形成された用紙を排紙する。後処理部128は、複数の排紙トレイを有し、画像が形成された用紙をソートして排紙することが可能である。また、後処理部128は、パンチ穴加工部、ステープル加工部を備えており、排紙された用紙にパンチ穴加工、またはステープル加工することが可能である。また、MFP100は、その上面にユーザーとのユーザーインターフェースとしての操作パネル129を備えている。
メイン回路110は、CPU111と、通信インターフェース(I/F)部112と、ROM(Read Only Memory)113と、RAM(Random Access Memory)114と、大容量記憶装置としてのハードディスクドライブ(HDD)116と、ファクシミリ部117と、CD(Compact Disk)−ROM119Aが装着される外部記憶装置119と、を含む。CPU111は、自動原稿搬送装置121、原稿読取部123、画像形成部125、給紙部127、後処理部128および操作パネル129と接続され、MFP100の全体を制御する。
ROM113は、CPU111が実行するプログラム、またはそのプログラムを実行するために必要なデータを記憶する。RAM114は、CPU111がプログラムを実行する際の作業領域として用いられる。また、RAM114は、原稿読取部123から連続的に送られてくる読取データ(画像データ)を一時的に記憶する。
操作パネル129は、MFP100の上面に設けられる。操作パネル129は、表示部131と操作部133とを含む。表示部131は、LCD、有機ELD(Electro−Luminescence Display)等のディスプレイであり、ユーザーに対する指示メニューや取得した画像データに関する情報等を表示する。操作部133は、複数のキーを備え、キーに対応するユーザーの操作による各種の指示、文字、数字などのデータの入力を受け付ける。操作部133は、表示部131の表示面の位置を検出するタッチパネル135をさらに含む。タッチパネル135は、表示部131の上面または下面に設けられ、ユーザーにより指示された位置の座標をCPU111に出力する。
通信I/F部112は、MFP100をネットワーク3に接続し、MFP100を外部の装置と接続するためのインターフェースである。CPU111は、通信I/F部112を介してネットワーク3に接続されたPC200,200A,200B,200C,200Dとの間で通信し、データを送受信する。また、通信I/F部112は、ネットワーク3を介してインターネット5に接続されたサーバー300等のコンピューターと通信が可能である。
ファクシミリ部117は、公衆交換電話網(PSTN)に接続され、ファクシミリデータを送受信する。ファクシミリ部117は、原稿読取部123により読み取られた画像データまたはHDD116に記憶されたデータをファクシミリデータに変換して、PSTNに接続されたファクシミリ装置に送信する。また、ファクシミリ部117は、受信されたファクシミリデータをHDD116に記憶するか、画像形成部125にファクシミリデータの画像を用紙に形成させる。
外部記憶装置119は、CD−ROM119Aが装着される。CPU111は、外部記憶装置119を介してCD−ROM119Aにアクセス可能である。CPU111は、外部記憶装置119に装着されたCD−ROM119Aに記録されたプログラムをRAM114にロードして実行する。なお、CPU111が実行するプログラムは、CD−ROM119Aに記録されたプログラムに限られず、HDD116に記憶されたプログラムをRAM114にロードして実行するようにしてもよい。この場合、ネットワーク3に接続された他のコンピューターが、MFP100のHDD116に記憶されたプログラムを書き換える、または、新たなプログラムを追加して書き込むようにしてもよい。さらに、MFP100が、ネットワークに接続された他のコンピューターからプログラムをダウンロードして、そのプログラムをHDD116に記憶するようにしてもよい。ここでいうプログラムは、CPU111が直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
図4は、MFPが備えるCPUが有する機能の一例を示すブロック図である。図4に示す機能は、MFP100が備えるCPU111がROM113、HDD116またはCD−ROM119Aに記憶された文字認識処理プログラムを実行することによりCPU111に形成される。図4を参照して、CPU111は、画像データ取得部51と、フォーマット取得部52と、出力単位分割部53と、作業スケジュール生成部55と、タスク管理部57と、基準時間取得部59と、文字認識依頼部61と、処理実行部63と、実行結果出力部65と、を含む。
文字認識依頼部61は、サーバー300に文字認識処理の実行を依頼する。具体的には、後述するタスク管理部57から画像データが入力され、その画像データを含む依頼情報を、通信I/F部112を介してサーバー300に送信する。サーバー300においては、MFP100から依頼情報を受信すると、依頼情報に含まれる画像データに対して文字認識処理を実行し、実行結果を返信する。文字認識依頼部61は、依頼情報を送信したサーバー300から実行結果を受信すると、受信された実行結果を実行結果出力部65に出力する。
処理実行部63は、MFP100が有する複数の機能に対応する処理を実行する。複数の機能は、限定するものではないが、文字認識処理を実行する機能、コピー処理を実行する機能、プリント処理を実行する機能、ファクシミリ処理を実行する機能を含む。処理実行部63は、後述するタスク管理部57から画像データが入力され、その画像データに対して文字認識処理を実行し、実行結果を実行結果出力部65に出力する。処理実行部63は、ADF121、原稿読取部123、画像形成部125、給紙部127、後処理部128を、制御し、画像形成処理を実行する。例えば、ユーザーがコピー指示を操作部133に入力すれば、原稿読取部123に原稿の画像を読み取らせ、画像形成部125に読み取られた原稿の画像を用紙に形成させる。また、ユーザーがHDD116に記憶されたデータのプリントする指示を操作部133に入力すれば、画像形成部125を制御して、HDD116に記憶されたデータのうちユーザーにより指示されたデータの画像を用紙に形成させる。また、処理実行部63は、通信I/F部112が外部の装置、例えばPC200からプリントデータを受信すれば、画像形成部125を制御して、プリントデータの画像を用紙に形成させる。さらに、ファクシミリ部117がファクシミリデータを受信する場合、画像形成部125を制御して、ファクシミリデータの画像を用紙に形成させる。
処理実行部63は、複数の機能にそれぞれ対応する処理のうち2以上を実行する指示を受け付ける場合、2以上の処理を所定の順序で実行する。複数の機能各々に優先度が予め割り当てられており、処理実行部63は、2以上の処理のうち優先度の高い機能に対する処理を、優先度の低い機能に対する処理よりも先に実行する。ここでは、文字認識処理を実行機能の優先度が最も低く設定されている。このため、処理実行部63は、文字認識処理を実行している最中に、他の機能の処理を実行する指示が入力される場合、文字認識処理を一時中止し、他の機能の処理を実行する。処理実行部63は、その後、他の機能の処理が終了すると、中止していた文字認識処理を再開する。
サーバー300が実行する文字認識処理と、処理実行部63が実行する文字認識処理とは、異なる。同じ画像データを、サーバー300が処理する場合と、処理実行部63が処理する場合とで、処理時間が異なる。サーバー300の能力と、処理実行部63の能力が異なるからである。能力の違いは、フォントの種類、対応可能な言語によって異なる。また、サーバー300においては、MFP100との間でデータを送受信する時間が必要となる。
画像データ取得部51は、画像データを取得する。具体的には、画像データ取得部51は、原稿読取部123が原稿を読み取って出力する画像データを取得する。画像データ取得部51は、取得された画像データを、出力単位分割部53に出力する。原稿読取部123は、複数枚の原稿を連続して読み取る場合、1枚の原稿を読み取った画像データを、原稿の枚数だけつなぎ合わせた単一の画像データを出力する。ここで、原稿読取部123が1枚の原稿を読み取って出力する画像データの単位をページという。原稿読取部123が複数枚の原稿を連続して読み取る場合、画像データ取得部51が原稿読取部123から取得する画像データは、複数枚の原稿と同じ数のページの画像データを含む。画像データ取得部51は、HDD116に記憶された画像データが、ユーザーにより指示される場合、HDD116に記憶された画像データを取得する。HDD116に記憶された画像データは、原稿読取部123が原稿読み取って出力する画像データであってもよいし、ファクシミリ部117が受信したファクシミリデータであってもよいし、PC200A〜200Dのいずれかから受信された画像データであってもよい。
フォーマット取得部52は、ユーザーにより指定されたフォーマットを取得する。原稿中には、文字または/および数字が記述される。原稿に記述される文字列は、言語および/またはフォントが異なる場合があり、数字はフォントが異なる場合がある。言語およびフォントの違いによって、処理実行部63またはサーバー300が文字認識処理を実行する処理速度が異なる場合がある。フォーマットは、原稿に含まれる複数の属性領域と、複数の属性領域各々に含まれる文字列の言語、文字列および数列それぞれのフォント、および文字数を定める。文字数は、文字列および数列の数であり、その属性領域に含まれる最大の文字数である。なお、文字数は、属性領域に含まれる平均の文字数としてもよい。属性領域は、文字認識処理を実行する単位である。1つの属性領域に含まれる文字列は同一の言語であることが好ましく、1つの属性領域に含まれる文字列および数列は同一のフォントであることが好ましい。
HDD116に1以上のフォーマットを予め記憶し、ユーザーがHDD116に記憶された1以上のフォーマットのうちから1つを選択する操作を操作部133に入力すれば、フォーマット取得部52は、選択されたフォーマットをHDD116から読み出すことにより取得する。フォーマット取得部52は、取得されたフォーマットを、作業スケジュール生成部55に出力する。
なお、過去に原稿読取部123が原稿を読み取った画像データに文字認識処理を実行した時点で、その原稿に含まれる文字列の言語および文字列または数列のフォントが解るので、原稿読取部123が読み取った原稿のフォーマットを生成してHDD116に実績として記憶することができる。この場合には、フォーマット取得部52は、原稿読取部123が新たな原稿を読み取って得られる画像データを解析して、その原稿に対応するフォーマットを、HDD116に記憶されたフォーマットのうちから抽出することにより取得する。
出力単位分割部53は、画像データ取得部51から入力される画像データを、出力単位に分割する。画像データが複数のページを含む場合、出力単位をページに設定し、画像データを複数のページに分割する。出力単位分割部53は、分割されたページ単位の画像データを、タスク管理部57に順に出力する。ここでは、原稿読取部123が、同一のフォーマットの複数の原稿を読み取る場合を例に説明する。この場合、画像データ取得部51は、フォーマットが同じ複数のページの画像データを取得するので、出力単位分割部53は、画像データ取得部51から入力される画像データを、ページ単位の画像データに分割し、複数ページの画像データをページごとに順に属性領域分割部67に出力する。
属性領域分割部67と、出力単位分割部53からページ単位の画像データが入力され、ページ単位の画像データを複数の属性領域に分割し、複数の属性領域をタスク管理部57に出力する。属性領域は、ページ単位の画像データの一部である。
基準時間取得部59は、サーバー300および処理実行部63が文字認識処理を実行する基準時間を取得する。基準時間取得部59は、サーバー300および処理実行部63それぞれの基準時間を、作業スケジュール生成部55に出力する。基準時間は、言語、フォント別に、予め定められた数の文字列または数列を、文字認識するのに要する時間である。したがって、基準時間は、言語、フォント別に、複数ある。基準時間は、HDD116に予め記憶しておくようにしてもよいし、サーバー300から取得するようにしてもよい。また、文字認識依頼部61が実際に属性領域をサーバー300に実行させて処理時間を計時し、計時した処理時間からサーバー300の基準時間を算出するようにし、処理実行部63に実際に属性領域を文字認識処理させて処理時間を計時し、計時した処理時間から処理実行部63の基準時間を算出するようにしてもよい。
作業スケジュール生成部55は、フォーマット取得部52から原稿のフォーマットが入力され、基準時間取得部59から処理実行部63の基準時間とサーバー300の基準時間とが入力される。作業スケジュール生成部55は、フォーマットで定められる複数の属性領域それぞれを処理単位部分として、文字認識するためにサーバー300およびMFP100のいずれかに割り当てた作業スケジュールを生成する。作業スケジュールは、複数の処理単位部分(属性領域)ごとに、処理を実行する装置を識別するための装置識別情報と、装置ごとに1以上の処理単位部分を実行する順番とを含む。処理を実行する装置は、サーバー300およびMFP100のいずれかである。作業スケジュール生成部55は、作業スケジュールをタスク管理部57に出力する。
作業スケジュール生成部55は、最適化部69を含む。最適化部69は、複数の属性領域それぞれを処理単位部分とし、複数の処理単位部分ごとに、サーバー300および処理実行部63に割り当てた作業スケジュールを生成する。最適化部69は、複数の処理単位部分ごとに、原稿のフォーマットによってその処理単位部分が対応する属性領域に定められた言語およびフォントを特定し、基準時間取得部59から入力されるサーバー300の基準時間およびMFP100の基準時間のうちから特定された言語およびフォントに対応する基準時間をそれぞれ決定する。そして、最適化部69は、サーバー300の基準時間およびMFP100の基準時間を用いて、複数の処理単位部分それぞれに対してサーバー300が文字認識処理した場合の処理時間と、MFP100が文字認識処理した場合の処理時間とを算出する。最適化部69は、1ページごとに(1つの出力単位ごとに)、そのページの画像データに含まれる複数の属性領域それぞれを処理単位部分として、その処理単位部分をサーバー300およびMFP100のいずれかに割り当てた複数の組を生成し、生成された複数の組のうち、MFP100に割り当てた1以上の処理単位部分を処理する第1の時間と、サーバー300に割り当てられた1以上の処理単位部分を処理する第2の時間との差が最小となる組を、決定する。最適化部69は、作業スケジュールをタスク管理部57に出力する。なお、MFP100が文字認識処理を実行する場合、CPU111が文字認識プログラムを実行するタスクである処理実行部63が文字認識処理を実行する。
タスク管理部57は、属性領域分割部67から複数の属性領域が入力され、作業スケジュール生成部55から作業スケジュールが入力される。タスク管理部57は、作業スケジュールに従って、複数の処理単位部分を文字認識するためのタスクを生成する。タスク管理部57は、処理依頼部71と、文字認識制御部73と、終了時間予測部75と、スケジュール再生成部77と、を含む。
処理依頼部71は、属性領域分割部67から入力される複数の属性領域のうち、作業スケジュールにより定められたサーバー300に割り当てられた処理単位部分に対応する属性領域を、文字認識依頼部61に出力する。作業スケジュールによってサーバー300に複数の処理単位部分が割り当てられている場合、作業スケジュールによって定められた順に処理単位部分を選択し、選択した処理単位部分に対応する属性領域を文字認識依頼部61に出力する。文字認識依頼部61は、処理依頼部71から処理単位部分に対応する属性領域が入力されるごとに、属性領域を含む依頼情報を、通信I/F部112を介してサーバー300に送信する。サーバー300においては、MFP100から依頼情報を受信すると、依頼情報に含まれる属性領域に対して文字認識処理を実行し、実行結果を返信する。文字認識依頼部61は、依頼情報を送信したサーバー300から実行結果を受信すると、受信された実行結果を実行結果出力部65に出力する。
文字認識制御部73は、作業スケジュールにより定められたMFP100に割り当てられた1以上の処理単位部分のうちから1つを順に選択する。文字認識制御部73は、属性領域分割部67から入力される複数の属性領域のうち、選択された処理単位部分に対応する属性領域を処理実行部63に出力する。処理実行部63は、文字認識制御部73から属性領域が入力されることに応じて、属性領域を文字認識処理する。上述したように処理実行部63は、文字認識処理とは別の処理を実行する場合がある。処理実行部63は、文字認識処理の実行を開始してから別の処理を実行する場合、別の処理を特定するジョブ情報を終了時間予測部75に出力する。ジョブ情報は、処理を識別するための処理識別情報と、画像形成する枚数と、を含む。
終了時間予測部75は、処理実行部63からジョブ情報が入力されることに応じて、処理実行部63が実行中の処理単位部分に対応する属性領域の文字認識処理を終了するまでの終了時間を予測する。具体的には、処理実行部63が実行中の文字認識処理を終了するまでの残時間を算出し、ジョブ情報に含まれる画像形成する枚数からジョブが終了するまでの中断時間を算出し、残時間と中断時間との合計を、終了時間として算出する。終了時間予測部75は、予測した終了時間をスケジュール再生成部77に出力する。
スケジュール再生成部77は、終了時間予測部75から終了時間が入力される場合、作業スケジュール生成部66によって生成された作業スケジュールによって定められた複数の処理単位部分のうち未処理の1以上の処理単位部分を、終了時間が経過するまでの間はサーバー300に割り当て、終了時間が経過した後はMFP100とサーバー300のいずれかに割り当てた作業スケジュールを生成する。終了時間が経過するまでは、処理実行部63は、文字認識処理を実行できない。このため、1ページの画像データをできるだけ早く文字認識するために、処理実行部63が文字認識処理以外の処理を実行している間は、作業スケジュールによってMFP100に割り当てられた処理単位部分に対応する属性領域を、サーバー300に文字認識処理を実行させるように作業スケジュールを変更する。
スケジュール再生成部77は、処理単位分割部81と、再割当部83と、中止指示部85と、を含む。処理単位分割部81は、作業スケジュール生成部55から入力される作業スケジュールによりMFP100に割り当てられた1以上の処理単位部分のうち未処理の処理単位部分を複数の分割部分に分割し、複数の分割部分を新たな処理単位部分に設定する。未処理の処理単位部分が複数存在する場合には、1つの処理単位部分を分割する。未処理の複数の処理単位部分から分割対象となる処理単位部分を任意に選択してもよいが、処理実行部63が文字認識処理を実行する時間が最大の処理単位部分を選択するのが好ましい。なお、処理単位部分を、フォーマットで予め定めておくようにしてもよい。処理単位部分は、処理実行部63またはサーバー300に文字認識処理を実行させる処理単位である。処理単位部分を複数の分割部分に等分すればよい。処理単位分割部81は、処理単位部分を分割した複数の分割部分を、新たな処理単位部分に設定し、新たに処理単位部分設定された複数の分割部分を含む、未処理の複数の処理単位部分を、再割当部83に出力する。
再割当部83は、処理単位分割部81から未処理の複数の処理単位部分が入力され、基準時間取得部59から処理実行部63の基準時間とサーバー300の基準時間とが入力される。再割当部83は、処理単位分割部81から入力される未処理の複数の処理単位部分それぞれを、サーバー300およびMFP100のいずれかに割り当てた作業スケジュールを生成する。作業スケジュールは、未処理の複数の処理単位部分(属性領域)ごとに、処理を実行する装置を識別するための装置識別情報と、装置ごとに1以上の処理単位部分を実行する順番とを含む。タスク管理部57は、再割当部83によって生成された作業スケジュールに従って、未処理の複数の処理単位部分を文字認識するためのタスクを生成する。
再割当部83は、終了時間予測部75から入力される終了時間内に、複数の処理単位部分のうち未処理の1以上の処理単位部分および処理実行部63が実行中の処理単位部分のすべてをサーバー300に割り当てできる場合、複数の処理単位部分のうち未処理の1以上の処理単位部分および処理実行部63が実行中の処理単位部分のすべてをサーバー300に割り当てた作業スケジュールに変更する。この場合、タスク管理部57は、再割当部83によって生成された作業スケジュールに従って、未処理の複数の処理単位部分にそれぞれ対応する複数の属性領域の全てをサーバー300に文字認識させるタスクを生成する。具体的には、処理依頼部71は、未処理の複数の処理単位部分にそれぞれ対応する複数の属性領域の全てを、文字認識依頼部61に出力する。
再割当部83は、未処理の1以上の処理単位部分および処理実行部63が実行中の処理単位部分のすべてをサーバー300に割り当てた作業スケジュールに変更する場合、中止指示部85に中止指示を出力する。中止指示部85は、中止指示が入力される場合、処理実行部63に実行中の属性領域の文字認識処理の中止を指示する。処理実行部63は、中止指示部85から中止が指示されると、実行中の別の処理が終了した後に、実行を中断している文字認識処理を実行しない。
実行結果出力部65は、文字認識依頼部61からサーバー300によって文字認識処理が実行された実行結果が入力され、処理実行部63から実行結果が入力される。実行結果出力部65は、文字認識依頼部61から入力される実行結果と、処理実行部63から入力される実行結果とを結合し、結合した実行結果を出力する。実行結果出力部65は、1ページの画像データに相当する実行結果が、文字認識依頼部61または処理実行部63から入力されるまで、それらを蓄積し、1ページの画像データに相当する実行結果が蓄積されることに応じて、それらを結合することによって、1ページの画像データに相当する実行結果を生成する。実行結果出力部65は、1ページの画像データに相当する実行結果を、表示部131に表示する。なお、実行結果を、HDD116に実行結果を記憶するようにしてもよいし、通信I/F部112を介して、外部のコンピューターに送信するようにしてもよい。
図5は、原稿のフォーマットの一例を示す図である。図5を参照して、原稿500は、10個の属性領域A〜属性領域Jを含む。
図6は、属性領域別の処理時間の一例を示す図である。図6を参照して、図5に示した属性領域A〜属性領域Jに対するMFP100およびサーバー300の処理時間を示す。MFP100の処理時間を、ハッチングを付した棒グラフで示し、サーバー300の処理時間を無地の棒グラフで示す。
図7は、作業スケジュールの一例を示す図である。図7においては、横方向左から右に向かって時間の流れを示し、1ページ分の作業スケジュールを示している。図7を参照して、上段にMFP100の作業スケジュールを示し、下段にサーバー300の作業スケジュールを示す。作業スケジュールのそれぞれの枠の上段に付された符号P1は、第1ページを示し、その下段に付された符号A〜Jは、属性領域A〜Jをそれぞれ示す。具体的には、MFP100の作業スケジュールで枠601は、上段に符号P1、下段に符号A〜Eが付されており、第1ページの属性領域A〜EがMFP100に割り当てられていることを示す。また、MFP100の作業スケジュールで枠602は、上段に符号P1、下段に符号F,Iが付されており、第1ページの属性領域F,IがMFP100に割り当てられていることを示す。また、サーバー300の作業スケジュールで枠611は、上段に符号P1、下段に符号G,Hが付されており、第1ページの属性領域G,Hがサーバー300に割り当てられていることを示す。また、サーバー300の作業スケジュールで枠612は、上段に符号P1、下段に符号Jが付されており、第1ページの属性領域Jがサーバー300に割り当てられていることを示す。
このため、図7に示す作業スケジュールでは、MFP100およびサーバー300それぞれが1ページ分の画像データの文字認識処理を終了する時刻の差がゼロとなっている。その結果、1ページ分の文字認識処理を実行する時間をできるだけ短くすることができる。
図8は、変更後の作業スケジュールの一例を示す第1の図である。図8においては、MFP100が図7に示した作業スケジュールにしたがって第1ページの属性領域A〜Cを実行し、属性領域Eを実行している最中に、文字認識処理とは別の他のジョブが実行される場合を例に示している。MFP100の変更後の作業スケジュールにおいて、ハッチングで示す枠が他のジョブを実行する期間を示す。この場合、図7に示したMFP100の作業スケジュールの枠601が2つの枠601A,601Bに変更される。枠601Aは、MFP100が文字認識処理を終了した属性領域として、第1ページの属性領域A〜Cと、属性領域Eのうち文字認識処理が終了した部分E’とを含む。枠601Bは、MFP100に割り当てられた属性領域Eのうち文字認識処理が終了していない残りの部分E’’を示す。
図7に示したMFP100の作業スケジュールの枠602が、枠602Aおよび枠602Bに変更される。枠602Aは、MFP100に割り当てられた属性領域Iの一部(分割部分)I’を示す。
サーバー300の作業スケジュールは、図7に示したサーバー300の作業スケジュールの枠611と枠612との間に、枠602Bが追加される。枠602Bは、図7に示した作業スケジュールでMFP100に割り当てられた属性領域Iのうち、枠602AによってMFP100に割り当てられた部分以外の部分(分割部分)I’’を示す。
このため、変更された作業スケジュールでは、MFP100が文字認識処理以外の処理を実行する場合であっても、MFP100およびサーバー300それぞれが1ページ分の文字認識処理を終了する時刻をできるだけ短くすることができる。その結果、1ページ分の文字認識処理を実行する時間をできるだけ短くすることができる。
図9は、変更後の作業スケジュールの一例を示す第2の図である。図9においては、MFP100が図7に示した作業スケジュールにしたがって第1ページの属性領域A〜Cを実行し、属性領域Eを実行している最中に、別のジョブが実行される場合を例に示している。MFP100の変更後の作業スケジュールにおいて、ハッチングで示す枠が別のジョブを実行する期間を示し、その期間は、図7に示した期間よりも長く、サーバー300が未処理の属性領域の全てと、MFP100が実行中の属性領域とを実行する時間よりも長い場合を示している。
この場合、図7に示したMFP100の作業スケジュールの枠601が2つの枠601A,631に変更される。枠601Aは、MFP100が文字認識処理を終了した第1ページの属性領域A〜Cと、属性領域Eの文字認識処理を終了した部分E’とを含む。枠631は、MFP100が実行中の属性領域Eのすべてをサーバー300が文字認識処理する部分を示す。
サーバー300の作業スケジュールは、図7に示したサーバー300の作業スケジュールにおける枠611と枠612との間に、枠631と、枠632とが追加される。枠631は、図7に示した作業スケジュールではMFP100に割り当てられていた実行中の属性領域Eをサーバー300が文字認識処理する部分を示す。枠632は、図7に示した作業スケジュールではMFP100に割り当てられた枠602に示される属性領域F,Iを、サーバー300が文字認識処理する部分を示す。
このため、変更された作業スケジュールでは、MFP100が文字認識処理以外の処理を実行する場合であっても、MFP100およびサーバー300が1ページ分の文字認識処理を終了する時刻をできるだけ近くすることができる。その結果、1ページ分の文字認識処理を実行する時間をできるだけ短くすることができる。
図10は、タスク管理処理の流れの一例を示すフローチャートである。タスク管理処理は、MFP100が備えるCPU111がROM113、HDD116またはCD−ROM119Aに記憶された文字認識処理プログラムを実行することによりCPU111により実行される処理である。図10を参照して、CPU111は、原稿を読み取る(ステップS01)。ユーザーがADF121に原稿をセットし、操作部133が備えるスタートキーを指示すれば、原稿を読み取る。ここでは、複数枚の原稿を読み取る場合を例に説明する。次のステップS02においては、原稿読取部123が原稿を読み取って出力する画像データを取得する。画像データは、複数枚の原稿に対応する複数のページを含む。
ステップS03においては、画像データをページ単位(出力単位)に分割する。画像データを、複数のページの画像データに分割する。次のステップS04においては、原稿のフォーマットを取得する。ユーザーがHDD116に記憶された1以上のフォーマットのうちから1つを選択する操作を操作部133に入力する場合、ユーザーにより選択されたフォーマットをHDD116から読み出すことにより取得する。そして、基準時間を取得する(ステップS05)。サーバー300およびMFP100それぞれが文字認識処理を実行する基準時間を取得する。HDD116に予め記憶された、サーバー300およびMFP100それぞれの基準時間を取得する。基準時間は、言語、フォント別に、予め定められた数の文字列または数列を、文字認識するのに要する時間である。したがって、基準時間は、言語、フォント別に、複数ある。
ステップS06においては、作業スケジュールを生成する。ステップS04において取得されたフォーマットで定められる複数の属性領域それぞれを処理単位部分に設定し、複数の処理単位部分それぞれを、サーバー300およびMFP100のいずれかに割り当てた作業スケジュールを生成する。ステップS05において得られたサーバー300で文字認識処理を実行する際の基準時間およびMFP100で文字認識処理を実行する際の基準時間を用いて、複数の処理単位部分それぞれに対して、サーバー300が文字認識処理した場合の処理時間と、MFP100が文字認識処理した場合の処理時間とを算出する。1つのページの画像データに含まれる複数の処理隊部分それぞれを、サーバー300およびMFP100のいずれかに割り当てた複数の組を生成し、生成された複数の組のうち、MFP100に割り当てた1以上の処理単位部分を処理する第1の時間と、サーバー300に割り当てられた1以上の処理単位部分を処理する第2の時間との差が最小となる組を、決定することによって、作業スケジュールを生成する。そして、生成された作業スケジュールを基準の作業スケジュールとしてHDD116に記憶し(ステップS07)、処理をステップS08に進める。
ステップS08においては、処理対象となるページの画像データを選択し、処理をステップS09に進める。ステップS09においては、処理対象に選択されたページの画像データを、フォーマットで定められた複数の属性領域に分割する。そして、作業スケジュールをリセットし(ステップS10)、処理をステップS11に進める。ステップS07においてHDD116で記憶された基準の作業スケジュールを設定する。後述するローカル認証処理において、基準の作業スケジュールが変更される場合があるので、処理対象となるページが切り換わるごとに、基準の作業スケジュールを用いるようにするためである。
ステップS11においては、依頼認証処理を開始し、処理をステップS12に進める。依頼認証処理の詳細は後述するが、サーバー300に文字認識処理の実行を依頼する処理であり、タスク管理処理と並列で実行され、CPU111が文字認識処理を実行するタスクよりも優先順位が高い。
ステップS12においては、ローカル認識を開始し、処理をステップS13に進める。ローカル認識処理の詳細は後述するが、タスク管理処理と並列で実行され、CPU111が文字認識処理を実行するタスクよりも優先順位が高い。
ステップS13においては、1ページ分の文字認識が完了したか否かを判断する。1ページ分の文字認識が完了するまで待機状態となり(ステップS13でNO)、1ページ分の文字認識が完了したならば(ステップS13でYES)、処理をステップS14に進める。ステップS14においては、1ページ分の文字認識結果を表示部131に表示し、処理をステップS15に進める。ステップS11において開始された依頼認識処理の処理結果と、ステップS12において開始されたローカル認識処理の処理結果とを合成することにより、文字認識結果を生成し、表示部131に表示する。ステップS15においては、全ページの文字認識が完了したか否かを判断する、全ページの文字認識が完了したならば処理を終了するが、そうでなければ処理をステップS08に戻す。
図11は、依頼認証処理の流れの一例を示すフローチャートである。依頼認証処理は、MFP100が備えるCPU111が、図10に示したタスク管理処理のステップS13において起動されることに応じて、ROM113、HDD116またはCD−ROM119Aに記憶された依頼認証プログラムを実行することによりCPU111により実行される処理である。依頼認証プログラムは、文字認識処理プログラムの一部である。依頼認証処理は、上述したタスク管理処理および後述するローカル認識処理と、並列で実行される。なお、タスク管理処理、依頼認証処理およびローカル認識処理は、CPU111が実行する文字認識処理および画像処理等の他の処理に比較して優先度が高い。
図11を参照して、CPU111は、HDD116に記憶されている作業スケジュールを読み出す(ステップS21)。後述するローカル認証処理によって基準の作業スケジュールが変更されている場合には、変更後の作業スケジュールを読み出し、基準の作業スケジュールが変更されていない場合には、基準の作業スケジュールを読み出す。そして、作業スケジュールによってサーバー300に割り当てられた未処理の処理単位部分が存在するか否かを判断する(ステップS22)。未処理の処理単位部分が存在するならば処理をステップS23に進めるが、そうでなければ処理を終了する。ステップS23においては、作業スケジュールによってサーバー300に割り当てられた未処理の処理単位部分を特定する。そして、特定された処理単位部分の画像データを含む依頼情報を、通信I/F部112を介してサーバー300に送信する(ステップS24)。次のステップS25においては、通信I/F部112がサーバー300から実行結果を受信するまで待機状態となり、実行結果を受信すると、処理をステップS26に進める。ステップS26においては、実行結果をHDD116に記憶する。そして、作業スケジュールにステップS23において特定された処理単位部分の処理が完了したことを示す実績情報を記憶し(ステップS27)、処理をステップS21に戻す。
図12は、ローカル認証処理の流れの一例を示すフローチャートである。ローカル認証処理は、MFP100が備えるCPU111が、図10に示したタスク管理処理のステップS16において起動されることに応じて、ROM113、HDD116またはCD−ROM119Aに記憶されたローカル認証プログラムを実行することによりCPU111により実行される処理である。ローカル認証プログラムは、文字認識処理プログラムの一部である。ローカル認証処理は、上述したタスク管理処理および依頼認識処理と、並列で実行される。なお、タスク管理処理、依頼認証処理およびローカル認識処理は、CPU111が実行する文字認識処理および画像処理等の他の処理に比較して優先度が高い。
図12を参照して、CPU111は、HDD116に記憶されている作業スケジュールを読み出す(ステップS31)。後述するステップS43において基準の作業スケジュールが変更されている場合には、変更後の作業スケジュールを読み出し、基準の作業スケジュールが変更されていない場合には、基準の作業スケジュールを読み出す。
そして、作業スケジュールによってMFP100に割り当てられた未処理の処理単位部分が存在するか否かを判断する(ステップS32)。未処理の処理単位部分が存在するならば処理をステップS33に進めるが、そうでなければ処理を終了する。ステップS33においては、作業スケジュールによってMFP100に割り当てられた未処理の処理単位部分を特定する。そして、処理対象に選択された処理単位部分の画像データに対して文字認識処理を開始する(ステップS34)。文字認識プログラムを実行するタスクを起動し、起動したタスク処理単位部分の画像データに対して文字認識処理を実行させる。
次のステップS35においては、ステップS34において起動した文字認識プログラムを実行するタスクによる文字認識処理が終了したか否かを判断する。終了したならば処理をステップS36に進めるが、そうでなければ処理をステップS38に進める。ステップS36においては、実行結果をHDD116に記憶する。そして、作業スケジュールにステップS33において特定された処理対象部分に対して処理が完了したことを示す実績情報を記憶し(ステップS37)、処理をステップS31に戻す。
ステップS38においては、別の処理が実行されているか否かを判断する。別の処理が実行されているならば処理をステップS39に進めるが、そうでなければ処理をステップS35に戻す。処理がステップS38に進む場合には、ステップS34において、処理単位部分の画像データに対して文字認識処理を実行するタスクが起動している。文字認識処理は、別の処理よりも優先度が低いため、別の処理が優先して実行される。このため、文字認識処理が遅延することになる。
ステップS39においては、終了時間を予測する。具体的には、ステップS34において開始した文字認識処理が終了するまでの残時間を算出し、ステップS38において検出された別の処理のジョブ情報に含まれる画像形成する枚数からジョブが終了するまでの中断時間を算出し、残時間と中断時間との合計を、終了時間として算出する。
次のステップS40においては、作業スケジュールによってMFP100に割り当てられた未処理の処理単位部分のうちから1つを選択し、選択した処理単位部分の画像データを複数の分割部分に分割する。MFP100に割り当てられた未処理の処理単位部分のうち処理時間が最大の処理単位部分を選択するのが好ましい。分割する分割部分の数は任意に定めることができる。所定の数で処理単位部分(属性領域)の画像データを分割すればよい。そして、複数の分割部分を、新たな処理単位部分に設定する(ステップS41)。
次のステップS42においては、ステップS41において新たに処理単位部分に設定された複数の分割部分を含む未処理の複数の処理単位部分それぞれを、サーバー300およびMFP100のいずれかに割り当てた作業スケジュールを生成する。また、ステップS34において文字認識処理を開始した処理単位部分を未処理の処理単位部分として作業スケジュールを生成する場合に、未処理の処理単位部分の全てがサーバー300に割り当てられる場合、換言すれば、終了時間が、サーバー300が未処理の処理単位部分の全てを実行する時間より長い場合、未処理の処理単位部分の全てをサーバー300に割り当てた作業スケジュールを設定する。
次のステップS43においては、ステップS42において生成された作業スケジュールを、HDD116に記憶する。次のステップS44においては、ステップS34において文字認識処理を開始した実行中の処理単位部分がサーバー300に割り当てられたか否かを判断する。実行中の処理単位部分がサーバー300に割り当てられたならば処理をステップS45に進めるが、そうでなければ処理をステップS35に戻す。
ステップS45においては、ステップS34において起動した文字認識処理を実行するタスクに、終了指示を出力し、文字認識処理の実行を終了させ、処理をステップS31に戻す。
<変形例>
上述した実施の形態においては、原稿のフォーマットを、HDD116に記憶しておき、ユーザーが指定したフォーマットを用いて、画像データを複数の属性領域に分割するようにした。変形例における実施の形態においては、MFP100が、フォーマットを決定する点で、上述のMFP100と異なる。この場合、変形例におけるMFP100が備える機能が、図4に示した機能と異なる点は、フォーマット取得部52が不要である点、属性領域分割部67がフォーマットを決定する機能を有する点で異なる。その他の機能は、図4に示した機能と同じなのでここでは説明を繰り返さない。
図4を参照して、変形例における属性領域分割部67は、第1ページの画像データから、罫線で区切られた領域、配列される一群の文字列または数字列を含む領域を1つの属性領域とし、画像データを複数の属性領域に分割する。この段階では、複数の属性領域それぞれに含まれる文字の言語、文字列または数列のフォントは不明である。なお、画像データを複数の属性領域に分割する方法は、これに限定されることなく、周知な別の方法を用いることができる。
最適化部69は、属性領域分割部67から入力される複数の属性領域と、基準時間取得部59から入力されるサーバー300およびMFP100それぞれの基準時間に基づいて作業スケジュールを生成する。この場合、基準時間取得部59から入力されるサーバー300およびMFP100それぞれの基準時間は、言語およびフォント別の基準時間である。このため、言語およびフォント別の基準時間のうち代表的な基準時間を予め定めておき、その代表的な基準時間を用いて、作業スケジュールを生成する。
第1ページの画像データに対する文字認識処理が完了すれば、フォーマットが解るので、第2ページの画像データを文字認識する前の段階では、第1ページの画像データを文字認識した結果を用いてフォーマットを決定し、決定したフォーマットを用いて、属性領域を分割し、作業スケジュールを生成する。
また、第1ページについては、属性領域に分割することなく、ページ全体を処理実行部63に文字認識させ、その結果を用いてフォーマットを決定するようにしてもよい。この場合においては、第1ページの画像データに基づいて決定されるフォーマットを用いて、第2ページ以降の画像データに対して、上述したのと同様に、複数の属性領域に分割し、作業スケジュールを生成すればよい。
以上説明したように、本実施の形態におけるMFP100は、画像処理装置として機能し、複数のページを有する画像データを取得する。画像データに含まれる複数のページ各々は、複数の属性領域を有し、複数のページ間で複数の属性領域の配置が同じである。さらに、MFP100が備えるCPU111は、画像データを複数のページに分割し、複数のページそれぞれを、複数の属性領域に分割し、複数の属性領域それぞれを処理単位部分としてMFP100とサーバー300のいずれかに割り当てた作業スケジュールを生成する。そして、複数のページごとに、作業スケジュールに従って、複数のページそれぞれをMFP100またはサーバー300に処理させるタスク管理部57と、を含む。タスク管理部57は、複数のページのうちMFP100に割り当てられた1以上の処理単位部分をCPU111に文字認識させるが、CPU111が文字認識処理とは別の処理を実行することによって文字認識処理が遅延する場合、CPU111が実行中の処理単位部分の文字認識処理を終了するまでの終了時間を予測し、作業スケジュールによって定められた複数の処理単位部分のうち未処理の1以上の処理単位部分を、予測された終了時間が経過するまでの間はサーバー300に割り当て、予測された終了時間が経過した後はMFP100とサーバー300のいずれかに割り当てた作業スケジュールを生成する。
このため、画像データを、MFP100とサーバー300とで分担して処理させるので、MFP100における文字認識処理が遅延する場合に、ページの文字認識の処理時間を短くすることができる。その結果、画像データのうち、ページごとに文字認識処理をした結果を出力するまでの時間を短縮することができる。
また、作業スケジュールで定められた複数の処理単位部分のうち未処理の処理単位部分であってMFP100に割り当てられた処理単位部分を複数の分割部分に分割し、複数の分割部分を新たな処理単位部分に設定し、新たに処理単位部分に設定された複数の分割部分を含む複数の処理単位部分のうち未処理の複数の処理単位部分を、MFP100とサーバー300のいずれかに割り当てる。このため、MFP100が文字認識処理を実行できない間に、MFP100に割り当てられていた文字認識処理を外部の装置に担当させることができる。
また、MFP100は、複数の属性領域ごとに、MFP100およびサーバー300それぞれにおける処理時間を示す基準時間を取得し、複数の属性領域ごとに取得された基準時間に基づいて、作業スケジュールを生成する。このため、作業スケジュールの精度を向上させることができる。
また、MFP100は、予測された終了時間内に、複数の処理単位部分のうち未処理の1以上の処理単位部分およびMFP100が実行中の処理単位部分のすべてを外部の装置に割り当てできる場合、未処理の1以上の処理単位部分およびMFP100が実行中の処理単位部分のすべてをサーバー300に割り当てたスケジュールを生成する。このため、MFP100が他の処理を実行している間に、ページの文字認識処理を完了することができる。
また、MFP100は、MFP100が実行中の処理単位部分をサーバー300に割り当てる場合、MFP100が実行中の処理単位部分の処理を中止する。このため、同じ処理単位部分がMFP100とサーバー300とで重複して文字認識されるのを回避することができる。
さらに、MFP100は、MFP100が複数の処理単位部分のうち割り当てられた1以上の処理単位部分を処理する第1の時間と、サーバー300が複数の処理単位部分のうち割り当てられた1以上の処理単位部分を処理する第2の時間との差が最小となるように、複数の処理単位部分それぞれを割り当てることにより作業スケジュールを生成する。このため、1ページを最短で実行する作業スケジュールを生成することができる。
なお、上述した実施の形態においては、画像処理装置の一例としてMFP100を例に説明したが、PC200A,200B,200C,200Dを画像処理装置としてもよい。この場合、画像データを、MFP100から取得するようにすればよい。また、図10〜図12に示した文字認識処理をMFP100に実行させる文字認識処理方法、その文字認識処理方法をMFP100を制御するCPU111に実行させる文字認識処理方プログラムとして発明を捉えることができるのは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。