以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態における情報処理システムの構成例を示す図である。同図の情報処理システム1において、一台以上の画像形成装置10、及び一台以上のユーザ端末20は、LAN(Local Area Network)等のネットワーク40(有線又は無線の別は問わない。)を介して接続されている。また、OCRサーバ50、翻訳サーバ60、及び課金管理サーバ70は、インターネット等の広域的なネットワーク80を介してネットワーク40と接続されている。
画像形成装置10は、印刷、スキャン、コピー、及びFAX送受信等の機能(画像形成機能)を一台の筐体によって実現する複合機である。但し、いずれか一つの機能を実現する装置(プリンタ、スキャナ、コピー機、ファクシミリ等)を画像形成装置10として用いてもよい。なお、画像形成装置10は、利用された画像形成機能に関する課金情報をHDD(Hard Disk Drive)等の不揮発性の記録媒体に記録する。
ユーザ端末20は、ユーザが利用する個人端末であり、ソフトウェアプログラムのインストール及び実行が可能であり、通信機能を有するものであれば、特定の装置に限定されない。ユーザ端末20の具体例として、デスクトップ型のPC(Personal Computer)、ノートPC、PDA(Personal Digital Assistance)、又は携帯電話等の情報処理装置が挙げられる。
OCRサーバ50は、サービス提供装置の一例であり、OCR(Optical Character Recognition)機能をWebサービス(翻訳サービス)としてネットワーク上に提供するアプリケーションプログラムを備えたコンピュータである。
翻訳サーバ60は、サービス提供装置の一例であり、文書データ(例えば、テキストデータ)の翻訳機能(例えば、英語から日本語への翻訳)をWebサービス(翻訳サービス)としてネットワーク上に提供するアプリケーションプログラムを備えたコンピュータである。
なお、OCRサーバ50及び翻訳サーバ60は、それぞれのサービスを有料で提供する。また、説明の便宜上、OCRサーバ50及び翻訳サーバ60は、それぞれ画像形成装置10の提供者と異なる事業者によって運営されていることとする。
課金管理サーバ70は、画像形成装置10、OCRサーバ50、及び翻訳サーバ60によって提供されるサービス(実行される処理)に対する課金情報を一元的に管理するためのWebサービス(課金管理サービス)を備えたコンピュータである。説明の便宜上、本実施の形態において課金管理サービス70は、画像形成装置10のメーカーによって運営されていることとする。したがって、画像形成装置10のサービスマンは、課金管理サーバ70において記録された課金情報に基づいて課金を行うための手続き等を行う。
図2は、本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。図2において、画像形成装置10は、コントローラ11、スキャナ12、プリンタ13、モデム14、操作パネル15、ネットワークインタフェース16、及びSDカードスロット17等のハードウェアを有する。
コントローラ11は、CPU111、RAM112、ROM113、及びHDD114等を有する。ROM113には、各種のプログラムやプログラムによって利用されるデータ等が記録されている。RAM112は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。CPU111は、RAM112にロードされたプログラムを処理することにより、各種の機能を実現する。HDD114には、プログラムやプログラムが利用する各種のデータ等が記録される。
スキャナ12は、原稿より画像データを読み取るためのハードウェアである。プリンタは13、印刷データを印刷用紙に印刷するためのハードウェアである。モデム14は、電話回線に接続するためのハードウェアであり、FAX通信による画像データの送受信を実行するために用いられる。操作パネル15は、ユーザからの入力の受け付けを行うめのボタン等の入力手段や、液晶パネル等の表示手段を備えたハードウェアである。ネットワークインタフェース16は、LAN等のネットワーク(有線又は無線の別は問わない。)に接続するためのハードウェアである。SDカードスロット17は、SDカード80に記録されたプログラムを読み取るために利用される。すなわち、画像形成装置10では、ROM113に記録されたプログラムだけでなく、SDカード80に記録されたプログラムもRAM112にロードされ、実行されうる。
図3は、本発明の実施の形態における画像形成装置及びユーザ端末のソフトウェア構成例を示す図である。同図において、ユーザ端末20は、スキャンウィジェット21a、印刷ウィジェット21b、翻訳コピーウィジェット21c、ウィジェットマネージャ22、及びOS23等を有する。
スキャンウィジェット21a、印刷ウィジェット21b、及び翻訳コピーウィジェット21cは、本実施の形態において、ウィジェット21として総称されるアプリケーションプログラムである。近年では、ウィジェット(Widget)又はガジェット(Gadget)とよばれる手軽なアプリケーションが流通している。本実施の形態では、手軽にインストールして利用可能なアプリケーションという程度の意味においてこれらのアプリケーションをウィジェット21と呼ぶ(すなわち、技術的な意義において限定する趣旨ではない)。本実施の形態において、各ウィジェット21は、画像形成装置10又はネットワーク80上において提供されているサービスを利用して、所定の処理フローを制御するという点において共通する。
スキャンウィジェット21aは、画像形成装置10にスキャンを実行させ、スキャンされた画像データをユーザ端末20内に保存するウィジェット21である。
印刷ウィジェット21bは、ユーザ端末20内に保存されている文書データの印刷を画像形成装置10に実行させるウィジェット21である。
翻訳コピーウィジェット21cは、画像形成装置10にスキャンを実行させ、スキャンされた画像データに対するOCR処理をOCRサーバ50に実行させ、OCR処理の結果得られるテキストデータの翻訳処理を翻訳サーバ60に実行させ、翻訳処理されたテキストデータの印刷を画像形成装置10に実行させるウィジェット21である。すなわち、翻訳コピーウィジェット21cは、あたかも英語の文書をコピーすると日本語の文書がコピー結果として出力されるという処理フローを実現する。
ウィジェットマネージャ22は、ウィジェット21のフレームワークとして位置付けられ、ウィジェット21と画像形成装置10との間の通信の仲介等を行う。各ウィジェット21は、ウィジェットマネージャ22によって規定されるインタフェース及び処理手順を備える必要がある。換言すれば、ウィジェットマネージャ22と協調して動作するアプリケーションが、本実施の形態におけるウィジェット21である。
OS23は、いわゆるOS(Operating System)である。ユーザ端末20上の各ソフトウェアは、OS23上においてプロセス又はスレッドとして動作する。
一方、画像形成装置10は、標準アプリ121、SDKアプリ122、SDKプラットフォーム123、コントロールサービス124、及びOS125等を有する。
標準アプリ121は、画像形成装置10に標準的に(出荷時に予め)実装されているアプリケーションの集合である。同図では、スキャンアプリ1211、印刷アプリ1212、コピーアプリ1213、及びFAXアプリ1214が例示されている。スキャンアプリ1211は、スキャンジョブを実行する。印刷アプリ1212は印刷ジョブを実行する。コピーアプリ1213は、コピージョブを実行する。FAXアプリ1214は、FAXの送信ジョブ又は受信ジョブを実行する。
コントロールサービス124は、各種のハードウェアリソース等を制御するための機能を上位アプリケーション等に対して提供するソフトウェアモジュール群であり、例えば、ネットワーク通信に関する機能、スキャナの制御機能、プリンタの制御機能、メモリの管理機能等を有する。
SDKアプリ122は、画像形成装置10の出荷後において、画像形成装置10の機能拡張を図るためのプラグインとして追加的にインストールされるアプリケーションである。同図では、SDKアプリ122として、プロバイダアプリ1221が例示されている。プロバイダアプリ1221は、ウィジェット21を画像形成装置10より操作可能とするための処理やウィジェット21に要求された処理を画像形成装置10に実行させるための処理等を実行する。
SDKプラットフォーム123は、SDKアプリ122の実行環境を提供する。各SDKアプリ122は、SDKプラットフォーム123が提供するAPI(Application Program Interface)を利用して開発される。例えば、SDKプラットフォーム123は、スキャン機能を利用させるためのインタフェース、印刷機能を利用させるためのインタフェース、コピー機能を利用させるためのインタフェース等をSDKアプリ122に提供する。なお、SDKプラットフォーム123のAPIは公開されており、サードベンダ等によってもSDKアプリ122は開発されうる。
OS125は、いわゆるOS(Operating System)である。画像形成装置10上の各ソフトウェアは、OS125上においてプロセス又はスレッドとして動作する。
続いて、ウィジェット21、ウィジェットマネージャ22、及びプロバイダアプリ1221について更に詳しく説明する。図4は、第一の実施の形態におけるウィジェット、ウィジェットマネージャ、及びプロバイダアプリの機能構成例を示す図である。
同図に示されるように、各ウィジェット21は、ウィジェットUI部211、ウィジェット情報送信部212、連携部213、ロジック部214、及び属性情報管理ファイル215等を有する。
ウィジェットUI部211は、ウィジェット21に関する各種の表示画面をユーザ端末20の表示装置に表示させる。ウィジェット情報送信部212は、ウィジェット21が起動されたときに、ウィジェット情報の登録要求をウィジェットマネージャ22に送信する。ウィジェット情報にはウィジェット21の実行に必要な情報(例えば、処理フローに関する情報)が含まれる。連携部213は、ウィジェットマネージャ22とのコミュニケーション(情報のやりとり等)を制御する。属性情報管理ファイル215は、ウィジェット21対する設定情報等を格納するファイルである。ロジック部214は、各ウィジェット21に固有の機能が実装される部分である。
ウィジェットマネージャ22は、ウィジェット情報登録部223、広告部224、ウィジェット情報提供部225、中継部226、及びウィジェット情報管理テーブル227等を有する。
ウィジェット情報登録部223は、ウィジェット21より送信されるウィジェット情報の登録要求を受信し、当該ウィジェット情報をウィジェット情報管理テーブル227に保存する。ウィジェット情報管理テーブル227には、ユーザ端末20において起動されている各ウィジェット21のウィジェット情報が登録されるテーブルであり、ユーザ端末20の記憶装置に生成される。
広告部224は、ウィジェット情報登録部223によって受信されたウィジェット情報に含まれるユーザID等をネットワーク上に広告(ブロードキャスト又はマルチキャスト等)する。広告は、ユーザ単位(ユーザID単位)で発行される。具体的には、ユーザ端末20内における或るウィジェット21の起動に応じてユーザAに関して広告が発行された後、当該ユーザ端末20内において、他のウィジェット21が起動されたとしても当該ウィジェット情報に応じた広告は発行されない。本実施の形態では、便宜上、ユーザ端末20とユーザとは一対一に対応する。したがって、広告部224による広告は、何らかのウィジェット21を利用可能になったユーザが新たに発生したことを画像形成装置10に通知するための情報であるといえる。但し、ウィジェット情報単位で広告が行われてもよい。この場合、同一ユーザについて重複して広告が発行されることになるが、重複の排除は画像形成装置10側で行えばよい。
ウィジェット情報提供部225は、画像形成装置10からの要求に応じ、ウィジェット情報管理テーブル227に登録されているウィジェット情報を画像形成装置10に提供(送信)する。中継部226は、ウィジェット21とプロバイダアプリ1221とのコミュニケーションを中継する。
プロバイダアプリ1221は、ユーザ検知部131、UI制御部132、ウィジェット情報取得部133、ジョブトラッキングデータ登録部134、課金情報送信部135、データ転送部136、データ受信部137、サービス制御部138、及びユーザ管理テーブル141等を有する。
ユーザ検知部131は、ウィジェットマネージャ22より発行される広告に基づいて、ウィジェット21を利用可能なユーザの存在を検知し、広告に含まれているユーザID等をユーザ管理テーブル141に登録する。ユーザ管理テーブル141は、ウィジェット21をネットワーク上において起動しているユーザの一覧を管理するテーブルである。
UI制御部132は、ウィジェット21の操作指示等の入力をユーザより受け付ける。すなわち、ウィジェット21は、ユーザ端末20に配置されているが、画像形成装置10の操作パネル15からも操作されうる。ウィジェット情報取得部133は、ユーザ管理テーブル141に登録されているユーザの中から実行対象として選択されたユーザに属するウィジェット21のウィジェット情報をウィジェットマネージャ22より取得する。
ジョブトラッキングデータ登録部134は、実行対象として選択されたウィジェット21の処理フローの開始に際し、当該処理フローに対するジョブトラッキングデータ(以下、「JTD」とも表記する。)を生成し、生成されたジョブトラッキングデータを課金管理サーバ70に送信(登録)する。ジョブトラッキングデータとは、ウィジェットが実行する処理フローにおいて利用されるサービス(実行される処理)ごとに課金情報(課金量を示す情報)やサービスを提供するための処理の成否を示す情報等を記録するためのデータをいう。なお、ジョブトラッキングデータ登録部134は、ジョブトラッキングデータごとに一意な識別情報(ジョブトラッキングID)を生成し、ジョブトラッキングデータに割り当てる。
課金情報送信部135は、処理フローに含まれているサービス(処理)の中で、画像形成装置10において実行されたサービスに関する課金情報をジョブトラッキングIDと共に課金管理サーバ70へ送信する。
データ転送部136は、実行対象とされたウィジェット21の処理フローに含まれるサービス(処理)のうち、画像形成装置10に提供が要求されているサービス(実行が要求されている処理)の実行の結果として出力されるデータや、ジョブトラッキングID等をウィジェットマネージャ22に転送する。
データ受信部137は、画像形成装置10以外のサービスの実行主体(本実施の形態ではOCRサーバ50又は翻訳サーバ60)によるサービスの実行結果として出力されるデータやジョブトラッキングID等をウィジェットマネージャ22より受信する。
サービス制御部138は、ウィジェット21から要求されたサービスの実行を制御する。サービスを実現するための処理は、標準アプリ121や他のSDKアプリ122に委譲される。
続いて、課金管理サーバ70の詳細について説明する。図5は、本発明の実施の形態における課金管理サーバのハードウェア構成例を示す図である。図5の課金管理サーバ70は、それぞれバスBで相互に接続されているドライブ装置700と、補助記憶装置702と、メモリ装置703と、CPU704と、インタフェース装置705とを有する。
課金管理サーバ70での処理を実現するプログラムは、CD−ROM等の記録媒体701によって提供される。プログラムを記録した記録媒体701がドライブ装置700にセットされると、プログラムが記録媒体701からドライブ装置700を介して補助記憶装置702にインストールされる。但し、プログラムのインストールは必ずしも記録媒体701より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置702は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置703は、プログラムの起動指示があった場合に、補助記憶装置702からプログラムを読み出して格納する。CPU704は、メモリ装置703に格納されたプログラムに従って課金管理サーバ70に係る機能を実行する。インタフェース装置705は、ネットワークに接続するためのインタフェースとして用いられる。
図6は、第一の実施の形態における課金管理サーバの機能構成例を示す図である。同図において、課金管理サーバ70は、ジョブトラッキングデータ受信部71、課金情報受信部72、ジョブトラッキングデータ永続化部73、及びジョブトラッキングデータ記憶部74等を有する。これら各部は、課金管理サーバ70にインストールされたプログラムがCPU704に実行させる処理により実現される。
ジョブトラッキングデータ受信部71は、画像形成装置10のジョブトラッキングデータ登録部134より送信されるジョブトラッキングデータを受信し、当該ジョブトラッキングデータをメモリ装置703に記録する。課金情報受信部72は、処理フローにおいて実行される各サービス(処理)の実行主体(画像形成装置10、OCRサーバ50、翻訳サーバ60等)よりサービスの実行に応じた課金情報及びジョブトラッキングIDを受信し、当該ジョブトラッキングIDに対応するジョブトラッキングデータに対し課金情報を記録する。ジョブトラッキングデータ永続化部73は、処理フローが終了したタイミングでジョブトラッキングデータをジョブトラッキングデータ記憶部74に記録する。ジョブトラッキングデータ記憶部は、例えば、補助記憶装置702においてジョブトラッキングデータを永続的に管理する記憶領域である。
以下、情報処理システム1の処理手順について説明する。図7は、ウィジェット起動時の処理手順を説明するためのシーケンス図である。同図の初期状態において、ウィジェットマネージャ22は既に起動されていることとする。
例えば、ユーザの指示入力に応じて翻訳コピーウィジェット21cが起動されると、翻訳コピーウィジェット21cのウィジェット情報送信部212は、属性情報管理ファイル215よりウィジェット情報を取得し、当該ウィジェット情報をウィジェットマネージャ22のウィジェット情報登録部223に送信する(S101)。
図8は、翻訳コピーウィジェットのウィジェット情報の例を示す図である。同図において、翻訳コピーウィジェット21cのウィジェット情報は、ウィジェットID、ユーザID、ウィジェットアドレス、表示名、及び処理フロー情報等を含む。
ウィジェットIDは、各ウィジェット21を一意に識別する識別情報である。ユーザIDは、翻訳コピーウィジェット21cのユーザの識別子である。すなわち、各ウィジェット21は、当該ウィジェット21がインストールされたユーザ端末20のユーザに関連付けられている。ウィジェットアドレスは、ネットワーク通信において各ウィジェット21を一意に識別するための識別情報(例えば、URL等)である。表示名は、翻訳コピーウィジェット21cの名前の表示用の文字列である。
処理フロー情報は、翻訳コピーウィジェット21cが実行する処理フローにおいて利用されるサービス(実行される処理)ごとに、サービス名、提供者名、URL、及び設定情報等を含む情報である。サービス名は、サービスの識別名称である。本実施の形態では日本語で記載されているが、プログラム上処理しやすい符号等によってサービス名が定義されてもよい。提供者名は、サービスを提供している事業者の名前である。例えば、スキャンサービス及び印刷サービスに対する提供者名(「ABC」)は、画像形成装置10のメーカーを示す。また、OCRサービス及び翻訳サービスに対する提供者名は、OCRサーバ50又は翻訳サーバ60の運営者の名前を示す。URLは、画像形成装置10のプロバイダアプリ1221が各サービスをネットワーク上において識別するための情報である。本実施の形態ではURLを用いているが、利用する通信プロトコルに応じて他の識別情報をURLに代替させてもよい。設定情報は、各サービスに対する設定情報(実行条件)である。例えば、スキャンサービスであれば、解像度、カラーモード等に関する指定である。また、OCRサービスであれば、文書の方向(横書き又は縦書き)や言語の種別等に関する指定である。翻訳サービスであれば、翻訳元と翻訳先の言語の指定等である。印刷サービスであれば、用紙サイズ、カラーモード、集約、両面等に関する指定である。
なお、本実施の形態において、処理フロー情報におけるサービスの配列順は、サービスの利用順に従っている。すなわち、翻訳コピーウィジェット21cの処理フローでは、スキャン→OCR→翻訳→印刷の順でサービスが利用(処理が実行)される。処理フロー情報におけるサービスの配列順をサービスの利用順とは無関係に定義可能とする場合は、サービスの利用順を示す情報を処理フロー情報に含めてもよい。また、同図では、翻訳コピーウィジェット21cのウィジェット情報について説明したが、他のウィジェット21のウィジェット情報も同様の構造を有する。
ところで、ウィジェット情報は、属性情報管理ファイル215より取得されるものである。したがって、ユーザは、属性情報管理ファイル215を編集することにより、各サービスの設定情報に関してカスタマイズを行うことができる。
続いて、ウィジェット情報登録部223は、受信されたウィジェット情報に含まれているユーザIDに対応するウィジェット情報管理テーブル227に当該ウィジェット情報を登録する(S102)。当該ユーザIDに対応するウィジェット情報管理テーブル227が存在しない場合、ウィジェット情報登録部223は、当該ユーザIDに対応するウィジェット情報管理テーブル227を生成し、生成されたウィジェット情報管理テーブル227にウィジェット情報を登録する。なお、本実施の形態では、ユーザ端末20とユーザとは一対一に対応する。また、ウィジェット情報管理テーブル227は、ウィジェットマネージャ22の終了時に削除される。したがって、本実施の形態では、ユーザ端末20の起動後において初めてウィジェット21が起動された場合、ウィジェット情報管理テーブル227が生成される。
ウィジェット情報管理テーブル227が新たに生成された場合(すなわち、受信されたウィジェット情報に含まれているユーザIDに係るユーザについて、初めてウィジェット情報が登録された場合)、広告部224は、受信されたウィジェット情報に含まれているユーザIDと、ウィジェット情報取得用URL(Uniform Resource Locator)とを含む広告をネットワーク上に発行する(S103)。ウィジェット情報取得用URLとは、ウィジェットマネージャ22ごとに(すなわち、ユーザ端末20ごとに)一意なURLである。
当該広告は、ユーザ端末20と通信可能な状態にある各画像形成装置10のユーザ検知部131によって受信される。すなわち、複数の画像形成装置10において広告は受信されうる。各画像形成装置10のユーザ検知部131は、広告の受信に応じ、当該広告に含まれているユーザID及びウィジェット情報取得用URLをユーザ管理テーブル141に登録する(S104)。
図9は、ユーザ管理テーブルの構成例を示す図である。同図に示されるように、ユーザ管理テーブル141は、ユーザIDとウィジェット情報取得用URLとを対応づけて管理する。同図では、ユーザA及びユーザBについてレコードが登録されている例が示されている。
以上によって、翻訳コピーウィジェット21cの存在はウィジェットマネージャ22によって認識された。また、ユーザ端末20のユーザの存在は、画像形成装置10に認識された。したがって、当該ユーザは、画像形成装置10より翻訳コピーウィジェット21cを利用できる状態となった。なお、当該ユーザが、スキャンウィジェット21aや印刷ウィジェット21bを続けて起動した場合、これらのウィジェット21についてもウィジェット情報がウィジェットマネージャ22のウィジェット情報管理テーブル227に登録される。但し、広告は発行されない。当該ユーザに関する広告は既に発行されているからである。
図7の処理の後、ユーザは、翻訳コピーウィジェット21cを動作させるために画像形成装置10の設置場所へ移動する。なお、複数の画像形成装置10がユーザ端末20と通信可能な状態である場合、ユーザは任意の画像形成装置10を選択可能である。すなわち、ユーザは、複数の画像形成装置10の中で所望の画像形成装置10に赴いて翻訳コピーウィジェット21cを動作させることができる。
続いて、画像形成装置10におけるユーザによる操作に応じて実行される処理について説明する。図10は、実行対象とするウィジェットの選択処理の処理手順を説明するためのシーケンス図である。
ユーザによって操作パネル15を介してプロバイダアプリ1221の利用指示が入力されると(S121)、プロバイダアプリ1221のUI制御部132は、ユーザ管理テーブル141に登録されている情報に基づいてユーザ選択画面を操作パネル15に表示させる(S122)。なお、ステップS122において、UI制御部132は、ウィジェットマネージャ22よりユーザ情報を取得し、取得されたユーザ情報に基づいてユーザ選択画面を表示させるようにしてもよい。この場合、図7のステップS103及びS104は必ずしも事前に行われなくてもよい。
図11は、ユーザ選択画面の表示例を示す図である。同図に示されるユーザ選択画面610には、ユーザIDごとにボタンが表示されている。同図では、ユーザAに対応するボタン611とユーザBに対応するボタン612とが表示されている。
続いて、ユーザは、ユーザ選択画面610において自らのユーザIDに対応するボタンを押下する(S123)。ボタンの押下に応じ、ウィジェット情報取得部133は、選択されたボタンに対応するユーザIDに関連付けられているウィジェット情報取得用URLをユーザ管理テーブル141より取得する。なお、ユーザIDに対応するボタンの押下に応じ、ユーザの認証を行い、ユーザが認証された場合にのみ、以降の処理が実行されるようにしてもよい。
続いて、ウィジェット情報取得部133は、ウィジェット情報取得用URL宛に、ウィジェット情報の取得要求を送信する(S124)。ウィジェット情報取得用URL宛のウィジェット情報の取得要求は、ウィジェットマネージャ22のウィジェット情報提供部225によって受信される。ウィジェット情報提供部225は、ウィジェット情報管理テーブル227に登録されている全てのウィジェット21のウィジェット情報を取得し、取得されたウィジェット情報の一覧をプロバイダアプリ1221に送信する(S125)。ウィジェット情報の一覧の送信に際し、ウィジェット情報提供部225は、プロバイダアプリ1221と各ウィジェット21との通信を中継するためのURL(以下、「ウィジェット中継用URL」という。)をウィジェット21ごと(ウィジェット情報ごと)に一意に生成する。ウィジェット情報提供部225は、ウィジェット21ごとに生成されたウィジェット中継用URLを、各ウィジェット21に対応するウィジェット情報に付加し、ウィジェット中継用URLが付加されたウィジェット情報の一覧をプロバイダアプリ1221に送信する。したがって、ステップS125において送信されるウィジェット情報は、例えば、図12に示されるような構成を有する。
図12は、ウィジェットマネージャからプロバイダアプリに送信される翻訳コピーウィジェットのウィジェット情報の構成例を示す図である。
図12に示されるウィジェット情報は、図8のウィジェット情報に対してウィジェット中継用URLが付加されたものである。ステップS125では、同図に示されるようなウィジェット情報の一覧が送信される。ここでは、ウィジェット情報が一つしか含まれないものもウィジェット情報の一覧という。
なお、ウィジェット中継用URLは、ウィジェット情報がウィジェット情報管理テーブル227に登録される際に生成され、ウィジェット情報に付加されてもよい。
続いて、プロバイダアプリ1221のUI制御部132は、受信されたウィジェット情報の一覧をRAM112に記録しておき、当該ウィジェット情報の一覧に基づいて、ユーザに利用可能なウィジェット21の一覧を含む画面(ウィジェット選択画面)を表示させる(S126)。
図13は、ウィジェット選択画面の表示例を示す図である。同図に示されウィジェット選択画面620には、ウィジェット21ごとにボタンが表示されている。同図では、翻訳コピーウィジェット21cに対応するボタン621と、スキャンウィジェット21aに対応するボタン622と、印刷ウィジェット21bに対応するボタン623とが表示されている。
ウィジェット選択画面620において、翻訳コピーウィジェット21cに対応するボタン621が選択され、スキャナ12に原稿がセットされた後、操作パネル15のスタートキーが押下されると(S127)、翻訳コピーウィジェット21cの処理フローが開始される。
続いて、翻訳コピーウィジェット21cの処理フローの実行時の処理手順について説明する。図14は、第一の実施の形態における翻訳コピーウィジェットの処理フローの実行時の処理手順を説明するためのシーケンス図である。
翻訳コピーウィジェット21cが実行対象として選択されたことに応じ、プロバイダアプリ1221のジョブトラッキングデータ登録部134は、翻訳コピーウィジェット21cに対応するウィジェット情報(以下、「カレントウィジェット情報」という。)に基づいて、ジョブトラッキングデータ(JTD)をRAM112に生成する(S131)。
図15は、ジョブトラッキングデータの構成例を示す図である。同図に示されるように、ジョブトラッキングデータは、カレントウィジェット情報の処理フロー情報に対してジョブトラッキングIDを付加したものである。ジョブトラッキングIDは、ジョブトラッキングデータの識別情報であり、例えば、ジョブトラッキングデータごとに一意な文字列である。ジョブトラッキングIDは、ジョブトラッキングデータの生成に伴って、ジョブトラッキングデータ登録部134によって割り当てられ、ジョブトラッキングデータに付与(記録)される。
ジョブトラッキングデータは、更に、処理フロー情報において、サービスごとに課金度数及び実行結果を記録可能なように構成されている。課金度数は、課金量を示す指標である。課金額そのものが課金度数として記録されてもよい。実行結果は、サービスの実行の成否を示す情報である。図15の状態では、まだいずれのサービスも実行されていないため、課金度数及び実行結果の値は全てのサービスについて空となっている。なお、ジョブトラッキングデータには各サービスに対する設定情報は含まれていない。以下に説明されるように、ジョブトラッキングデータは、各サービスの実行主体には流通せず、設定情報を含む意義が無いからである。
ジョブトラッキングデータ登録部134は、カレントウィジェット情報と、生成されたジョブトラッキングデータのジョブトラッキングIDとの関連付け情報をRAM112に記録しておく。例えば、カレントウィジェット情報のウィジェットIDとジョブトラッキングIDとの組(ペア)が当該関連付け情報としてRAM112に記録される。
続いて、ジョブトラッキングデータ登録部134は、課金管理サーバ70にジョブトラッキングデータを送信する(S132)。課金管理サーバ70のジョブトラッキングデータ受信部71は、ジョブトラッキングデータの受信に応じ、当該ジョブトラッキングデータをメモリ装置703におけるジョブトラッキングデータの一時管理領域に記録しておく(S133)。なお、課金管理サーバ20と通信するための課金管理サーバ20の識別情報(IPアドレス又はURL等)は、画像形成装置10のHDD114に予め記録されている。
続いて、プロバイダアプリ1221のサービス制御部138は、カレントウィジェット情報に含まれている処理フロー情報の第一エントリ(図12参照)のサービス名が「スキャン」であることとURLが空であることとに基づいて、スキャンアプリ1211がスキャンサービスを実行すべきことを判定する。すなわち、URLが空であることにより、スキャンサービスの実行場所は画像形成装置10内であることが判定される。また、画像形成装置10内においてスキャンサービスを実行するアプリケーションは、スキャンアプリ1221であるため、スキャンサービスの実行主体はスキャンアプリ1221であると判定される。
そこで、サービス制御部138は、カレントウィジェット情報に含まれているスキャンサービスに対する設定情報を指定して、スキャンの実行指示をスキャンアプリ1211に入力する(S134)。スキャンアプリ1211は、指定された設定情報にしたがって1枚の原稿に対するスキャンをスキャナ12に実行させる(S135)。続いて、スキャンアプリ1211は、原稿よりスキャンされた画像データ(スキャン画像)と、1枚のスキャン分の課金度数及びスキャンの実行結果とを含む情報(以下「スキャン結果情報」という。)とをサービス制御部138に出力する(S136)。
続いて、プロバイダアプリ1221の課金情報送信部135は、カレントウィジェット情報に対応するジョブトラッキングID(JTID)とスキャン結果情報とを関連付けて課金管理サーバ70に送信する(S137)。課金管理サーバ70の課金情報受信部72は、メモリ装置703に記録されているジョブトラッキングデータの中で、受信されたジョブトラッキングIDを有するジョブトラッキングデータにスキャン結果情報の内容を記録する(S138)。具体的には、当該ジョブトラッキングデータのスキャンサービスに対する課金度数及び実行結果がスキャン結果情報に基づいて更新される。
続いて、プロバイダアプリ1221のサービス制御部138は、カレントウィジェット情報の処理フロー情報の第二エントリに含まれているサービス名「OCR」とURLとに基づいて、外部のWebサービスによってOCRサービスが実行されるべきことを判定する。当該判定に応じ、プロバイダアプリ1221のデータ転送部136は、スキャン画像及びジョブトラッキングIDを含むスキャン完了通知をカレントウィジェット情報に含まれているウィジェット中継用URL宛に送信する(S139)。ウィジェット中継用URL宛に送信されたスキャン完了通知は、ウィジェットマネージャ22の中継部226によって受信される。中継部226は、当該ウィジェット中継用URLに対応するウィジェット情報をウィジェット情報管理テーブル227より取得し、当該ウィジェット情報に含まれているウィジェットアドレス宛にスキャン完了通知を転送する。当該ウィジェットアドレス宛に送信されたスキャン完了通知は、翻訳コピーウィジェット21cのロジック部214によって受信される。
このように、データ転送部136から翻訳コピーウィジェット21cへのデータの転送は、ウィジェットマネージャ22を介して実行される。但し、シーケンス図においてはウィジェットマネージャ22による仲介処理は便宜上省略されている。また、以降の説明においても、ウィジェットマネージャ22による仲介処理に関しては省略して説明する。
続いて、翻訳コピーウィジェット21cのロジック部214は、スキャン完了通知の受信に応じ、スキャン画像に対するOCR処理の実行要求をOCRサーバ50に送信する(S140)。当該実行要求には、スキャン完了通知に含まれていたスキャン画像及びジョブトラッキングIDと、OCRサービスに対する設定情報とが含まれる。なお、翻訳コピーウィジェット21cのロジック部214は、翻訳コピーウィジェット21cが実行する処理フロー、当該処理フローにおいて利用される各サービス、各サービスに対する設定情報、各サービスの提供者の所在(URL等)を知っている。斯かる知識はロジック部214にロジックとして組み込まれていてもよいし(ハードコーディングされていてもよいし)、翻訳コピーウィジェット21cの属性情報管理ファイル215に基づいて動的に獲得されてもよい。
続いて、OCRサーバ50は、受信された設定情報に従って、スキャン画像に対してOCR処理を実行する(S141)。続いて、OCRサーバ50は、OCR処理に応じた課金度数及びOCR処理の実行結果を含む情報(以下、「OCR結果情報」という。)とジョブトラッキングIDとを関連付けて課金管理サーバ70に送信する(S142)。なお、OCRサーバ50が課金管理サーバ70と通知するための課金管理サーバ70の識別情報は、OCRサーバ50に予め記録されていてもよいし、ジョブトラッキングID等と共に、プロバイダアプリ1221より転送されてもよい。斯かる事情は、翻訳サーバ60についても同様である。
課金管理サーバ70の課金情報受信部72は、メモリ装置703に記録されているジョブトラッキングデータの中で、受信されたジョブトラッキングIDを有するジョブトラッキングデータにOCR結果情報の内容を記録する(S143)。具体的には、当該ジョブトラッキングデータのOCRソフトサービスに対する課金度数及び実行結果がOCR結果情報に基づいて更新される。
続いて、OCRサーバ50は、OCR処理の結果得られるテキストデータ(OCR済データ)及びジョブトラッキングIDを含むOCR完了通知を翻訳コピーウィジェット21cに返信する(S144)。
翻訳コピーウィジェット21cのロジック部214は、OCR完了通知に応じ、OCR済データに対する翻訳処理の実行要求を翻訳サーバ60に送信する(S145)。当該実行要求には、OCR済データ及びジョブトラッキングIDと、翻訳サービスに対する設定情報とが含まれる。
続いて、翻訳サーバ60は、受信された設定情報に従って、OCR済データに対して翻訳処理を実行する(S146)。続いて、翻訳サーバ60は、翻訳処理に応じた課金度数及び翻訳処理の実行結果を含む情報(以下、「翻訳結果情報」という。)とジョブトラッキングIDとを関連付けて課金管理サーバ70に送信する(S147)。課金管理サーバ70の課金情報受信部72は、メモリ装置703に記録されているジョブトラッキングデータの中で、受信されたジョブトラッキングIDを有するジョブトラッキングデータに、翻訳結果情報の内容を記録する(S148)。具体的には、当該ジョブトラッキングデータの翻訳サービスに対する課金度数及び実行結果が翻訳結果情報に基づいて更新される。
続いて、翻訳サーバ60は、翻訳処理の結果得られるテキストデータ(翻訳済データ)及びジョブトラッキングIDを含む翻訳完了通知を翻訳コピーウィジェット21cに返信する(S149)。
翻訳コピーウィジェット21cのロジック部214は、翻訳完了通知に応じ、翻訳済データの印刷処理の実行要求を画像形成装置10のプロバイダアプリ1221に送信する(S150)。当該実行要求には、翻訳済データ及びジョブトラッキングIDが含まれる。なお、翻訳コピーウィジェット21cからプロバイダアプリ1221への処理の実行要求は、ウィジェットマネージャ22の中継部226を介して転送される。但し、ウィジェットマネージャ22による斯かる中継処理については、シーケンス図及び以降の説明において便宜上省略する。
プロバイダアプリ1221のデータ受信部137は、印刷処理の実行要求を受信すると、当該実行要求をサービス制御部138に通知する。サービス制御部138は、当該実行要求に含まれている翻訳済データと、ジョブトラッキングIDに対応するカレントウィジェット情報に含まれている印刷サービスに対する設定情報とを指定して、印刷の実行指示を印刷アプリ1212に入力する(S151)。印刷アプリ1212は、指定された設定情報にしたがって翻訳済データの印刷をプリンタ13に実行させる(S152)。続いて、印刷アプリ1212は、1枚の印刷分の課金度数及び印刷の実行結果(以下、「印刷結果情報」という。)が記録をサービス制御部138に出力し、印刷の完了をサービス制御部138に通知する(S153)。
続いて、プロバイダアプリ1221の課金情報送信部135は、カレントウィジェット情報に対応するジョブトラッキングID(JTID)と印刷結果情報とを関連付けて課金管理サーバ70に送信する(S154)。課金管理サーバ70の課金情報受信部72は、メモリ装置703に記録されているジョブトラッキングデータの中で、受信されたジョブトラッキングIDを有するジョブトラッキングデータに印刷結果情報の内容を記録する(S155)。具体的には、当該ジョブトラッキングデータの印刷サービスに対する課金度数及び実行結果が印刷結果情報に基づいて更新される。
続いて、課金管理サーバ70のジョブトラッキングデータ永続化部73は、当該ジョブトラッキングデータに含まれている全てのサービスに対する実行結果又は課金度数が記録されたことに応じ、当該ジョブトラッキングデータをジョブトラッキングデータ記憶部74に記録する(S156)。
図16は、課金度数及び実行結果が記録されたジョブトラッキングデータの例を示す図である。同図に示されるジョブトラッキングデータには、スキャンサービス、OCRサーサービス、翻訳サービス、及び印刷サービスのそれぞれについて、課金度数「1」、「2」、「5」、「1」が記録されている。また、全てのサービスの実行結果として、成功を示す「OK」が記録されている。なお、ジョブトラッキングデータのジョブトラッキングデータ記憶部74への記録は、当該ジョブトラッキングデータに記録された内容(特に、課金度数)が確定されたことを意味する。
続いてプロバイダアプリ1221のデータ転送部136は、印刷処理の完了通知を翻訳コピーウィジェット21cに送信する(S157)。印刷処理の完了通知に応じ、翻訳コピーウィジェット21cのロジック部214は、処理フローの実行を終了させる。
なお、課金管理サーバ70のジョブトラッキングデータ記憶部74に記録されたジョブトラッキングデータは、ユーザに対する課金情報として利用される。ここで、翻訳コピーウィジェット21cが利用した全てのサービスによる課金度数は、ジョブトラッキングデータに記録され、課金管理サーバ70において一元的に管理されている。したがって、翻訳コピーウィジェット21cのユーザに対する課金は、ジョブトラッキングデータに基づいて一括的に行うことができる。例えば、画像形成装置10のメーカーのサービスマンが、ジョブトラッキングデータを参照して、一括してユーザに対して課金額の請求を行う。したがって、ユーザは、一つの請求元に対して課金額を支払えばよく、サービスの提供者ごとに課金額を支払うといった煩雑さから解放される。
なお、一括して課金額を徴収した画像形成装置10のメーカーは、ジョブトラッキングデータに記録されている課金度数に応じて、徴収した課金額を他のサービスの提供者(OCRサーバ50の運営者や翻訳サーバ60の運営者等)に分配する。課金額に関するこのような取り扱いについては、画像形成装置10のメーカーと、各サービスの提供者との間で予め契約等を結んでおけばよい。
また、課金に関する情報(課金度数及び実行結果等)は、ウィジェット21は経由せずに各サービスの実行主体から課金管理サーバ70へ直接的に転送される。したがって、不正な開発者によって開発された不正なウィジェット21(以下、「不正ウィジェット」という。)によって、課金度数及び実行結果等が改ざんされる可能性を低下させることができる。その結果、サービスのただ乗りを適切に防止することができる。
なお、原稿が複数ページ有る場合、最も単純なシーケンスとしては、ステップS135〜S157をページ数分繰り返せば(ループさせれば)よい(ケース1)。但し、翻訳コピーウィジェット21cが複数ページ数分のデータを滞留させることにより、ループさせるステップが一部分に限定されるようにしてもよい。具体的には、翻訳コピーウィジェット21cは、ステップS135〜S139までが全ページ分について実行され、全ページ分のスキャン画像が受信されるまで待機するようにしてもよい(ケース2)。この場合、翻訳コピーウィジェット21cは、ステップS140において全ページ分のスキャン画像をまとめてOCRサーバ50に送信する。したがって、ステップS140以降の処理(OCR、翻訳、及び印刷)では、全ページ分のデータが一回分の処理対象とされる。
または、翻訳コピーウィジェット21cは、ステップS135〜S149までが全ページ分について実行され、全ページ分の翻訳済データが受信されるまで待機するようにしてもよい(ケース3)。この場合、翻訳コピーウィジェット21cは、ステップS150において全ページ分の翻訳済データをまとめてプロバイダアプリ1221に送信する。したがって、ステップS150以降の処理(OCR、翻訳、及び印刷)では、全ページ分のデータが一回分の処理対象とされる。
上記ケース1〜ケース3の概略を図17に示す。図17は、翻訳コピーウィジェットによる処理フローの制御のバリエーションを示す図である。同図において、OCRサーバ50及び翻訳サーバ60は、便宜上、同一軸上に記載されている。また、d1は、ジョブトラッキングIDを示す。同一符号のジョブトラッキングIDの値は各ケース内において同一である。
例えば、原稿が3ページであるとすると、ケース1では、スキャン→OCR→翻訳→印刷といった処理フローが3回繰り返される(ループする)。この場合、全てのループにおいて同一のジョブトラッキングIDd1が流通する。したがって、3ページ分の課金度数及び実行結果は同一のジョブトラッキングデータに記録される。
ケース2では、3ページ分について連続的にスキャンされ、3ページ分のスキャン画像に対してOCR及び翻訳が実行され、3ページ分の翻訳済データに対して印刷が実行される。この場合、OCR処理の実行要求及びその応答時、翻訳処理の実行要求及びその応答時、並びに印刷処理の実行要求時において、3ページに対して一つのジョブトラッキングIDd1が転送される。ケース2においても、3ページ分の課金度数及び実行結果は同一のジョブトラッキングデータに記録されるからである。
ケース3では、スキャン→OCR→翻訳といった処理フローが3回繰り返され、3ページ分の翻訳済データが翻訳コピーウィジェット21cに滞留する。その後、3ページ分の翻訳済データに対して印刷が実行される。この場合、印刷処理の実行要求時において3ページに対して一つのジョブトラッキングIDd1が転送される。ケース2においても、3ページ分の課金度数及び実行結果は同一のジョブトラッキングデータに記録されるからである。
続いて、処理フローの途中でエラーが発生した場合について説明する。図18は、第一の実施の形態において翻訳コピーウィジェットの処理フローの途中でエラーが発生した場合の処理手順を説明するためのシーケンス図である。図18中、図14と同一ステップには同一ステップ番号を付し、その説明は省略する。
同図では、OCRサーバ50によるOCR処理(S141e)においてエラーが発生した例が示されている。この場合、OCRサーバ50は、OCR処理が失敗したこと(エラーが発生したこと)示すOCR結果情報とジョブトラッキングIDとを課金管理サーバ70に送信する(S142e)。課金管理サーバ70の課金情報受信部72は、メモリ装置703に記録されているジョブトラッキングデータの中で、受信されたジョブトラッキングIDを有するジョブトラッキングデータにOCR結果情報の内容を記録する(S143e)。具体的には、OCRサービスにおいてエラーが発生したことをジョブトラッキングデータに記録する。
図19は、エラーが発生した場合のジョブトラッキングデータの例を示す図である。同図の例では、OCRサービスの実行結果として、失敗(エラー)を示す「NG」が記録されている。なお、同図の例ではOCRサービスの課金度数には何も記録されていないが、0(零)が記録されてもよい。
処理フローの途中においてエラーが発生したことを受けて、課金管理サーバ70のジョブトラッキングデータ永続化部73は、ジョブトラッキングデータをジョブトラッキングデータ記憶部74に記録する(S156e)。
続いて、OCRサーバ50は、ジョブトラッキングIDを含むエラー通知メッセージを翻訳コピーウィジェット21cに返信する(S144e)。翻訳コピーウィジェット21cのロジック部214は、エラー通知メッセージを受信すると、以降の処理を中止し、ジョブトラッキングIDを含むエラー通知メッセージをプロバイダアプリ1221へ転送し、処理フローを中止させる(S145e)。プロバイダアプリ1221のデータ受信部137によってエラーメッセージが受信されると、サービス制御部138は、当該エラーメッセージに含まれているジョブトラッキングIDに対応する処理フローが中止されたことを認識する。
図18の場合、ジョブトラッキングデータは、図19に示される状態で確定することとなる。したがって、この場合、スキャンサービスに関してのみ課金が行われる。スキャンサービスの成果物であるスキャン画像は、翻訳コピーウィジェット21cに提供されており、翻訳コピーウィジェット21cが当該スキャン画像をユーザ端末20に保存しておくことが可能だからである。すなわち、ユーザは、当該スキャン画像を利用することが可能であり、スキャンサービスの便益を享受できたと考えることができるからである。同様に、翻訳サービス又は印刷サービスにおいてエラーが発生した場合、それまでに実行されたサービスに対する課金が行われる。
処理フローの途中でエラーが発生した場合であっても、実行されたサービスまで課金が行われるといった仕組みは、原稿が複数ページの場合も同様である。
続いて、第二の実施の形態について説明する。図20は、第二の実施の形態におけるウィジェット、ウィジェットマネージャ、及びプロバイダアプリの機能構成例を示す図である。図20中、図4と同一部分には同一符号を付し、その説明は省略する。
同図において、プロバイダアプリ1221は、共通鍵提供部139を更に有する。共通鍵提供部139は、各サービスの実行結果として生成されるデータやジョブトラッキングデータ等を暗号化するための暗号鍵(共通鍵)を生成する。共通鍵提供部139は、また、生成された共通鍵をOCRサーバ50、翻訳サーバ60、及び課金管理サーバ70等に安全に転送する。
図21は、第二の実施の形態における課金管理サーバの機能構成例を示す図である。図21中、図6と同一部分には同一符号を付し、その説明は省略する。
同図において、課金管理サーバ70は、共通鍵受信部75を更に有する。共通鍵受信部75は、プロバイダアプリ1221の共通鍵提供部139より転送される共通鍵を受信し、管理する。
以下、第二の実施の形態の情報処理システム1の処理手順について説明する。第二の実施の形態では、第一の実施の形態と異なる点について説明する。したがって、特に明記しない点については第一の実施の形態と同様でよい。
図22は、第二の実施の形態における翻訳コピーウィジェットの処理フローの実行時の処理手順を説明するためのシーケンス図である。すなわち、第二の実施の形態では、図14の代わりに図22に示される処理が実行される。
ステップS201において、プロバイダアプリ1221のジョブトラッキングデータ登録部134は、図14のステップS131と同様にジョブトラッキングデータ(JTD)をRAM112に生成する。続いて、プロバイダアプリ1221の共通鍵提供部139は、ネットワーク上を流通するデータを暗号化するための暗号鍵(以下、「共通鍵A」という。)をRAM112に生成し、ジョブトラッキングIDと関連付けておく(S202)。共通鍵Aの生成ロジックは所定のものに限定されない。例えば、乱数発生器で発生させた乱数を共通鍵Aとしてもよい。
続いて、共通鍵提供部139は、ジョブトラッキングデータに含まれている各サービス提供者のURLと、HDD114に予め記録されている課金管理サーバ70の識別情報とに基づいて、OCRサーバ50、翻訳サーバ60、及び課金管理サーバ70に対して電子証明書の提示を要求する(S203、S209、S215)。ここでいう電子証明書は、いわゆる認証局(CA)によって発行されているデジタル証明書である。OCRサーバ50、翻訳サーバ60、及び課金管理サーバ70より電子証明書が返信されると(S204、S210、S216)、共通鍵提供部139は、返信された電子証明書の信頼性を確認する(S205、S211、S217)。電子証明書の信頼性の確認方法については公知技術に従えばよい。電子証明書の信頼性が確認されると、共通鍵提供部139は、共通鍵Aを各電子証明書に含まれている公開鍵によって暗号化する(S206、S212、218)。続いて、共通鍵提供部139は、暗号化された共通鍵AをジョブトラッキングID(JTID)とを関連付けてOCRサーバ50、翻訳サーバ60、及び課金管理サーバ70に送信する(S207、S213、S219)。図22において、<>で囲まれたデータは暗号化されていることを示す。例えば、ステップS207、S213、及びS219における<共通鍵>という表記は、暗号化された共通鍵Aを示す。
OCRサーバ50、翻訳サーバ60、及び課金管理サーバ70のそれぞれは、暗号化された共通鍵Aをそれぞれの秘密鍵によって復号し、共通鍵Aと共に受信されたジョブトラッキングIDと関連付けて記憶装置に保存しておく(S208、S214、S220)。なお、ステップS215〜S232において、課金管理サーバ70で実行される処理は、共通鍵受信部75によって制御される。共通鍵受信部75は、受信された共通鍵AをジョブトラッキングIDと関連付けてメモリ装置703に記録する。
以上で、共通鍵Aは、画像形成装置10、OCRサーバ50、翻訳サーバ60、及び課金管理サーバ70によって安全に共有されたことになる。
続いて、プロバイダアプリ1221のジョブトラッキングデータ登録部134は、ステップS132(図14)と同様に課金管理サーバ70にジョブトラッキングデータを送信する(S231)。課金管理サーバ70のジョブトラッキングデータ受信部71は、ジョブトラッキングデータの受信に応じ、当該ジョブトラッキングデータをメモリ装置703におけるジョブトラッキングデータの一時管理領域に記録しておく(S232)。
続いて、プロバイダアプリ1221のサービス制御部138は、ステップS134(図14)と同様に、スキャンの実行指示をスキャンアプリ1211に入力する(S233)。スキャンアプリ1211は、ステップS135と同様にスキャナ12にスキャンを実行させ(S234)、スキャン画像及びスキャン結果情報(課金度数、実行結果を含む情報)をサービス制御部138に出力する(S235)。
続いて、プロバイダアプリ1221の課金情報送信部135は、スキャン結果情報を共通鍵Aによって暗号化する(S236)。課金情報送信部135は、カレントウィジェット情報に対応するジョブトラッキングID(JTID)と暗号化されたスキャン結果情報とを課金管理サーバ70に送信する(S237)。課金管理サーバ70の課金情報受信部72は、受信されたジョブトラッキングIDに対応する共通鍵Aを用いてスキャン結果情報を復号する(S238)。続いて、課金情報受信部72は、受信されたジョブトラッキングIDを有するジョブトラッキングデータに復号されたスキャン結果情報の内容を記録する(S239)。
続いて、プロバイダアプリ1221のデータ転送部136は、スキャン画像を共通鍵Aによって暗号化する(S240)。続いて、データ転送部136は、ジョブトラッキングIDと、暗号化されたスキャン画像とを含むスキャン完了通知を翻訳コピーウィジェット21cに送信する(S241)。スキャン完了通知の受信に応じ、翻訳コピーウィジェット21cのロジック部214は、スキャン完了通知に含まれていたジョブトラッキングID及び暗号化されたスキャン画像を含むOCR処理の実行要求をOCRサーバ50に送信する(S241)。
続いて、OCRサーバ50は、受信されたジョブトラッキングIDに基づいて、受信されたデータを復号するための共通鍵Aを特定し、当該共通鍵Aを用いてスキャン画像を復号する(S243)。続いて、OCRサーバ50は、復号されたスキャン画像に対してOCR処理を実行する(S244)。続いて、OCRサーバ50は、共通鍵Aを用いてOCR済データ及びOCR結果情報を暗号化する(S245)。続いて、OCRサーバ50は、ジョブトラッキングIDと暗号化されたOCR結果情報とを課金管理サーバ70に送信する(S246)。課金管理サーバ70の課金情報受信部72は、受信されたジョブトラッキングIDに対応する共通鍵Aを用いてOCR結果情報を復号する(S247)。続いて、課金情報受信部72は、受信されたジョブトラッキングIDを有するジョブトラッキングデータに復号されたOCR結果情報の内容を記録する(S248)。
続いて、OCRサーバ50は、ジョブトラッキングID及び暗号化されたOCR済データを含むOCR完了通知を翻訳コピーウィジェット21cに返信する(S249)。翻訳コピーウィジェット21cのロジック部214は、OCR完了通知を受信すると、OCR済データに対する翻訳処理の実行要求を翻訳サーバ60に送信する(S250)。当該実行要求には、OCR完了通知に含まれていたジョブトラッキングID及び暗号化されたOCR済データが含まれる。
続いて、翻訳サーバ60は、受信されたジョブトラッキングIDに基づいて、受信されたデータを復号するための共通鍵Aを特定し、当該共通鍵Aを用いてOCR済データを復号する(S251)。続いて、翻訳サーバ60は、復号されたOCR済データに対して翻訳処理を実行する(S252)。続いて、翻訳サーバ60は、共通鍵Aを用いて翻訳済データ及び翻訳結果情報を暗号化する(S253)。続いて、翻訳サーバ60は、ジョブトラッキングIDと暗号化された翻訳結果情報とを課金管理サーバ70に送信する(S254)。課金管理サーバ70の課金情報受信部72は、受信されたジョブトラッキングIDに対応する共通鍵Aを用いて翻訳結果情報を復号する(S255)。続いて、課金情報受信部72は、受信されたジョブトラッキングIDを有するジョブトラッキングデータに復号された翻訳結果情報の内容を記録する(S256)。
続いて、翻訳サーバ60は、ジョブトラッキングID及び暗号化された翻訳済データを含む翻訳完了通知を翻訳コピーウィジェット21cに返信する(S257)。翻訳コピーウィジェット21cのロジック部214は、翻訳完了通知に応じ、翻訳済データの印刷処理の実行要求を画像形成装置10のプロバイダアプリ1221に送信する(S258)。当該実行要求には、ジョブトラッキングID及び暗号化された翻訳済データが含まれる。
プロバイダアプリ1221のデータ受信部137は、印刷処理の実行要求を受信すると、当該実行要求に含まれているジョブトラッキングIDに基づいて復号に利用する共通鍵Aを特定し、共通鍵Aを用いて暗号化されている翻訳済データを復号する(S259)。データ受信部137は、復号された翻訳済データを含む印刷処理の実行要求をサービス制御部138に入力する。
続くステップS260〜S262は、図14のステップS151〜S153と同様でよい。ステップS262に続いて、プロバイダアプリ1221の課金情報送信部135は、印刷結果情報を共通鍵Aによって暗号化する(S263)。課金情報送信部135は、カレントウィジェット情報に対応するジョブトラッキングIDと暗号化された印刷結果情報とを課金管理サーバ70に送信する(S264)。課金管理サーバ70の課金情報受信部72は、受信されたジョブトラッキングIDに対応する共通鍵Aを用いて印刷結果情報を復号する(S265)。続いて、課金情報受信部72は、受信されたジョブトラッキングIDを有するジョブトラッキングデータに復号された印刷結果情報の内容を記録する(S266)。続いて、課金管理サーバ70のジョブトラッキングデータ永続化部73は、ステップS156(図14)と同様に、ジョブトラッキングデータをジョブトラッキングデータ記憶部74に記録する(S267)。
続いてプロバイダアプリ1221のデータ転送部136は、印刷処理の完了通知を翻訳コピーウィジェット21cに送信する(S268)。印刷処理の完了通知に応じ、翻訳コピーウィジェット21cのロジック部214は、処理フローの実行を終了させる。
このように、中間データを暗号化させて流通させることにより、不正ウィジェットによる中間データの内容(文書情報)の漏洩等を適切に防止することができる。ここでいう不正ウィジェットとは、例えば、悪意のあるWebサービスの提供者等によって開発され、ネットワーク上でダウンロード可能とされているウィジェット21等を想定するとよい。当該ウィジェット21は、悪意のあるWebサービスへ中間データを流出させるという処理が実装されているものであるとする。しかし、このような不正ウィジェットによって流出されたデータは、暗号化されているため、平文の場合に比べて高い安全性が確保される。
なお、ステップS268において、データ転送部136は、印刷完了通知と共に共通鍵Aを翻訳コピーウィジェット21cに送信してもよい。そうすることにより、翻訳コピーウィジェット21cは、例えば、スキャン画像、OCR済データ、翻訳済データ等の中間データを保持しておいた場合に、共通鍵Aを利用してこれらの中間データを復号することができる。この際、プロバイダアプリ1221は、翻訳コピーウィジェット21cより電子証明書を取得し、当該電子証明書の信頼性が確認できた場合に翻訳コピーウィジェット21cに対して共通鍵Aを転送するようにしてもよい。この場合、当該電子証明書に含まれている公開鍵によって共通鍵Aを暗号化すれば、安全に共通鍵Aを転送することができる。
または、共通鍵Aの転送先は、ウィジェットマネージャ22としてもよい。ウィジェットマネージャ22は、ウィジェット21に比べて信頼性が高いからである。ウィジェットマネージャ22は、受信した共通鍵Aを利用して、翻訳コピーウィジェット21cによって所定のフォルダ等に記録されている中間データを復号すればよい。
なお、図22のように中間データ等が暗号化されるシーケンスにおいて処理フローの途中でエラーが発生した場合の処理手順は、図18より自明であるためその説明は省略する。但し、プロバイダアプリ1221は、エラーの発生に応じてステップS145e(図18)に相当するエラー通知が受信された場合、翻訳コピーウィジェット21cへの共通鍵Aの転送は実行しない。中間データが暗号化されるシーケンスにおいてエラーが発生した場合は、不正な処理が実行された可能性が高いと考えられるからである。例えば、処理フローの途中で、翻訳コピーウィジェット21c自身又は翻訳コピーウィジェット21cが不正に利用するWebサービスによって中間データの改ざんが行われ、その後の正当なサービスにおいて中間データの復号に失敗した可能性が考えられるからである。また、不正ウィジェット自身が不正処理を実行しようとし結果、中間データが暗号化されているために不正処理に失敗し、エラーが発生した可能性等も考えられるからである。更に、不正ウィジェット自身が故意にエラーを発生させ、課金逃れを試みようとしたことも考えられるからである。すなわち、暗号化されるシーケンスにおいて処理フローの途中でエラーが発生した場合、当該処理フローの全ての課金度数は無効化される。斯かる事情を見越してエラーを発生させることにより課金逃れを試みることが考えられるからである。
暗号化されるシーケンスにおいて処理フローの途中でエラーが発生した場合、当該処理フローの全ての課金度数が無効化されるのは、共通鍵Aがウィジェット21に転送されないことに基づく。すなわち、共通鍵Aがウィジェット21に転送されない場合、ユーザは、中間データを利用することはできない。中間データを復号することができないからである。そうすると、ユーザは、エラーが発生するまでのサービスの便益を享受したとはいえず、このような場合に課金を行うのは不当である。
そこで、課金管理サーバ70の課金情報受信部72は、ステップS142e(図18)のようにエラーが発生したことを示す結果情報を受信した場合、エラーが発生したサービスの実行結果として「NG」をジョブトラッキングデータに記録すると共に、当該ジョブトラッキングデータに既に記録されている他のサービスの課金度数を全て無効化する。例えば、既に記録されている課金度数の値を「0」にしたり、削除したり(クリアしたり)して、課金が行われないようにする。
図23は、課金度数が無効化されたジョブトラッキングデータの例を示す図である。同図のジョブトラッキングデータは、スキャンの成功後、OCR処理においてエラーが発生じた場合において、既に「1」が記録されていたスキャンサービスの課金度数が「0」に更新された例が示されている。
課金情報受信部72によって課金度数が無効化された後、エラーの発生に応じてジョブトラッキングデータ永続化部73によってジョブトラッキングデータはジョブトラッキングデータ記憶部74に記録される。したがって、図23の状態で課金度数は確定される。
なお、課金情報受信部72による課金度数の無効化は、課金情報受信部72が能動的に行うのではなく、エラー通知メッセージを受信したプロバイダアプリ1221からの指示に応じて行われてもよい。すなわち、ステップS145e(図18)に相当するエラー通知メッセージに続いて、プロバイダアプリ1221の課金情報送信部135は、ジョブトラッキングIDを指定して課金度数の無効化要求を課金管理サーバ70に送信する。課金管理サーバ70の課金情報受信部72部は、当該無効化要求に応じ、受信されたジョブトラッキングデータの課金度数の無効化を実行する。
ところで、利用する暗号方式によっては、暗号化及び復号処理は比較的負荷の高い処理になる場合もある。したがって、原稿が複数ページの場合、全ページについて暗号化を行うと性能の劣化が顕著となる可能性がある。また、ウィジェット21と各サービスの実行主体との間のネットワーク通信のセキュリティの確保という観点においては、そもそもネットワークインフラとしてSSL(Secure Socket Layer)やIPSec等の技術が採用されている可能性が高い。この場合、アプリケーションレベルにおいて改めて共通鍵を用いた暗号化を行うのは冗長であるとも考えられる。
そこで、原稿が複数ページの場合(処理対象とされるデータが複数の場合)は、一部のページ(一部のデータ)について暗号化を行うようにしてもよい。ページ数が少ない場合(所定枚数未満の場合)は、最初のページのみ暗号化を行ってもよいし、ページ数が多い場合(所定枚数以上の場合)は、間欠的に暗号化を行うようにしてもよい。
一部のページについてのみ暗号化を行う場合、暗号化を行う処理フロー(以下、「認証フロー」という。)の途中でエラーが発生した場合の課金範囲は、上記した通りである。すなわち、当該処理フローに対応するジョブトラッキングデータに記録されている全ての課金度数は無効化される。なお、暗号化を行う処理フローを「認証フロー」と呼ぶのは、暗号化によって、処理フローに含まれる各処理の正当性の確認が可能となる(すなわち、処理フローの認証が可能となる)といった効果も期待できるからである。したがって、認証フローを間欠的に行うことにより、処理フローの認証を間欠的に行うことができ、不正防止の効果を高めることができる。
一方、暗号化を行わない処理フロー(以下、「平文フロー」という。)の途中でエラーが発生した場合の課金範囲は、第一の実施の形態と同様である。すなわち、実行に成功したサービスについては課金が行われる。成功したサービスについて課金を行う理由は第一の実施の形態において説明した通りであるが、更に、認証フローが正常に動作しているにもかかわらず、平文フローでエラーが発生するということは、エラーの発生は、ユーザ側の問題に起因するとも考えられるからである。ユーザ側の問題とは、ウィジェット21において平文フローに故意にエラーを発生させる処理が入っている場合や、ネットワークの通信状態が悪化した場合等が一例として挙げられる。
したがって、認証フローと平文フローとが切り替わるタイミングで、ジョブトラッキングデータ登録部134は、ジョブトラッキングデータを新規に生成し、新規なジョブトラッキングデータを課金管理サーバ70に登録するようにするとよい。認証フローにおいて課金度数を無効化する場合に、無効化する範囲を容易に識別可能となるからである。すなわち、同一のジョブトラッキングIDと共に受信された課金度数は、同一のジョブトラッキングデータに記録される。したがって、課金情報受信手段72は、認証フローにおいて、処理の失敗を示す情報と共に受信された場合は、当該情報と共に受信されたジョブトラッキングIDに係るジョブトラッキングデータ内の課金度数を全て無効化すればよい。
なお、認証フローと平文フローとの間における、エラー発生時の上記のような課金範囲の相違に鑑みれば、認証フローにおいて処理対象とするページ数の単位は、1ページ又は少数ページ(所定枚数未満)であることが望ましい。認証フローにおいて途中でエラーが発生した場合、課金度数は全て無効化さてしまうため、万が一課金逃れが発生した場合に少数ページであれば被害又は損害を最小限に抑えることができるからである。
一方、平文フローにおいて処理対象とされるページ数の単位は、多数ページ(所定枚数以上)が望ましい。平文フローでは途中でエラーが発生した場合、成功したサービスについては課金が行われるため、課金逃れの可能性は低いと考えられるからである。また、処理効率の観点からも1回の処理フローで処理対象とされるページ数が多い方が効率的であるからである。
したがって、例えば、図24に示されるように認証フローと平文フローとを組み合わせてもよい。図24は、認証フローと平文フローとの組み合わせの一例を示す図である。
同図の例では、認証フローは、図17のケース1を1ページ分実行し、平文フローはケース2を3ページ分行う例が示されている。この場合、1及び5ページ目については認証フローが実行され、2〜4及び6〜8ページ目については平文フローが実行される。
なお、ケース2の代わりにケース3のシーケンスで平文フローを実行してもよい。また、ケース1を1ページ分又は複数ページ分繰り返すことによって平文フローを実行してもよい。同様に、認証フローにケース2又はケース3を採用してもよい。但し、この場合、上記したように処理対象とするページ数は少ない方が望ましい。
認証フローとするページ(処理フロー又はデータ)の選択は、プロバイダアプリ1221のデータ転送部136が行えばよい。認証フローは、定期的に実行されてもよいし、ランダムに実行されてもよい。ランダムな方が、不正ウィジェットに処理規則を看破されにくいという利点はある。
ランダムに認証フローが実行される場合、共通鍵提供部139が、暗号化対象とするページを示す情報(暗号化ページ情報)を共通鍵とともにOCRサーバ50や翻訳サーバ60に送信するようしてもよい。但し、暗号化ページ情報は必ずしも事前に通知されなくてもよい。例えば、OCRサーバ50や翻訳サーバ60が、受信された中間データ又はジョブトラッキングの一部分を解読して暗号化されているか否かを判断し、暗号化されていれば共通鍵を利用して受信データを復号するようにしてもよい。
また、認証フローの完了時に共通鍵をウィジェット21に転送する場合、共通鍵提供部139は、次の認証フロー時において共通鍵を更新(生成)し、更新された共通鍵をOCRサーバ50及び翻訳サーバ60に転送する。そうすることにより、認証フローごとに異なる共通鍵によって中間データの暗号化が行われるようにする。すなわち、データ転送部135は、認証フローごとに異なる共通鍵によってスキャン画像を暗号化する。OCRサーバ50は、認証フローごとに異なる共通鍵によってOCR済データを暗号化する。翻訳サーバ60は、認証フローごとに異なる共通鍵によって翻訳済データを暗号化する。その結果、図24の例では、1ページ目について提供された共通鍵を用いて、翻訳コピーウィジェット21cによって5ページ目の中間データ等に対して不正処理が実行されるのを防止することができる。
また、各サービスの課金度数及び実行結果を含む結果情報(スキャン結果情報、OCR結果情報、及び翻訳結果情報等)は、ウィジェット21は経由しない。したがって、結果情報については、必ずしも共通鍵によって暗号化されなくてもよい。
また、本実施の形態におけるOCRサーバ50や翻訳サーバ60等によるサービスのようにインターネット上で提供されているWebサービスは、課金体系として月額固定制やジョブ単位制等を採用している場合がある。このようなWebサービスに関しては、画像形成装置10とは異なり、1ページごと(1データごと)に課金度数は記録されなくてもよい。
ところで、本実施の形態では、画像形成装置10において最初にサービスが実行される(スキャンが実行される)ウィジェット21(翻訳コピーウィジェット21c)を用いて説明を行った。但し、ウィジェット21が実行可能な処理フローの自由度は高く、処理フローの起点は画像形成装置10に限定されない。例えば、ユーザ端末20に保存されている画像データをOCR処理し、翻訳処理し、印刷するといったウィジェット21(以下、「翻訳印刷ウィジェット」という。)が作成されてもよい。斯かる翻訳印刷ウィジェットについても、本実施の形態の内容は翻訳コピーウィジェット21cと同様に適用されうる。すなわち、翻訳印刷ウィジェットについても、図7及び図10において説明した処理が実行される。翻訳印刷ウィジェットが実行対象として選択された場合、図14において、ステップS134〜S136を除いた処理が実行される。したがって、ステップS139では、スキャン画像は転送されず、ジョブトラッキングデータがスキャン翻訳ウィジェットに転送される。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。