(57)【要約】【課題】従来手法ではアプリケーションやＯＳから充分な情報を取得することができないような環境下であっても、アプリケーションの動作状態を認識することが可能であり、且つ、拡張性の高いシステムを提供する。【解決手段】アプリケーション状態認識システム１００は、アプリケーションの表示画面の画像データを取得し、該画像データを分割し、各分割画像データからＵＩ部品及び文字並びにレイアウトを識別するＵＩ部品認識部１１０と、識別した各ＵＩ部品又は文字をノードとしたグラフ構造を算出し該グラフ構造に基づきアプリケーションの状態を識別する状態統合認識部１２０とを備える。【選択図】図１
2011181007.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ上で動作するアプリケーションの動作状態をアプリケーション状態認識装置が認識する方法において、
アプリケーション状態認識装置の部品認識手段が、前記アプリケーションが表示装置に出力している情報を取得し、取得した表示情報に含まれるユーザインタフェイスとしての部品及び文字を認識するとともに各部品及び文字間のレイアウトを認識するステップと、
アプリケーション状態認識装置の状態認識手段が、認識された部品情報及び文字情報並びにレイアウト情報に基づき各部品又は文字をノードとしたグラフ構造を算出し、算出したグラフ構造に基づきアプリケーションの動作状態を識別するステップとを備えた
ことを特徴とするアプリケーション状態認識方法。
【請求項２】
アプリケーションの動作状態に対応するグラフ構造をグラフ識別用データベースとして予め記憶手段に記憶しておき、
前記動作状態認識ステップでは、算出したグラフ構造とグラフ識別用データベースに記憶されているグラフ構造との間でグラフマッチング処理を行うことにより動作状態を識別する
ことを特徴とする請求項１記載のアプリケーション状態認識方法。
【請求項３】
前記部品及びレイアウト認識ステップでは、表示情報として、アプリケーションが表示装置に出力している画像データを取得する
ことを特徴とする請求項１又は２記載のアプリケーション状態認識方法。
【請求項４】
前記部品及びレイアウト認識ステップでは、取得した画像データを一以上の領域に分割し、分割された各画像データ取得に基づき部品及び文字並びにレイアウトを認識する
ことを特徴とする請求項３記載のアプリケーション状態認識方法。
【請求項５】
部品識別用の学習データを部品識別辞書として予め記憶手段に記憶しておき、
前記部品及びレイアウト認識ステップでは、画像データに対してノイズ除去や正規化等の前処理を行い、前処理された画像データの特徴量を抽出し、抽出された画像データの特徴量と記憶手段に記憶されている学習データとに基づき部品を識別する
ことを特徴とする請求項３又は４何れか１項記載のアプリケーション状態認識方法。
【請求項６】
コンピュータ上で動作するアプリケーションの動作状態を認識するアプリケーション状態認識装置において、
前記アプリケーションが表示装置に出力している情報を取得し、取得した表示情報に含まれるユーザインタフェイスとしての部品及び文字を認識するとともに各部品及び文字間のレイアウトを認識する部品識別手段と、
認識された部品情報及び文字情報並びにレイアウト情報に基づき各部品又は文字をノードとしたグラフ構造を算出し、算出したグラフ構造に基づきアプリケーションの動作状態を識別する動作状態識別手段とを備えた
ことを特徴とするアプリケーション状態認識装置。
【請求項７】
コンピュータを、請求項６記載のアプリケーション状態認識装置の各手段として機能させる
ことを特徴とするアプリケーション状態認識プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ上で動作するアプリケーション（ＡＰ）を通じて操作を行うユーザに対して、ユーザが操作を円滑に行うことを支援する技術に関するものである。
【背景技術】
【０００２】
ユーザによる操作を支援するには、現在のユーザやアプリケーションの状態を知る必要がある。現状態を知らないと、状態に依らずに適用可能な汎用的な支援に留まり、個別の状況に適合した具体的で個別的な支援を行うことができないためである。
【０００３】
アプリケーションの状態には、例えば、何という名前のアプリケーションを動かしているかといった情報，ウィンドウのタイトルが何であるかといった情報，ユーザがマウスをどの位置でクリックしたかといった情報，ラジオボタンの選択項目とリストの選択項目とテキストボックスの入力内容をあわせた情報など様々なものが挙げられる。つまり、ＯＳ（Operating System）で検知できる低レベルの情報（例えばＭｉｃｒｏｓｏｆｔ（登録商標）社製ＯＳであるＷｉｎｄｏｗｓ（登録商標）でのＷｉｎｄｏｗｓメッセージなど）から、画面上で確認できる情報（例えば、ユーザの描いた絵）やユーザの行動に関する情報（例えば、画面Ａを見ている）まで、様々な情報が状態を表す情報となる。ここでは、これらを区別するために、アプリケーション名や住所入力中などの情報は粒度の粗い状態情報とし、粒度の粗い状態を構成する情報（例えば、番地入力中や入力済の県名の値、ＯＳで扱う低レベルの情報など）を細かな粒度の状態情報として両者を区別する。
【０００４】
ユーザやアプリケーションの状態を知る従来手法として、アプリケーションプログラムやＯＳが提供する情報を利用する方法がある。例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）社製ＯＳであるＷｉｎｄｏｗｓ（登録商標）では、「ＡｕｔｏＩｔ」や「Ｓｐｙ＋＋」というツールが知られている（非特許文献１及び２参照）。これらのツールでは、ＯＳ上でのウィンドウの基本的な情報（例えばタイトル、クラス、サイズなど）の取得、ウィンドウやプロセス等とＯＳとの間でやりとりされるメッセージの取得などを行うことができる。そこで、これらの情報を複合的に組み合わせることで、アプリケーションの状態を一定レベルにおいて取得することが可能である。
【０００５】
しかしこの従来方法では、ユーザの操作する環境によっては、ユーザ支援に必要な情報を充分に取得することができないという問題がある。例えば、セキュリティ強化の目的で導入されることが多くなっているシンクライアント環境では、多くの場合非常に限られた情報しか取得することができない。シンクライアントの実装方式として比較的ポピュラーな画面情報を転送する方式では、従来手法を使うとアプリケーションの充分な情報を取得することができない。
【０００６】
そこで、スクリーンやウィンドウ全体を画像として一括に認識しようとする手法が提案されている（非特許文献３参照）。本手法は、より具体的には、スクリーンキャプチャ機能を用いて、現在の画面に表示されているウィンドウや画面全体を画像データとして取得し、過去の画像データと状態に関する情報を参照・比較することで、現在の状態を認識する。本手法によれば、画面に表示されている画像を元に認識するため、例えばシンクライアント環境のようにアプリケーションやＯＳから非常に限られた情報しか得られない環境下においても適用することができる。
【０００７】
また、非特許文献３に記載の手法では、アプリケーション名や住所入力中などの粗い粒度の状態で認識するのではなく、より細かな粒度の状態(例えば、あるボタンを選択している状態や番地入力中の状態など)を認識したい場合、注目したくない領域(例えば、文字列が入力されているテキストエリアなど) を固定パターンに置換（例えば、背景色での塗り潰し）することにより、注目したい領域をあぶり出し、認識したい状態を任意に選ぶことが可能となる。また、同じ領域に対する置換であっても、固定パターンを幾つか用意して、これらを区別して認識したい状態毎にそれぞれ割り当てることで、より細かな状態の違いを区別した認識も可能となる。
【０００８】
図１６は本手法における置換処理の一例を説明する図である。同図においては、テキストボックスなどの内容が変わり得る領域（可変領域）を白色の固定パターンに置換する例を示している。同図の例は、名前・性別・住所・地図の実際の記入項目の中身には関心がないが、記入すべき項目やその配置などには関心があるという場合にその状態を取得するための前処理の例である。この場合、関心がない領域（注目したくない領域）を固定パターンに置換し、注目したい領域（名前や性別などの項目名自体やテキストボックスなどの配置）をより明確にしようとしている。固定パターンとして白色の他に「記入中」という所定の文字列の画像を用いて置換し、「記入中」という状態を識別するなどといった例も考えられる。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】"AutoIt Script Home Page"、［online］、［平成２２年２月２２日検索］、URL<http://www.autoitscript.com/>
【非特許文献２】"Home Page: Spy++"、［online］、［平成２２年２月２２日検索］、URL< http://msdn.microsoft.com/en-us/library/aa264396(VS.60).aspx>
【非特許文献３】西川、他２名、「画面上の画像認識によるオペレータ支援」、２００９年ソサイエティ大会通信講演論文集、電子情報通信学会、２００９年９月１日、B-14-8、p.339
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかし上記非特許文献３に記載の手法では、認識したい状態やその粒度を変える毎に（例えば、「住所入力中」という状態で認識していたところを、「郵便番号入力中」と「番地入力中」などの、より細かな粒度の状態で認識するように変更するケースなど）、新たな固定パターンへの置換を実施して画像を準備し直す必要が生じるため、利用時の手間が大きいという問題があった。
【００１１】
また上記非特許文献３に記載の手法では、細かな状態の違いを認識したいケースにおいて、精度に問題の生じるケースがありうる。例えば、区別したい二つの状態に対応した二つの画像間で異なる領域が、画像全体の領域に比して相対的に小さな領域にしか表れないケースがある。そのようなケースでは、画像をより少ない情報量で表すこととなる画像の特徴量のレベルにおいても、特徴量の差異が相対的に小さなものとなる可能性が高く、結果として状態の区別を正確に行えない可能性がある。
【００１２】
さらに、上記非特許文献３に記載の手法では、画像情報以外の情報も活用しようという場合、拡張性に欠けるという課題があった。すなわち、本手法では、画像から特徴量を取得し、事前に学習した情報を保管するなどして作成した識別辞書（特徴量とそれに対応する状態といったデータなどを複数持つテーブル）上の特徴量との比較により状態を推定していた。ここで、状態識別処理において、画像以外の情報によって取得できる状態に関する情報を画像情報とあわせて補完的に活用することで、認識精度をより向上させることができると考えられる。画像以外の情報としては、例えば、Ｗｉｎｄｏｗｓメッセージの情報やＭＳＡＡ（Microsoft Active Accessibility (MSAA)、http://msdn.microsoft.com/en-us/library/ms697707(VS.85).aspx参照）を使って得られる情報などが挙げられる。しかし、本手法では、画像の特徴量に基づく状態情報の導出プロセスに、特徴量以外の情報をうまく統合的に扱えるようにすることは容易でない。つまり本手法は、拡張性に欠け、汎用的な状態認識の基盤技術としては用いることが困難である、という課題があった。
【００１３】
本発明は、上記事情に鑑みてなされたものであり、その目的とするところは、従来手法ではアプリケーションやＯＳから充分な情報を取得することができないような環境下であっても、アプリケーションの動作状態を認識することが可能であり、且つ、拡張性の高いシステムを提供することにある。
【課題を解決するための手段】
【００１４】
上記目的を達成するために、本発明は、コンピュータ上で動作するアプリケーションの動作状態を認識するアプリケーション状態認識装置において、前記アプリケーションが表示装置に出力している情報を取得し、取得した表示情報に含まれるユーザインタフェイスとしての部品及び文字を認識するとともに各部品及び文字間のレイアウトを認識する部品識別手段と、認識された部品情報及び文字情報並びにレイアウト情報に基づき各部品又は文字をノードとしたグラフ構造を算出し、算出したグラフ構造に基づきアプリケーションの動作状態を識別する動作状態識別手段とを備えたことを特徴とする。
【００１５】
本発明によれば、アプリケーションの動作により表示装置に画面表示された情報に基づき該アプリケーションの動作状態を識別するので、従来手法のようにカメラ等の特別なデバイスを別途用意することや複雑な初期設定を行う必要性や、実行環境に対する制限（ＯＳとアプリケーションのやりとりが捕捉できる環境でしか動作できないなど）などはない。したがって汎用的な技術として種々の環境下でアプリケーションの動作状態を取得することができる。また、本発明では、表示情報から認識したユーザインタフェイスとしての部品又は文字をノードとしてグラフ構造を算出し、該グラフ構造に基づきアプリケーションの動作状態を識別している。したがって、該グラフ構造に、表示情報以外の種々の情報、例えばＯＳから取得した情報をノードとして追加するなどの処理を行うことにより、識別精度の向上を図ることができる。換言すると本発明によれば、表示画面に基づく状態識別を基盤として、種々の他の情報も統合的に取り扱うことができる拡張性の高いものとなる。また、本発明ではグラフ構造に基づき動作状態を識別しているので、識別したい粒度が変更された場合であっても、従来手法よりも少ない手数で且つ複数の視点から状態認識を行うことができる。
【００１６】
本発明の好適な態様としては、アプリケーションの動作状態に対応するグラフ構造をグラフ識別用データベースとして予め記憶手段に記憶しておき、前記動作状態認識手段では、算出したグラフ構造とグラフ識別用データベースに記憶されているグラフ構造との間でグラフマッチング処理を行うことにより動作状態を識別するものが挙げられる。ここで、グラフマッチング処理は従来周知の種々のアルゴリズムを利用できる。
【００１７】
また、本発明の好適な態様としては、表示情報として、アプリケーションが表示装置に出力している画像データを取得するものが挙げられる。表示装置に出力している画像データに基づき部品や文字並びにレイアウトを認識するので、クライアント環境の依存度がより低くなり、したがってより汎用的な種々の環境下でアプリケーションの動作状態を取得することができる。
【００１８】
また、本発明の好適な態様としては、部品認識手段では、取得した画像データを一以上の領域に分割し、分割された各画像データ取得に基づき部品及び文字並びにレイアウトの認識処理を行うものが挙げられる。このように分割処理を先に行うことにより、分割された各画像データにおける各部品の特徴量が相対的に大きくなるため、部品の認識精度が向上するので、細かな状態の違いをより高精度で認識することができる。
【発明の効果】
【００１９】
以上説明したように本発明によれば、アプリケーションの動作により表示装置に画面表示された情報に基づき該アプリケーションの動作状態を識別するので、従来手法のようにカメラ等の特別なデバイスを別途用意することや複雑な初期設定を行う必要性や実行環境に対する制限はない。したがって汎用的な技術として種々の環境下でアプリケーションの動作状態を取得することができる。また、本発明では、表示情報から認識したユーザインタフェイスとしての部品又は文字をノードとしてグラフ構造を算出し、該グラフ構造に基づきアプリケーションの動作状態を識別している。したがって、該グラフ構造に、表示情報以外の種々の情報、例えばＯＳから取得した情報をノードとして追加するなどの処理を行うことにより、識別精度の向上を図ることができる。換言すると本発明によれば、表示画面に基づく状態識別を基盤として、種々の他の情報も統合的に取り扱うことができる拡張性の高いものとなる。また、本発明ではグラフ構造に基づき動作状態を識別しているので、識別したい粒度が変更された場合であっても、従来手法よりも少ない手数で且つ複数の視点から状態認識を行うことができる。
【図面の簡単な説明】
【００２０】
【図１】アプリケーション状態認識システムの構成図
【図２】ユーザ操作支援アプリケーションの動作を説明するフローチャート
【図３】ＵＩ部品認識部の構成図
【図４】状態統合認識部の構成図
【図５】ＵＩ部品認識部の動作を説明するフローチャート
【図６】状態統合認識部の動作を説明するフローチャート
【図７】メール作成画面の画像データの一例
【図８】分割処理の一例
【図９】ＵＩ部品及び文字の認識結果の一例
【図１０】メール作成画面のグラフ構造のモデル化の一例
【図１１】「英文メール作成」状態のグラフ構造の一例
【図１２】「メール作成」状態のグラフ構造の一例
【図１３】宛先の行が繰り返し現れる例
【図１４】入れ子構造の例
【図１５】ＵＩ部品が認識できなかった場合のグラフ構造の一例
【図１６】従来手法における画像データに対する置換処理の一例
【発明を実施するための形態】
【００２１】
本発明の一実施の形態について図面を参照して説明する。図１は、本発明のアプリケーション状態認識システムの構成図である。本実施の形態に係るアプリケーション状態認識システムでは、ユーザ操作支援アプリケーションに対して他のアプリケーションの動作状態を認識・提供するサービスを行う。すなわち、図１に示すように、コンピュータ１０にはＯＳ１１上で複数の既存アプリケーションＡＰ１，ＡＰ２，…が動作している。各既存アプリケーションＡＰ１，ＡＰ２は、ユーザ１に対するユーザインタフェイスとして、キーボードやマウス等の入力デバイス１５及び表示装置であるディスプレイ１６を利用する。
【００２２】
ユーザ操作支援アプリケーション２０は、既存アプリケーションＡＰ１，ＡＰ２，…を操作するユーザ１に対して、その操作を支援するアプリケーションである。該ユーザ操作支援アプリケーション２０には様々な形態が考えられ、例えば、現在の画面上の既存アプリケーションＡＰ１，ＡＰ２，…の状態をもとに次操作を提案するものや、ユーザ１がエラー状態と判断される状態に陥った時に回復手順を示し回復支援をするもの、自動操作システムに状況を判断しつつ自律的な動作を行う機能を追加するものなど挙げられる。本発明に係るアプリケーション状態認識システム１００は、該ユーザ操作支援アプリケーション２０に対して既存アプリケーションＡＰ１，ＡＰ２，…の動作状態を認識し、該認識結果を提供するものである。
【００２３】
まず、図２を参照して本発明に係るアプリケーション状態認識システムを用いたユーザ操作支援アプリケーションの動作について説明する。ここでは、ユーザ操作支援アプリケーション２０として、既存アプリケーションＡＰ１，ＡＰ２，…を操作するユーザ１に対してその操作を支援するものを例にとって説明する。
【００２４】
図２に示すように、ユーザ操作支援アプリケーション２０は、動作状態の認識対象である既存アプリケーションＡＰ１，ＡＰ２，…の画像領域（ウィンドウなど）を指定して、アプリケーション状態認識システム１００に対して動作状態の認識を依頼する（ステップＳ１１）。アプリケーション状態認識システム１００は、既存アプリケーションＡＰ１，ＡＰ２，…の動作状態を識別・応答する（ステップＳ１２）。なお、本ステップＳ１２におけるアプリケーション状態認識システム１００の処理やその構成については後述する。次に、ユーザ操作支援アプリケーション２０は、取得した動作状態に基づき次操作の支援などのユーザ支援処理を行う（ステップＳ１３）。なお、該ユーザ支援処理については従来周知のものと同様なので詳述は省略する。
【００２５】
次に、アプリケーション状態認識システム１００について詳述する。アプリケーション状態認識システム１００は、図１に示すように、状態識別対象である既存アプリケーションＡＰ１，ＡＰ２，…が表示装置に出力している表示情報を画像データとして取得し、該画像に含まれるユーザインタフェイス（ＵＩ）としての部品を識別するＵＩ部品認識部１１０と、ＵＩ部品認識部１１０で識別された各部品をグラフ構造にモデル化してアプリケーションの状態を識別する状態統合認識部１２０とを備えている。
【００２６】
ＵＩ部品認識部１１０は、現在の画面や対象となるアプリケーションのウィンドウを構成するＵＩ部品を一つずつ認識していく。ＵＩ部品としては、例えば、ＷｅｂブラウザのＵＲＬ入力・表示エリアとなるテキストボックス・ボタン・ラベルといった部品がある。ＵＲＬ入力・表示エリアとなるテキストボックスであれば行数は１行であり、現在表示されている文字列の中身などといった属性を持つ。
【００２７】
図３にＵＩ部品認識部１１０の構成を示す。ＵＩ部品認識部１１０は、図３に示すように、画像取得部１１１，分割処理部１１２，部品識別部１１３，文字識別部１１４，レイアウト識別部１１５とを備えている。なお、本発明に係るアプリケーション状態認識システム１００は、コンピュータとプログラムによっても実現でき、プログラムを記録媒体に記録することも、ネットワークを通して提供することも可能である。さらに、本発明に係るアプリケーション状態認識システム１００やユーザ操作支援アプリケーション２０の動作環境や実装形態は不問である。すなわち、既存アプリケーションＡＰ１，ＡＰ２，…が動作するコンピュータと同一コンピュータ上で動作してもよいし、例えばシンクライアント環境のように他のコンピュータ上で動作してもよい。さらに、アプリケーション状態認識システム１００の各部も単一のコンピュータではなく複数のコンピュータに分散させて実装してもよい。
【００２８】
画像取得部１１１は、ＯＳ１１やそれに付随するシステムライブラリ等の提供する機能を用いてディスプレイ１６上に表示されている、ウィンドウやスクリーン全体などを画像データとして取得する。なお、取得対象は、ユーザ操作支援アプリケーション２０により指定されたものである。
【００２９】
分割処理部１１２は、画像取得部１１１で取得された画像データをＵＩ部品又は文字列が含まれる１以上の領域に分割する。分割処理部１１２による分割処理の具体的手法としては種々のものが考えられる。最もシンプルだが手数の多いやり方としては予め手作業で分割用位置データを用意しておくことである。すなわち、識別対象の状態に対応する画像を予め手作業で部品に分割し、各分割領域の位置データを取得し、所定の記憶手段（図示省略）に記憶しておき、該分割用位置データに基づき元画像データを分割するものである。また、他の方法としては、対象アプリケーションごとにある一定の幅を定め、その幅以上の背景色や白色が連続して存在する場合はそこに部品を区切る境界があるものと見なして元画像データを分割したり、棒線の箇所を境界として元画像データを分割するなどといった方法も考えられる。
【００３０】
部品識別部１１３は、従来周知の一般的な画像認識システムと同等の構成を有しており、図３に示すように、前処理部１１６，特徴抽出部１１７，部品クラス識別部１１８，識別辞書１１９とを備えている。部品識別部１１３は、これらの構成により、分割処理部１１２で分割された各分割画像データに対して画像認識を行って各分割画像データに含まれるＵＩ部品を識別する。
【００３１】
前処理部１１６は、分割画像データに対して認識処理をしやすくするための処理を行う。具体的には、認識の際に余計なノイズなどをできるだけ除去するために行う二値化や画像サイズなどを一定の値に揃える正規化などの処理を行う。
【００３２】
特徴抽出部１１７は、分割画像データから部品を認識するために、該各分割画像データをより少数の情報で表す特徴量を特徴ベクトルとして抽出する。特徴量を算出する方法については、様々な形で検討されている既存手法が豊富に存在するため、それらを利用する。具体的には、ＳＩＦＴ特徴量やＨｏＧ特徴量、Ｈａａｒ−ｌｉｋｅ特徴量などの様々な特徴量が利用可能である。
【００３３】
部品クラス識別部１１８は、事前に学習した情報を保管するなどして作成した識別辞書１１９の情報（学習データ）を参照し、入力された分割画像データの特徴ベクトルを元に入力画像の識別・分類を行う。識別・分類は、入力画像が、認識したい状態を示すクラスのいずれに属するかを決定する処理である。クラスは、区別して認識したいＵＩ部品の数だけ予め用意しておく。通常、識別辞書１１９中の全てのデータをその特徴ベクトルを元に、幾つかの有限のクラスに分割する。その上で、クラスを代表する特徴ベクトル（別途算出する）や辞書中の全データの特徴ベクトルと、入力画像の特徴ベクトルを比較することで、入力画像の属するクラスを識別する。比較する際はユークリッド距離が最小となるベクトルを選ぶやり方やニューラルネットワークを利用するやり方、サポートベクタマシンを利用するやり方、テンプレートマッチ法を利用する方法など、様々な既存の手法があり、それらを利用する。
【００３４】
文字識別部１１４は、与えられた分割画像データに表示されている文字を抽出する。また、文字識別部１１４は、同一の分割画像データについて部品識別部１１３で判別したクラス情報に文字情報を追加する。なお文字が抽出できなければ、何の情報も追加しない。一方、同一の分割画像データについて部品識別部１１３においてクラスの判別ができない場合には文字情報の抽出ができれば、当該分割画像データの識別結果として文字情報のみを出力する。なお、部品識別部１１３及び文字識別部１１４の双方においてクラス判別・文字認識ができない場合は当該分割画像データの識別結果として「空」を出力するか、若しくは何も出力しない。文字識別部１１４における文字認識処理には既存のＯＣＲ（Optical Character Recognition ）ライブラリやＯＣＲソフトウェアを使うことができる。例えば、パナソニック社の「カラーOCRライブラリー」（http://panasonic.biz/it/sol/ocr/sdk/を参照）、同社の「日本語・英語活字カラーＯＣＲソフト『読取革命Ver.14』」（http://panasonic.co.jp/sn/psn/pstc/products/yomikaku/index.htmlを参照）などである。
【００３５】
部品識別部１１３及び文字識別部１１４によるＵＩ部品及び文字の認識は、分割処理部１１２で分割された全ての分割画像データを対象として行う。
【００３６】
レイアウト識別部１１５は、前記分割処理部１１２における分割処理の結果と部品識別部１１３及び文字識別部１１４の認識結果に基づき、各ＵＩ部品の隣接関係の情報（行方向又は列方向或いは行と列の両方向の隣接関係）を識別する。このレイアウト識別処理では、前述の分割処理の過程において部品間の隣接関係の情報を得ることができるため、その隣接関係の情報を利用する。
【００３７】
次に状態統合認識部１２０について図４を参照して説明する。状態統合認識部１２０は、図４に示すように、グラフ構造算出部１２１と、状態判定部１２２と、画面知識データベース１２３とを備えている。
【００３８】
グラフ構造算出部１２１は、ＵＩ部品認識部１１０で識別されたＵＩ部品及び文字情報並びにレイアウト情報に基づきこれらで表される状態をグラフ構造にモデル化する。ここでグラフ構造においては各ＵＩ部品又は文字がノードに相当する。
【００３９】
状態判定部１２２は、算出されたグラフ構造と画面知識データベース１２３に予め記憶されたグラフ構造とに基づきアプリケーションの状態を判定する。該判定処理では周知のグラフマッチング問題の解法を用いる。該グラフマッチング問題はグラフマッチング問題は情報科学において歴史のある問題であり、例えば、（D.Conte et al. "Thirty Years of Graph Matching in Pattern Recognition"、International Journal of Pattern Recognition and Artificial Intelligence Vol.18、No.3、2004、265-298）などの文献で開示されている。画面知識データベース１２３には、ＵＩ部品・文字情報の組合せ及びレイアウト情報を表すグラフ構造と該グラフ構造に対応する状態情報が記憶されている。該グラフ構造は、識別した状態の数だけ記憶しておき、またそのデータは識別した粒度に対応させて記憶しておく。状態判定部１２２は、認識したグラフ構造とマッチするグラフ構造を画面知識データベース１２３から取得し、該グラフ構造に対応する状態情報を結果として出力する。
【００４０】
次に、アプリケーション状態認識システム１００の動作について詳述する。アプリケーション状態認識システム１００の動作は、図２を参照して前述したステップＳ１２に対応するものであり、ＵＩ部品認識部１１０及び状態統合認識部１２０の動作からなる。
【００４１】
まず、ＵＩ部品認識部１１０の動作について図５のフローチャートを参照して説明する。図５に示すように、まずＵＩ部品認識部１１０の画像取得部１１１が、サービス提供先のアプリケーション（本実施の形態ではユーザ操作支援アプリケーション２０）等からの要求に応じて、ディスプレイ１６上に表示されている画像データを取得する（ステップＳ２１）。なお、前記要求には必要に応じて、認識対象となる既存アプリケーションＡＰ１，ＡＰ２，…や更にそのウィンドウ等を指定するようにしてもよい。次に、分割処理部１１２が画像データを１以上の領域に分割する（ステップＳ２２）。次に、部品識別部１１３が分割画像データからＵＩ部品を識別する。具体的には、まず前処理部１１６が前処理として、分割画像データに対して後段の識別処理における画像認識が行いやすくするよう画像処理を行う（ステップＳ２３）。次に、特徴抽出部１１７が、前処理された分割画像データから特徴量として特徴ベクトルを抽出する（ステップＳ２４）。そして、部品クラス識別部１１８が、抽出された特徴量と識別辞書１１９中のデータを比較して、ＵＩ部品の属するクラスを判別する（ステップＳ２５）。次に、文字識別部１１４が、分割画像データから文字を認識・抽出する（ステップＳ２６）。ステップＳ２３〜Ｓ２６の処理は分割処理部１１２で分割された全ての分割画像データに対して行う。最後にレイアウト識別部１１５は、分割処理部１１２による分割処理結果及び部品識別部１１３の識別結果及び文字識別部１１４の識別結果に基づきＵＩ部品及び文字のレイアウト情報を算出する（ステップＳ２７）。ＵＩ部品認識部１１０は、以上の処理により識別された各ＵＩ部品及び文字並びにＵＩ部品のレイアウト情報を状態統合認識部１２０に出力する。
【００４２】
次に状態統合認識部１２０の動作について図６のフローチャートを参照して説明する。図６に示すように、状態統合認識部１２０のグラフ構造算出部１２１は、ＵＩ部品認識部１１０の出力に基づきＵＩ部品又は文字をノードとしたグラフ構造を算出する（ステップＳ３１）。次に、状態判定部１２２は、グラフ構造算出部１２１で算出されたグラフ構造とマッチするグラフ構造を画面知識データベース１２３から取得し、該グラフ構造に対応する状態情報を結果として出力する（ステップＳ３２）。
【００４３】
このように本発明に係るアプリケーション状態認識システムによれば、既存アプリケーションＡＰ１，ＡＰ２，…が表示する表示画面の画像データに基づき当該アプリケーションの動作状態を認識するので、特別な機器や設定を必要とすることなく種々の動作環境下での認識処理が可能となる。
【００４４】
また本発明では、画像データに含まれるＵＩ部品又は文字をノードとしてグラフ構造を算出し、該グラフ構造に基づきアプリケーションの動作状態を識別している。したがって、該グラフ構造に、画像データ以外の種々の情報、例えばＯＳから取得した情報をノードとして追加するなどの処理を行うことにより、識別精度の向上を図ることができる。換言すると本発明によれば、画像認識による状態識別を基盤として、種々の他の情報も統合的に取り扱うことができる拡張性の高いものとなる。
【００４５】
例えば、認識対象のアプリケーションのウィンドウサイズがユーザの操作により縮小された結果アプリケーションの一部しか表示されていない場合や、認識対象のアプリケーションのウィンドウの一部がデスクトップ領域外に配置されてアプリケーションの一部しか表示されていない場合、十分な画像データが得られないので認識精度が低下すると考えられる。ここで、ＯＳやその他のライブラリ等が提供するサービスにより未表示領域のＵＩ部品等に関する何らかの情報が得られたとする。このような場合、取得した情報をグラフ構造の一部として補完することにより認識精度を向上させることができる。
【００４６】
また本発明ではＵＩ部品の識別に先立って画像データをＵＩ部品又は文字列が含まれる１以上の領域に分割しているので、該分割画像データにおける各ＵＩ部品の特徴量が相対的に大きくなる。これにより、ＵＩ部品の認識精度が向上するので、細かな状態の違いをより高精度で認識することができる。
【００４７】
さらに、従来は複数の状態を認識し分けることが原理的に可能であっても細かな粒度で状態を区別して認識し分けようとすればするほど実現のために大きな手間が必要となる手法であったところ、本発明では、認識対象をＵＩ部品及び文字に分割し、グラフ構造を活用して認識結果及びモデルとなる状態を表現することで、より汎用的に且つ状態を複数の視点から、しかも少ない手数で認識することができる。
【００４８】
以上、本発明の一実施の形態について詳述したが本発明はこれに限定されるものではない。例えば、上記実施の形態では、状態識別対象である既存アプリケーションＡＰ１，ＡＰ２，…が表示装置に出力している部品・文字・レイアウトを識別する方法として、表示装置に出力している表示情報を画像データとして取得し、画像認識技術を用いて該画像データから部品等を識別していたが、他の方法により部品・文字・レイアウトを識別してもよい。例えば、ＷｉｎｄｏｗｓメッセージやＭＳＡＡなどを利用して同等のＵＩ部品認識部を構成することも可能である。より具体的な例としては、ＭＳＡＡに対応しているアプリケーションが認識対象であれば、ウィンドウのタイトルやウィンドウに含まれるＵＩ部品上のラベルや値、さらには各部品の隣接関係などを取得することができるので、これを用いて部品・文字・レイアウトを識別すればよい。
【実施例】
【００４９】
図７〜図１０に、一般的な電子メールソフト（ＭＵＡ：Mail User Agent）のメール作成画面の認識結果をモデル化した例を示す。図７は認識対象となるメール作成画面の画像データの一例、図８は図７の画像データを分割した結果の一例、図９は図８の各分割画像データからＵＩ部品及び文字を認識した結果の例、図１０は最終的に図７の画像データをグラフ構造にモデル化した一例である。上述したように本願発明では、対象領域をＵＩ部品に分割し、分割されたＵＩ部品を個々に認識し、それらの認識結果を行方向や列方向のレイアウト情報を付加した状態でグラフ構造にモデル化する。
【００５０】
本願発明ではまず、図７及び図８に示すようにＵＩ部品への分割と、文字情報と典型的なＵＩ部品の抽出を行う。具体的には、最初に図８に示すように対象領域の画像をＵＩ部品に分割する。この時、同一行(若しくは同一列)となる要素ごとに並べ、順番も維持して並べておく。次に、図９に示すように、文字情報とＵＩ部品の抽出を行うが、ここでは抽出した結果が文字であれば、単にテキストの文字情報に変換するだけとし、ＵＩ部品（コンポーネント）であれば予め決めておく固定的なパターンの文字列に変換する。例えば、テキストボックスを示す部品であれば、「テキストボックス」という文字列に変換する。認識できない部分は無視するか、決まった文字列に変換する。認識結果の精度を上げ、情報量を増やしたい場合は、アプリケーション毎に固有のアイコンやレイアウトに関する情報を利用することも可能である。
【００５１】
行方向や列方向や行と列の両方向(アプリケーション毎に適した方向を選択する)に文字やＵＩ部品の抽出を行った後に、同一行・列の文字や部品(コンポーネント)間に緩やかな関連があることを仮定し、同一行・列で抽出結果を関連付け、グラフを構成する（例えば、同一行で隣接するノード間にエッジをつける作業を各行に対して行い、各行の最左のノード間をエッジでつなぎ、グラフを構成する）。図１０は、図７のアプリケーションが行方向で関連があると考えられるため、行方向での隣接関係を関連付けて構成したグラフである。
【００５２】
この図１０のような認識結果のグラフと画面知識データベース中のグラフに対して、グラフマッチング問題を解き、解のグラフに対応する状態を状態認識結果として返す。結果の返し方は、得られた複数の解を、グラフ間の類似度を表すデータ(例えば、編集距離：あるグラフに対して編集操作を行い、他のグラフの形にするまでに要する編集操作の数)とともにユーザ操作支援アプリケーションに返し、認識した状態の扱い方は各アプリケーションに任せるやり方や、予め状態認識システム側で類似度の最も大きい解だけを返すやり方などが考えられる。
【００５３】
図１１は、画面知識データベース上のモデルとなる状態を示すグラフ構造の一例である。これらのグラフに「英文メール作成」といった状態を予め対応付けておく。認識結果のグラフがモデルとなるグラフのサブグラフとなっていれば、解候補となる。ノードのラベルの文字列に正規表現（例えばperl 5.8 で利用できる正規表現）を使い、ノード間の比較時に正規表現のマッチングを行うものとする。「テキストボックス」などのＵＩ部品(コンポーネント)についても、単に文字列の比較を行うことでノード間の比較を行うものとする。
【００５４】
図１２は図１１と同様に「メール作成」状態を示すグラフである。「テキストボックス」とつながったノードに図１１では英数字や空白文字など英文を構成する文字しか入らなかったが、図１２では任意の文字が入り得る形となっている。このような形でモデルとなる状態を、一般にアプリケーション毎にグラフで区別して構成しておくことで、単一の認識結果に対して複数の状態、つまり多面的な状態を認識することが可能となる。図１２の最下部のノードは、行とノードの繰返しの表現を用いた例となっている（「＊」の記号については下記参照）。
【００５５】
図１３は複数の宛先にメールを送る画面に対応した例で、行の繰り返しの表現例である。行の最左のノードのエッジ（辺）に０から始まる正の整数値及び任意の回数を示す「＊」を記すことで、行の繰り返し回数を指定する。特に何も記載していない場合は 1 と記してあるとみなす。perlなどの正規表現を利用して回数の指定など、より柔軟な指定を可能としてもよい。同様に、ノード自体の繰り返し回数を、行の繰返し回数と同様に正規表現などを用いて、各ノードの右肩に記すことで表現する。
【００５６】
図１４は要素が入れ子構造になっている例である。「テキストボックス」の部品の中に、２行以上の文字列が入っていた例である。このように、構造を持つ要素をあるノードの下に置くことも可能である。この方式の活用により、ドキュメントの中に表形式のデータが入っているような複雑なケースも扱うことが可能である。
【００５７】
図１５は図１０と同様に、図７のメール作成画面の状態をグラフ構造にした例である。図１０との違いは、ＵＩ部品(コンポーネント)の認識に失敗した結果、文字情報しか取得できなかったという点である。このような場合においても、図１２のグラフとの間にサブグラフの関係があるため、図１２に対応する「メール作成」の状態と認識することが可能である。
【００５８】
このように、画像の認識時や文字認識時に多少の誤りがあった場合にも、画面知識データベース上のモデルとなるグラフを、正規表現を活用して、状態を表す特徴的な部分はそのままにしつつも、無関係な部分の指定を除くことによって、より多くのグラフを含む(より多くのグラフとサブグラフの関係となる)ことができるような形にしておくことができる。これにより、状態の認識をよりロバストに行うことができる。
【符号の説明】
【００５９】
１…ユーザ、１０…コンピュータ、１１…ＯＳ、１５…入力デバイス、１６…ディスプレイ、２０…ユーザ操作支援アプリケーション、１００…アプリケーション状態認識システム、１１０…ＵＩ部品認識部、１１１…画像取得部、１１２…分割処理部、１１３…部品識別部、１１４…文字識別部、１１５…レイアウト識別部、１１６…前処理部、１１７…特徴抽出部、１１８…部品クラス識別部、１１９……部品識別辞書、１２０…状態統合認識部、１２１…グラフ構造算出部、１２２…状態判定部、１２３…画面知識データベース。
【図１】
2011181007.tif 000003
【図２】
2011181007.tif 000004
【図３】
2011181007.tif 000005
【図４】
2011181007.tif 000006
【図５】
2011181007.tif 000007
【図６】
2011181007.tif 000008
【図９】
2011181007.tif 000009
【図１０】
2011181007.tif 000010
【図１１】
2011181007.tif 000011
【図１２】
2011181007.tif 000012
【図１３】
2011181007.tif 000013
【図１４】
2011181007.tif 000014
【図１５】
2011181007.tif 000015
【図１６】
2011181007.tif 000016
【図７】
2011181007.tif 000017
【図８】
2011181007.tif 000018