(57)【要約】【課題】ユーザへの応答性の劣化を抑えることを目的とする。【解決手段】要求手段は、判定手段によりキューの先頭以外に第１ジョブが存在すると判定された場合に、キューから取得される第１ジョブに基づき、画像処理モジュールに処理のリクエストを実行し、判定手段によりキューの先頭以外に第１ジョブが存在しないと判定された場合に、キューの先頭から取得される第１ジョブとは異なる第２ジョブに基づき、画像処理モジュールに処理のリクエストを実行し、画像処理モジュールによる処理が完了した場合に、判定手段による判定が再度、行われる。【選択図】図１１
2019154019.tif 000002
【特許請求の範囲】
【請求項１】
複数のジョブを並行処理することができない画像処理モジュールを有する画像処理装置であって、
前記画像処理モジュールを利用する画像処理の依頼を受信する受信手段と、
前記受信手段で受信する１度の依頼に応じて、キューに１つのジョブを登録する登録手段と、
前記キューに含まれる各ジョブの属性に基づき、前記キューの先頭以外に第１ジョブが存在するか否かを判定する判定手段と、
前記キューから取得されるジョブに基づき、前記画像処理モジュールに処理のリクエストを実行する要求手段と、を有し、
前記要求手段は、前記判定手段により前記キューの先頭以外に第１ジョブが存在すると判定された場合に、前記キューから取得される前記第１ジョブに基づき、前記画像処理モジュールに処理のリクエストを実行し、前記判定手段により前記キューの先頭以外に第１ジョブが存在しないと判定された場合に、前記キューの先頭から取得される第１ジョブとは異なる第２ジョブに基づき、前記画像処理モジュールに処理のリクエストを実行し、
前記画像処理モジュールによる処理が完了した場合に、前記判定手段による判定が再度、行われる画像処理装置。
【請求項２】
前記キューの先頭からジョブを取得する取得手段を更に有し、
前記判定手段は、前記取得手段により取得されたジョブの属性に基づき、前記第１ジョブであるか否かを判定し、前記第１ジョブでないと判定した場合、前記キューに含まれる各ジョブの属性に基づき、前記キューの先頭以外に第１ジョブが存在するか否かを判定する請求項１記載の画像処理装置。
【請求項３】
前記判定手段により前記キューの先頭以外に複数の第１ジョブが存在すると判定された場合に、前記要求手段は、前記複数の第１ジョブのうち、前記キューの最も前方にある第１ジョブに基づき、前記画像処理モジュールに処理のリクエストを実行する請求項１又は２記載の画像処理装置。
【請求項４】
前記画像処理モジュールによる処理が完了した場合に、実行したジョブを前記キューから削除する削除手段を更に有する請求項１乃至３何れか１項記載の画像処理装置。
【請求項５】
前記第１ジョブは、ユーザへの応答性に関係するジョブであり、
前記第２ジョブは、ユーザへの応答性に関係しないジョブである請求項１乃至４何れか１項記載の画像処理装置。
【請求項６】
複数のジョブを並行処理することができない画像処理モジュールを有する画像処理装置が実行する情報処理方法であって、
前記画像処理モジュールを利用する画像処理の依頼を受信する受信工程と、
前記受信工程で受信する１度の依頼に応じて、キューに１つのジョブを登録する登録工程と、
前記キューに含まれる各ジョブの属性に基づき、前記キューの先頭以外に第１ジョブが存在するか否かを判定する判定工程と、
前記キューから取得されるジョブに基づき、前記画像処理モジュールに処理のリクエストを実行する要求工程と、を含み、
前記要求工程では、前記判定工程により前記キューの先頭以外に第１ジョブが存在すると判定された場合に、前記キューから取得される前記第１ジョブに基づき、前記画像処理モジュールに処理のリクエストを実行し、前記判定工程により前記キューの先頭以外に第１ジョブが存在しないと判定された場合に、前記キューの先頭から取得される第１ジョブとは異なる第２ジョブに基づき、前記画像処理モジュールに処理のリクエストを実行し、
前記画像処理モジュールによる処理が完了した場合に、前記判定工程による判定が再度、行われる情報処理方法。
【請求項７】
コンピュータを、請求項１乃至５何れか１項記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
画像形成装置で提供されていない画像処理を含む各種ジョブを実行したい場合、新規画像処理を実行するためのアプリケーションをプラグインとして作成し、画像形成装置にインストールすることによって実現する技術が知られている（特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２００３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述のような構成において、使用する画像処理によっては、プラグインが直接画像処理を実行するのではなく、実行速度を優先するために画像形成装置内の組み込みソフトウェアとして配置された画像処理の実行モジュールを使用して画像処理を実現することが考えられる。しかしながら、一般に組み込みソフトウェアは、機能追加や安定性向上を企図したモジュールの変更がしづらいという性質がある。したがって、実行モジュールに何らかの実装上の制限が含まれていた場合、後からその制限を解消するための修正を実行モジュール自体に実施させるのは、開発効率の観点からは望ましくない。ここで言う実装上の制限の一例として、画像処理モジュールが、画像処理モジュールに対する複数の画像処理依頼が同時に実施された場合に、それらを並行処理することができない、というものが挙げられる。そのような制限を有する画像処理モジュールへの画像処理ジョブが輻輳した場合、後行の画像処理ジョブが受け付けられなくなってしまう。
先行技術に記載の構成では、プラグインの使用する組み込み画像処理モジュールが並行動作できず、１プロセスでしか動作できない場合であって、複数のアプリから呼び出された場合、後から呼び出したアプリへの応答はエラーになる。また、例えばアプリケーションが実施する処理がサーチャブルＰＤＦの生成処理の場合、全てのページを処理するのに時間がかかる。後のアプリケーションがユーザ操作の応答性に関わる機能である場合、ユーザを待たせることになり、応答性が低下してしまう。
【課題を解決するための手段】
【０００５】
本発明は、複数のジョブを並行処理することができない画像処理モジュールを有する画像処理装置であって、前記画像処理モジュールを利用する画像処理の依頼を受信する受信手段と、前記受信手段で受信する１度の依頼に応じて、キューに１つのジョブを登録する登録手段と、前記キューに含まれる各ジョブの属性に基づき、前記キューの先頭以外に第１ジョブが存在するか否かを判定する判定手段と、前記キューから取得されるジョブに基づき、前記画像処理モジュールに処理のリクエストを実行する要求手段と、を有し、前記要求手段は、前記判定手段により前記キューの先頭以外に第１ジョブが存在すると判定された場合に、前記キューから取得される前記第１ジョブに基づき、前記画像処理モジュールに処理のリクエストを実行し、前記判定手段により前記キューの先頭以外に第１ジョブが存在しないと判定された場合に、前記キューの先頭から取得される第１ジョブとは異なる第２ジョブに基づき、前記画像処理モジュールに処理のリクエストを実行し、前記画像処理モジュールによる処理が完了した場合に、前記判定手段による判定が再度、行われる。
【発明の効果】
【０００６】
本発明によれば、ユーザへの応答性の劣化を抑えることができるようになる。
【図面の簡単な説明】
【０００７】
【図１】画像形成システムのシステム構成の一例を示す図である。
【図２】画像形成装置のハードウェア構成の一例を示す図である。
【図３】ソフトウェアの構造の一例を模式的に表す階層図である。
【図４】情報処理の一例を示すフローチャートである。
【図５】情報処理の一例を示すフローチャートである。
【図６】情報処理の一例を示すフローチャートである。
【図７】情報処理の一例を示すフローチャートである。
【図８】スキャン原稿のプレビュー画面の一例を示す図である。
【図９】情報処理の一例を示すフローチャートである。
【図１０】情報処理の一例を示すフローチャートである。
【図１１】ソフトウェアの構造の一例を模式的に表す階層図である。
【図１２】情報処理の一例を示すフローチャートである。
【図１３】情報処理の一例を示すフローチャートである。
【図１４】情報処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、本発明の実施形態について図面に基づいて説明する。
【０００９】
＜実施形態１＞
図１は、画像形成システムのシステム構成の一例を示す図である。画像形成システムには、画像形成装置１０１、１０２と、情報処理端末１０３、１０４と、サーバ１０５とが含まれる。画像形成装置１０１、１０２と、情報処理端末１０３、１０４と、サーバ１０５とは、ネットワーク１０６により相互に接続されて、通信可能である。
図１では、画像形成装置１０１、１０２が２つである場合を例に挙げて示すが、画像形成装置の数は任意（１つ又は２以上）である。また、それぞれの画像形成装置１０１、１０２は、同じもので実現することができる。したがって、以下では、画像形成装置１０１、１０２を代表して画像形成装置１０１について説明し、画像形成装置１０２についての詳細な説明を省略する。ネットワーク１０６は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、Ｉｎｔｅｒｎｅｔ等、画像形成システム内の装置が相互に通信できるものであればよい。
画像形成装置１０１は、情報処理端末１０３、１０４から画像データの印刷依頼（印刷データ）を受信して印刷することや、画像形成装置１０１に備わるスキャナで画像データを読み取ることや、スキャナで読み取られた画像データを印刷することができる。また、画像形成装置１０１は、情報処理端末１０３、１０４から受信した印刷データを保存したり、画像形成装置１０１のスキャナで読み取られた画像を情報処理端末１０３、１０４に送信したりすることができる。更に画像形成装置１０１は、サーバ１０５を用いて画像処理を行ったり、サーバ１０５に格納されている文書を印刷したりすることができる。画像形成装置１０１は、この他に、ＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）等の公知の画像形成装置が有する機能を実現することができる。
【００１０】
図２は、画像形成装置１０１のハードウェア構成の一例を示す図である。
画像形成装置１０１は、コントローラ２０１、プリンタ２０２、スキャナ２０３、及び操作部２０４を有する。コントローラ２０１は、ＣＰＵ２１１、ＲＡＭ２１２、ＨＤＤ２１３、ネットワークＩ／Ｆ２１４、プリンタＩ／Ｆ２１５、スキャナＩ／Ｆ２１６、操作部Ｉ／Ｆ２１７、及び拡張Ｉ／Ｆ２１８を含む。ＣＰＵ２１１は、ＲＡＭ２１２、ＨＤＤ２１３、ネットワークＩ／Ｆ２１４、プリンタＩ／Ｆ２１５、スキャナＩ／Ｆ２１６、操作部Ｉ／Ｆ２１７、及び拡張Ｉ／Ｆ２１８とデータを授受することができる。また、ＣＰＵ２１１は、ＨＤＤ２１３から読み出したプログラムをＲＡＭ２１２に展開し、ＲＡＭ２１２に展開したプログラムを実行する。ＣＰＵ２１１がプログラムに基づき処理を実行することにより、後述する図３、図１１のソフトウェア構成及び図４−図７、図９、図１０、図１２−図１４のフローチャートの処理が実現される。
ＨＤＤ２１３には、ＣＰＵ２１１で実行可能なプログラム、画像形成装置１０１で使用する設定値、及びユーザから依頼された処理に関するデータ等を記憶しておくことができる。ＲＡＭ２１２は、ＣＰＵ２１１がＨＤＤ２１３から読み出したプログラムを一時的に格納するための領域である。またＲＡＭ２１２は、プログラムの実行に必要な各種のデータを記憶しておくこともできる。例えば、画像処理では、入稿されたデータをＲＡＭ２１２に展開することで処理を行うことができる。
【００１１】
ネットワークＩ／Ｆ２１４は、画像形成システム内の装置とネットワーク通信を行うためのインターフェイスである。ネットワークＩ／Ｆ２１４は、データ受信を行ったことをＣＰＵ２１１に伝達することや、ＲＡＭ２１２上のデータをネットワーク１０６に送信することができる。プリンタＩ／Ｆ２１５は、ＣＰＵ２１１から送信された印刷データをプリンタ２０２に送信することや、プリンタ２０２から受信したプリンタの状態をＣＰＵ２１１に伝達することができる。スキャナＩ／Ｆ２１６は、ＣＰＵ２１１から送信された画像読み取り指示をスキャナ２０３に送信し、スキャナ２０３から受信した画像データをＣＰＵ２１１に伝達することや、スキャナ２０３から受信した状態をＣＰＵ２１１に伝達することができる。操作部Ｉ／Ｆ２１７は、操作部２０４から入力されたユーザからの指示をＣＰＵ２１１に伝達することや、ユーザが操作するための画面情報を操作部２０４に伝達することができる。拡張Ｉ／Ｆ２１８は、画像形成装置１０１に外部機器を接続することを可能とするインターフェイスである。拡張Ｉ／Ｆ２１８は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）形式のインターフェイスを具備する。画像形成装置１０１は、ＵＳＢメモリ等の外部記憶装置が拡張Ｉ／Ｆ２１８に接続されることにより、外部記憶装置に記憶されているデータの読み取り及び外部記憶装置に対するデータの書き込みを行うことができる。
プリンタ２０２は、プリンタＩ／Ｆ２１５から受信した画像データを用紙に印刷することや、プリンタ２０２の状態をプリンタＩ／Ｆ２１５に伝達することができる。スキャナ２０３は、スキャナＩ／Ｆ２１６から受信した画像読み取り指示に従って、自身に置かれた用紙に表示されている情報を読み取ってデジタル化してスキャナＩ／Ｆ２１６に伝達することができる。また、スキャナ２０３は、自身の状態をスキャナＩ／Ｆ２１６に伝達することができる。操作部２０４は、画像形成装置１０１に対して各種の指示を行うための操作をユーザに行わせるためのインターフェイスである。例えば、操作部２０４は、タッチパネルを有する液晶画面を具備し、ユーザに操作画面を提供すると共に、ユーザからの操作を受け付ける。
【００１２】
図３は、実施形態１の画像形成装置１０１のソフトウェアの構造の一例を模式的に表す階層図である。図３において、一部の例外を除いて、下位の階層が提供するサービスを上位の階層が利用する関係になっている。
図３において、最下層は、オペレーティングシステム３１７を含み、プログラムの実行の管理やメモリ管理等を行う階層である。オペレーティングシステム３１７の中には、プリンタ制御ドライバ３１８、スキャナ制御ドライバ３１９、及びネットワークＩ／Ｆ制御ドライバ３２０が組み込まれる。プリンタ制御ドライバ３１８、スキャナ制御ドライバ３１９、及びネットワークＩ／Ｆ制御ドライバ３２０は、相互に連携することにより機能することができる。プリンタ制御ドライバ３１８は、プリンタＩ／Ｆ２１５を介してプリンタ２０２を制御するためのソフトウェアである。スキャナ制御ドライバ３１９は、スキャナＩ／Ｆ２１６を介してスキャナ２０３を制御するためのソフトウェアである。ネットワークＩ／Ｆ制御ドライバ３２０は、ネットワークＩ／Ｆ２１４を制御するためのソフトウェアである。
最下層から２段目の層には、デバイス制御ライブラリ３０９と画像処理制御部３４０とが含まれる。本実施形態においては、デバイス制御ライブラリ３０９と画像処理制御部３４０とはＣ言語やＣ＋＋言語等のコンパイル言語で記述され、組み込みソフトウェアとしてＣＰＵ２１１で直接実行できるオブジェクトファイルの形式でＨＤＤ２１３に格納されているものとする。本実施形態では、このような組み込みソフトウェア群を実行する環境をＮａｔｉｖｅ実行環境、又はＮａｔｉｖｅと呼称する。デバイス制御ライブラリ３０９は、後述の単独機能プラグイン３０２又はデバイス制御アプリケーション３０４と静的又は動的にリンクされる。更にデバイス制御ライブラリ３０９は、各アプリケーションプログラムによる指示に基づいて、オペレーティングシステム３１７を利用する。また、各デバイス制御ライブラリ３０９は、Ｎａｔｉｖｅ画像処理接続ライブラリ３１４に対して画像処理を依頼することもできる。
【００１３】
次に、デバイス制御ライブラリ３０９の一例について説明する。
プリントライブラリ３１０は、プリンタ制御ドライバ３１８の機能を利用してプリントジョブの制御を行うためのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を提供するライブラリである。プリントジョブは、画像形成装置１０１のＨＤＤ２１３に保存されている印刷データを印刷することや、ネットワークＩ／Ｆ２１４を通して外部装置から受信した印刷データを印刷するといった一連の処理を指す。外部装置は、例えば、情報処理端末１０３、１０４である。
コピーライブラリ３１１は、スキャナ制御ドライバ３１９及びプリンタ制御ドライバ３１８の機能を利用して、コピージョブの制御を行うためのＡＰＩを提供するライブラリである。コピージョブは、スキャナ２０３でスキャンされた画像データをプリンタ２０２で印刷する一連の処理を指す。
スキャン保存ライブラリ３１２は、スキャナ制御ドライバ３１９の機能を利用してスキャン保存ジョブの制御を行うためのＡＰＩを提供するライブラリである。スキャン保存ジョブは、スキャナ２０３でスキャンされた画像データを印刷データ又は汎用フォーマットに変換後、ＨＤＤ２１３又は拡張Ｉ／Ｆ２１８に接続されているＵＳＢ等の外部記憶装置に保存する一連の処理を指す。汎用フォーマットは、例えば、ＰＤＦ（ＰｏｒｔａｂｌｅＤｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）やＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）といったデータフォーマットである。
【００１４】
スキャン送信ライブラリ３１３は、スキャナ制御ドライバ３１９及びネットワークＩ／Ｆ制御ドライバ３２０の機能を利用して、スキャン送信ジョブの制御を行うためのＡＰＩを提供するライブラリである。スキャン送信ジョブは、スキャナ２０３でスキャンされた画像データを汎用フォーマットに変換後、ネットワークＩ／Ｆ２１４を通してファイルサーバに送信したり、電子メールに添付して外部装置に送信したりする一連の処理を指す。ファイルサーバは、例えば、サーバ１０５である。外部装置は、例えば、情報処理端末１０３、１０４である。
画像処理制御部３４０にはＮａｔｉｖｅ画像処理接続ライブラリ３１４及びＮａｔｉｖｅ画像処理実行サーバ３１５、Ｎａｔｉｖｅ画像処理モジュール３１６が含まれる。Ｎａｔｉｖｅ画像処理接続ライブラリ３１４は、デバイス制御ライブラリ３０９から画像処理の実行依頼を受けると、画像処理接続ライブラリ３３２に依頼内容を転送する。Ｎａｔｉｖｅ画像処理実行サーバ３１５は、後述するＪａｖａ（登録商標）言語で記述されたソフトウェアから依頼を受けてＮａｔｉｖｅ画像処理モジュールを実行する機能を提供する。Ｎａｔｉｖｅ画像処理モジュール３１６は、様々な種類の画像処理を実行することの可能なソフトウェアである。Ｎａｔｉｖｅ画像処理実行サーバ３１５及びＮａｔｉｖｅ画像処理モジュール３１６は、図３に記載の他のソフトウェアとは分離された論理メモリ空間を有するプログラム実行単位である、Ｎａｔｉｖｅ画像処理制御プロセス３５０上で実行される。メモリ空間を分離する具体的な方法としては、一般的なオペレーティングシステムが備えるプロセス機構を用いることが考えられるが、他の方法でもよい。このように、画像処理を行う場合に論理メモリ空間を分離する構成とすることにより、複雑な演算やこれに伴うメモリ操作を行う場合でも、処理に何らかエラーが生じた場合でも処理の依頼側に及ぼす影響を抑制することができる。Ｎａｔｉｖｅ画像処理モジュール３１６は、並行処理することができない画像処理モジュールの一例である。
【００１５】
最上位層であるＪａｖａ言語実行環境３３０は、プラグインアプリケーション（以下、プログインという）３０１及びデバイス制御アプリケーション３０４を含む、アプリケーション層である。本実施形態では、プラグイン３０１及びデバイス制御アプリケーション３０４はＪａｖａ言語で記述され、Ｊａｖａ仮想マシンが解釈するＪａｖａバイトコード形式でＨＤＤ２１３に格納される。そのため、ＣＰＵ２１１はＪａｖａ仮想マシンのプログラムを実行し、Ｊａｖａ仮想マシンがＪａｖａバイトコードを読み出して実行することによって処理を行う。このようなプログラミング言語を利用する理由の一つにプログラム記述の簡易さが挙げられる。Ｊａｖａにおいては、メモリ領域の管理は開発者で行う必要はなく、自動的に行われる。したがってプログラムを記述する際の手間が低減され、開発効率が向上することが見込まれる。各アプリケーションは、デバイス制御ライブラリ３０９や画像処理接続ライブラリ３３２の各ＡＰＩを利用しながら動作することで様々な機能を提供する。また、デバイス制御アプリケーション３０４は、ファームウェアの更新により、その機能を拡張することができる。デバイス制御アプリケーション３０４に含まれるプリントアプリケーション３０５、コピーアプリケーション３０６、スキャン保存アプリケーション３０７、スキャン送信アプリケーション３０８は、それぞれ画面情報３２１、３２２、３２３、３２４を有する。ＣＰＵ２１１は、操作部Ｉ／Ｆ２１７を通して操作部２０４にそれぞれの画面情報３２１、３２２、３２３、３２４を表示する。ＣＰＵ２１１は、ユーザが操作部２０４を操作することによりデバイス制御アプリケーション３０４の設定の変更を検知すると、その変更の内容をＨＤＤ２１３に書き込む。ＣＰＵ２１１（デバイス制御アプリケーション３０４）は、操作部２０４によりジョブ実行依頼を検知すると、デバイス制御ライブラリ３０９のＡＰＩをコールすることによりジョブを開始する。また、デバイス制御アプリケーション３０４は、画像処理接続ライブラリ３３２に対して、画像処理を依頼することもできる。
【００１６】
次に、デバイス制御アプリケーション３０４の一例について説明する。プリントアプリケーション３０５は、プリントライブラリ３１０のＡＰＩをコールすることによりプリントジョブを実行する。コピーアプリケーション３０６は、コピーライブラリ３１１のＡＰＩをコールすることによりコピージョブを実行する。スキャン保存アプリケーション３０７は、スキャン保存ライブラリ３１２のＡＰＩをコールすることによりスキャン保存ジョブを実行する。スキャン送信アプリケーション３０８は、スキャン送信ライブラリ３１３のＡＰＩをコールすることでスキャン送信ジョブを実行する。
次に、プラグイン３０１の一例について説明する。プラグイン３０１は、常駐アプリケーションであるデバイス制御アプリケーション３０４とは別に、プラグインとして画像形成装置１０１にインストール及びアンインストールが可能なアプリケーションである。プラグイン３０１は、単独機能プラグインアプリケーション（以下、単独機能プラグインという）３０２と、画像処理プラグインアプリケーション（以下、画像処理プラグインという）３０３とを有する。プラグイン３０１には、それぞれ動作に必要なプログラムがパッケージングされている。プラグイン３０１は、リモートＵＩ（Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）等を用いることにより、画像形成装置１０１にインストールされる。リモートＵＩは、外部装置におけるＷｅｂブラウザからネットワークＩ／Ｆ２１４を経由して画像形成装置１０１にアクセスし、画像形成装置１０１の状況の確認、印刷ジョブの操作、及び各種設定等を行うことができる仕組みである。外部装置は、例えば、情報処理端末１０３、１０４である。また、プラグイン３０１（単独機能プラグイン３０２、及び画像処理プラグイン３０３）は、それぞれ個別に起動及び停止を行うことができる。
【００１７】
以下に、プラグイン３０１のインストールから起動、停止、アンインストールまでの一連の流れの一例を示す。
ＣＰＵ２１１は、プラグイン３０１のインストールを検知すると、プラグイン３０１の情報をＨＤＤ２１３に保存する。続いてＣＰＵ２１１は、プラグイン３０１に対する開始指示を検知すると、プラグイン３０１に対する起動指示を行う。プラグイン３０１は、起動している間、各プログラムの内容を実行することができる。続いてＣＰＵ２１１は、プラグイン３０１に対する停止指示を検知すると、プラグイン３０１に対して停止指示を行う。更にＣＰＵ２１１は、プラグイン３０１に対するアンインストール指示を検知すると、プラグイン３０１の情報をＨＤＤ２１３から削除する。これらの指示は、例えば、リモートＵＩや操作部２０４から行うことができるが、これ以外でこれらの指示が行われてもよい。
【００１８】
次に、単独機能プラグイン３０２の一例について説明する。単独機能プラグイン３０２は、画面情報３２５を有する。単独機能プラグイン３０２は、デバイス制御ライブラリ３０９のＡＰＩをコールすることで常駐のデバイス制御アプリケーション３０４とは別の機能や画面をユーザに提供することができる。例えば、単独機能プラグイン３０２は、ある画像データをコピーすると共にスキャンし、自身が保持する送信先データベース内の特定の宛先に文書を送信する機能等、複数の機能を組み合わせて提供することができる。単独機能プラグイン３０２は、画像処理を行う機能を有していなくてもよい。この場合、画像処理の設定は行われない。更に、デバイス制御ライブラリ３０９は、印刷データ又は汎用フォーマットに変換後の画像データを受信すると、適切なオペレーティングシステム３１７に対して処理制御を指示し、ジョブを実行させる。
【００１９】
次に、画像処理プラグイン３０３の一例について説明する。画像処理プラグイン３０３は、Ｎａｔｉｖｅ画像処理実行クライアント３３１を利用し、Ｎａｔｉｖｅ画像処理モジュール３１６の画像処理機能を利用することができる。画像処理プラグイン３０３がＮａｔｉｖｅ画像処理モジュール３１６を利用する理由の一例として、画像処理を行う際の処理速度の高速化が挙げられる。画像処理を行う際には大量、かつ、複雑な数値演算を行ったり、処理の過程で大量のメモリを必要となったりする場合がある。そのような場合にはＪａｖａのような仮想マシンを仲介して処理を行うプログラミング言語処理系を利用するよりも、直接ＣＰＵが実行な可能なオブジェクトファイルを生成できるコンパイル言語を利用するほうが処理速度を向上させることができる。但し、一方で、Ｎａｔｉｖｅ画像処理モジュール３１６は、先述したように画像形成装置１０１の組み込みソフトウェアとして実装されるため、機能追加や安定性向上を企図したモジュールの変更が容易ではないという性質がある。そのため、Ｎａｔｉｖｅ画像処理モジュール３１６には実装上、又は機能上何らかの制限を持つ場合が存在し得る。Ｎａｔｉｖｅ画像処理モジュール３１６が持ち得る制限の一例として、同一のＮａｔｉｖｅ画像処理モジュール３１６に対して複数の画像処理依頼が同時に実施された場合に、それらを並行して実施できないという制限が挙げられる。
いま、単独機能プラグイン３０２やデバイス制御アプリケーション３０４からの依頼に基づき、複数の画像処理が同一のＮａｔｉｖｅ画像処理モジュールに同時に依頼されることがある。Ｎａｔｉｖｅ画像処理モジュール３１６がそのような制限を持つ場合で、そのように同時に画像処理以来を受信した場合に、並行動作できないために後続の画像処理が遅延し、機能を使用するユーザへの応答性が劣化してしまう恐れがある。ここで、ユーザへの応答性が求められるジョブとは、ユーザが、操作部２０４、又は画像形成装置１０１が備えるウェブサーバーが提供する画面等で、Ｎａｔｉｖｅ画像処理モジュール３１６による画像処理の結果を確認する必要がある操作に係るジョブである。例えば、スキャンドキュメントの画像データを、Ｎａｔｉｖｅ画像処理モジュール３１６でＯＣＲ処理して、その結果を操作部２０４に表示して、表示画像から選択された一部に対応する認識結果を基に画像データのファイル名を設定する機能がある。この一連の操作において、ＯＣＲ処理の結果の応答が遅延してしまうと、次のユーザの選択操作ができないため、ユーザが画像形成装置１０１の操作部２０４等を長時間占有するといったことが起こり得る。
一方で、ユーザへの応答性が比較的、重要ではないジョブもある。ユーザのファイル送信の指示後に、Ｎａｔｉｖｅ画像処理モジュール３１６で画像データをＳｅａｒｃｈａｂｌｅＰＤＦとして送信するケースである。ユーザによっては、送信結果を後で、ログ等で確認できればよいケースもある。このような場合は、送信の指示後、即座にファイル送信の結果を操作部２０４に応答する必要が無い。他にも、ユーザの指示入力なしに、バックグラウンドでＮａｔｉｖｅ画像処理モジュール３１６を利用するようなケースにおいても、ユーザへの応答性が比較的、重要ではない。
本実施形態では、ユーザへの応答性が求められるジョブについては、ジョブがユーザへの応答性に直結するものとして応答性直結フラグを用いて管理する。
本実施形態では、そのような応答性の劣化を抑制するため、並行動作できないＮａｔｉｖｅ画像処理モジュール３１６に対応する画像処理プラグイン３０３は、画像処理接続ライブラリ３３２より受信する画像処理要求を逐次処理するためのキュー３２６を保持する。キュー３２６を保持することで、並行動作できないＮａｔｉｖｅ画像処理モジュール３１６が画像処理を実行している間に、対応する画像処理プラグイン３０３が新たな画像処理依頼を受け付けることができるようになる。また、Ｊａｖａ実行環境上に配置される画像処理プラグイン３０３にキュー３２６を設けることで、Ｎａｔｉｖｅ実行環境に配置される組み込みソフトウェアに変更を加えることなく、上述したユーザへの応答性を向上することができるようになる。
【００２０】
図４は、画像処理接続ライブラリ３３２が画像処理を受け付け、画像処理プラグイン３０３に処理依頼を行う情報処理の一例を示すフローチャートである。本フローチャートを用いて、画像処理プラグイン３０３を用いた画像処理の一例を示す。
Ｓ４０１において、画像処理接続ライブラリ３３２は、デバイス制御アプリケーション３０４又はＮａｔｉｖｅ画像処理接続ライブラリ３１４又は単独機能プラグイン３０２から画像処理実行要求を受信する。このとき、受信した画像処理要求には処理を依頼する画像処理プラグイン３０３を特定するために必要なパラメータが入力されているものとする。
Ｓ４０２において、画像処理接続ライブラリ３３２は、取得した画像処理実行依頼を実行可能な画像処理プラグイン３０３を探索する。
Ｓ４０３において、画像処理接続ライブラリ３３２は、Ｓ４０２の探索の結果に基づき、受信した画像処理依頼を実行できる画像処理プラグインが存在する場合（Ｓ４０３においてＹＥＳ）、Ｓ４０５に進む。一方、Ｓ４０３において、画像処理接続ライブラリ３３２は、Ｓ４０２の探索の結果に基づき、受信した画像処理依頼を実行できる画像処理プラグインが存在しない場合（Ｓ４０３においてＮＯ）、Ｓ４０４に進む。
【００２１】
Ｓ４０４において、画像処理接続ライブラリ３３２は、受信した画像処理を実行できるモジュールが存在しない旨のエラーを依頼元のモジュールに返却する。Ｎａｔｉｖｅ画像処理接続ライブラリ３１４が依頼元であった場合、デバイス制御ライブラリを通して、デバイス制御アプリケーション３０４又は単独機能プラグイン３０２に上述のエラー内容が伝播される。デバイス制御アプリケーション３０４又は単独機能プラグイン３０２は、受信した上述のエラー内容を各アプリケーションの操作画面に表示する。本エラーにより、処理に必要なモジュールが存在していないことをユーザが知ることができる。したがって、サービスマン又はＩＴ管理者が上述のインストール手段によって必要な画像処理プラグイン３０３をインストールすることにより、処理を継続することができる。
一方、Ｓ４０５において、画像処理接続ライブラリ３３２は、対象の画像処理プラグイン３０３に処理を依頼する。画像処理プラグイン３０３は、画像処理接続ライブラリ３３２から処理パラメータと共に、画像処理依頼を受信すると、処理パラメータに応じて画像処理を実行する。画像処理は画像処理プラグイン３０３内で行う手段と、Ｎａｔｉｖｅ画像処理モジュール３１６で実行する手段があるが、詳細については後述する。画像処理実行時に、画像処理プラグイン３０３又はＮａｔｉｖｅ画像処理モジュール３１６は、ＣＰＵ２１１が入力データをＲＡＭ２１２に展開する。
Ｓ４０６において、画像処理接続ライブラリ３３２は、画像処理プラグインから処理結果を受信する。
Ｓ４０７において、画像処理接続ライブラリ３３２は、受信した処理結果を依頼元の各モジュールに返却する。
【００２２】
以下、受信した処理結果としてエラー内容を含むエラーが返ってきた場合の処理について説明する。
Ｎａｔｉｖｅ画像処理接続ライブラリ３１４が依頼元であった場合、デバイス制御ライブラリ３０９を通して、エラー内容がデバイス制御アプリケーション３０４又は単独機能プラグイン３０２に伝播される。デバイス制御アプリケーション３０４又は単独機能プラグイン３０２は、受信したエラー内容を基に、例外処理を行う。
上述の例外処理の一例としてリトライ処理があげられる。各アプリケーションは上述のエラーの受信により、画像処理接続ライブラリ３３２上で複数の画像処理が同時に実行されていると判断できる。したがって各アプリケーションはいったん現在実行中の画像処理が終わるのをリトライにより待ち、実行中の画像処理が終わったタイミングで再び画像処理要求を送信することで、処理を中断することなく継続することができる。
またその他の例外処理として、各アプリケーションの操作画面において、複数の画像処理が同時実行中であるため、時間を置いて再度ジョブを投入するように促す旨のエラーを表示するようにしてもよい。ユーザは上述のエラーによって、時間を置けばジョブが実行可能であることを知ることができる。
【００２３】
画像処理を依頼された画像処理プラグイン３０３は、依頼された処理内容に基づき、画像処理を実行する。画像処理プラグイン３０３は、画像処理を行う手段が２種類存在する。
１つ目は画像処理プラグイン３０３内で実行する手段である。この場合、画像処理プラグイン３０３は、画像処理接続ライブラリ３３２から受信した処理依頼及び処理パラメータを基に実行する。画像処理プラグイン３０３はＪａｖａ言語で記載されている必要がある。
２つ目はＮａｔｉｖｅ画像処理モジュール３１６に依頼する手段である。画像処理プラグイン３０３は、Ｎａｔｉｖｅ画像処理実行クライアント３３１に処理を依頼することにより、画像処理プラグイン３０３とは異なる画像処理専用プロセスにおいて画像処理を実行することができる。
【００２４】
図５は、画像処理プラグイン３０３がＳ４０５にて依頼された画像処理ジョブを実行する際の情報処理の一例を示すフローチャートである。
Ｓ５０１において、画像処理プラグイン３０３は、Ｓ４０５にて依頼された画像処理ジョブを受信し、これをキュー３２６に投入する。画像処理プラグイン３０３は、Ｎａｔｉｖｅ画像処理モジュール３１６の処理単位ごとに画像処理ジョブをキュー３２６に保持する。
Ｓ５０２において、画像処理プラグイン３０３は、キュー３２６に未処理の画像処理ジョブが存在するか否かを判定する。判定の結果、未処理の画像処理ジョブが存在しない場合（Ｓ５０２がＮＯの場合）、画像処理プラグイン３０３は、Ｓ５０２の処理を再び実施する。一方、未処理の画像処理ジョブが存在する場合（Ｓ５０２がＹＥＳの場合）、画像処理プラグイン３０３は、Ｓ５０３に進む。
Ｓ５０３において、画像処理プラグイン３０３は、キュー３２６に存在する未処理の画像処理ジョブのうち、先頭のジョブを取得し、Ｎａｔｉｖｅ画像処理実行クライアント３３１に取得した画像処理ジョブの処理を依頼する。画像処理プラグイン３０３は、キュー３２６に保持した順に画像処理ジョブ選択し、取得する。
Ｓ５０４において、まず、これを受けたＮａｔｉｖｅ画像処理実行クライアント３３１は、依頼された画像処理ジョブをＮａｔｉｖｅ画像処理実行サーバ３１５に依頼する。続いて、Ｎａｔｉｖｅ画像処理実行サーバ３１５は、受信した画像処理ジョブに含まれる処理パラメータを基にＮａｔｉｖｅ画像処理モジュール３１６を探索する。
【００２５】
Ｓ５０５において、Ｎａｔｉｖｅ画像処理実行サーバ３１５は、対象のＮａｔｉｖｅ画像処理モジュールが存在するか否かを判定する。判定の結果、対象のＮａｔｉｖｅ画像処理モジュール３１６が存在しない場合（Ｓ５０５がＮＯの場合）、Ｎａｔｉｖｅ画像処理実行サーバ３１５は、Ｓ５０６に進む。一方、判定の結果対象のＮａｔｉｖｅ画像処理モジュール３１６が存在する場合（Ｓ５０５がＹＥＳの場合）、Ｎａｔｉｖｅ画像処理実行サーバ３１５は、Ｓ５０７に進む。
Ｓ５０６において、Ｎａｔｉｖｅ画像処理実行サーバ３１５は、対象のＮａｔｉｖｅ画像処理モジュール３１６が存在しない旨のエラーをＮａｔｉｖｅ画像処理実行クライアント３３１に返却する。
Ｓ５０７において、対象のＮａｔｉｖｅ画像処理モジュール３１６は、受信した処理パラメータを基に画像処理を行う。
Ｓ５０８において、対象のＮａｔｉｖｅ画像処理モジュール３１６は、更に画像処理結果をＮａｔｉｖｅ画像処理実行クライアント３３１に返却する。
Ｓ５０６又はＳ５０４の処理を実施した後、Ｓ５０９において、画像処理プラグイン３０３は、Ｓ５０３で取得した画像処理ジョブをキュー３２６から削除する。そして、画像処理プラグイン３０３は、再びＳ５０２の処理に戻る。Ｎａｔｉｖｅ画像処理実行クライアント３３１は、画像処理結果、又はエラー内容を受信すると、その内容を画像処理プラグイン３０３に返却する。
【００２６】
図６は、スキャン送信アプリケーション３０８が、スキャン画像をＳｅａｒｃｈａｂｌｅＰＤＦに変換して送信する情報処理の一例を示すフローチャートである。ＳｅａｒｃｈａｂｌｅＰＤＦとは、文字情報がテキストデータ化されたＰＤＦのことを指す。スキャン送信アプリケーション３０８は、Ｎａｔｉｖｅ画像処理接続ライブラリ３１４を通じてＮａｔｉｖｅ画像処理モジュール３１６の提供するＯＣＲ機能を利用することでＳｅａｒｃｈａｂｌｅＰＤＦを生成する。
Ｓ６０１において、スキャン送信アプリケーション３０８は、スキャナ２０３によりＨＤＤ２１３又はＲＡＭ２１２に保存されたスキャン画像データを、画像形成装置１０１のユーザにより設定された送信先に送信するための指示を受信する。
Ｓ６０２において、スキャン送信指示を受信したスキャン送信アプリケーション３０８は、１ページ又は複数ページからなるスキャン画像データの１ページ目をＨＤＤ２１３又はＲＡＭ２１２から取得する。
Ｓ６０３において、スキャン送信アプリケーション３０８は、画像処理接続ライブラリ３３２に対して、Ｓ６０２で取得した画像データに対するＯＣＲ処理の実行を依頼する。Ｓ６０３に係るＯＣＲ処理は、図４及び図５を用いて説明した処理手順に従い実行される。
Ｓ６０４において、スキャン送信アプリケーション３０８は、Ｓ４０７にて返却されるＯＣＲ処理実行結果を受信する。
【００２７】
Ｓ６０５において、スキャン送信アプリケーション３０８は、ＯＣＲ処理実行結果を使用して、Ｓ６０２で取得した１ページ画像データをＳｅａｒｃｈａｂｌｅＰＤＦに変換する。
Ｓ６０６において、スキャン送信アプリケーション３０８は、スキャン画像データにＳｅａｒｃｈａｂｌｅＰＤＦに変換されていないページが存在するか否かを判定する。判定の結果、変換されていないページが存在する場合（Ｓ６０６がＹＥＳの場合）、スキャン送信アプリケーション３０８は、Ｓ６０２に進む。そして、スキャン送信アプリケーション３０８は、変換されていないページのうち１ページに対して、再びＳ６０２、Ｓ６０３、Ｓ６０４、Ｓ６０５の処理を実施する。一方、変換されていないページが存在しない場合（Ｓ６０６がＮＯの場合）、スキャン送信アプリケーション３０８は、Ｓ６０７に進む。
Ｓ６０７において、スキャン送信アプリケーション３０８は、ＳｅａｒｃｈａｂｌｅＰＤＦに変換されたスキャン画像データの全ページを１つのＳｅａｒｃｈａｂｌｅＰＤＦファイルとしてまとめて、画像形成装置１０１のユーザに指示された送信先に送信を実行する。
【００２８】
図７は、Ｎａｔｉｖｅ画像処理モジュール３１６の提供するＯＣＲ機能の、図６を用いて説明した利用方法とは異なる一例として、スキャン画像に含まれる文字列データを基に、画像データを汎用フォーマットに変換したファイルのファイル名を決定する情報処理の一例を示すフローチャートである。本フローチャートで説明する処理は、上述したファイル名決定処理を実施するための単独機能プラグイン３０２が画像形成装置１０１のユーザより指示を受けて開始される処理である。
Ｓ７０１において、単独機能プラグイン３０２は、スキャナ２０３によりＨＤＤ２１３又はＲＡＭ２１２に保存されたスキャン画像データをプレビュー表示する指示を画像形成装置１０１のユーザから受け、該当する画像データを操作部２０４にプレビュー表示する。
Ｓ７０２において、単独機能プラグイン３０２は、Ｓ７０２で表示されたプレビュー画面を通して、スキャン画像データのうち汎用フォーマットに変換後のファイル名として使用する箇所の指定を受信したか否かを判定する。図８に、Ｓ７０２で操作部２０４に表示されるスキャン原稿のプレビュー画面と、ファイル名として使用する箇所をユーザが指定する際のイメージとを表す図を示す。図８では、スキャン画像データのうち、領域８０１で示す領域が画像形成装置１０１のユーザによりタッチされることで、領域８０１をファイル名として使用する指定を受信することを示している。このような形態によりユーザから指定があった場合（Ｓ７０２がＹＥＳの場合）、単独機能プラグイン３０２は、Ｓ７０３に進む。一方、指定がなかった場合（Ｓ７０２がＮＯの場合）、単独機能プラグイン３０２は、指定を受信するまでＳ７０２の処理を続ける。
【００２９】
Ｓ７０３において、単独機能プラグイン３０２は、ユーザより指定を受けた領域８０１をテキストデータに変換するため、画像処理接続ライブラリ３３２に対して、領域８０１に対するＯＣＲ処理の実行を依頼する。Ｓ７０３に係るＯＣＲ処理は、図４及び図５を用いて説明した処理手順に従い実行される。
Ｓ７０４において、単独機能プラグイン３０２は、Ｓ４０７にて返却されるＯＣＲ処理実行結果を受信する。
Ｓ７０５において、単独機能プラグイン３０２は、Ｓ７０４で受信したＯＣＲ処理実行結果を操作部２０４に表示し、決定するファイル名の候補としてユーザに提示する。
Ｓ７０６において、単独機能プラグイン３０２は、提示したファイル名の候補をファイル名として決定する指示がユーザからなされたか否かを判定する。単独機能プラグイン３０２は、判定の結果、指示がなされた場合には続くＳ７０７に進み、指示がなされていない場合はＳ７０６の処理を続ける。
Ｓ７０７において、単独機能プラグイン３０２は、Ｓ７０６にてファイル名として決定する指示を受けたＯＣＲ実行結果を、スキャン画像データを汎用データフォーマットに変換後のファイル名に決定し、汎用データフォーマットへの変換を実施する。
【００３０】
以上説明した構成により、並行動作ができない制限を持つＮａｔｉｖｅ画像処理モジュールに対する画像処理要求が輻輳した場合でも、ユーザへの応答性を向上させることができるようになる。特に、図６を用いて説明したような、画像形成装置１０１のユーザからの指示を受けてバックグラウンドで実施される画像処理を実行している間でも、図７及び図８を用いて説明したように画像処理結果を操作部２０４に表示するために利用する、ユーザへの応答性に直接関係する画像処理を受け付けることができるようになる。更に、そのような画像処理の受け付けを可能とするためのキュー３２６をＪａｖａ実行環境上の画像処理プラグイン３０３に配置することで、画像形成装置１０１の組み込みソフトウェアに変更を加えることなく上述した効果を実現することができるようになる。
【００３１】
＜実施形態２＞
実施形態１では、組み込みソフトウェアとして画像形成装置１０１に配置されているＮａｔｉｖｅ画像処理モジュール３１６が並行動作できない制限を有する場合でも、そのような制限により生じ得るユーザへの応答性の劣化を、組み込みソフトウェアの実装を変更することなく抑制できるようになることを示した。
本実施形態では、画像処理プラグイン３０３がキュー３２６の制御を適切に行うことで、ユーザへの応答性の劣化を更に抑制することができることを、図面を用いて説明する。本実施形態の説明は、実施形態１で説明した構成と異なる部分についてのみ説明し、実施形態１と同一の構成や処理については、同一の付番を用いる。
【００３２】
図９は、画像処理接続ライブラリ３３２が画像処理を受け付け、画像処理プラグイン３０３に処理依頼を行う情報処理の一例を示すフローチャートである。本フローチャートを用いて、画像処理プラグイン３０３を用いた画像処理の一例を示す。
まず、画像処理プラグイン３０３は、Ｓ５０１、Ｓ５０２、Ｓ５０３の処理を経て取得したキュー３２６の先頭に存在する画像処理ジョブを取得する。
Ｓ９０１において、画像処理プラグイン３０３は、Ｓ５０３で取得した画像処理ジョブに含まれる、応答性直結フラグがＯＮであるか否かを判定する。ここで、応答性直結フラグは先述の画像処理パラメータの１つとして画像処理ジョブに含ませることができるフラグ値であり、これがＯＮである場合、その画像処理ジョブが画像形成装置１０１のユーザへの応答性に直結するジョブであることを示すものである。Ｓ９０１の判定の結果、応答性直結フラグがＯＮである場合（Ｓ９０１がＹＥＳの場合）、画像処理プラグイン３０３は、先述したＳ５０４、Ｓ５０５、Ｓ５０７、Ｓ５０８、Ｓ５０９を経て画像処理を完了する。一方、応答性直結フラグがＯＦＦである場合（Ｓ９０１がＮＯの場合）、Ｓ９０２に進む。応答性直結フラグは、ジョブの属性の一例である。
【００３３】
Ｓ９０２において、画像処理プラグイン３０３は、その時点でキュー３２６に存在するジョブの中に、応答性直結フラグがＯＮであるジョブが存在するか否かを判定する。判定の結果、存在しなかった場合（Ｓ９０２がＮＯの場合）、画像処理プラグイン３０３は、Ｓ５０３で取得した画像処理ジョブについて、Ｓ５０４、Ｓ５０５、Ｓ５０７、Ｓ５０８を経て画像処理を完了する。一方、存在した場合（Ｓ９０２がＹＥＳの場合）、画像処理プラグイン３０３は、Ｓ９０３に進む。
Ｓ９０３において、画像処理プラグイン３０３は、応答性直結ジョブのうち、キュー３２６の最も前方にある画像処理ジョブを取得する。そして、画像処理プラグイン３０３は、その画像処理ジョブに対してＳ５０４、Ｓ５０５、Ｓ５０７、Ｓ５０８を経て画像処理を完了する。
【００３４】
図１０は、実施形態１において図７を用いて説明したスキャン画像データの汎用フォーマット変換後ファイルのファイル名を決定する処理において、先述した応答性直結フラグをＯＮにして画像処理ジョブを実行する情報処理の一例を示すフローチャートである。
単独機能プラグイン３０２は、Ｓ７０１、Ｓ７０２の処理を経て、ファイル名に指定する領域８０１の指定を画像形成装置１０１のユーザから受信したとする。これを受けて、Ｓ１００１において、単独機能プラグイン３０２は、画像処理接続ライブラリ３３２に対して、領域８０１に対するＯＣＲ処理の実行を依頼する画像処理ジョブの応答性直結フラグをＯＮにする。続いて、単独機能プラグイン３０２は、Ｓ７０３、Ｓ７０４、Ｓ７０５、Ｓ７０６、Ｓ７０７の処理を経て、処理を完了する。
【００３５】
以上図９及び図１０を用いて説明した処理を実行することで、実施形態１で説明した効果に加えて、例えば図６で説明したＳｅａｒｃｈａｂｌｅＰＤＦ生成処理を実施するページ数が多い場合等でも、図１０に係るファイル名決定処理のような、ユーザの応答性に直結する画像処理を優先して行うことができるようになり、ユーザへの応答性の劣化を更に抑制することができるようになる。
【００３６】
＜実施形態３＞
本実施形態では、図５、９で説明したものとは異なる方法により課題を解決する方法について図面を用いて説明する。本実施形態の説明は、実施形態１及び２で説明した構成と異なる部分について説明し、実施形態１と同一の構成や処理については、同一の付番を用いる。
図１１は、実施形態３の画像形成装置１０１のソフトウェアの構造の一例を模式的に表す階層図である。ここでは、図３を用いて説明した画像処理プラグイン３０３は更に、画像処理ジョブ受付モジュール１１０１と画像処理ジョブ実行モジュール１１０２とを持つ。画像処理ジョブ受付モジュール１１０１は、画像処理接続ライブラリ３３２から依頼された画像処理ジョブを受け付け、キュー３２６に登録する処理を行う。画像処理ジョブ実行モジュール１１０２は、画像処理ジョブ受付モジュール１１０１がキュー３２６に登録した画像処理ジョブを取得し、ジョブの実行をＮａｔｉｖｅ画像処理実行クライアント３３１に依頼する処理を行う。
【００３７】
図１２は、画像処理ジョブ受付モジュール１１０１が実行する情報処理の一例を示すフローチャートである。本フローチャートは、Ｓ４０５において画像処理接続ライブラリ３３２が画像処理プラグイン３０３に対して画像処理を依頼することで処理が開始される。
Ｓ１２０１において、画像処理ジョブ受付モジュール１１０１は、画像処理接続ライブラリ３３２からの画像処理依頼を受信する。このとき受信する画像処理依頼には、画像処理を実施する対象となる画像データと共に、画像処理パラメータとして、実施する画像処理、応答性直結フラグ、画像処理結果保存場所が含まれている。ここで、応答性直結フラグとは、先述の画像処理パラメータの１つとして画像処理ジョブに含ませることができるフラグ値であり、これがＯＮである場合、その画像処理ジョブが画像形成装置１０１のユーザへの応答性に直結するジョブであることを示すものである。また、画像処理結果保存場所は、画像処理の実行結果を保存するための領域を指定するためのパラメータであり、例えばＨＤＤ２１３上の特定の領域を示すファイルパスを指定するのでもよいし、また他の値を指定するのでもよい。本実施形態の説明においては、画像処理結果保存場所として、ＨＤＤ２１３の特定の領域を示すファイルパスが記載されているものとして説明する。
続くＳ１２０２において、画像処理ジョブ受付モジュール１１０１は、Ｓ１２０１で受信した画像処理依頼を画像処理ジョブとしてキュー３２６に登録し、本フローチャートの処理を終了する。Ｓ１２０２の処理は、Ｓ１２０１で受信する１度の依頼に応じて、キューに１つのジョブを登録する処理の一例である。
【００３８】
図１３は、画像処理ジョブ実行モジュール１１０２及びＮａｔｉｖｅ画像処理実行クライアント３３１が実行する、画像処理ジョブに対する情報処理の一例を示すフローチャートである。
Ｓ１３０１において、画像処理ジョブ実行モジュール１１０２は、キュー３２６に画像処理ジョブが存在するか否かを判定する。画像処理ジョブ実行モジュール１１０２は、前述したＳ１２０２が実行されたことに伴いキュー３２６に画像処理ジョブが存在する場合（Ｓ１３０１がＹＥＳの場合）、Ｓ１３０２に進み、画像処理ジョブが存在しない場合には、再びＳ１３０１を実行する。
Ｓ１３０２において、画像処理ジョブ実行モジュール１１０２は、キュー３２６に存在する画像処理ジョブのうち、キュー３２６の先頭に存在するものを取得する。
Ｓ１３０３において、画像処理ジョブ実行モジュール１１０２は、Ｓ１３０２で取得した画像処理ジョブに含まれる応答性直結フラグがＯＮであるか否かを判定する。画像処理ジョブ実行モジュール１１０２は、判定の結果、応答性直結フラグがＯＮである場合（Ｓ１３０３がＹＥＳの場合）、Ｓ１３０６に進み、一方ＯＦＦであった場合（Ｓ１３０３がＮＯの場合）、Ｓ１３０４に進む。
Ｓ１３０４において、画像処理ジョブ実行モジュール１１０２は、その時点でキュー３２６に存在するジョブの中に、応答性直結フラグがＯＮであるジョブが存在するか否かを判定する。画像処理ジョブ実行モジュール１１０２は、判定の結果、存在しなかった場合（Ｓ１３０４がＮＯの場合）、Ｓ１３０６に進み、存在した場合（Ｓ１３０４がＹＥＳの場合）、Ｓ１３０５に進む。Ｓ１３０４の処理は、キューに含まれる各ジョブの属性に基づき、キューの先頭以外に応答性直結フラグがＯＮであるジョブが存在するか否かを判定する処理の一例である。
Ｓ１３０５において、画像処理ジョブ実行モジュール１１０２は、応答性直結ジョブのうち、キュー３２６の最も前方にある画像処理ジョブを取得し、Ｓ１３０６に進む。
【００３９】
Ｓ１３０６において、画像処理ジョブ実行モジュール１１０２は、Ｓ１３０２、又はＳ１３０５で取得した画像処理ジョブをＮａｔｉｖｅ画像処理実行クライアント３３１に依頼する。続いて、Ｎａｔｉｖｅ画像処理実行クライアント３３１は、依頼を受けた画像処理ジョブに基づき、Ｎａｔｉｖｅ画像処理実行サーバ３１５への画像処理リクエストを作成し、Ｎａｔｉｖｅ画像処理実行サーバ３１５にリクエストを送信する。画像処理リクエストは、Ｓ１２０１における画像処理依頼と同等の情報、即ち、画像処理を実施する対象となる画像データと、実施する画像処理、応答性直結フラグ、画像処理結果保存場所等の処理パラメートとを共に含んでいる。画像処理リクエストを受けたＮａｔｉｖｅ画像処理実行サーバ３１５により事項される処理については、図１４を用いて後述する。
Ｓ１３０７において、Ｎａｔｉｖｅ画像処理実行クライアント３３１は、Ｓ１３０６で送信した画像処理リクエストの結果をＮａｔｉｖｅ画像処理実行サーバ３１５から受信したか否かを判定する。Ｎａｔｉｖｅ画像処理実行クライアント３３１は、判定の結果、受信していない場合（Ｓ１３０７がＮＯの場合）、再びＳ１３０７を実行し、受信した場合（Ｓ１３０７がＹＥＳの場合）、Ｓ１３０８に進む。
Ｓ１３０８において、Ｎａｔｉｖｅ画像処理実行クライアント３３１は、Ｓ１３０７で受信した画像処理結果を画像処理ジョブ実行モジュール１１０２に通知する。続いて、この通知を受けた画像処理ジョブ実行モジュール１１０２は、対応する画像処理ジョブの画像処理パラメータに記載された画像処理結果保存場所に画像処理結果の書き込み行い、その旨を画像処理接続ライブラリ３３２に通知する。
Ｓ１３０９において、画像処理ジョブ実行モジュール１１０２は、実行した画像処理ジョブをキュー３２６から削除し、Ｓ１３０１に戻り、再度、Ｓ１３０１からの処理を繰り返す。
【００４０】
図１４は、Ｎａｔｉｖｅ画像処理実行サーバ３１５及びＮａｔｉｖｅ画像処理モジュール３１６が実行する情報処理の一例を示すフローチャートである。
Ｓ１４０１において、Ｎａｔｉｖｅ画像処理実行サーバ３１５は、Ｓ１３０６でＮａｔｉｖｅ画像処理実行クライアント３３１より送信される画像処理リクエストを受信したか否かを判定する。Ｎａｔｉｖｅ画像処理実行サーバ３１５は、判定の結果、受信していない場合（Ｓ１４０１がＮＯの場合）、再びＳ１４０１を実行し、受信した場合（Ｓ１４０１がＹＥＳの場合）、Ｓ１４０２に進む。
Ｓ１４０２において、Ｎａｔｉｖｅ画像処理実行サーバ３１５は、受信した画像処理リクエストに含まれる処理パラメータを基に、画像処理の実行を依頼する対象となるＮａｔｉｖｅ画像処理モジュール３１６を探索する。
Ｓ１４０３において、Ｎａｔｉｖｅ画像処理実行サーバ３１５は、Ｓ１４０２の探索の結果、対応するＮａｔｉｖｅ画像処理モジュール３１６が存在するか否かを判定する。Ｎａｔｉｖｅ画像処理実行サーバ３１５は、判定の結果、対象のＮａｔｉｖｅ画像処理モジュールが存在しない場合（Ｓ１４０３がＮＯの場合）、Ｓ１４０６に進み、存在した場合（Ｓ１４０３がＹＥＳの場合）、Ｓ１４０４に進む。
Ｓ１４０４において、Ｎａｔｉｖｅ画像処理実行サーバ３１５は、画像処理を実行するＮａｔｉｖｅ画像処理モジュール３１６に、画像処理の対象となる画像データと処理パラメータを送信し、画像処理の実行を依頼する。この依頼を受けたＮａｔｉｖｅ画像処理モジュール３１６は、受信した画像データ及び処理パラメータを基に画像処理を実行し、その処理結果をＮａｔｉｖｅ画像処理実行サーバ３１５に通知する。
Ｓ１４０５において、Ｎａｔｉｖｅ画像処理実行サーバ３１５は、Ｓ１４０１で受信した画像処理リクエストに対するレスポンスとして、画像処理結果をＮａｔｉｖｅ画像処理実行クライアント３３１に返却し、Ｓ１４０１に戻る。
Ｓ１４０６において、Ｎａｔｉｖｅ画像処理実行サーバ３１５は、Ｓ１４０１で受信した画像処理リクエストを実行可能なＮａｔｉｖｅ画像処理モジュール３１６が存在しないことを示すエラーメッセージをレスポンスとしてＮａｔｉｖｅ画像処理実行クライアント３３１に返却し、Ｓ１４０１に戻る。
【００４１】
以上説明した構成や手順を実施することで、図６、図７、図１０を用いて示したような画像処理要求（Ｓ６０３、Ｓ７０３）が輻輳する場合でも、画像処理ジョブ受付モジュール１１０１と画像処理ジョブ実行モジュール１１０２とが非同期に処理を実行することができるようになる。そのため、図５、図９で説明したものとは異なる方法でユーザへの応答性の劣化を抑制することができるようになる。
【００４２】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給する。そして、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００４３】
以上、本発明の実施形態の一例について詳述したが、本発明は係る特定の実施形態に限定されるものではない。
実施形態１及び実施形態２では、ＯＣＲ処理を実施するＮａｔｉｖｅ画像処理モジュール３１６が並行動作を実施できない制限がある場合に、対応する画像処理プラグイン３０３がＯＣＲ画像処理ジョブに対するキュー３２６を保持する構成を説明した。しかし、これに限定されるものではない。例えば、実施形態１及び実施形態２で説明したＯＣＲ処理実施用のＮａｔｉｖｅ画像処理モジュール３１６とは別に、ＯＣＲ処理を実施可能な画像処理モジュールがＪａｖａ言語実行環境３３０やサーバ１０５に配置されているのでもよい。更にそれら画像処理モジュールに対応する画像処理プラグイン３０３はキュー３２６を有していない構成でもよい。そのような構成において、画像処理プラグイン３０３は適切な基準に従って、それら複数存在するＯＣＲ処理実施モジュールの何れを使用するかを選択するようにしてもよい。
【００４４】
以上、上述した各実施形態によれば、並行動作ができない制限を持つ組み込みソフトウェアとして実装された画像処理モジュールに対する画像処理要求が輻輳した場合でも、ユーザへの応答性の劣化を抑えることができるようなる。更に、そのような効果を、組み込みソフトウェアに変更を加えることなく実現することができるようになる。
【符号の説明】
【００４５】
１０１  画像形成装置
２１１  ＣＰＵ
２１３  ＨＤＤ
【図１】
2019154019.tif 000003
【図２】
2019154019.tif 000004
【図３】
2019154019.tif 000005
【図４】
2019154019.tif 000006
【図５】
2019154019.tif 000007
【図６】
2019154019.tif 000008
【図７】
2019154019.tif 000009
【図８】
2019154019.tif 000010
【図９】
2019154019.tif 000011
【図１０】
2019154019.tif 000012
【図１１】
2019154019.tif 000013
【図１２】
2019154019.tif 000014
【図１３】
2019154019.tif 000015
【図１４】
2019154019.tif 000016