(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-15
(45)【発行日】2022-06-23
(54)【発明の名称】ロボットによるプロセス自動化
(51)【国際特許分類】
G05B 19/042 20060101AFI20220616BHJP
B25J 13/08 20060101ALI20220616BHJP
【FI】
G05B19/042
B25J13/08 Z
(21)【出願番号】P 2017567664
(86)(22)【出願日】2016-06-30
(86)【国際出願番号】 EP2016065305
(87)【国際公開番号】W WO2017001560
(87)【国際公開日】2017-01-05
【審査請求日】2019-04-22
(32)【優先日】2015-07-02
(33)【優先権主張国・地域又は機関】EP
(32)【優先日】2016-04-08
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】510290957
【氏名又は名称】アクセンチュア グローバル サービスィズ リミテッド
(74)【代理人】
【識別番号】100102406
【氏名又は名称】黒田 健二
(74)【代理人】
【識別番号】100100240
【氏名又は名称】松本 孝
(72)【発明者】
【氏名】バタレル,シリル
(72)【発明者】
【氏名】ジャコ,エイドリアン
(72)【発明者】
【氏名】トーレス,セルジオ ラウール
【審査官】堀内 亮吾
(56)【参考文献】
【文献】特開2012-221318(JP,A)
【文献】特開2015-028765(JP,A)
【文献】特開2014-235699(JP,A)
【文献】特開2007-279991(JP,A)
【文献】特開2007-280174(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/042
B25J 13/08
(57)【特許請求の範囲】
【請求項1】
プロセスであって、(i)コンピュータとやり取りするユーザにより手動で実行され、且つ(ii)前記コンピュータまたは別のコンピュータとやり取りするよう構成されたロボットにより実行されるよう自動化されるべき、前記プロセスを識別するステップと、
前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータのディスプレイの画像を取得するステップと、
前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータの前記ディスプレイの前記画像の変化が、シーン変化に対応する所定閾値を満たすと判断するために、前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータの前記ディスプレイの前記画像に対して、コンピュータビジョン技術を適用するステップと、
前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータの前記ディスプレイの前記画像の変化が、シーン変化に対応する前記所定閾値を満たすと判断するのに応答して、前記プロセス中の前記ユーザからの入力の受け取りに対応する第1のアクティビティとそれに続く前記プロセス中のシーン変化に対応する第2のアクティビティを識別するステップ
であって、前記画像の変化がシーン変化に対応する前記所定閾値を満たすと判断することは、前記画像の画素毎の輝度の比較に基づいて各画素のスコアを生成し、当該スコアを平均し、当該平均したスコアが前記所定閾値を超えると判断することを含む、前記プロセス中のシーン変化に対応する第2のアクティビティを識別するステップと、
前記識別されたアクティビティそれぞれについて、前記アクティビティに関連するアクティビティ情報を生成するステップと、
前記ロボットに前記コンピュータまたは前記別のコンピュータとやり取りすることで前記プロセスを自動的に実行させるために使用されるプロセス定義を生成するステップであって、前記プロセス定義は、前記ユーザからの前記入力の受け取りに対応する前記第1のアクティビティとそれに続く前記シーン変化に対応する前記第2のアクティビティを指示し、且つ、指示されたアクティビティそれぞれについて、前記アクティビティに関連する前記アクティビティ情報を指示する、前記プロセス定義を生成するステップと、
前記ロボットに前記コンピュータまたは前記別のコンピュータとやり取りすることで前記プロセスを自動的に実行させるために使用される前記プロセス定義を、後で使用するために記憶するステップと、
を含む、コンピュータに実装された方法。
【請求項2】
前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータのディスプレイの画像を取得するステップは、
前記コンピュータの前記ディスプレイの前記撮られた画像をカメラから取得するステップ
を含む、請求項1に記載の方法。
【請求項3】
前記
画像はビデオを備える、先行する請求項のいずれか1項に記載の方法。
【請求項4】
前記アクティビティに関連するアクティビティ情報を生成するステップは、
前記アクティビティが実行される前に前記ディスプレイに示された画面の或る部分のスナップショットを生成するステップ
を含む、先行する請求項のいずれか1項に記載の方法。
【請求項5】
前記アクティビティに関連するアクティビティ情報を生成するステップは、
前記アクティビティが実行された後に前記ディスプレイに示された画面のスクリーンショットを生成するステップ
を含む、先行する請求項のいずれか1項に記載の方法。
【請求項6】
前記アクティビティは、キー押下、マウスクリック、画面タッチ、フォアグラウンドのプロセスの変化、またはシーン変化のうちの2つ以上を含む、先行する請求項のいずれか1項に記載の方法。
【請求項7】
前記プロセス定義にアクセスするステップと、
前記プロセス定義により指示された前記アクティビティおよびアクティビティ情報に基づき前記コンピュータまたは前記別のコンピュータと物理的にやり取りするよう前記ロボットに自動的に命令するステップと、
を含む、先行する請求項のいずれか1項に記載の方法。
【請求項8】
前記プロセス定義により指示された前記アクティビティおよびアクティビティ情報に基づき前記コンピュータまたは前記別のコンピュータとやり取りするよう前記ロボットに自動的に命令するステップは、
前記別のコンピュータの別のディスプレイに示された画面の中で、特定のアクティビティの前記アクティビティ情報により指示されたスナップショットに視覚的に一致する部分を識別するステップと、
前記部分の中心に対応する位置で前記別のディスプレイに物理的にタッチするよう前記ロボットに命令するステップと、
を含む、請求項7に記載の方法。
【請求項9】
前記プロセス定義により指示された前記アクティビティおよびアクティビティ情報に基づき前記別のコンピュータとやり取りするよう前記ロボットに自動的に命令するステップは、
前記別のディスプレイに示された画面が特定のアクティビティの前記アクティビティ情報により指示されたスクリーンショットに対応すると判断するステップと、
前記別のディスプレイに示された前記画面が特定のアクティビティの前記アクティビティ情報により指示されたスクリーンショットに対応すると判断するのに応答して、前記プロセス定義により指示された後続アクティビティに基づき前記別のコンピュータと物理的にやり取りするよう前記ロボットに命令するステップと
を含む、請求項7または8に記載の方法。
【請求項10】
前記プロセス定義により指示された前記アクティビティおよびアクティビティ情報に基づき前記コンピュータまたは前記別のコンピュータとやり取りするよう前記ロボットに自動的に命令するステップは、
前記別のコンピュータの別のディスプレイに示された画面の中で、特定のアクティビティの前記アクティビティ情報により指示されたスナップショットに視覚的に一致する部分を識別するステップと、
前記画面の中で前記スナップショットに視覚的に一致する前記部分の中心に対応する座標に対するクリックを受信するための電子信号を前記別のコンピュータに提供するよう前記ロボットに命令するステップと
を含む、請求項7、8、または9に記載の方法。
【請求項11】
前記プロセスを修正するために人が使用できるグラフィカルバージョンの前記プロセス定義を生成するステップ
を含む、先行する請求項のいずれか1項に記載の方法。
【請求項12】
1つ以上のコンピュータと、命令を記憶する1つ以上のストレージデバイスと
を備えるシステムであって、前記命令は、前記1つ以上のコンピュータによって実行されると前記1つ以上のコンピュータに動作を実行させるよう動作可能であり、前記動作は、
プロセスであって、(i)コンピュータとやり取りするユーザにより手動で実行され、且つ(ii)前記コンピュータまたは別のコンピュータとやり取りするよう構成されたロボットにより実行されるよう自動化されるべき、前記プロセスを識別することと、
前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータのディスプレイの画像を取得することと、
前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータの前記ディスプレイの前記画像の変化が、シーン変化に対応する所定閾値を満たすと判断するために、前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータの前記ディスプレイの前記画像に対して、コンピュータビジョン技術を適用することと、
前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータの前記ディスプレイの前記画像の変化が、シーン変化に対応する前記所定閾値を満たすと判断するのに応答して、前記プロセス中の前記ユーザからの入力の受け取りに対応する第1のアクティビティとそれに続く前記プロセス中のシーン変化に対応する第2のアクティビティを識別すること
であって、前記画像の変化がシーン変化に対応する前記所定閾値を満たすと判断することは、前記画像の画素毎の輝度の比較に基づいて各画素のスコアを生成し、当該スコアを平均し、当該平均したスコアが前記所定閾値を超えると判断することを含む、前記プロセス中のシーン変化に対応する第2のアクティビティを識別することと、
前記識別されたアクティビティそれぞれについて、前記アクティビティに関連するアクティビティ情報を生成することと、
前記ロボットに前記コンピュータまたは前記別のコンピュータとやり取りすることで前記プロセスを自動的に実行させるために使用されるプロセス定義を生成することであって、前記プロセス定義は、前記ユーザからの前記入力の受け取りに対応する前記第1のアクティビティとそれに続く前記シーン変化に対応する前記第2のアクティビティを指示し、且つ、指示されたアクティビティそれぞれについて、前記アクティビティに関連する前記アクティビティ情報を指示する、前記プロセス定義を生成することと、
前記ロボットに前記コンピュータまたは前記別のコンピュータとやり取りすることで前記プロセスを自動的に実行させるために使用される前記プロセス定義を、後で使用するために記憶することと、
を含む、システム。
【請求項13】
前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータのディスプレイの画像を取得することは、
前記コンピュータの前記ディスプレイの前記撮られた画像をカメラから取得すること
を含む、請求項12に記載のシステム。
【請求項14】
前記
画像はビデオを備える、請求項12または13に記載のシステム。
【請求項15】
前記アクティビティに関連するアクティビティ情報を生成することは、
前記アクティビティが実行される前に前記ディスプレイに示された画面の或る部分のスナップショットを生成すること
を含む、請求項12~14のいずれか1項に記載のシステム。
【請求項16】
前記アクティビティに関連するアクティビティ情報を生成することは、
前記アクティビティが実行された後に前記ディスプレイに示された画面のスクリーンショットを生成すること
を含む、請求項12~15のいずれか1項に記載のシステム。
【請求項17】
前記アクティビティは、キー押下、マウスクリック、画面タッチ、フォアグラウンドのプロセスの変化、またはシーン変化のうちの2つ以上を含む、請求項12~16のいずれか1項に記載のシステム。
【請求項18】
前記プロセス定義にアクセスすることと、
前記プロセス定義により指示された前記アクティビティおよびアクティビティ情報に基づき前記コンピュータまたは前記別のコンピュータと物理的にやり取りするよう前記ロボットに自動的に命令することと、
を含む、請求項12~17のいずれか1項に記載のシステム。
【請求項19】
前記プロセス定義により指示された前記アクティビティおよびアクティビティ情報に基づき前記コンピュータまたは前記別のコンピュータとやり取りするよう前記ロボットに自動的に命令することは、
前記別のコンピュータの別のディスプレイに示された画面の中で、特定のアクティビティの前記アクティビティ情報により指示されたスナップショットに視覚的に一致する部分を識別することと、
前記部分の中心に対応する位置で前記別のディスプレイに物理的にタッチするよう前記ロボットに命令することと、
を含む、請求項18に記載のシステム。
【請求項20】
1つ以上のコンピュータにより実行可能であり、当該実行をされると前記1つ以上のコンピュータに動作を実行させる命令を備えたソフトウェアを記憶する非一時的なコンピュータ可読媒体であって、前記動作は、
プロセスであって、(i)コンピュータとやり取りするユーザにより手動で実行され、且つ(ii)前記コンピュータまたは別のコンピュータとやり取りするよう構成されたロボットにより実行されるよう自動化されるべき、前記プロセスを識別することと、
前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータのディスプレイの画像を取得することと、
前記プロセスを手動で実行する際に前記ユーザがコンピュータとやり取りしている間に撮られた前記コンピュータの前記ディスプレイの前記画像の変化が、シーン変化に対応する所定閾値を満たすと判断するために、前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータの前記ディスプレイの前記画像に対して、コンピュータビジョン技術を適用することと、
前記プロセスを手動で実行する際に前記ユーザが前記コンピュータとやり取りしている間に撮られた前記コンピュータの前記ディスプレイの前記画像の変化が、シーン変化に対応する前記所定閾値を満たすと判断するのに応答して、前記プロセス中の前記ユーザからの入力の受け取りに対応する第1のアクティビティとそれに続く前記プロセス中のシーン変化に対応する第2のアクティビティを識別すること
であって、前記画像の変化がシーン変化に対応する所定閾値を満たすと判断することは、前記画像の画素毎の輝度の比較に基づいて各画素のスコアを生成し、当該スコアを平均し、当該平均したスコアが前記所定閾値を超えると判断することを含む、前記プロセス中のシーン変化に対応する第2のアクティビティを識別することと、
前記識別されたアクティビティそれぞれについて、前記アクティビティに関連するアクティビティ情報を生成することと、
前記ロボットに前記コンピュータまたは前記別のコンピュータとやり取りすることで前記プロセスを自動的に実行させるために使用されるプロセス定義を生成することであって、前記プロセス定義は、前記ユーザからの前記入力の受け取りに対応する前記第1のアクティビティとそれに続く前記シーン変化に対応する前記第2のアクティビティを指示し、且つ、
指示されたアクティビティそれぞれについて、前記アクティビティに関連する前記アクティビティ情報を指示する、前記プロセス定義を生成することと、
前記ロボットに前記コンピュータまたは前記別のコンピュータとやり取りすることで前記プロセスを自動的に実行させるために使用される前記プロセス定義を、後で使用するために記憶することと、
を含む、非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2015年7月2日に出願された欧州特許出願第15290172号の優先権を主張するものであり、参照によってその内容全体を本願明細書に引用するものとする。
【0002】
技術分野
本開示は、全般的に、ロボットによるプロセス自動化に関する。
【背景技術】
【0003】
コンピュータ上で実行される手動プロセスには、繰り返しが多く時間がかかるものもある。例えば、ウェブフォームの提出に応答してユーザが電子メールを送信する場合があるが、ウェブフォームが提出されるたびに、コンピュータと手動でやり取りして、ボタンをクリックして新規電子メールを書くウィンドウを開き、ボタンをクリックして提出ウェブフォームからそのウィンドウに情報をコピーし、キーをクリックして電子メールの本文の文章を書き込み、ボタンをクリックして電子メールを送信する必要がある場合もある。
【発明の概要】
【課題を解決するための手段】
【0004】
全般的に、本明細書に記載される主題の側面は、人により手動で実行されるプロセスを自動化するプロセスを含み得る。手動プロセスを自動化するために、システムは、プロセスを実行する間に人がコンピュータと手動でやり取りする間のコンピュータのディスプレイの画像を、コンピュータビジョン技術を使用して分析することができる。分析から、システムは、例えばキーストローク、マウスクリック、またはタッチスクリーンのタッチなどのプロセスに関連するアクティビティを判断できる。判断されたアクティビティに基づき、システムは次に、プロセスを自動的に繰り返すようロボットにコンピュータとのやり取りを行わせることができる。プロセスを繰り返す際、ロボットはさらに、判断されたアクティビティに関連するやり取りを自動的に実行するために、コンピュータのディスプレイの画像に対してコンピュータビジョン技術を使用してもよい。
【0005】
一部の側面では、本明細書に記載された主題は、プロセスであって、(i)コンピュータとやり取りするユーザにより手動で実行され、且つ(ii)コンピュータまたは別のコンピュータと物理的にやり取りするよう構成されたロボットにより実行されるよう自動化されるべき、プロセスを識別するアクションを含み得る方法に具現化されてもよい。さらなるアクションには、プロセスを手動で実行する際にユーザがコンピュータとやり取りしている間に撮られたコンピュータのディスプレイの画像1つ以上を取得することと、プロセスに関連する1つ以上のアクティビティを識別するために、プロセスを手動で実行する際にユーザがコンピュータとやり取りしている間に撮られたコンピュータのディスプレイの画像に対してコンピュータビジョン技術を適用することとが含まれる。さらなるアクションには、識別された1つ以上のアクティビティそれぞれについて、アクティビティに関連するアクティビティ情報を生成することと、ロボットにコンピュータまたは別のコンピュータと物理的にやり取りしてプロセスを自動的に実行させるために使用されるプロセス定義を生成することであって、プロセス定義は、識別された1つ以上のアクティビティを指示し、且つ、識別されたアクティビティそれぞれについてアクティビティに関連するアクティビティ情報を指示する、プロセス定義を生成することとが含まれる。
【0006】
その他の変形としては、対応するシステム、装置、およびコンピュータストレージデバイス上にコードされ本方法のアクションを実行するよう構成されたコンピュータプログラムが含まれる。
【0007】
これらの変形および他の変形はそれぞれ、任意選択で、以下の特徴のうちの1つ以上を含んでもよい。例えば一部の実装では、プロセスを手動で実行する際にユーザがコンピュータとやり取りしている間に撮られたコンピュータのディスプレイの画像1つ以上を取得することは、コンピュータのディスプレイの撮られた画像1つ以上をカメラから取得することを含む。一部の側面において、1つ以上の画像はビデオを含む。特定の側面において、アクティビティに関連するアクティビティ情報を生成することは、アクティビティが実行される前にディスプレイに示された画面の或る部分のスナップショットを生成することを含む。一部の実装において、アクティビティに関連するアクティビティ情報を生成することは、アクティビティが実行された後にディスプレイに示された画面のスクリーンショットを生成することを含む。一部の実装においてアクティビティは、キー押下、マウスクリック、画面タッチ、フォアグラウンドのプロセスの変化、またはシーン変化のうちの1つ以上を含む。
【0008】
一部の側面においてアクションは、プロセス定義にアクセスすることと、プロセス定義により指示されたアクティビティおよびアクティビティ情報に基づきコンピュータまたは別のコンピュータと物理的にやり取りするようロボットに自動的に命令することとを含む。特定の側面において、プロセス定義により指示されたアクティビティおよびアクティビティ情報に基づきコンピュータまたは別のコンピュータとやり取りするようロボットに自動的に命令することは、別のコンピュータの別のディスプレイに示された画面の中で、特定のアクティビティのアクティビティ情報により指示されたスナップショットに視覚的に一致する部分を識別することと、該部分の中心に対応する位置で別のディスプレイに物理的にタッチするようロボットに命令することとを含む。一部の実装において、プロセス定義により指示されたアクティビティおよびアクティビティ情報に基づき別のコンピュータとやり取りするようロボットに自動的に命令することは、別のディスプレイに示された画面が特定のアクティビティのアクティビティ情報により指示されたスクリーンショットに対応すると判断することと、別のディスプレイに示された画面が特定のアクティビティのアクティビティ情報により指示されたスクリーンショットに対応すると判断するのに応答して、プロセス定義により指示された後続アクティビティに基づき別のコンピュータと物理的にやり取りするようロボットに命令することを含む。一部の側面では、プロセス定義により指示されたアクティビティおよびアクティビティ情報に基づきコンピュータまたは別のコンピュータとやり取りするようロボットに自動的に命令することは、別のコンピュータの別のディスプレイに示された画面の中で、特定のアクティビティのアクティビティ情報により指示されたスナップショットに視覚的に一致する部分を識別することと、画面の中でスナップショットに視覚的に一致する部分の中心に対応する座標のクリックを受信するための電子信号を別のコンピュータに提供するようロボットに命令することとを含む。一部の側面においてアクションは、プロセスを修正するために人が使用できるグラフィカルバージョンのプロセス定義を生成することを含む。
【0009】
1つの技術的な利点は、システムがより的確な自動化を可能にできることかもしれない。例えば、異なるコンピュータは異なる画面解像度、アプリケーションウィンドウの位置、アプリケーションウィンドウのサイズ、またはその他、アクティビティに対して記憶されている座標に単に基づきやり取りすると問題を生じるかもしれない相違を有することもある。システムは、コンピュータビジョン技術を使用するので、手動プロセスが実行されたときとは異なる形でボタン、コントロール、ウィンドウ、または他のユーザインターフェース要素が現れたとしても、いつどこでやり取りが自動的に発生すべきかを的確に判断できる。さらにコンピュータビジョン技術は、システムが、自動のやり取りがアクティビティの無事な完了をもたらしたかどうかをディスプレイの画像に基づき判断できるようにし得る。
【0010】
他の利点としては、システムが、表示情報しか容易に入手できない場合でもシステム上での自動化を可能にできることが挙げられよう。例えばシステムは、人が手動プロセスの実行に使用するコンピュータとは電子通信していなくてもよく、システムはそれでも、プロセスを自動的に実行する方法を判断できてもよい。別の利点は、システムが、物理的なやり取りを必要とするプロセスのシステム上での自動実行を可能にし得ることであろう。例えばコンピュータは、物理的な入力を必要としてもよく、その物理的なやり取りを、システムにより制御されるロボットが実行してもよい。さらに別の利点は、ロボットが特定用途向けのモジュールを必要とせずに多様なユーザインターフェースとやり取りできるという点で、システムが普遍的であり得るということであろう。
【0011】
本明細書に記載される主題の1つ以上の実装の詳細が、添付の図面および以下の説明に記載される。本主題の他の潜在的な特徴、側面、および利点は、本記載、図面、および特許請求の範囲から明らかとなる。当然のことながら、各例が別々に記載されていても、その個々の特徴はさらなる例へと組み合わされ得る。
【図面の簡単な説明】
【0012】
【
図1】手動プロセスを自動化する例示のシステムのブロック図である。
【
図2】プロセスを自動的に実行する例示のシステムのブロック図である。
【
図3】手動プロセスを自動化する例示のプロセスのフローチャートである。
【
図4】例示的な汎用コンピュータシステムの概略図を示す。
【発明を実施するための形態】
【0013】
別々の図面中の同じ参照符号は、同じ構成要素を指示する。
【0014】
図1は、手動プロセスを自動化する例示のシステム100のブロック図である。簡潔に言うと、さらに詳しくは後述するとおり、システム100は、画像捕捉器110、アクティビティ識別器120、アクティビティ情報生成器130、およびプロセス定義生成器140を含んでもよい。
【0015】
画像捕捉器110は、プロセスを手動で実行するにあたりユーザがコンピュータとやり取りする間に、コンピュータのディスプレイの画像を取得してもよい。例えば画像捕捉器は、「はい」および「いいえ」ボタンを備えたユーザインターフェースを示すタッチスクリーンの第1画像と、「はい」ボタンがユーザによりタッチされるのに応答して強調表示されているユーザインターフェースを示すタッチスクリーンの第2画像とを取得してもよい。一部の実装では、画像捕捉器110は、ディスプレイ上に示された画面の画像を捕捉する、例えば電荷結合素子(CCD:charge-coupled device)カメラまたは相補型金属酸化膜半導体(CMOS:complementary metal-oxide-semiconductor)カメラなどのカメラであってもよい。他の実装では、画像捕捉器110は、コンピュータまたは別のコンピュータ上で実行されコンピュータからコンピュータのディスプレイへのビデオ出力を監視するソフトウェアプロセスであってもよい。
【0016】
画像捕捉器110は、プロセスであって、(i)コンピュータとやり取りするユーザにより手動で実行され、且つ(ii)コンピュータまたは別のコンピュータとやり取りするよう構成されたロボットにより実行されるよう自動化されるべき、プロセスをシステム100が識別すると、画像を取得し始めてもよい。例えばユーザは、手動プロセスを自動化するアプリケーションを開いて、システムステータスログエントリの生成プロセスをユーザが自動化したいということを知らせる入力を提供し、その手動プロセスをユーザが開始すると知らせる入力を提供し、その手動プロセスをユーザが終えたと知らせる入力を提供してもよい。本例では、画像捕捉器110は、手動プロセスをユーザが自動化したいということを知らせる入力をユーザが提供すると画像の捕捉を始め、手動プロセスをユーザが終えたと知らせる入力をユーザが提供すると画像の捕捉を終了してもよい。画像捕捉器110は、様々なタイミングで画像を取得してもよい。例えば画像捕捉器110は、例えば1ミリ秒、5ミリ秒、25ミリ秒、100ミリ秒毎、またはその他何らかの間隔など、所定の間隔で画像を取得してもよい。
【0017】
別の例では、画像捕捉器110は、画像を継続的に取得していてもよく、システム100は、機械学習を使用してプロセス開始時およびプロセス終了時を判断してもよい。例えばシステム100のプロセス分割器が、機械学習を使用して、プロセスの開始または終了に関連する特定のアクティビティを判断してもよい。そのようなアクティビティには、例えば、特定ソフトウェアウィンドウがフォアグラウンドに現れること、または特定のロゴが検出されることなど、ディスプレイ上に特定の画像が示されることが含まれ得る。プロセス分割器は、こうした特定アクティビティを識別して、順次的なアクティビティのリストを、開始に関連するアクティビティと終了に関連するアクティビティとの間に入るすべてのイベントを含んだ別々のアクティビティサブリストへと分割してもよい。一部の実装では、プロセス分割器は、例えばアプリケーションアイコンをクリックする、アプリケーションウィンドウが開く、メニューボタンをクリックするなど、繰り返されるアクティビティシーケンスを識別することを試行して、繰り返されるアクティビティシーケンスが識別されると、繰り返されるシーケンスの中の最初のアクティビティをプロセスの開始に関連するアクティビティとして識別し、繰り返されるシーケンスの中の最後のアクティビティをプロセスの終了に関連するアクティビティとして識別してもよい。
【0018】
画像捕捉器110は、取得された画像をアクティビティ識別器120に提出してもよい。例えば画像捕捉器110は、「はい」および「いいえ」ボタンを備えたユーザインターフェースを示すタッチスクリーンの第1画像と、「はい」ボタンがタッチされるのに応答して強調表示されているユーザインターフェースを示すタッチスクリーンの第2画像とを取得して、アクティビティ識別器120に提供してもよい。
【0019】
アクティビティ識別器120は、画像捕捉器110から受信された画像にコンピュータビジョン技術を適用して、プロセスに関連する1つ以上のアクティビティを識別してもよい。例えばアクティビティ識別器120は、「はい」および「いいえ」ボタンを備えたユーザインターフェースを示すタッチスクリーンの第1画像と、「はい」ボタンがユーザによりタッチされるのに応答して強調表示されているユーザインターフェースを示すタッチスクリーンの第2画像とにコンピュータビジョン技術を適用して、プロセスに関連するアクティビティが画面のタッチであると判断してもよい。他のアクティビティには、例えば、マウスクリック、キー押下、またはシーン変化が含まれ得る。
【0020】
コンピュータビジョン技術には、画像間の相違を識別すること、光学式文字認識を実行すること、物体認識を実行すること、または他の技術が含まれ得る。例えばアクティビティ識別器120は、「はい」および「いいえ」ボタンが強調表示されていない第1画像と、「はい」ボタンが強調表示された第2画像との相違に基づき、タッチスクリーンの「はい」ボタンがタッチされたと判断してもよい。別の例においてアクティビティ識別器120は、第1画像では、マウスカーソルがメニューを開くメニューアイコンの上にあり、第2画像では、マウスカーソルがまだメニューアイコンの上にあり今はメニューが開いていると判断し、それに応答して、マウスの左ボタンでメニューアイコンがクリックをされたと判断してもよい。
【0021】
さらに別の例においてアクティビティ識別器120は、第1画像が空白のテキストフィールドへのテキスト入力を待つユーザインターフェースを示し、第2画像がテキストフィールド内の字を示すユーザインターフェースを示すと判断して、それに応答して、その字に対応するキーが押下されたと判断してもよい。さらに別の例においてアクティビティ識別器120は、ディスプレイに示された第1画像と第2画像との差が例えば30%、40%、75%、90%、またはその他何らかのパーセンテージなどの所定量を超えて変化していると判断し、それに応答して、シーン変化が発生したと判断してもよい。さらなる例においてアクティビティ識別器120は、暗い画面、例えばデスクトップの背景の画像を受信して、次に明るい画面、例えば白のグラフィカルユーザインターフェースを有するアプリケーションウィンドウが新たに開かれた後の画像を受信して、2つのシーンの画素毎の輝度の比較に基づいて各画素のスコアを生成し、スコアを平均し、平均したスコアが所定閾値を超えると判断し、それに応答してシーン変化が発生したと判断してもよい。さらなる例においてアクティビティ識別器120は、点滅するテキストカーソルがテキストフィールドに見えないのが次にテキストフィールドに現れ、テキストフィールドで左マウスクリックが発生したことが指示されたと判断してもよい。さらなる例においてアクティビティ識別器120は、示されているグラフィカルユーザインターフェースウィンドウの変化またはグラフィカルユーザインターフェースウィンドウのタイトルバーの光学式文字認識される字の変化のうちの1つ以上に基づいて、フォアグラウンドのプロセスの変化を識別してもよい。
【0022】
一部の実装では、アクティビティ識別器120はさらに、画像に加えて入力を使用してアクティビティを識別してもよい。例えばアクティビティ識別器120は、コンピュータのキーボードドライバからキーボード入力を受信して、それに応答してキー押下アクティビティを識別するか、またはコンピュータのマウスドライバからマウス入力を受信して、それに応答してマウスクリックのアクティビティを識別してもよい。他の入力には、コンピュータのタスクマネージャからの、現在実行中の1つ以上のプロセスまたは現在フォアグラウンドのプロセスの指示が含まれ得る。アクティビティ識別器120は、識別されたアクティビティをアクティビティ情報生成器130に提供してもよい。例えばアクティビティ識別器120は、アクティビティ「画面タッチ」の指示をアクティビティ情報生成器130に提供してもよい。
【0023】
アクティビティ情報生成器130は、アクティビティに関連するアクティビティ情報を生成できる。アクティビティ情報は、アクティビティを表現する情報であってもよい。例えば画面タッチのアクティビティ情報は、タッチスクリーン上のタッチの座標と、例えば20画素掛ける20画素の領域、50画素掛ける50画素の領域、またはその他何らかのサイズの領域など、タッチされた座標を中心としたタッチスクリーンのタッチ直前のスナップショットと、タッチスクリーンがタッチされた後のディスプレイのスクリーンショットとを表現してもよい。一部の実装においてアクティビティ情報生成器130は、スナップショットの最適なサイズを自動的に判断できるインテリジェントクロッピングを使用してスナップショットを生成してもよい。例えばアクティビティ情報生成器130は、タスクバーにあるプログラムのロゴが選択されたと判断し、それに応答して、ロゴに対応するタスクバーの部分のみを識別してタスクバーの識別された部分のみを含むスナップショットを生成してもよい。一部の実装において、スナップショットとは、ディスプレイに示されるもののうち、例えば10%、20%、30%、またはその他何らかのパーセンテージの部分を表し、例えば示されているものの中にある制御要素を特定するために使用できるものであり、スクリーンショットとは、ディスプレイに示されるもののうち、例えば100%、90%、80%、またはその他何らかのパーセンテージなどほぼ全体を表し、例えば或るプログラムの特定画面が表示されているかどうかを判断するために使用できるものである。
【0024】
別の例では、キー押下のアクティビティ情報は、どのキーが押下されたかと、キーが押下される前のディスプレイのスクリーンショットと、キーが押下された後のディスプレイのスクリーンショットとを表現してもよい。さらに別の例において、マウスクリックのアクティビティ情報は、マウスのどのボタンがクリックされたかと、マウスがクリックされたときのマウスカーソルの座標と、マウスカーソルの座標を中心としたマウスクリック直前のスナップショットと、マウスがクリックされた後のディスプレイのスクリーンショットとを表現してもよい。さらに別の例において、シーン変化のアクティビティ情報は、シーン変化の完了にどの程度の長さがかかったかと、シーン変化が完了した後のスクリーンショットとを表現してもよい。
【0025】
一部の実装において、アクティビティ情報生成器130はさらに、コンピュータのキーボードドライバからのキーボード入力に基づきアクティビティを識別し、それに応答してキーボード入力に対応するキーが押下されたことを指示するアクティビティ情報を生成してもよいし、または、コンピュータのマウスドライバからマウス入力を受信し、それに応答してクリックされたマウスのボタンとマウスカーソルの現在の座標とを指示するアクティビティ情報を生成してもよい。
【0026】
一部の実装においてアクティビティ情報生成器130は、特殊文字の処理に基づきアクティビティを識別してもよい。例えばアクティビティ情報生成器130は、ディスプレイに示されたテキスト入力フィールドに大文字「A」が現れるのに基づいて、ユーザにより大文字「A」が入力されたと判断し、大文字「A」の生成は、「Shift」キーを押下したまま「A」キーを押下して「Shift」キーを放すこと、または「Caps Lock」キーを押下して「A」キーを押下し、もう一度「Caps Lock」キーを押下することを伴うと判断し、それに応答して、それら対応するキーを押下するアクティビティを識別してもよい。
【0027】
アクティビティ情報生成器130は、アクティビティ情報をプロセス定義生成器140に提供してもよい。例えばアクティビティ情報生成器130は、画面がタッチされる前の「はい」ボタンを中心とした画面の部分を示すスナップショットを含む画面タッチアクティビティのアクティビティ情報を、プロセス定義生成器140に提供してもよい。他の例では、アクティビティ情報生成器130は、「Enter」キーが押下されたことを表現するキー押下アクティビティのアクティビティ情報と、キーが押下された直後のスクリーンショットとをプロセス定義生成器140に提供してもよい。さらに別の例では、アクティビティ情報生成器130は、画面の右上角で「左」マウスボタンがクリックされたことを表現するマウスクリックアクティビティのアクティビティ情報と、クリック直前にディスプレイに示されていた画面の右上角を中心とした画面の部分のスナップショットと、ボタンがクリックされた後にディスプレイに示された画面のスクリーンショットとを、プロセス定義生成器140に提供してもよい。アクティビティ情報の他の例は、マウスホイールのスクロール、またはマウス、キーボード、タッチスクリーン、もしくは別の入力デバイスとの他のやり取りを含んでもよい。
【0028】
プロセス定義生成器140は、ロボットに別のコンピュータとやり取りすることによりプロセスを自動的に実行させるのに使用されるプロセス定義を生成してもよい。例えばプロセス定義生成器140は、ロボットが、まず、「はい」ボタンを中心とした第1スナップショットの中心に対応する画面の位置をタッチし、次に、「現在ステータスを判断」ボタンを中心とした第2スナップショットの中心に対応する画面の位置をタッチし、続いて、「Enter」キーを押下するべきであることを特に指示するプロセス定義を生成してもよい。プロセス定義に従ってロボットがどのようにプロセスを自動的に実行できるかのさらなる詳細は、
図2に関連して後述する。
【0029】
プロセス定義は、識別された1つ以上のアクティビティを指示し、識別されたアクティビティそれぞれについて、アクティビティに関連するアクティビティ情報を指示してもよい。例えば現在のシステムステータスのログエントリを生成するプロセスの場合、プロセス定義生成器140は、画面タッチアクティビティが、(i)「はい」ボタンがタッチされる前の「はい」ボタンを中心とした、画面タッチ前の画面の部分を示すスナップショットと、(ii)「はい」ボタンがタッチされた後のスクリーンショットとに関連することを指示するアクティビティ情報、およびマウスクリックアクティビティが、(i)画面の右上角でクリックされる「左」マウスボタンと、(ii)クリック直前にディスプレイに示されていた画面の右上角を中心とした画面の部分のスナップショットと、(iii)ボタンがクリックされた後にディスプレイに示された画面のスクリーンショットとに関連することを指示するアクティビティ情報、およびキー押下アクティビティが、(i)「Enter」キーが押下されることと、(ii)キー押下の直後のスクリーンショットとに関連することを指示するアクティビティ情報、を受信してもよい。プロセス定義は、識別された1つ以上のアクティビティのシーケンスを指示してもよい。例えばプロセス定義は、画面タッチが最初に実行され、次に別の画面タッチ、続いてキー押下が実行されることを指示してもよい。
【0030】
アクティビティ識別器120、アクティビティ情報生成器130、およびプロセス定義生成器140は、それぞれの機能性を様々なタイミングで実行してもよい。例えばアクティビティ識別器120は、画像捕捉器110から受信された画像を記憶し、プロセスが終了したとの知らせ受信するまで待ってからコンピュータビジョン技術を画像に適用してアクティビティを識別してもよく、次にアクティビティ情報生成器130は、すべてのアクティビティの指示を一度に受信してすべてのアクティビティのアクティビティ情報を生成してもよく、プロセス定義生成器140は、すべてのアイデンティティの指示およびすべてのアクティビティ情報の指示を一度に受信し、続いてプロセス定義を生成してもよい。別の例においてアクティビティ識別器120は、アクティビティ識別器120が各アクティビティを識別したときにそのアクティビティの指示をアクティビティ情報生成器130に提供してもよく、アクティビティ情報生成器130は、アクティビティの指示が受信されるにつれて各アクティビティのアクティビティ情報を生成してもよく、プロセス定義生成器140は、アクティビティ情報の指示が受信されるにつれてプロセス定義を追加生成してもよい。
【0031】
一部の実装では、システム100のプロセス定義が、識別されたアクティビティを表現するテキストと、アクティビティ情報に対応するテキストまたは画像とを含む、人間に読みやすいフォーマットの文書として出力されてもよい。一例によれば、例えばWordまたはVisio文書中の自然テキスト言語など、人間に読みやすいフォーマットのアクティビティ情報がスクリーンショットに重ねられまたは添付されてもよい。例えばボタンの上のマウスポインタを示すスクリーンショットが修正されて、例えばマウスの左のキーでのクリックを指示する「左クリック」など、スクリーンショットが撮られた瞬間に実行されたステップを表現する命令の書き込みをも含むようにされてもよい。一部の実装においてシステム100は、種々のプロセスに関する情報を自動的且つシームレスに収集してもよい。例えばシステム100により実行されるドキュメンテーション動作も、システム100がユーザ間のプロセスの矛盾または差を検出できるようにして、作成される最終的なドキュメンテーションがプロセス実行の最適な方法を確実に示すようにすることができる。
【0032】
一部の実装においてシステム100は、人がプロセス定義を修正できるようにしてもよい。例えばシステム100は、ユーザがプロセス定義により指示されるアクティビティおよび関連するアクティビティ情報を追加、削除、または修正するのに用いることができるグラフィカルユーザインターフェースを提供して、修正後のプロセス定義により定義されたプロセスを自動的に実行する際に後から使用するために、修正後のプロセス定義を記憶してもよい。
【0033】
一部の実装においてシステム100は、フィルタまたは複数フィルタのグループを使用してプロセス定義を修正してもよい。例えばシステム100は、フィルタを使用して、人間に読みやすいキーストローク表現を作成してもよく、例えば、「Caps Lock」キー、「A」キー、および「Caps Lock」キーを押下する、は代わりに「『A』の入力を追加」と表現することができる。別の例においてシステム100は、機密情報が再生中に明かされないように情報を隠すフィルタを使用できる。例えばシステム100は、パスワードの実際の文字の代わりにアスタリスクでパスワードを表示してもよい。
【0034】
システム100の種々の構成を使用することができ、画像捕捉器110、アクティビティ識別器120、アクティビティ情報生成器130、およびプロセス定義生成器140の機能性が組み合わされ、さらに分割され、分散され、または入れ替えられることが可能である。
【0035】
図2は、プロセスの自動化を自動的に実行する例示のシステム200のブロック図である。システム200は、コンピュータとやり取りするロボットを使用してプロセスを自動的に実行してもよい。簡潔に言うと、さらに詳しくは後述するとおり、システム200は、画像捕捉器210、アクティビティトリガエンジン220、アクティビティ実行エンジン230、およびロボット240を含んでもよい。
【0036】
画像捕捉器210は、ロボットがコンピュータとやり取りすることでプロセスを自動的に実行している間にコンピュータのディスプレイの画像を取得してもよい。例えば画像捕捉器210は、「はい」および「いいえ」ボタンを備えたユーザインターフェースを示すタッチスクリーンの第1画像を取得してもよい。別の例において画像捕捉器210は、ロボットによりタッチされるのに応答して「はい」ボタンが強調表示されているユーザインターフェースを示すタッチスクリーンの第2画像を取得してもよい。
【0037】
一部の実装において画像捕捉器210は、ディスプレイに示された画面の画像を捕捉するカメラであってもよい。他の実装では、画像捕捉器210は、コンピュータからコンピュータのディスプレイへのビデオ出力を監視するソフトウェアプロセスであってもよい。
【0038】
画像捕捉器210は、プロセス定義に従ってロボットにより自動的に実行されるべきプロセスをシステム200が識別すると画像を取得し始めてもよい。例えばユーザは、プロセス定義に従ってプロセスを自動的に実行するアプリケーションを開き、自動化プロセスのプロセス定義を選択し、自動化プロセスの実行をトリガする入力を提供してもよい。本例において画像捕捉器210は、自動化プロセスの実行をトリガする入力をユーザが提供すると画像を捕捉し始めて、自動化プロセスのプロセス定義により指示されたすべてのアクティビティが実行されたら画像の捕捉を終了してもよい。画像捕捉器110は、様々なタイミングで画像を取得してもよい。例えば画像捕捉器110は、例えば1ミリ秒、5ミリ秒、25ミリ秒、100ミリ秒毎など、所定の間隔で画像を取得してもよい。
【0039】
画像捕捉器210は、画像をアクティビティトリガエンジン220に提出してもよい。例えば画像捕捉器210は、「はい」および「いいえ」ボタンを備えたユーザインターフェースを示すタッチスクリーンの第1画像と、ロボットが「はい」ボタンをタッチするのに応答して「はい」ボタンが強調表示されているユーザインターフェースを示すタッチスクリーンの第2画像とを提供してもよい。
【0040】
アクティビティトリガエンジン220は、画像およびプロセス定義を受信して、いつアクティビティをトリガするかを決定してもよい。例えばアクティビティトリガエンジン220は、「はい」およい「いいえ」ボタンを備えたユーザインターフェースを示すタッチスクリーンの画像を受信し、第1アクティビティが画面タッチであることを指示するプロセス定義であって、ユーザが手動で「はい」ボタンにタッチした直前に表示されていた「はい」ボタンを中心とした画面のスナップショット、例えば「スナップショットX」を含む関連するアクティビティ情報を指示するプロセス定義を受信して、それに応答して「はい」ボタンの画面タッチをトリガすることを決定してもよい。
【0041】
アクティビティトリガエンジン220は、プロセス定義に従った順序でアクティビティをトリガしてもよい。例えばアクティビティトリガエンジン220は、まず、第1アクティビティのスナップショットXに一致する部分に関して画像を分析して、次に、第1アクティビティが完了した後、第2アクティビティのスナップショットYに一致する部分に関して画像を分析してもよい。アクティビティトリガエンジン220は、アクティビティをトリガする条件が満たされたときにアクティビティをトリガしてもよい。条件とは例えば、ディスプレイの画像の或る部分がアクティビティに関連するスナップショットに一致するとき、または前のアクティビティが完了したことであってもよい。
【0042】
アクティビティトリガエンジン220は、アクティビティ実行エンジン230にトリガを提供してもよい。例えばアクティビティトリガエンジン220は、画面タッチが実行されるべきであること、キー押下が実行されるべきであること、マウスクリックが実行されるべきであること、またはシーン変化が予想されることを知らせるトリガを提供してもよい。
【0043】
アクティビティ実行エンジン230は、アクティビティを実行してもよい。例えばアクティビティ実行エンジン230は、仮想ロボットであるロボット240に、例えばコンピュータのマウスドライバを介して、マウスカーソルの「はい」ボタンの上への移動、および「左」ボタンの「はい」ボタンの上でのクリックを仮想エミュレートせよとの命令を提供してもよい。さらに別の例では、アクティビティ実行エンジン230は、例えばコンピュータのキーボードドライバを介して、「Enter」キーの押下を仮想エミュレートせよと仮想ロボットに命令してもよい。別の例においてアクティビティ実行エンジン230は、物理的ロボットであるロボット240に、ロボットのアームを動かしてディスプレイに示された「はい」ボタンをタッチせよとの命令を提供してもよい。別の例においてアクティビティ実行エンジン230は、次のアクティビティにはシーン変化が完了するのを待ってから進むことを決定してもよい。さらに別の例においてアクティビティ実行エンジン230は、ディスプレイに示された特定のボタンの上にカーソルがくるようにマウスを動かし、次にマウスの「左」ボタンをクリックせよとの命令をロボット240に提供してもよい。
【0044】
アクティビティ実行エンジン230は、ロボット240とディスプレイに示されているものとの関係の視覚的判断に基づいてロボット240に対する命令を生成してもよい。一部の実装では、アクティビティ実行エンジン230は、アクティビティを実行する際、画像捕捉器210からの画像を使用してもよい。例えばアクティビティ実行エンジン230は、「はい」ボタンをタッチせよとの命令をロボット240に提供するために、物理的画面タッチ部品を求めて画像に物体認識を適用するのに基づきロボット240の物理的画面タッチ部品の位置を判断し、さらにディスプレイの「はい」ボタンの位置を判断して、物理的画面タッチ部品に画像の中の「はい」ボタンをタッチさせることになるロボット240の物理的画面タッチ部品の動きを判断して、判断された動きに対応するロボット240に対する動きの命令を生成して、その動きの命令をロボット240に提供してもよい。
【0045】
別の例においてアクティビティ実行エンジン230は、「Enter」キーを押下することを決定し、それに応答して、ロボット240のキー押下部品の現在位置およびキーボードの「Enter」キーの現在位置を示す画像を分析し、画像で物体認識を使用してロボット240のキー押下部品の現在位置を判断し、キーボードの「Enter」キーの現在位置を判断し、ロボット240のキー押下部品に「Enter」キーを押下させることになるロボット240のキー押下部品の動きを判断し、判断された動きに対応するロボット240に対する動きの命令を生成し、その動きの命令をロボット240に提供してもよい。
【0046】
さらに別の例においてアクティビティ実行エンジン230は、ディスプレイに示された「はい」ボタンの上でマウスボタンを左クリックすることを決定し、それに応答して、ロボット240がマウスを握っていると画像から判断し、ディスプレイ上のマウスカーソルの位置を画像から判断し、ディスプレイに示された「はい」ボタンの位置を画像から判断し、ディスプレイに示されたマウスカーソルと「はい」ボタンとの距離に基づいてマウスを動かす量を求め、求めた量だけロボット240がマウスカーソルを動かすための動きの命令を生成して、その命令をロボット240に提供してもよい。
【0047】
一部の実装では、アクティビティ実行エンジン230は、ロボット240に対する命令を生成する際、ロボット240を識別して、ロボットの動きの能力を判断して、ロボットの動きの能力およびロボット240とコンピュータの入力デバイスとの間の閉じるべき相対距離に基づきロボット240がすべき動きを判断し、ロボット240に分かる動きの命令のフォーマットを判断し、判断されたロボット240の動きに基づいて判断されたフォーマットで動きの命令を生成してもよい。
【0048】
アクティビティ実行エンジン230は、プロセス定義に基づいてアクティビティを実行してもよい。例えば画面タッチアクティビティのプロセス定義は、「はい」ボタンを中心とする領域のスナップショットと、「はい」ボタンがクリックされた後の画面を示すスクリーンショットとを含んでもよい。したがって、プロセス定義に従って画面タッチアクティビティを実行する際、アクティビティ実行エンジン230は、ディスプレイのどこに「はい」ボタンが示されているかを判断し、「はい」ボタンをタッチせよとの1つ以上の命令をロボット240に提供し、次に、ディスプレイに示された画面がプロセス定義により指示されたスクリーンショットと一致するかどうかを判断してもよい。画面が一致しなければ、アクティビティ実行エンジン230は、管理者に通知を提供してもよいし、またはロボット240に再度命令を送信してもよい。画面が一致すれば、次にアクティビティ実行エンジン230は、アクティビティトリガエンジン220が、実行されたばかりのアクティビティの後続アクティビティとしてプロセス定義により指示されたアクティビティをトリガする条件が満たされたかどうかの判断を始めてよいとの知らせを、アクティビティトリガエンジン220に提供してもよい。
【0049】
別の例では、アクティビティ実行エンジン230は、プロセス定義に基づきシーン変化が予想されると判断してもよく、それに応答して、シーン変化に該当する所定量、例えば30%、40%、75%、90%、またはその他何らかのパーセンテージ、ディスプレイに示された画面がアクティビティのトリガ前の画面の画像から変化したかどうかを判断してもよい。シーン変化が発生していなければ、アクティビティ実行エンジン230は、ロボットに対する命令を繰り返してもよいし、通知を管理者に提供してもよい。
【0050】
一部の実装においてアクティビティ実行エンジン230はさらに、記憶された座標とスナップショットとの組み合わせに基づいてアクティビティを実行していてもよい。例えばプロセス定義は、画面の中心に対応する座標でのマウスクリックと、「はい」ボタンを中心とするスナップショットとを指示してもよいが、アクティビティ実行エンジン230は、スナップショットの中心が現在表示されている画面の中心から50画素左寄りの座標に対応すると判断してもよい。それに応答してアクティビティ実行エンジン230は、例えば座標を平均して画面の中心から25画素左寄りの座標をクリックすることを決定するなど、座標を修正してもよい。一部の実装では、アクティビティ実行エンジン230は、最初は、記憶されている座標を考慮せずディスプレイに示された画面に従った座標を使用してもよく、アクティビティが上述のように無事に完了しなければ、例えば平均された座標などの修正された座標を使用してもよく、それでもアクティビティが完了されなければ、記憶されている座標を使用してもよく、それでもアクティビティが完了しなければ、管理者に通知を提供してもよい。
【0051】
図3は、手動プロセスを自動化する例示のプロセス300のフローチャートである。以下では、
図1および2を参照して記載したシステム100および200のコンポーネントにより実行されるものとしての処理300を記載する。なお、プロセス300は他のシステムまたはシステム構成により実行されてもよい。
【0052】
プロセス300は、手動で実行されるプロセスを識別することを含んでもよい(310)。プロセスは、コンピュータとやり取りするユーザにより手動で実行されるものであってもよく、コンピュータとやり取りするよう構成されたロボットにより実行されるよう自動化されるべきものである。例えば手動で実行されるプロセスは、ウェブフォームの提出に応答してテンプレート電子メールを生成することであってもよい。プロセスの識別にあたり、ユーザは、ユーザが特定の手動プロセスを自動化したいこと、およびユーザがその特定の手動プロセスを実行し始めることを知らせるユーザ入力を提供してもよい。
【0053】
プロセス300は、ディスプレイの撮られた画像1つ以上を取得することを含んでもよい(320)。画像は、ユーザがプロセスを手動実行する際にコンピュータとやり取りしている間に撮られてもよい。例えば画像捕捉器110は、ロボットにより自動化されるべき手動プロセスをユーザが始めるとの知らせを受信して、それに応答して、5ミリ秒、10ミリ秒、25ミリ秒、100ミリ秒毎に、またはその他何らかの間隔でコンピュータのディスプレイの画像を捕捉し始めてもよい。画像は、「新規電子メール」ボタンの上のマウスカーソルを示す第1画像と、左マウスクリックに応答して違う色で強調表示された「新規電子メール」ボタンを示す第2画像と、開いた「新規電子メール」ウィンドウを示す第3画像とを含んでもよい。
【0054】
プロセス300は、画像から、プロセスに関連する1つ以上のアクティビティを識別することを含んでもよい(330)。アクティビティは、1つ以上のコンピュータビジョン技術を画像に適用することにより識別されてもよい。例えばアクティビティ識別器120は、「新規電子メール」ボタンの上のマウスカーソルを示す第1画像と、次の強調表示された「新規電子メール」ボタンを示す第2画像とが、「新規電子メール」ボタンに対して「左」クリックが発生したことを意味すると判断して、それに応答してマウスクリックのアクティビティを識別してもよい。
【0055】
プロセス300は、アクティビティに関連するアクティビティ情報を生成することを含んでもよい(340)。例えばアクティビティ情報生成器130は、マウスクリックのアクティビティの指示および画像を受信し、それに応答して、マウスクリックが発生した座標と、「新規電子メール」ボタンがクリックされる前の「新規電子メール」ボタン周囲の30掛ける30画素の領域のスナップショットと、「新規電子メール」ボタンがクリックされた後のスクリーンショットとを含むアクティビティ情報を生成してもよい。
【0056】
プロセス300は、ロボットにプロセスを自動的に実行させるのに使用するプロセス定義を生成することを含んでもよい(350)。プロセス定義は、識別された1つ以上のアクティビティを指示し、識別されたアクティビティそれぞれについて、アクティビティに関連するアクティビティ情報を指示してもよい。例えばプロセス定義生成器140は、ウェブフォーム提出に応答してテンプレート電子メールを生成するプロセスが、「新規電子メール」ボタンを「左」マウスクリックする第1アクティビティであって、(i)画面の上部中央の座標、(ii)ボタンがクリックされる前の「新規電子メール」ボタンのスナップショット、および(iii)ボタンがクリック後に強調表示されるのを示す「新規電子メール」ボタンのボタンのスクリーンショットに関連する第1アクティビティと、シーン変化の第2アクティビティであって、(i)「新規電子メール」ウィンドウが開く前でありシーン変化が始まる前のスクリーンショット、および(ii)「新規電子メール」ウィンドウが開いたときにシーン変化が終わった後のスクリーンショットに関連する第2アクティビティと、他のさらなるアクティビティであって、例えばウェブフォーム提出のログを開く、ウェブフォーム提出の件名をコピーする、新規電子メールウィンドウの件名欄を選択すること、およびウェブ提出のコピーした件名を件名欄に貼り付けることなどの、他のさらなるアクティビティと、を含むことを指示する情報を、XML、HTML、C#、XAML、またはその他何らかの他のフォーマットで生成してもよい。
【0057】
プロセス300は、プロセス定義を記憶して、後からプロセス定義にアクセスしてプロセス定義により指示されるアクティビティおよびアクティビティ情報に基づいてコンピュータとやり取りするようロボットに自動的に命令することを含んでもよい。例えばユーザは、ウェブフォーム提出に応答してテンプレート電子メールを生成するプロセスをロボットが自動的に実行することをリクエストしてもよく、それに応答して画像捕捉器210が、コンピュータのディスプレイの画像を取得し始めてもよく、アクティビティトリガエンジン220が、プロセス定義により指示された「新規電子メール」ボタンを「左」クリックする第1アクティビティに関連するスナップショットに一致する部分を画像が含むときを判断してもよく、アクティビティ実行エンジンが、物理的なロボットアームを動かしてマウスカーソルが「新規電子メール」ボタンの上にくるまでマウスを動かし「左」ボタンをクリックするようロボット240に命令してもよい。
【0058】
プロセス定義は、人間であってもコンピュータであってもよいデベロッパーまたはビジネスアナリストによって、例えば、同じプロセスに対して異なるマシンまたはユーザにより複数のプロセス定義が生成された結果生じた複数のプロセス定義の中から特定プロセスの最適化プロセス定義を選ぶために検査されてもよい。例えば機械学習などの技術を使用して、異なるプロセス定義が類似性を求めて検査され、類似した手順が認識されて分類系統にグループ化されてもよい。選択が行われると、そのプロセスを自動的に実行するために選択済みプロセス定義を使用できる。
【0059】
図4は、例示的な汎用コンピュータシステムの概略図を示す。システム400は、一部の実装により、プロセス300に関連して記載された動作のために使用可能である。システム400は、システム100に含まれてもよい。
【0060】
システム400は、プロセッサ410、メモリ420、ストレージデバイス430、および入出力デバイス440を含む。コンポーネント410、420、430、および440はそれぞれ、システムバス450を使用して相互接続されている。プロセッサ410は、システム400内で実行される命令を処理できる。一実装においてプロセッサ410は、シングルスレッドプロセッサである。別の実装においてプロセッサ410は、マルチスレッドプロセッサである。プロセッサ410は、メモリ420内またはストレージデバイス430上に記憶された命令を処理して、入出力デバイス440にユーザインターフェースのグラフィック情報を表示できる。
【0061】
メモリ420は、情報をシステム400内で記憶する。一実装においてメモリ420は、コンピュータ可読媒体である。一実装においてメモリ420は、揮発性メモリユニットである。別の実装においてメモリ420は、不揮発性メモリユニットである。
【0062】
ストレージデバイス430は、システム400の大容量ストレージを提供できる。一実装においてストレージデバイス430は、コンピュータ可読媒体である。様々な異なる実装においてストレージデバイス430は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイスとされ得る。
【0063】
入出力デバイス440は、システム400の入出力動作を提供する。一実装において入出力デバイス440は、キーボードおよび/またはポインティングデバイスを含む。別の実装において入出力デバイス440は、グラフィカルユーザインターフェースを表示するディスプレイユニットを含む。
【0064】
本明細書に記載された本主題の実施形態、機能動作およびプロセスは、デジタル電子回路、または有形に具現化されたコンピュータソフトウェアもしくはファームウェア、または本明細書で開示された構造およびその構造上の等価物を含むコンピュータハードウェア、またはそれらのうちの1つ以上の組み合わせにおいて実装できる。本明細書に記載された主題の実施形態は、1つ以上のコンピュータプログラム、すなわちデータ処理装置により実行されるよう、またはデータ処理装置の動作を制御するよう、有形の不揮発性プログラム保持体上にコードされたコンピュータプログラム命令の1つ以上のモジュールなどとして実装できる。あるいは、またはさらに、プログラム命令は、例えば機械により生成された電気、光、または電磁信号などの人工的に生成された伝播信号上にコードでき、該信号は、データ処理装置による実行のために適切な受信器装置に送信するべく情報をコードするために生成される。コンピュータストレージ媒体は、機械可読ストレージデバイス、機械可読ストレージ基板、ランダムもしくは順次アクセスメモリデバイス、またはそれらのうちの1つ以上の組み合わせとすることができる。
【0065】
「データ処理装置」という用語は、データを処理するすべての種類の装置、デバイス、および機械を包含し、例として、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む。装置は、例えばFPGA(field programmable gate array:フィールドプログラマブルゲートアレイ)またはASIC(application specific integrated circuit:特定用途向け集積回路)などの専用論理回路を含むことができる。この装置は、ハードウェアに加えて、対象のコンピュータプログラムの実行環境を作り出すコード、例えばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つ以上の組み合わせを構成するコードなどを含むことができる。
【0066】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼称または記載されることもある)は、コンパイル型もしくはインタープリタ型言語、または宣言型もしくは手続き型言語を含む任意の形態のプログラミング言語で書くことができ、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、あるいはコンピューティング環境用に適した他の単位としてなど、任意の形態で展開できる。コンピュータプログラムは、ファイルシステム内のファイルに対応することもあるが、必須ではない。プログラムは、他のプログラムまたはデータを保持するファイルの一部(例えばマークアップ言語文書に格納される1つ以上のスクリプト)、対象のプログラム専用の単一ファイル、あるいは複数の連携ファイル(例えば1つ以上のモジュール、サブプログラム、またはコードの一部を格納する複数ファイル)に格納可能である。コンピュータプログラムは、1つのコンピュータ上、または1つの場所に位置するか、もしくは複数の場所に分散し通信ネットワークにより相互接続された複数のコンピュータ上で実行されるよう展開可能である。
【0067】
本明細書に記載されたプロセスおよび論理フローは、入力データに作用し出力を生成することにより機能を実行する1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルコンピュータにより実行できる。プロセスおよび論理フローはさらに、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路により実行可能であり、装置はさらに、該専用論理回路として実装可能である。
【0068】
コンピュータプログラムを実行するのに適したコンピュータは、例として、汎用または専用マイクロプロセッサまたはその両方、あるいはその他任意の種類の中央処理ユニットに基づくことができる。一般に、中央処理ユニットは、読み取り専用メモリまたはランダムアクセスメモリまたは両方から命令およびデータを受信する。コンピュータの必須要素は、命令を実施または実行する中央処理ユニット、ならびに命令およびデータを記憶する1つ以上のメモリデバイスである。一般に、コンピュータはさらに、例えば磁気、光磁気ディスク、もしくは光ディスクなど、データを記憶する1つ以上の大容量ストレージデバイスを含むか、またはそれからデータを受け取りもしくはそれにデータを転送するよう動作可能に結合されるか、またはその両方である。なお、コンピュータはそのようなデバイスを有しなくてもよい。さらにコンピュータは、ごく少数の例を挙げると、例えばモバイル電話、携帯情報端末(PDA:personal digital assistant)、モバイルオーディオまたはビデオプレーヤ、ゲーム機、衛星航法システム(GPS:Global Positioning System)受信器、あるいはポータブルストレージデバイス(例えばユニバーサルシリアルバス(USB:universal serial bus)フラッシュドライブ)など、別のデバイスに組み込むことができる。
【0069】
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、あらゆる形式の不揮発性メモリ、媒体およびメモリデバイスを含み、例として、例えばEPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、例えば内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクなどが含まれる。プロセッサおよびメモリは、専用論理回路により補完されること、またはそれに組み込まれることが可能である。
【0070】
ユーザとのやり取りを提供するために、本明細書に記載されている主題の実施形態は、ユーザに情報を表示するための、例えばCRT(cathode ray tube:陰極線管)またはLCD(liquid crystal display:液晶ディスプレイ)モニタなどのディスプレイデバイス、ならびにユーザが入力をコンピュータに提供することができるキーボードおよび、例えばマウス、またはトラックボールなどのポインティングデバイスを有するコンピュータ上に実装できる。他の種類のデバイスを、同じくユーザとのやり取りを提供するために使用できる。例えば、ユーザに提供されるフィードバックは、例えば視覚フィードバック、聴覚フィードバック、または触覚フィードバックなど、任意の形式の感覚フィードバックとすることができ、ユーザからの入力は、音響、スピーチ、または触覚入力を含め、任意の形式で受信可能である。さらにコンピュータは、例えばユーザのクライアントデバイス上のウェブブラウザから受信されたリクエストに応答してウェブページをウェブブラウザへ送信するなど、ユーザにより使用されるデバイスに文書を送信し該デバイスから文書を受信することで、ユーザとやり取りできる。
【0071】
本明細書に記載されている主題の実施形態は、例えばデータサーバとしてなど、バックエンドコンポーネントを含むコンピューティングシステム、または、例えばアプリケーションサーバなど、ミドルウェアコンポーネントを含むコンピューティングシステム、または、本明細書に記載されている主題の実装とユーザがやり取りできるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータなど、フロントエンドコンポーネントを含むコンピューティングシステム、またはそのようなバックエンド、ミドルウェア、もしくはフロントエンドコンポーネントのうちの1つ以上の任意の組み合わせにおいて実装できる。システムのコンポーネントは、例えば通信ネットワークなど、任意の形態または媒体のデジタルデータ通信により相互接続可能である。通信ネットワークの例は、ローカルエリアネットワーク(「LAN(local area network)」)、および例えばインターネットなどの広域ネットワーク(「WAN(wide area network)」)を含む。
【0072】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般に、互いに遠隔にあり、典型的には通信ネットワークを介してやり取りする。クライアントおよびサーバの関係は、各コンピュータ上で実行され互いにクライアントサーバ関係を有するコンピュータプログラムにより生じる。
【0073】
本明細書は多数の具体的な実装の詳細を含むが、これらは、特許請求の範囲に対する制限として解釈されるべきではなく、むしろ特定の実施形態に特有であり得る特徴の記載として解釈されるべきである。別々の実施形態との関連で本明細書に記載されている特定の特徴は、単一の実施形態に組み合わせて実装されることも可能である。逆に、単一の実施形態との関連で記載されている様々な特徴が、複数の実施形態で別々に、または任意の適切な一部組み合わせで実装されることも可能である。さらに各特徴は、特定の組み合わせで動作するよう上述されていることもあり、当初そのように請求されていることもあるが、場合によっては、請求されている組み合わせからの1つ以上の特徴が、その組み合わせから削除されることが可能であり、請求されている組み合わせは、一部組み合わせまたは一部組み合わせの変形を対象とし得る。
【0074】
同じく、各動作は図面に特定の順序で示されているが、これは、望ましい結果を達成するために当該の動作が、示されている特定の順序もしくは順番で実行されること、または示されているすべての動作が実行されることを要求するものと理解されてはならない。特定の状況では、マルチタスクおよび並列処理が有利なこともある。さらに、上述の実施形態における様々なシステムコンポーネントの分離は、すべての実施形態においてそのような分離を要求するものと理解されてはならず、当然のことながら、記載されているプログラムコンポーネントおよびシステムは、一般に、単一ソフトウェア製品に統合されること、または複数のソフトウェア製品にパッケージ化されることが可能である。
【0075】
本主題の特定の実施形態が記載された。他の実施形態は、添付の特許請求の範囲に記載の範囲内にある。例えば、特許請求の範囲に列挙された動作は異なる順序で実行でき、それでも所望の結果を達成し得る。一例として、添付の図面に示したプロセスは、所望の結果を達成するために、必ずしも示された特定の順序または順番を要求するものではない。特定の実装では、マルチタスクおよび並列処理が有利なこともある。他のステップが設けられてもよいし、記載されたプロセスからステップが省かれてもよい。したがって、他の実装が添付の特許請求の範囲に記載の範囲内にある。
【0076】
以下の項目は本発明を理解するのに有用である。
【0077】
1.ディスプレイに示された画像または画像ストリームに関する情報を獲得し、
ディスプレイ上のアクティビティを検出するために画像または画像ストリームに関する情報を分析し、
ディスプレイ上の検出されたアクティビティについてのアクティビティ情報を記録し、
画像または画像ストリームに関する情報とアクティビティ情報との組み合わせを備えた出力データを生成する、
ように構成された、メモリおよびプロセッサを備えたコンピュータシステム。
【0078】
2.出力データは、画像または画像ストリームに関する情報とアクティビティ情報との組み合わせが、具体的には自然テキスト言語を含む人間に読みやすいフォーマットの重ねられ且つ/または添付されたアクティビティ情報を有する少なくとも1つの画像または画像シーケンスを備えるように生成される、項目1に記載のコンピュータシステム。
【0079】
3.ディスプレイをさらに備える、先行する項目のいずれか1つに記載のコンピュータシステム。
【0080】
4.ディスプレイ上のアクティビティは、
プロセスの変化と、
シーン変化と、
ユーザ入力と
のうちの少なくとも1つを備え、ユーザ入力は具体的には、アクションを実行するためにタイプすることまたはポインティングデバイスのポインタを使用することのうちの少なくとも1つを含む、
先行する項目のいずれか1つに記載のコンピュータシステム。
【0081】
5.プロセッサは、
出力データを読み取り、
出力データに基づいてディスプレイ上のアクティビティを再現する
ようさらに構成される、先行する項目のいずれかに記載のコンピュータシステム。
【0082】
6.プロセッサは、画像照合に出力データを使用するようさらに構成される、項目5に記載のコンピュータシステム。
【0083】
7.プロセッサは、出力データから情報を抽出するために光学式文字認識を使用するようさらに構成される、項目5または6に記載のコンピュータシステム。
【0084】
8.コンピュータに実装された方法であって、
ディスプレイに示された画像または画像ストリームに関する情報を獲得するステップと、
ディスプレイ上のアクティビティを検出するために画像または画像ストリームに関する情報を分析するステップと、
ディスプレイ上の検出されたアクティビティについてのアクティビティ情報を記録するステップと、
画像または画像ストリームに関する情報とアクティビティ情報との組み合わせを備えた出力データを生成するステップと、
を含む、コンピュータに実装された方法。
【0085】
9.出力データを生成するステップにおいて、画像または画像ストリームに関する情報とアクティビティ情報との組み合わせは、人間に読みやすいフォーマットの重ねられ且つ/または添付されたアクティビティ情報を有する少なくとも1つの画像または画像シーケンスを備える、項目8に記載のコンピュータに実装された方法。
【0086】
10.人間に読みやすいフォーマットは、自然テキスト言語を含む、項目9に記載のコンピュータに実装された方法。
【0087】
11.ディスプレイ上のアクティビティは、
プロセスの変化と、
シーン変化と、
ユーザ入力と
のうちの少なくとも1つを含み、ユーザ入力は具体的には、アクションを実行するためにタイプすることまたはポインティングデバイスのポインタを使用することのうちの少なくとも1つを含む、
先行する項目のいずれかに記載のコンピュータに実装された方法。
【0088】
12.出力データを読み取るステップと、
出力データに基づいてディスプレイ上のアクティビティを再現するステップと、
をさらに含む、先行する項目のいずれかに記載のコンピュータに実装された方法。
【0089】
13.画像照合のために出力データを使用するステップをさらに含む、項目12に記載のコンピュータに実装された方法。
【0090】
14.出力データから情報を抽出するために光学式文字認識を使用するステップをさらに含む、項目12または13に記載のコンピュータに実装された方法。
【0091】
15.適切なシステム上にロードされて実行されると、項目8~14のいずれか1つに記載の方法のステップを実行するコンピュータ可読命令を備えたコンピュータプログラム製品。