(57)【要約】手動プロセスを自動化するための、コンピュータストレージ媒体にコードされたコンピュータプログラムを含む、方法、システム、および装置。本方法、システム、および装置は、プロセスであって、（ｉ）コンピュータとやり取りするユーザにより手動で実行され、且つ（ｉｉ）別のコンピュータとやり取りするよう構成されたロボットにより実行されるよう自動化されるべき、プロセスを識別するアクションを含む。さらなるアクションには、プロセスを手動で実行する際にユーザがコンピュータとやり取りしている間に撮られたコンピュータのディスプレイの画像１つ以上を取得することと、プロセスに関連する１つ以上のアクティビティを識別するためにコンピュータビジョン技術を適用することとが含まれる。さらなるアクションには、識別された１つ以上のアクティビティそれぞれについて、アクティビティに関連するアクティビティ情報を生成することと、ロボットに自動的にプロセスを実行させるのに使用するプロセス定義を生成することとが含まれる。【選択図】図１
2018535459.tif 000002
【特許請求の範囲】
【請求項１】
プロセスであって、（ｉ）コンピュータとやり取りするユーザにより手動で実行され、且つ（ｉｉ）前記コンピュータまたは別のコンピュータとやり取りするよう構成されたロボットにより実行されるよう自動化されるべき、前記プロセスを識別するステップと、
前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータのディスプレイの画像１つ以上を取得するステップと、
前記プロセスに関連する１つ以上のアクティビティを識別するために、前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータの前記ディスプレイの前記画像に対して、コンピュータビジョン技術を適用するステップと、
前記識別された１つ以上のアクティビティそれぞれについて、前記アクティビティに関連するアクティビティ情報を生成するステップと、
前記ロボットに前記コンピュータまたは前記別のコンピュータとやり取りすることで前記プロセスを自動的に実行させるために使用されるプロセス定義を生成するステップであって、前記プロセス定義は、前記識別された１つ以上のアクティビティを指示し、且つ、識別されたアクティビティそれぞれについて、前記アクティビティに関連する前記アクティビティ情報を指示する、前記プロセス定義を生成するステップと、
を含む、コンピュータに実装された方法。
【請求項２】
前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータのディスプレイの画像１つ以上を取得するステップは、
前記コンピュータの前記ディスプレイの前記撮られた１つ以上の画像をカメラから取得するステップ
を含む、請求項１に記載の方法。
【請求項３】
前記１つ以上の画像はビデオを備える、先行する請求項のいずれか１項に記載の方法。
【請求項４】
前記アクティビティに関連するアクティビティ情報を生成するステップは、
前記アクティビティが実行される前に前記ディスプレイに示された画面の或る部分のスナップショットを生成するステップ
を含む、先行する請求項のいずれか１項に記載の方法。
【請求項５】
前記アクティビティに関連するアクティビティ情報を生成するステップは、
前記アクティビティが実行された後に前記ディスプレイに示された画面のスクリーンショットを生成するステップ
を含む、先行する請求項のいずれか１項に記載の方法。
【請求項６】
前記アクティビティは、キー押下、マウスクリック、画面タッチ、フォアグラウンドのプロセスの変化、またはシーン変化のうちの１つ以上を含む、先行する請求項のいずれか１項に記載の方法。
【請求項７】
前記プロセス定義にアクセスするステップと、
前記プロセス定義により指示された前記アクティビティおよびアクティビティ情報に基づき前記コンピュータまたは前記別のコンピュータと物理的にやり取りするよう前記ロボットに自動的に命令するステップと、
を含む、先行する請求項のいずれか１項に記載の方法。
【請求項８】
前記プロセス定義により指示された前記アクティビティおよびアクティビティ情報に基づき前記コンピュータまたは前記別のコンピュータとやり取りするよう前記ロボットに自動的に命令するステップは、
前記別のコンピュータの別のディスプレイに示された画面の中で、特定のアクティビティの前記アクティビティ情報により指示されたスナップショットに視覚的に一致する部分を識別するステップと、
前記部分の中心に対応する位置で前記別のディスプレイに物理的にタッチするよう前記ロボットに命令するステップと、
を含む、請求項７に記載の方法。
【請求項９】
前記プロセス定義により指示された前記アクティビティおよびアクティビティ情報に基づき前記別のコンピュータとやり取りするよう前記ロボットに自動的に命令するステップは、
前記別のディスプレイに示された画面が特定のアクティビティの前記アクティビティ情報により指示されたスクリーンショットに対応すると判断するステップと、
前記別のディスプレイに示された前記画面が特定のアクティビティの前記アクティビティ情報により指示されたスクリーンショットに対応すると判断するのに応答して、前記プロセス定義により指示された後続アクティビティに基づき前記別のコンピュータと物理的にやり取りするよう前記ロボットに命令するステップと
を含む、請求項７または８に記載の方法。
【請求項１０】
前記プロセス定義により指示された前記アクティビティおよびアクティビティ情報に基づき前記コンピュータまたは前記別のコンピュータとやり取りするよう前記ロボットに自動的に命令するステップは、
前記別のコンピュータの別のディスプレイに示された画面の中で、特定のアクティビティの前記アクティビティ情報により指示されたスナップショットに視覚的に一致する部分を識別するステップと、
前記画面の中で前記スナップショットに視覚的に一致する前記部分の中心に対応する座標に対するクリックを受信するための電子信号を前記別のコンピュータに提供するよう前記ロボットに命令するステップと
を含む、請求項７、８、または９に記載の方法。
【請求項１１】
前記プロセスを修正するために人が使用できるグラフィカルバージョンの前記プロセス定義を生成するステップ
を含む、先行する請求項のいずれか１項に記載の方法。
【請求項１２】
１つ以上のコンピュータと、命令を記憶する１つ以上のストレージデバイスと
を備えるシステムであって、前記命令は、前記１つ以上のコンピュータによって実行されると前記１つ以上のコンピュータに動作を実行させるよう動作可能であり、前記動作は、
プロセスであって、（ｉ）コンピュータとやり取りするユーザにより手動で実行され、且つ（ｉｉ）前記コンピュータまたは別のコンピュータとやり取りするよう構成されたロボットにより実行されるよう自動化されるべき、前記プロセスを識別することと、
前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータのディスプレイの画像１つ以上を取得することと、
前記プロセスに関連する１つ以上のアクティビティを識別するために、前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータの前記ディスプレイの前記画像に対して、コンピュータビジョン技術を適用することと、
前記識別された１つ以上のアクティビティそれぞれについて、前記アクティビティに関連するアクティビティ情報を生成することと、
前記ロボットに前記コンピュータまたは前記別のコンピュータとやり取りすることで前記プロセスを自動的に実行させるために使用されるプロセス定義を生成することであって、前記プロセス定義は、前記識別された１つ以上のアクティビティを指示し、且つ、識別されたアクティビティそれぞれについて、前記アクティビティに関連する前記アクティビティ情報を指示する、前記プロセス定義を生成することと、
を含む、システム。
【請求項１３】
前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータのディスプレイの画像１つ以上を取得することは、
前記コンピュータの前記ディスプレイの前記撮られた１つ以上の画像をカメラから取得すること
を含む、請求項１２に記載のシステム。
【請求項１４】
前記１つ以上の画像はビデオを備える、請求項１２または１３に記載のシステム。
【請求項１５】
前記アクティビティに関連するアクティビティ情報を生成することは、
前記アクティビティが実行される前に前記ディスプレイに示された画面の或る部分のスナップショットを生成すること
を含む、請求項１２〜１４のいずれか１項に記載のシステム。
【請求項１６】
前記アクティビティに関連するアクティビティ情報を生成することは、
前記アクティビティが実行された後に前記ディスプレイに示された画面のスクリーンショットを生成すること
を含む、請求項１２〜１５のいずれか１項に記載のシステム。
【請求項１７】
前記アクティビティは、キー押下、マウスクリック、画面タッチ、フォアグラウンドのプロセスの変化、またはシーン変化のうちの１つ以上を含む、請求項１２〜１６のいずれか１項に記載のシステム。
【請求項１８】
前記プロセス定義にアクセスすることと、
前記プロセス定義により指示された前記アクティビティおよびアクティビティ情報に基づき前記コンピュータまたは前記別のコンピュータと物理的にやり取りするよう前記ロボットに自動的に命令することと、
を含む、請求項１２〜１７のいずれか１項に記載のシステム。
【請求項１９】
前記プロセス定義により指示された前記アクティビティおよびアクティビティ情報に基づき前記コンピュータまたは前記別のコンピュータとやり取りするよう前記ロボットに自動的に命令することは、
前記別のコンピュータの別のディスプレイに示された画面の中で、特定のアクティビティの前記アクティビティ情報により指示されたスナップショットに視覚的に一致する部分を識別することと、
前記部分の中心に対応する位置で前記別のディスプレイに物理的にタッチするよう前記ロボットに命令することと、
を含む、請求項１８に記載のシステム。
【請求項２０】
１つ以上のコンピュータにより実行可能であり、当該実行をされると前記１つ以上のコンピュータに動作を実行させる命令を備えたソフトウェアを記憶する非一時的なコンピュータ可読媒体であって、前記動作は、
プロセスであって、（ｉ）コンピュータとやり取りするユーザにより手動で実行され、且つ（ｉｉ）前記コンピュータまたは別のコンピュータとやり取りするよう構成されたロボットにより実行されるよう自動化されるべき、前記プロセスを識別することと、
前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータのディスプレイの画像１つ以上を取得することと、
前記プロセスに関連する１つ以上のアクティビティを識別するために、前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータの前記ディスプレイの前記画像に対して、コンピュータビジョン技術を適用することと、
前記識別された１つ以上のアクティビティそれぞれについて、前記アクティビティに関連するアクティビティ情報を生成することと、
前記ロボットに前記コンピュータまたは前記別のコンピュータとやり取りすることで前記プロセスを自動的に実行させるために使用されるプロセス定義を生成することであって、前記プロセス定義は、前記識別された１つ以上のアクティビティを指示し、且つ、識別されたアクティビティそれぞれについて、前記アクティビティに関連する前記アクティビティ情報を指示する、前記プロセス定義を生成することと、
を含む、非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１５年７月２日に出願された欧州特許出願第１５２９０１７２号の優先権を主張するものであり、参照によってその内容全体を本願明細書に引用するものとする。
【０００２】
技術分野
本開示は、全般的に、ロボットによるプロセス自動化に関する。
【背景技術】
【０００３】
コンピュータ上で実行される手動プロセスには、繰り返しが多く時間がかかるものもある。例えば、ウェブフォームの提出に応答してユーザが電子メールを送信する場合があるが、ウェブフォームが提出されるたびに、コンピュータと手動でやり取りして、ボタンをクリックして新規電子メールを書くウィンドウを開き、ボタンをクリックして提出ウェブフォームからそのウィンドウに情報をコピーし、キーをクリックして電子メールの本文の文章を書き込み、ボタンをクリックして電子メールを送信する必要がある場合もある。
【発明の概要】
【課題を解決するための手段】
【０００４】
全般的に、本明細書に記載される主題の側面は、人により手動で実行されるプロセスを自動化するプロセスを含み得る。手動プロセスを自動化するために、システムは、プロセスを実行する間に人がコンピュータと手動でやり取りする間のコンピュータのディスプレイの画像を、コンピュータビジョン技術を使用して分析することができる。分析から、システムは、例えばキーストローク、マウスクリック、またはタッチスクリーンのタッチなどのプロセスに関連するアクティビティを判断できる。判断されたアクティビティに基づき、システムは次に、プロセスを自動的に繰り返すようロボットにコンピュータとのやり取りを行わせることができる。プロセスを繰り返す際、ロボットはさらに、判断されたアクティビティに関連するやり取りを自動的に実行するために、コンピュータのディスプレイの画像に対してコンピュータビジョン技術を使用してもよい。
【０００５】
一部の側面では、本明細書に記載された主題は、プロセスであって、（ｉ）コンピュータとやり取りするユーザにより手動で実行され、且つ（ｉｉ）コンピュータまたは別のコンピュータと物理的にやり取りするよう構成されたロボットにより実行されるよう自動化されるべき、プロセスを識別するアクションを含み得る方法に具現化されてもよい。さらなるアクションには、プロセスを手動で実行する際にユーザがコンピュータとやり取りしている間に撮られたコンピュータのディスプレイの画像１つ以上を取得することと、プロセスに関連する１つ以上のアクティビティを識別するために、プロセスを手動で実行する際にユーザがコンピュータとやり取りしている間に撮られたコンピュータのディスプレイの画像に対してコンピュータビジョン技術を適用することとが含まれる。さらなるアクションには、識別された１つ以上のアクティビティそれぞれについて、アクティビティに関連するアクティビティ情報を生成することと、ロボットにコンピュータまたは別のコンピュータと物理的にやり取りしてプロセスを自動的に実行させるために使用されるプロセス定義を生成することであって、プロセス定義は、識別された１つ以上のアクティビティを指示し、且つ、識別されたアクティビティそれぞれについてアクティビティに関連するアクティビティ情報を指示する、プロセス定義を生成することとが含まれる。
【０００６】
その他の変形としては、対応するシステム、装置、およびコンピュータストレージデバイス上にコードされ本方法のアクションを実行するよう構成されたコンピュータプログラムが含まれる。
【０００７】
これらの変形および他の変形はそれぞれ、任意選択で、以下の特徴のうちの１つ以上を含んでもよい。例えば一部の実装では、プロセスを手動で実行する際にユーザがコンピュータとやり取りしている間に撮られたコンピュータのディスプレイの画像１つ以上を取得することは、コンピュータのディスプレイの撮られた画像１つ以上をカメラから取得することを含む。一部の側面において、１つ以上の画像はビデオを含む。特定の側面において、アクティビティに関連するアクティビティ情報を生成することは、アクティビティが実行される前にディスプレイに示された画面の或る部分のスナップショットを生成することを含む。一部の実装において、アクティビティに関連するアクティビティ情報を生成することは、アクティビティが実行された後にディスプレイに示された画面のスクリーンショットを生成することを含む。一部の実装においてアクティビティは、キー押下、マウスクリック、画面タッチ、フォアグラウンドのプロセスの変化、またはシーン変化のうちの１つ以上を含む。
【０００８】
一部の側面においてアクションは、プロセス定義にアクセスすることと、プロセス定義により指示されたアクティビティおよびアクティビティ情報に基づきコンピュータまたは別のコンピュータと物理的にやり取りするようロボットに自動的に命令することとを含む。特定の側面において、プロセス定義により指示されたアクティビティおよびアクティビティ情報に基づきコンピュータまたは別のコンピュータとやり取りするようロボットに自動的に命令することは、別のコンピュータの別のディスプレイに示された画面の中で、特定のアクティビティのアクティビティ情報により指示されたスナップショットに視覚的に一致する部分を識別することと、該部分の中心に対応する位置で別のディスプレイに物理的にタッチするようロボットに命令することとを含む。一部の実装において、プロセス定義により指示されたアクティビティおよびアクティビティ情報に基づき別のコンピュータとやり取りするようロボットに自動的に命令することは、別のディスプレイに示された画面が特定のアクティビティのアクティビティ情報により指示されたスクリーンショットに対応すると判断することと、別のディスプレイに示された画面が特定のアクティビティのアクティビティ情報により指示されたスクリーンショットに対応すると判断するのに応答して、プロセス定義により指示された後続アクティビティに基づき別のコンピュータと物理的にやり取りするようロボットに命令することを含む。一部の側面では、プロセス定義により指示されたアクティビティおよびアクティビティ情報に基づきコンピュータまたは別のコンピュータとやり取りするようロボットに自動的に命令することは、別のコンピュータの別のディスプレイに示された画面の中で、特定のアクティビティのアクティビティ情報により指示されたスナップショットに視覚的に一致する部分を識別することと、画面の中でスナップショットに視覚的に一致する部分の中心に対応する座標のクリックを受信するための電子信号を別のコンピュータに提供するようロボットに命令することとを含む。一部の側面においてアクションは、プロセスを修正するために人が使用できるグラフィカルバージョンのプロセス定義を生成することを含む。
【０００９】
１つの技術的な利点は、システムがより的確な自動化を可能にできることかもしれない。例えば、異なるコンピュータは異なる画面解像度、アプリケーションウィンドウの位置、アプリケーションウィンドウのサイズ、またはその他、アクティビティに対して記憶されている座標に単に基づきやり取りすると問題を生じるかもしれない相違を有することもある。システムは、コンピュータビジョン技術を使用するので、手動プロセスが実行されたときとは異なる形でボタン、コントロール、ウィンドウ、または他のユーザインターフェース要素が現れたとしても、いつどこでやり取りが自動的に発生すべきかを的確に判断できる。さらにコンピュータビジョン技術は、システムが、自動のやり取りがアクティビティの無事な完了をもたらしたかどうかをディスプレイの画像に基づき判断できるようにし得る。
【００１０】
他の利点としては、システムが、表示情報しか容易に入手できない場合でもシステム上での自動化を可能にできることが挙げられよう。例えばシステムは、人が手動プロセスの実行に使用するコンピュータとは電子通信していなくてもよく、システムはそれでも、プロセスを自動的に実行する方法を判断できてもよい。別の利点は、システムが、物理的なやり取りを必要とするプロセスのシステム上での自動実行を可能にし得ることであろう。例えばコンピュータは、物理的な入力を必要としてもよく、その物理的なやり取りを、システムにより制御されるロボットが実行してもよい。さらに別の利点は、ロボットが特定用途向けのモジュールを必要とせずに多様なユーザインターフェースとやり取りできるという点で、システムが普遍的であり得るということであろう。
【００１１】
本明細書に記載される主題の１つ以上の実装の詳細が、添付の図面および以下の説明に記載される。本主題の他の潜在的な特徴、側面、および利点は、本記載、図面、および特許請求の範囲から明らかとなる。当然のことながら、各例が別々に記載されていても、その個々の特徴はさらなる例へと組み合わされ得る。
【図面の簡単な説明】
【００１２】
【図１】手動プロセスを自動化する例示のシステムのブロック図である。
【図２】プロセスを自動的に実行する例示のシステムのブロック図である。
【図３】手動プロセスを自動化する例示のプロセスのフローチャートである。
【図４】例示的な汎用コンピュータシステムの概略図を示す。
【発明を実施するための形態】
【００１３】
別々の図面中の同じ参照符号は、同じ構成要素を指示する。
【００１４】
図１は、手動プロセスを自動化する例示のシステム１００のブロック図である。簡潔に言うと、さらに詳しくは後述するとおり、システム１００は、画像捕捉器１１０、アクティビティ識別器１２０、アクティビティ情報生成器１３０、およびプロセス定義生成器１４０を含んでもよい。
【００１５】
画像捕捉器１１０は、プロセスを手動で実行するにあたりユーザがコンピュータとやり取りする間に、コンピュータのディスプレイの画像を取得してもよい。例えば画像捕捉器は、「はい」および「いいえ」ボタンを備えたユーザインターフェースを示すタッチスクリーンの第１画像と、「はい」ボタンがユーザによりタッチされるのに応答して強調表示されているユーザインターフェースを示すタッチスクリーンの第２画像とを取得してもよい。一部の実装では、画像捕捉器１１０は、ディスプレイ上に示された画面の画像を捕捉する、例えば電荷結合素子（ＣＣＤ：ｃｈａｒｇｅ−ｃｏｕｐｌｅｄ  ｄｅｖｉｃｅ）カメラまたは相補型金属酸化膜半導体（ＣＭＯＳ：ｃｏｍｐｌｅｍｅｎｔａｒｙ  ｍｅｔａｌ−ｏｘｉｄｅ−ｓｅｍｉｃｏｎｄｕｃｔｏｒ）カメラなどのカメラであってもよい。他の実装では、画像捕捉器１１０は、コンピュータまたは別のコンピュータ上で実行されコンピュータからコンピュータのディスプレイへのビデオ出力を監視するソフトウェアプロセスであってもよい。
【００１６】
画像捕捉器１１０は、プロセスであって、（ｉ）コンピュータとやり取りするユーザにより手動で実行され、且つ（ｉｉ）コンピュータまたは別のコンピュータとやり取りするよう構成されたロボットにより実行されるよう自動化されるべき、プロセスをシステム１００が識別すると、画像を取得し始めてもよい。例えばユーザは、手動プロセスを自動化するアプリケーションを開いて、システムステータスログエントリの生成プロセスをユーザが自動化したいということを知らせる入力を提供し、その手動プロセスをユーザが開始すると知らせる入力を提供し、その手動プロセスをユーザが終えたと知らせる入力を提供してもよい。本例では、画像捕捉器１１０は、手動プロセスをユーザが自動化したいということを知らせる入力をユーザが提供すると画像の捕捉を始め、手動プロセスをユーザが終えたと知らせる入力をユーザが提供すると画像の捕捉を終了してもよい。画像捕捉器１１０は、様々なタイミングで画像を取得してもよい。例えば画像捕捉器１１０は、例えば１ミリ秒、５ミリ秒、２５ミリ秒、１００ミリ秒毎、またはその他何らかの間隔など、所定の間隔で画像を取得してもよい。
【００１７】
別の例では、画像捕捉器１１０は、画像を継続的に取得していてもよく、システム１００は、機械学習を使用してプロセス開始時およびプロセス終了時を判断してもよい。例えばシステム１００のプロセス分割器が、機械学習を使用して、プロセスの開始または終了に関連する特定のアクティビティを判断してもよい。そのようなアクティビティには、例えば、特定ソフトウェアウィンドウがフォアグラウンドに現れること、または特定のロゴが検出されることなど、ディスプレイ上に特定の画像が示されることが含まれ得る。プロセス分割器は、こうした特定アクティビティを識別して、順次的なアクティビティのリストを、開始に関連するアクティビティと終了に関連するアクティビティとの間に入るすべてのイベントを含んだ別々のアクティビティサブリストへと分割してもよい。一部の実装では、プロセス分割器は、例えばアプリケーションアイコンをクリックする、アプリケーションウィンドウが開く、メニューボタンをクリックするなど、繰り返されるアクティビティシーケンスを識別することを試行して、繰り返されるアクティビティシーケンスが識別されると、繰り返されるシーケンスの中の最初のアクティビティをプロセスの開始に関連するアクティビティとして識別し、繰り返されるシーケンスの中の最後のアクティビティをプロセスの終了に関連するアクティビティとして識別してもよい。
【００１８】
画像捕捉器１１０は、取得された画像をアクティビティ識別器１２０に提出してもよい。例えば画像捕捉器１１０は、「はい」および「いいえ」ボタンを備えたユーザインターフェースを示すタッチスクリーンの第１画像と、「はい」ボタンがタッチされるのに応答して強調表示されているユーザインターフェースを示すタッチスクリーンの第２画像とを取得して、アクティビティ識別器１２０に提供してもよい。
【００１９】
アクティビティ識別器１２０は、画像捕捉器１１０から受信された画像にコンピュータビジョン技術を適用して、プロセスに関連する１つ以上のアクティビティを識別してもよい。例えばアクティビティ識別器１２０は、「はい」および「いいえ」ボタンを備えたユーザインターフェースを示すタッチスクリーンの第１画像と、「はい」ボタンがユーザによりタッチされるのに応答して強調表示されているユーザインターフェースを示すタッチスクリーンの第２画像とにコンピュータビジョン技術を適用して、プロセスに関連するアクティビティが画面のタッチであると判断してもよい。他のアクティビティには、例えば、マウスクリック、キー押下、またはシーン変化が含まれ得る。
【００２０】
コンピュータビジョン技術には、画像間の相違を識別すること、光学式文字認識を実行すること、物体認識を実行すること、または他の技術が含まれ得る。例えばアクティビティ識別器１２０は、「はい」および「いいえ」ボタンが強調表示されていない第１画像と、「はい」ボタンが強調表示された第２画像との相違に基づき、タッチスクリーンの「はい」ボタンがタッチされたと判断してもよい。別の例においてアクティビティ識別器１２０は、第１画像では、マウスカーソルがメニューを開くメニューアイコンの上にあり、第２画像では、マウスカーソルがまだメニューアイコンの上にあり今はメニューが開いていると判断し、それに応答して、マウスの左ボタンでメニューアイコンがクリックをされたと判断してもよい。
【００２１】
さらに別の例においてアクティビティ識別器１２０は、第１画像が空白のテキストフィールドへのテキスト入力を待つユーザインターフェースを示し、第２画像がテキストフィールド内の字を示すユーザインターフェースを示すと判断して、それに応答して、その字に対応するキーが押下されたと判断してもよい。さらに別の例においてアクティビティ識別器１２０は、ディスプレイに示された第１画像と第２画像との差が例えば３０％、４０％、７５％、９０％、またはその他何らかのパーセンテージなどの所定量を超えて変化していると判断し、それに応答して、シーン変化が発生したと判断してもよい。さらなる例においてアクティビティ識別器１２０は、暗い画面、例えばデスクトップの背景の画像を受信して、次に明るい画面、例えば白のグラフィカルユーザインターフェースを有するアプリケーションウィンドウが新たに開かれた後の画像を受信して、２つのシーンの画素毎の輝度の比較に基づいて各画素のスコアを生成し、スコアを平均し、平均したスコアが所定閾値を超えると判断し、それに応答してシーン変化が発生したと判断してもよい。さらなる例においてアクティビティ識別器１２０は、点滅するテキストカーソルがテキストフィールドに見えないのが次にテキストフィールドに現れ、テキストフィールドで左マウスクリックが発生したことが指示されたと判断してもよい。さらなる例においてアクティビティ識別器１２０は、示されているグラフィカルユーザインターフェースウィンドウの変化またはグラフィカルユーザインターフェースウィンドウのタイトルバーの光学式文字認識される字の変化のうちの１つ以上に基づいて、フォアグラウンドのプロセスの変化を識別してもよい。
【００２２】
一部の実装では、アクティビティ識別器１２０はさらに、画像に加えて入力を使用してアクティビティを識別してもよい。例えばアクティビティ識別器１２０は、コンピュータのキーボードドライバからキーボード入力を受信して、それに応答してキー押下アクティビティを識別するか、またはコンピュータのマウスドライバからマウス入力を受信して、それに応答してマウスクリックのアクティビティを識別してもよい。他の入力には、コンピュータのタスクマネージャからの、現在実行中の１つ以上のプロセスまたは現在フォアグラウンドのプロセスの指示が含まれ得る。アクティビティ識別器１２０は、識別されたアクティビティをアクティビティ情報生成器１３０に提供してもよい。例えばアクティビティ識別器１２０は、アクティビティ「画面タッチ」の指示をアクティビティ情報生成器１３０に提供してもよい。
【００２３】
アクティビティ情報生成器１３０は、アクティビティに関連するアクティビティ情報を生成できる。アクティビティ情報は、アクティビティを表現する情報であってもよい。例えば画面タッチのアクティビティ情報は、タッチスクリーン上のタッチの座標と、例えば２０画素掛ける２０画素の領域、５０画素掛ける５０画素の領域、またはその他何らかのサイズの領域など、タッチされた座標を中心としたタッチスクリーンのタッチ直前のスナップショットと、タッチスクリーンがタッチされた後のディスプレイのスクリーンショットとを表現してもよい。一部の実装においてアクティビティ情報生成器１３０は、スナップショットの最適なサイズを自動的に判断できるインテリジェントクロッピングを使用してスナップショットを生成してもよい。例えばアクティビティ情報生成器１３０は、タスクバーにあるプログラムのロゴが選択されたと判断し、それに応答して、ロゴに対応するタスクバーの部分のみを識別してタスクバーの識別された部分のみを含むスナップショットを生成してもよい。一部の実装において、スナップショットとは、ディスプレイに示されるもののうち、例えば１０％、２０％、３０％、またはその他何らかのパーセンテージの部分を表し、例えば示されているものの中にある制御要素を特定するために使用できるものであり、スクリーンショットとは、ディスプレイに示されるもののうち、例えば１００％、９０％、８０％、またはその他何らかのパーセンテージなどほぼ全体を表し、例えば或るプログラムの特定画面が表示されているかどうかを判断するために使用できるものである。
【００２４】
別の例では、キー押下のアクティビティ情報は、どのキーが押下されたかと、キーが押下される前のディスプレイのスクリーンショットと、キーが押下された後のディスプレイのスクリーンショットとを表現してもよい。さらに別の例において、マウスクリックのアクティビティ情報は、マウスのどのボタンがクリックされたかと、マウスがクリックされたときのマウスカーソルの座標と、マウスカーソルの座標を中心としたマウスクリック直前のスナップショットと、マウスがクリックされた後のディスプレイのスクリーンショットとを表現してもよい。さらに別の例において、シーン変化のアクティビティ情報は、シーン変化の完了にどの程度の長さがかかったかと、シーン変化が完了した後のスクリーンショットとを表現してもよい。
【００２５】
一部の実装において、アクティビティ情報生成器１３０はさらに、コンピュータのキーボードドライバからのキーボード入力に基づきアクティビティを識別し、それに応答してキーボード入力に対応するキーが押下されたことを指示するアクティビティ情報を生成してもよいし、または、コンピュータのマウスドライバからマウス入力を受信し、それに応答してクリックされたマウスのボタンとマウスカーソルの現在の座標とを指示するアクティビティ情報を生成してもよい。
【００２６】
一部の実装においてアクティビティ情報生成器１３０は、特殊文字の処理に基づきアクティビティを識別してもよい。例えばアクティビティ情報生成器１３０は、ディスプレイに示されたテキスト入力フィールドに大文字「Ａ」が現れるのに基づいて、ユーザにより大文字「Ａ」が入力されたと判断し、大文字「Ａ」の生成は、「Ｓｈｉｆｔ」キーを押下したまま「Ａ」キーを押下して「Ｓｈｉｆｔ」キーを放すこと、または「Ｃａｐｓ  Ｌｏｃｋ」キーを押下して「Ａ」キーを押下し、もう一度「Ｃａｐｓ  Ｌｏｃｋ」キーを押下することを伴うと判断し、それに応答して、それら対応するキーを押下するアクティビティを識別してもよい。
【００２７】
アクティビティ情報生成器１３０は、アクティビティ情報をプロセス定義生成器１４０に提供してもよい。例えばアクティビティ情報生成器１３０は、画面がタッチされる前の「はい」ボタンを中心とした画面の部分を示すスナップショットを含む画面タッチアクティビティのアクティビティ情報を、プロセス定義生成器１４０に提供してもよい。他の例では、アクティビティ情報生成器１３０は、「Ｅｎｔｅｒ」キーが押下されたことを表現するキー押下アクティビティのアクティビティ情報と、キーが押下された直後のスクリーンショットとをプロセス定義生成器１４０に提供してもよい。さらに別の例では、アクティビティ情報生成器１３０は、画面の右上角で「左」マウスボタンがクリックされたことを表現するマウスクリックアクティビティのアクティビティ情報と、クリック直前にディスプレイに示されていた画面の右上角を中心とした画面の部分のスナップショットと、ボタンがクリックされた後にディスプレイに示された画面のスクリーンショットとを、プロセス定義生成器１４０に提供してもよい。アクティビティ情報の他の例は、マウスホイールのスクロール、またはマウス、キーボード、タッチスクリーン、もしくは別の入力デバイスとの他のやり取りを含んでもよい。
【００２８】
プロセス定義生成器１４０は、ロボットに別のコンピュータとやり取りすることによりプロセスを自動的に実行させるのに使用されるプロセス定義を生成してもよい。例えばプロセス定義生成器１４０は、ロボットが、まず、「はい」ボタンを中心とした第１スナップショットの中心に対応する画面の位置をタッチし、次に、「現在ステータスを判断」ボタンを中心とした第２スナップショットの中心に対応する画面の位置をタッチし、続いて、「Ｅｎｔｅｒ」キーを押下するべきであることを特に指示するプロセス定義を生成してもよい。プロセス定義に従ってロボットがどのようにプロセスを自動的に実行できるかのさらなる詳細は、図２に関連して後述する。
【００２９】
プロセス定義は、識別された１つ以上のアクティビティを指示し、識別されたアクティビティそれぞれについて、アクティビティに関連するアクティビティ情報を指示してもよい。例えば現在のシステムステータスのログエントリを生成するプロセスの場合、プロセス定義生成器１４０は、画面タッチアクティビティが、（ｉ）「はい」ボタンがタッチされる前の「はい」ボタンを中心とした、画面タッチ前の画面の部分を示すスナップショットと、（ｉｉ）「はい」ボタンがタッチされた後のスクリーンショットとに関連することを指示するアクティビティ情報、およびマウスクリックアクティビティが、（ｉ）画面の右上角でクリックされる「左」マウスボタンと、（ｉｉ）クリック直前にディスプレイに示されていた画面の右上角を中心とした画面の部分のスナップショットと、（ｉｉｉ）ボタンがクリックされた後にディスプレイに示された画面のスクリーンショットとに関連することを指示するアクティビティ情報、およびキー押下アクティビティが、（ｉ）「Ｅｎｔｅｒ」キーが押下されることと、（ｉｉ）キー押下の直後のスクリーンショットとに関連することを指示するアクティビティ情報、を受信してもよい。プロセス定義は、識別された１つ以上のアクティビティのシーケンスを指示してもよい。例えばプロセス定義は、画面タッチが最初に実行され、次に別の画面タッチ、続いてキー押下が実行されることを指示してもよい。
【００３０】
アクティビティ識別器１２０、アクティビティ情報生成器１３０、およびプロセス定義生成器１４０は、それぞれの機能性を様々なタイミングで実行してもよい。例えばアクティビティ識別器１２０は、画像捕捉器１１０から受信された画像を記憶し、プロセスが終了したとの知らせ受信するまで待ってからコンピュータビジョン技術を画像に適用してアクティビティを識別してもよく、次にアクティビティ情報生成器１３０は、すべてのアクティビティの指示を一度に受信してすべてのアクティビティのアクティビティ情報を生成してもよく、プロセス定義生成器１４０は、すべてのアイデンティティの指示およびすべてのアクティビティ情報の指示を一度に受信し、続いてプロセス定義を生成してもよい。別の例においてアクティビティ識別器１２０は、アクティビティ識別器１２０が各アクティビティを識別したときにそのアクティビティの指示をアクティビティ情報生成器１３０に提供してもよく、アクティビティ情報生成器１３０は、アクティビティの指示が受信されるにつれて各アクティビティのアクティビティ情報を生成してもよく、プロセス定義生成器１４０は、アクティビティ情報の指示が受信されるにつれてプロセス定義を追加生成してもよい。
【００３１】
一部の実装では、システム１００のプロセス定義が、識別されたアクティビティを表現するテキストと、アクティビティ情報に対応するテキストまたは画像とを含む、人間に読みやすいフォーマットの文書として出力されてもよい。一例によれば、例えばＷｏｒｄまたはＶｉｓｉｏ文書中の自然テキスト言語など、人間に読みやすいフォーマットのアクティビティ情報がスクリーンショットに重ねられまたは添付されてもよい。例えばボタンの上のマウスポインタを示すスクリーンショットが修正されて、例えばマウスの左のキーでのクリックを指示する「左クリック」など、スクリーンショットが撮られた瞬間に実行されたステップを表現する命令の書き込みをも含むようにされてもよい。一部の実装においてシステム１００は、種々のプロセスに関する情報を自動的且つシームレスに収集してもよい。例えばシステム１００により実行されるドキュメンテーション動作も、システム１００がユーザ間のプロセスの矛盾または差を検出できるようにして、作成される最終的なドキュメンテーションがプロセス実行の最適な方法を確実に示すようにすることができる。
【００３２】
一部の実装においてシステム１００は、人がプロセス定義を修正できるようにしてもよい。例えばシステム１００は、ユーザがプロセス定義により指示されるアクティビティおよび関連するアクティビティ情報を追加、削除、または修正するのに用いることができるグラフィカルユーザインターフェースを提供して、修正後のプロセス定義により定義されたプロセスを自動的に実行する際に後から使用するために、修正後のプロセス定義を記憶してもよい。
【００３３】
一部の実装においてシステム１００は、フィルタまたは複数フィルタのグループを使用してプロセス定義を修正してもよい。例えばシステム１００は、フィルタを使用して、人間に読みやすいキーストローク表現を作成してもよく、例えば、「Ｃａｐｓ  Ｌｏｃｋ」キー、「Ａ」キー、および「Ｃａｐｓ  Ｌｏｃｋ」キーを押下する、は代わりに「『Ａ』の入力を追加」と表現することができる。別の例においてシステム１００は、機密情報が再生中に明かされないように情報を隠すフィルタを使用できる。例えばシステム１００は、パスワードの実際の文字の代わりにアスタリスクでパスワードを表示してもよい。
【００３４】
システム１００の種々の構成を使用することができ、画像捕捉器１１０、アクティビティ識別器１２０、アクティビティ情報生成器１３０、およびプロセス定義生成器１４０の機能性が組み合わされ、さらに分割され、分散され、または入れ替えられることが可能である。
【００３５】
図２は、プロセスの自動化を自動的に実行する例示のシステム２００のブロック図である。システム２００は、コンピュータとやり取りするロボットを使用してプロセスを自動的に実行してもよい。簡潔に言うと、さらに詳しくは後述するとおり、システム２００は、画像捕捉器２１０、アクティビティトリガエンジン２２０、アクティビティ実行エンジン２３０、およびロボット２４０を含んでもよい。
【００３６】
画像捕捉器２１０は、ロボットがコンピュータとやり取りすることでプロセスを自動的に実行している間にコンピュータのディスプレイの画像を取得してもよい。例えば画像捕捉器２１０は、「はい」および「いいえ」ボタンを備えたユーザインターフェースを示すタッチスクリーンの第１画像を取得してもよい。別の例において画像捕捉器２１０は、ロボットによりタッチされるのに応答して「はい」ボタンが強調表示されているユーザインターフェースを示すタッチスクリーンの第２画像を取得してもよい。
【００３７】
一部の実装において画像捕捉器２１０は、ディスプレイに示された画面の画像を捕捉するカメラであってもよい。他の実装では、画像捕捉器２１０は、コンピュータからコンピュータのディスプレイへのビデオ出力を監視するソフトウェアプロセスであってもよい。
【００３８】
画像捕捉器２１０は、プロセス定義に従ってロボットにより自動的に実行されるべきプロセスをシステム２００が識別すると画像を取得し始めてもよい。例えばユーザは、プロセス定義に従ってプロセスを自動的に実行するアプリケーションを開き、自動化プロセスのプロセス定義を選択し、自動化プロセスの実行をトリガする入力を提供してもよい。本例において画像捕捉器２１０は、自動化プロセスの実行をトリガする入力をユーザが提供すると画像を捕捉し始めて、自動化プロセスのプロセス定義により指示されたすべてのアクティビティが実行されたら画像の捕捉を終了してもよい。画像捕捉器１１０は、様々なタイミングで画像を取得してもよい。例えば画像捕捉器１１０は、例えば１ミリ秒、５ミリ秒、２５ミリ秒、１００ミリ秒毎など、所定の間隔で画像を取得してもよい。
【００３９】
画像捕捉器２１０は、画像をアクティビティトリガエンジン２２０に提出してもよい。例えば画像捕捉器２１０は、「はい」および「いいえ」ボタンを備えたユーザインターフェースを示すタッチスクリーンの第１画像と、ロボットが「はい」ボタンをタッチするのに応答して「はい」ボタンが強調表示されているユーザインターフェースを示すタッチスクリーンの第２画像とを提供してもよい。
【００４０】
アクティビティトリガエンジン２２０は、画像およびプロセス定義を受信して、いつアクティビティをトリガするかを決定してもよい。例えばアクティビティトリガエンジン２２０は、「はい」およい「いいえ」ボタンを備えたユーザインターフェースを示すタッチスクリーンの画像を受信し、第１アクティビティが画面タッチであることを指示するプロセス定義であって、ユーザが手動で「はい」ボタンにタッチした直前に表示されていた「はい」ボタンを中心とした画面のスナップショット、例えば「スナップショットＸ」を含む関連するアクティビティ情報を指示するプロセス定義を受信して、それに応答して「はい」ボタンの画面タッチをトリガすることを決定してもよい。
【００４１】
アクティビティトリガエンジン２２０は、プロセス定義に従った順序でアクティビティをトリガしてもよい。例えばアクティビティトリガエンジン２２０は、まず、第１アクティビティのスナップショットＸに一致する部分に関して画像を分析して、次に、第１アクティビティが完了した後、第２アクティビティのスナップショットＹに一致する部分に関して画像を分析してもよい。アクティビティトリガエンジン２２０は、アクティビティをトリガする条件が満たされたときにアクティビティをトリガしてもよい。条件とは例えば、ディスプレイの画像の或る部分がアクティビティに関連するスナップショットに一致するとき、または前のアクティビティが完了したことであってもよい。
【００４２】
アクティビティトリガエンジン２２０は、アクティビティ実行エンジン２３０にトリガを提供してもよい。例えばアクティビティトリガエンジン２２０は、画面タッチが実行されるべきであること、キー押下が実行されるべきであること、マウスクリックが実行されるべきであること、またはシーン変化が予想されることを知らせるトリガを提供してもよい。
【００４３】
アクティビティ実行エンジン２３０は、アクティビティを実行してもよい。例えばアクティビティ実行エンジン２３０は、仮想ロボットであるロボット２４０に、例えばコンピュータのマウスドライバを介して、マウスカーソルの「はい」ボタンの上への移動、および「左」ボタンの「はい」ボタンの上でのクリックを仮想エミュレートせよとの命令を提供してもよい。さらに別の例では、アクティビティ実行エンジン２３０は、例えばコンピュータのキーボードドライバを介して、「Ｅｎｔｅｒ」キーの押下を仮想エミュレートせよと仮想ロボットに命令してもよい。別の例においてアクティビティ実行エンジン２３０は、物理的ロボットであるロボット２４０に、ロボットのアームを動かしてディスプレイに示された「はい」ボタンをタッチせよとの命令を提供してもよい。別の例においてアクティビティ実行エンジン２３０は、次のアクティビティにはシーン変化が完了するのを待ってから進むことを決定してもよい。さらに別の例においてアクティビティ実行エンジン２３０は、ディスプレイに示された特定のボタンの上にカーソルがくるようにマウスを動かし、次にマウスの「左」ボタンをクリックせよとの命令をロボット２４０に提供してもよい。
【００４４】
アクティビティ実行エンジン２３０は、ロボット２４０とディスプレイに示されているものとの関係の視覚的判断に基づいてロボット２４０に対する命令を生成してもよい。一部の実装では、アクティビティ実行エンジン２３０は、アクティビティを実行する際、画像捕捉器２１０からの画像を使用してもよい。例えばアクティビティ実行エンジン２３０は、「はい」ボタンをタッチせよとの命令をロボット２４０に提供するために、物理的画面タッチ部品を求めて画像に物体認識を適用するのに基づきロボット２４０の物理的画面タッチ部品の位置を判断し、さらにディスプレイの「はい」ボタンの位置を判断して、物理的画面タッチ部品に画像の中の「はい」ボタンをタッチさせることになるロボット２４０の物理的画面タッチ部品の動きを判断して、判断された動きに対応するロボット２４０に対する動きの命令を生成して、その動きの命令をロボット２４０に提供してもよい。
【００４５】
別の例においてアクティビティ実行エンジン２３０は、「Ｅｎｔｅｒ」キーを押下することを決定し、それに応答して、ロボット２４０のキー押下部品の現在位置およびキーボードの「Ｅｎｔｅｒ」キーの現在位置を示す画像を分析し、画像で物体認識を使用してロボット２４０のキー押下部品の現在位置を判断し、キーボードの「Ｅｎｔｅｒ」キーの現在位置を判断し、ロボット２４０のキー押下部品に「Ｅｎｔｅｒ」キーを押下させることになるロボット２４０のキー押下部品の動きを判断し、判断された動きに対応するロボット２４０に対する動きの命令を生成し、その動きの命令をロボット２４０に提供してもよい。
【００４６】
さらに別の例においてアクティビティ実行エンジン２３０は、ディスプレイに示された「はい」ボタンの上でマウスボタンを左クリックすることを決定し、それに応答して、ロボット２４０がマウスを握っていると画像から判断し、ディスプレイ上のマウスカーソルの位置を画像から判断し、ディスプレイに示された「はい」ボタンの位置を画像から判断し、ディスプレイに示されたマウスカーソルと「はい」ボタンとの距離に基づいてマウスを動かす量を求め、求めた量だけロボット２４０がマウスカーソルを動かすための動きの命令を生成して、その命令をロボット２４０に提供してもよい。
【００４７】
一部の実装では、アクティビティ実行エンジン２３０は、ロボット２４０に対する命令を生成する際、ロボット２４０を識別して、ロボットの動きの能力を判断して、ロボットの動きの能力およびロボット２４０とコンピュータの入力デバイスとの間の閉じるべき相対距離に基づきロボット２４０がすべき動きを判断し、ロボット２４０に分かる動きの命令のフォーマットを判断し、判断されたロボット２４０の動きに基づいて判断されたフォーマットで動きの命令を生成してもよい。
【００４８】
アクティビティ実行エンジン２３０は、プロセス定義に基づいてアクティビティを実行してもよい。例えば画面タッチアクティビティのプロセス定義は、「はい」ボタンを中心とする領域のスナップショットと、「はい」ボタンがクリックされた後の画面を示すスクリーンショットとを含んでもよい。したがって、プロセス定義に従って画面タッチアクティビティを実行する際、アクティビティ実行エンジン２３０は、ディスプレイのどこに「はい」ボタンが示されているかを判断し、「はい」ボタンをタッチせよとの１つ以上の命令をロボット２４０に提供し、次に、ディスプレイに示された画面がプロセス定義により指示されたスクリーンショットと一致するかどうかを判断してもよい。画面が一致しなければ、アクティビティ実行エンジン２３０は、管理者に通知を提供してもよいし、またはロボット２４０に再度命令を送信してもよい。画面が一致すれば、次にアクティビティ実行エンジン２３０は、アクティビティトリガエンジン２２０が、実行されたばかりのアクティビティの後続アクティビティとしてプロセス定義により指示されたアクティビティをトリガする条件が満たされたかどうかの判断を始めてよいとの知らせを、アクティビティトリガエンジン２２０に提供してもよい。
【００４９】
別の例では、アクティビティ実行エンジン２３０は、プロセス定義に基づきシーン変化が予想されると判断してもよく、それに応答して、シーン変化に該当する所定量、例えば３０％、４０％、７５％、９０％、またはその他何らかのパーセンテージ、ディスプレイに示された画面がアクティビティのトリガ前の画面の画像から変化したかどうかを判断してもよい。シーン変化が発生していなければ、アクティビティ実行エンジン２３０は、ロボットに対する命令を繰り返してもよいし、通知を管理者に提供してもよい。
【００５０】
一部の実装においてアクティビティ実行エンジン２３０はさらに、記憶された座標とスナップショットとの組み合わせに基づいてアクティビティを実行していてもよい。例えばプロセス定義は、画面の中心に対応する座標でのマウスクリックと、「はい」ボタンを中心とするスナップショットとを指示してもよいが、アクティビティ実行エンジン２３０は、スナップショットの中心が現在表示されている画面の中心から５０画素左寄りの座標に対応すると判断してもよい。それに応答してアクティビティ実行エンジン２３０は、例えば座標を平均して画面の中心から２５画素左寄りの座標をクリックすることを決定するなど、座標を修正してもよい。一部の実装では、アクティビティ実行エンジン２３０は、最初は、記憶されている座標を考慮せずディスプレイに示された画面に従った座標を使用してもよく、アクティビティが上述のように無事に完了しなければ、例えば平均された座標などの修正された座標を使用してもよく、それでもアクティビティが完了されなければ、記憶されている座標を使用してもよく、それでもアクティビティが完了しなければ、管理者に通知を提供してもよい。
【００５１】
図３は、手動プロセスを自動化する例示のプロセス３００のフローチャートである。以下では、図１および２を参照して記載したシステム１００および２００のコンポーネントにより実行されるものとしての処理３００を記載する。なお、プロセス３００は他のシステムまたはシステム構成により実行されてもよい。
【００５２】
プロセス３００は、手動で実行されるプロセスを識別することを含んでもよい（３１０）。プロセスは、コンピュータとやり取りするユーザにより手動で実行されるものであってもよく、コンピュータとやり取りするよう構成されたロボットにより実行されるよう自動化されるべきものである。例えば手動で実行されるプロセスは、ウェブフォームの提出に応答してテンプレート電子メールを生成することであってもよい。プロセスの識別にあたり、ユーザは、ユーザが特定の手動プロセスを自動化したいこと、およびユーザがその特定の手動プロセスを実行し始めることを知らせるユーザ入力を提供してもよい。
【００５３】
プロセス３００は、ディスプレイの撮られた画像１つ以上を取得することを含んでもよい（３２０）。画像は、ユーザがプロセスを手動実行する際にコンピュータとやり取りしている間に撮られてもよい。例えば画像捕捉器１１０は、ロボットにより自動化されるべき手動プロセスをユーザが始めるとの知らせを受信して、それに応答して、５ミリ秒、１０ミリ秒、２５ミリ秒、１００ミリ秒毎に、またはその他何らかの間隔でコンピュータのディスプレイの画像を捕捉し始めてもよい。画像は、「新規電子メール」ボタンの上のマウスカーソルを示す第１画像と、左マウスクリックに応答して違う色で強調表示された「新規電子メール」ボタンを示す第２画像と、開いた「新規電子メール」ウィンドウを示す第３画像とを含んでもよい。
【００５４】
プロセス３００は、画像から、プロセスに関連する１つ以上のアクティビティを識別することを含んでもよい（３３０）。アクティビティは、１つ以上のコンピュータビジョン技術を画像に適用することにより識別されてもよい。例えばアクティビティ識別器１２０は、「新規電子メール」ボタンの上のマウスカーソルを示す第１画像と、次の強調表示された「新規電子メール」ボタンを示す第２画像とが、「新規電子メール」ボタンに対して「左」クリックが発生したことを意味すると判断して、それに応答してマウスクリックのアクティビティを識別してもよい。
【００５５】
プロセス３００は、アクティビティに関連するアクティビティ情報を生成することを含んでもよい（３４０）。例えばアクティビティ情報生成器１３０は、マウスクリックのアクティビティの指示および画像を受信し、それに応答して、マウスクリックが発生した座標と、「新規電子メール」ボタンがクリックされる前の「新規電子メール」ボタン周囲の３０掛ける３０画素の領域のスナップショットと、「新規電子メール」ボタンがクリックされた後のスクリーンショットとを含むアクティビティ情報を生成してもよい。
【００５６】
プロセス３００は、ロボットにプロセスを自動的に実行させるのに使用するプロセス定義を生成することを含んでもよい（３５０）。プロセス定義は、識別された１つ以上のアクティビティを指示し、識別されたアクティビティそれぞれについて、アクティビティに関連するアクティビティ情報を指示してもよい。例えばプロセス定義生成器１４０は、ウェブフォーム提出に応答してテンプレート電子メールを生成するプロセスが、「新規電子メール」ボタンを「左」マウスクリックする第１アクティビティであって、（ｉ）画面の上部中央の座標、（ｉｉ）ボタンがクリックされる前の「新規電子メール」ボタンのスナップショット、および（ｉｉｉ）ボタンがクリック後に強調表示されるのを示す「新規電子メール」ボタンのボタンのスクリーンショットに関連する第１アクティビティと、シーン変化の第２アクティビティであって、（ｉ）「新規電子メール」ウィンドウが開く前でありシーン変化が始まる前のスクリーンショット、および（ｉｉ）「新規電子メール」ウィンドウが開いたときにシーン変化が終わった後のスクリーンショットに関連する第２アクティビティと、他のさらなるアクティビティであって、例えばウェブフォーム提出のログを開く、ウェブフォーム提出の件名をコピーする、新規電子メールウィンドウの件名欄を選択すること、およびウェブ提出のコピーした件名を件名欄に貼り付けることなどの、他のさらなるアクティビティと、を含むことを指示する情報を、ＸＭＬ、ＨＴＭＬ、Ｃ＃、ＸＡＭＬ、またはその他何らかの他のフォーマットで生成してもよい。
【００５７】
プロセス３００は、プロセス定義を記憶して、後からプロセス定義にアクセスしてプロセス定義により指示されるアクティビティおよびアクティビティ情報に基づいてコンピュータとやり取りするようロボットに自動的に命令することを含んでもよい。例えばユーザは、ウェブフォーム提出に応答してテンプレート電子メールを生成するプロセスをロボットが自動的に実行することをリクエストしてもよく、それに応答して画像捕捉器２１０が、コンピュータのディスプレイの画像を取得し始めてもよく、アクティビティトリガエンジン２２０が、プロセス定義により指示された「新規電子メール」ボタンを「左」クリックする第１アクティビティに関連するスナップショットに一致する部分を画像が含むときを判断してもよく、アクティビティ実行エンジンが、物理的なロボットアームを動かしてマウスカーソルが「新規電子メール」ボタンの上にくるまでマウスを動かし「左」ボタンをクリックするようロボット２４０に命令してもよい。
【００５８】
プロセス定義は、人間であってもコンピュータであってもよいデベロッパーまたはビジネスアナリストによって、例えば、同じプロセスに対して異なるマシンまたはユーザにより複数のプロセス定義が生成された結果生じた複数のプロセス定義の中から特定プロセスの最適化プロセス定義を選ぶために検査されてもよい。例えば機械学習などの技術を使用して、異なるプロセス定義が類似性を求めて検査され、類似した手順が認識されて分類系統にグループ化されてもよい。選択が行われると、そのプロセスを自動的に実行するために選択済みプロセス定義を使用できる。
【００５９】
図４は、例示的な汎用コンピュータシステムの概略図を示す。システム４００は、一部の実装により、プロセス３００に関連して記載された動作のために使用可能である。システム４００は、システム１００に含まれてもよい。
【００６０】
システム４００は、プロセッサ４１０、メモリ４２０、ストレージデバイス４３０、および入出力デバイス４４０を含む。コンポーネント４１０、４２０、４３０、および４４０はそれぞれ、システムバス４５０を使用して相互接続されている。プロセッサ４１０は、システム４００内で実行される命令を処理できる。一実装においてプロセッサ４１０は、シングルスレッドプロセッサである。別の実装においてプロセッサ４１０は、マルチスレッドプロセッサである。プロセッサ４１０は、メモリ４２０内またはストレージデバイス４３０上に記憶された命令を処理して、入出力デバイス４４０にユーザインターフェースのグラフィック情報を表示できる。
【００６１】
メモリ４２０は、情報をシステム４００内で記憶する。一実装においてメモリ４２０は、コンピュータ可読媒体である。一実装においてメモリ４２０は、揮発性メモリユニットである。別の実装においてメモリ４２０は、不揮発性メモリユニットである。
【００６２】
ストレージデバイス４３０は、システム４００の大容量ストレージを提供できる。一実装においてストレージデバイス４３０は、コンピュータ可読媒体である。様々な異なる実装においてストレージデバイス４３０は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイスとされ得る。
【００６３】
入出力デバイス４４０は、システム４００の入出力動作を提供する。一実装において入出力デバイス４４０は、キーボードおよび／またはポインティングデバイスを含む。別の実装において入出力デバイス４４０は、グラフィカルユーザインターフェースを表示するディスプレイユニットを含む。
【００６４】
本明細書に記載された本主題の実施形態、機能動作およびプロセスは、デジタル電子回路、または有形に具現化されたコンピュータソフトウェアもしくはファームウェア、または本明細書で開示された構造およびその構造上の等価物を含むコンピュータハードウェア、またはそれらのうちの１つ以上の組み合わせにおいて実装できる。本明細書に記載された主題の実施形態は、１つ以上のコンピュータプログラム、すなわちデータ処理装置により実行されるよう、またはデータ処理装置の動作を制御するよう、有形の不揮発性プログラム保持体上にコードされたコンピュータプログラム命令の１つ以上のモジュールなどとして実装できる。あるいは、またはさらに、プログラム命令は、例えば機械により生成された電気、光、または電磁信号などの人工的に生成された伝播信号上にコードでき、該信号は、データ処理装置による実行のために適切な受信器装置に送信するべく情報をコードするために生成される。コンピュータストレージ媒体は、機械可読ストレージデバイス、機械可読ストレージ基板、ランダムもしくは順次アクセスメモリデバイス、またはそれらのうちの１つ以上の組み合わせとすることができる。
【００６５】
「データ処理装置」という用語は、データを処理するすべての種類の装置、デバイス、および機械を包含し、例として、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む。装置は、例えばＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ：フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ：特定用途向け集積回路）などの専用論理回路を含むことができる。この装置は、ハードウェアに加えて、対象のコンピュータプログラムの実行環境を作り出すコード、例えばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの１つ以上の組み合わせを構成するコードなどを含むことができる。
【００６６】
コンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼称または記載されることもある）は、コンパイル型もしくはインタープリタ型言語、または宣言型もしくは手続き型言語を含む任意の形態のプログラミング言語で書くことができ、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、あるいはコンピューティング環境用に適した他の単位としてなど、任意の形態で展開できる。コンピュータプログラムは、ファイルシステム内のファイルに対応することもあるが、必須ではない。プログラムは、他のプログラムまたはデータを保持するファイルの一部（例えばマークアップ言語文書に格納される１つ以上のスクリプト）、対象のプログラム専用の単一ファイル、あるいは複数の連携ファイル（例えば１つ以上のモジュール、サブプログラム、またはコードの一部を格納する複数ファイル）に格納可能である。コンピュータプログラムは、１つのコンピュータ上、または１つの場所に位置するか、もしくは複数の場所に分散し通信ネットワークにより相互接続された複数のコンピュータ上で実行されるよう展開可能である。
【００６７】
本明細書に記載されたプロセスおよび論理フローは、入力データに作用し出力を生成することにより機能を実行する１つ以上のコンピュータプログラムを実行する１つ以上のプログラマブルコンピュータにより実行できる。プロセスおよび論理フローはさらに、例えばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）などの専用論理回路により実行可能であり、装置はさらに、該専用論理回路として実装可能である。
【００６８】
コンピュータプログラムを実行するのに適したコンピュータは、例として、汎用または専用マイクロプロセッサまたはその両方、あるいはその他任意の種類の中央処理ユニットに基づくことができる。一般に、中央処理ユニットは、読み取り専用メモリまたはランダムアクセスメモリまたは両方から命令およびデータを受信する。コンピュータの必須要素は、命令を実施または実行する中央処理ユニット、ならびに命令およびデータを記憶する１つ以上のメモリデバイスである。一般に、コンピュータはさらに、例えば磁気、光磁気ディスク、もしくは光ディスクなど、データを記憶する１つ以上の大容量ストレージデバイスを含むか、またはそれからデータを受け取りもしくはそれにデータを転送するよう動作可能に結合されるか、またはその両方である。なお、コンピュータはそのようなデバイスを有しなくてもよい。さらにコンピュータは、ごく少数の例を挙げると、例えばモバイル電話、携帯情報端末（ＰＤＡ：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、モバイルオーディオまたはビデオプレーヤ、ゲーム機、衛星航法システム（ＧＰＳ：Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）受信器、あるいはポータブルストレージデバイス（例えばユニバーサルシリアルバス（ＵＳＢ：ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）フラッシュドライブ）など、別のデバイスに組み込むことができる。
【００６９】
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、あらゆる形式の不揮発性メモリ、媒体およびメモリデバイスを含み、例として、例えばＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリデバイスなどの半導体メモリデバイス、例えば内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクなどが含まれる。プロセッサおよびメモリは、専用論理回路により補完されること、またはそれに組み込まれることが可能である。
【００７０】
ユーザとのやり取りを提供するために、本明細書に記載されている主題の実施形態は、ユーザに情報を表示するための、例えばＣＲＴ（ｃａｔｈｏｄｅ  ｒａｙ  ｔｕｂｅ：陰極線管）またはＬＣＤ（ｌｉｑｕｉｄ  ｃｒｙｓｔａｌ  ｄｉｓｐｌａｙ：液晶ディスプレイ）モニタなどのディスプレイデバイス、ならびにユーザが入力をコンピュータに提供することができるキーボードおよび、例えばマウス、またはトラックボールなどのポインティングデバイスを有するコンピュータ上に実装できる。他の種類のデバイスを、同じくユーザとのやり取りを提供するために使用できる。例えば、ユーザに提供されるフィードバックは、例えば視覚フィードバック、聴覚フィードバック、または触覚フィードバックなど、任意の形式の感覚フィードバックとすることができ、ユーザからの入力は、音響、スピーチ、または触覚入力を含め、任意の形式で受信可能である。さらにコンピュータは、例えばユーザのクライアントデバイス上のウェブブラウザから受信されたリクエストに応答してウェブページをウェブブラウザへ送信するなど、ユーザにより使用されるデバイスに文書を送信し該デバイスから文書を受信することで、ユーザとやり取りできる。
【００７１】
本明細書に記載されている主題の実施形態は、例えばデータサーバとしてなど、バックエンドコンポーネントを含むコンピューティングシステム、または、例えばアプリケーションサーバなど、ミドルウェアコンポーネントを含むコンピューティングシステム、または、本明細書に記載されている主題の実装とユーザがやり取りできるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータなど、フロントエンドコンポーネントを含むコンピューティングシステム、またはそのようなバックエンド、ミドルウェア、もしくはフロントエンドコンポーネントのうちの１つ以上の任意の組み合わせにおいて実装できる。システムのコンポーネントは、例えば通信ネットワークなど、任意の形態または媒体のデジタルデータ通信により相互接続可能である。通信ネットワークの例は、ローカルエリアネットワーク（「ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）」）、および例えばインターネットなどの広域ネットワーク（「ＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）」）を含む。
【００７２】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般に、互いに遠隔にあり、典型的には通信ネットワークを介してやり取りする。クライアントおよびサーバの関係は、各コンピュータ上で実行され互いにクライアントサーバ関係を有するコンピュータプログラムにより生じる。
【００７３】
本明細書は多数の具体的な実装の詳細を含むが、これらは、特許請求の範囲に対する制限として解釈されるべきではなく、むしろ特定の実施形態に特有であり得る特徴の記載として解釈されるべきである。別々の実施形態との関連で本明細書に記載されている特定の特徴は、単一の実施形態に組み合わせて実装されることも可能である。逆に、単一の実施形態との関連で記載されている様々な特徴が、複数の実施形態で別々に、または任意の適切な一部組み合わせで実装されることも可能である。さらに各特徴は、特定の組み合わせで動作するよう上述されていることもあり、当初そのように請求されていることもあるが、場合によっては、請求されている組み合わせからの１つ以上の特徴が、その組み合わせから削除されることが可能であり、請求されている組み合わせは、一部組み合わせまたは一部組み合わせの変形を対象とし得る。
【００７４】
同じく、各動作は図面に特定の順序で示されているが、これは、望ましい結果を達成するために当該の動作が、示されている特定の順序もしくは順番で実行されること、または示されているすべての動作が実行されることを要求するものと理解されてはならない。特定の状況では、マルチタスクおよび並列処理が有利なこともある。さらに、上述の実施形態における様々なシステムコンポーネントの分離は、すべての実施形態においてそのような分離を要求するものと理解されてはならず、当然のことながら、記載されているプログラムコンポーネントおよびシステムは、一般に、単一ソフトウェア製品に統合されること、または複数のソフトウェア製品にパッケージ化されることが可能である。
【００７５】
本主題の特定の実施形態が記載された。他の実施形態は、添付の特許請求の範囲に記載の範囲内にある。例えば、特許請求の範囲に列挙された動作は異なる順序で実行でき、それでも所望の結果を達成し得る。一例として、添付の図面に示したプロセスは、所望の結果を達成するために、必ずしも示された特定の順序または順番を要求するものではない。特定の実装では、マルチタスクおよび並列処理が有利なこともある。他のステップが設けられてもよいし、記載されたプロセスからステップが省かれてもよい。したがって、他の実装が添付の特許請求の範囲に記載の範囲内にある。
【００７６】
以下の項目は本発明を理解するのに有用である。
【００７７】
１．ディスプレイに示された画像または画像ストリームに関する情報を獲得し、
ディスプレイ上のアクティビティを検出するために画像または画像ストリームに関する情報を分析し、
ディスプレイ上の検出されたアクティビティについてのアクティビティ情報を記録し、
画像または画像ストリームに関する情報とアクティビティ情報との組み合わせを備えた出力データを生成する、
ように構成された、メモリおよびプロセッサを備えたコンピュータシステム。
【００７８】
２．出力データは、画像または画像ストリームに関する情報とアクティビティ情報との組み合わせが、具体的には自然テキスト言語を含む人間に読みやすいフォーマットの重ねられ且つ／または添付されたアクティビティ情報を有する少なくとも１つの画像または画像シーケンスを備えるように生成される、項目１に記載のコンピュータシステム。
【００７９】
３．ディスプレイをさらに備える、先行する項目のいずれか１つに記載のコンピュータシステム。
【００８０】
４．ディスプレイ上のアクティビティは、
プロセスの変化と、
シーン変化と、
ユーザ入力と
のうちの少なくとも１つを備え、ユーザ入力は具体的には、アクションを実行するためにタイプすることまたはポインティングデバイスのポインタを使用することのうちの少なくとも１つを含む、
先行する項目のいずれか１つに記載のコンピュータシステム。
【００８１】
５．プロセッサは、
出力データを読み取り、
出力データに基づいてディスプレイ上のアクティビティを再現する
ようさらに構成される、先行する項目のいずれかに記載のコンピュータシステム。
【００８２】
６．プロセッサは、画像照合に出力データを使用するようさらに構成される、項目５に記載のコンピュータシステム。
【００８３】
７．プロセッサは、出力データから情報を抽出するために光学式文字認識を使用するようさらに構成される、項目５または６に記載のコンピュータシステム。
【００８４】
８．コンピュータに実装された方法であって、
ディスプレイに示された画像または画像ストリームに関する情報を獲得するステップと、
ディスプレイ上のアクティビティを検出するために画像または画像ストリームに関する情報を分析するステップと、
ディスプレイ上の検出されたアクティビティについてのアクティビティ情報を記録するステップと、
画像または画像ストリームに関する情報とアクティビティ情報との組み合わせを備えた出力データを生成するステップと、
を含む、コンピュータに実装された方法。
【００８５】
９．出力データを生成するステップにおいて、画像または画像ストリームに関する情報とアクティビティ情報との組み合わせは、人間に読みやすいフォーマットの重ねられ且つ／または添付されたアクティビティ情報を有する少なくとも１つの画像または画像シーケンスを備える、項目８に記載のコンピュータに実装された方法。
【００８６】
１０．人間に読みやすいフォーマットは、自然テキスト言語を含む、項目９に記載のコンピュータに実装された方法。
【００８７】
１１．ディスプレイ上のアクティビティは、
プロセスの変化と、
シーン変化と、
ユーザ入力と
のうちの少なくとも１つを含み、ユーザ入力は具体的には、アクションを実行するためにタイプすることまたはポインティングデバイスのポインタを使用することのうちの少なくとも１つを含む、
先行する項目のいずれかに記載のコンピュータに実装された方法。
【００８８】
１２．出力データを読み取るステップと、
出力データに基づいてディスプレイ上のアクティビティを再現するステップと、
をさらに含む、先行する項目のいずれかに記載のコンピュータに実装された方法。
【００８９】
１３．画像照合のために出力データを使用するステップをさらに含む、項目１２に記載のコンピュータに実装された方法。
【００９０】
１４．出力データから情報を抽出するために光学式文字認識を使用するステップをさらに含む、項目１２または１３に記載のコンピュータに実装された方法。
【００９１】
１５．適切なシステム上にロードされて実行されると、項目８〜１４のいずれか１つに記載の方法のステップを実行するコンピュータ可読命令を備えたコンピュータプログラム製品。
【図１】
2018535459.tif 000003
【図２】
2018535459.tif 000004
【図３】
2018535459.tif 000005
【図４】
2018535459.tif 000006
【国際調査報告】
2018535459.tif 000007
2018535459.tif 000008
2018535459.tif 000009