IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ブルー プリズム リミテッドの特許一覧

特許7540003RPAロボットを訓練する方法、装置、コンピュータプログラム、コンピュータ可読媒体
<>
  • 特許-RPAロボットを訓練する方法、装置、コンピュータプログラム、コンピュータ可読媒体 図1
  • 特許-RPAロボットを訓練する方法、装置、コンピュータプログラム、コンピュータ可読媒体 図2
  • 特許-RPAロボットを訓練する方法、装置、コンピュータプログラム、コンピュータ可読媒体 図3a
  • 特許-RPAロボットを訓練する方法、装置、コンピュータプログラム、コンピュータ可読媒体 図3b
  • 特許-RPAロボットを訓練する方法、装置、コンピュータプログラム、コンピュータ可読媒体 図4
  • 特許-RPAロボットを訓練する方法、装置、コンピュータプログラム、コンピュータ可読媒体 図5
  • 特許-RPAロボットを訓練する方法、装置、コンピュータプログラム、コンピュータ可読媒体 図6
  • 特許-RPAロボットを訓練する方法、装置、コンピュータプログラム、コンピュータ可読媒体 図7
  • 特許-RPAロボットを訓練する方法、装置、コンピュータプログラム、コンピュータ可読媒体 図8
  • 特許-RPAロボットを訓練する方法、装置、コンピュータプログラム、コンピュータ可読媒体 図9a
  • 特許-RPAロボットを訓練する方法、装置、コンピュータプログラム、コンピュータ可読媒体 図9b
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-16
(45)【発行日】2024-08-26
(54)【発明の名称】RPAロボットを訓練する方法、装置、コンピュータプログラム、コンピュータ可読媒体
(51)【国際特許分類】
   G05B 19/042 20060101AFI20240819BHJP
   G06F 3/0481 20220101ALI20240819BHJP
   G06F 11/34 20060101ALI20240819BHJP
   B25J 9/22 20060101ALI20240819BHJP
【FI】
G05B19/042
G06F3/0481
G06F11/34 176
B25J9/22 A
【請求項の数】 27
(21)【出願番号】P 2022566618
(86)(22)【出願日】2020-05-01
(65)【公表番号】
(43)【公表日】2023-07-11
(86)【国際出願番号】 EP2020062199
(87)【国際公開番号】W WO2021219234
(87)【国際公開日】2021-11-04
【審査請求日】2023-04-10
(73)【特許権者】
【識別番号】516005083
【氏名又は名称】ブルー プリズム リミテッド
(74)【代理人】
【識別番号】110002572
【氏名又は名称】弁理士法人平木国際特許事務所
(72)【発明者】
【氏名】カリ,ジャック
(72)【発明者】
【氏名】ドゥバ,クリシュナ
(72)【発明者】
【氏名】カー,ベン
(72)【発明者】
【氏名】ククルル,ギエム
(72)【発明者】
【氏名】アクタス,ウミト ルセン
【審査官】影山 直洋
(56)【参考文献】
【文献】特表2018-535459(JP,A)
【文献】特開2019-168945(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/042
G06F 3/0481
G06F 11/34
B25J 9/22
(57)【特許請求の範囲】
【請求項1】
GUIを使用するためにRPAロボットを訓練する方法であって、
オペレータが前記GUIを使用してプロセスを実施すると前記GUIのビデオをキャプチャするステップ;
前記オペレータが前記プロセスを実行するために前記GUIを使用するときにトリガされる一連のイベントをキャプチャするステップ;
前記ビデオおよび前記一連のイベントを分析することにより、RPAロボットによって実行されたとき前記GUIを使用して前記プロセスを前記RPAロボットに実行させるワークフローを生成するステップ;
を有し、
前記分析することは、
前記ビデオから前記GUIの1つ以上の対話型要素を識別するステップ;
前記対話型要素のうちの少なくとも1つに対応するものとして、前記イベントのシーケンス内の前記イベントのうちの少なくとも1つをマッチングするステップ;
を有し、
前記1つ以上の対話型要素のうち所与の対話型要素を識別することは、
前記所与の対話型要素について前記GUI内の1つ以上のアンカー要素を識別するステップ、
前記1つ以上のアンカー要素を前記所与の対話型要素と関連付けるステップ、
を含む、
方法。
【請求項2】
前記1つ以上のアンカー要素のうち所与のアンカー要素は、予想される同時発生GUI要素に基づいて、前記所与の対話型要素について識別される、
請求項1記載の方法。
【請求項3】
前記1つ以上のアンカー要素のうち所与のアンカー要素は、前記所与のアンカー要素から前記所与の対話型要素に対する近接度に基づいて、前記所与の対話型要素について識別される、
請求項1または2記載の方法。
【請求項4】
前記1つ以上のアンカー要素のうち所与のアンカー要素は、前記所与のアンカー要素のタイプおよび前記所与の対話型要素のタイプに基づいて、前記所与の対話型要素について識別される、
請求項1から3のいずれか1項記載の方法。
【請求項5】
前記1つ以上のアンカー要素のうち所与のアンカー要素は、
k-最近傍アプローチを用いて、前記所与の対話型要素に最も近い所定数のGUI要素を前記1つ以上のアンカー要素として識別するステップ、および/または、
前記所与の対話型要素から見て1つ以上の所定方向にある最も近い所定数のGUI要素を前記1つ以上のアンカー要素として識別するステップ、および/または、
前記所与の対話型要素から所定領域内の全てのGUI要素を前記1つ以上のアンカー要素として識別するステップ、
に基づいて、前記所与の対話型要素について識別される、
請求項1記載の方法。
【請求項6】
前記1つ以上のアンカー要素それぞれは、重みを有する
請求項1から5のいずれか1項記載の方法。
【請求項7】
前記1つ以上の対話型要素を識別するステップは、トレーニングされた機械学習アルゴリズムを前記ビデオの少なくとも一部に対して適用することによって実行される、請求項記載の方法。
【請求項8】
前記1つ以上の対話型要素を識別するステップは、前記所与の対話型要素に対する前記GUI内の前記1つ以上のアンカー要素の位置を識別することを含む、請求項1からのいずれか1項記載の方法。
【請求項9】
1つ以上の所定の特徴値に基づいて前記1つ以上のアンカー要素を識別するために機械学習アルゴリズムが使用される、請求項記載の方法。
【請求項10】
前記特徴値は、前記機械学習アルゴリズムのトレーニングを介して決定される、請求項記載の方法。
【請求項11】
前記特徴値は、
第1GUI要素と第2GUI要素との間の距離;
第1GUI要素の第2GUI要素に対する向き;
第1GUI要素が第2GUI要素と同じアプリケーションウィンドウ内にあるかどうか;
のうちいずれか1つ以上を含む、請求項または10記載の方法。
【請求項12】
前記イベントのシーケンスは、
キープレスイベント;
ホバリングイベント;
クリックイベント;
ドラッグイベント;
ジェスチャイベント;
のうちいずれか1つまたは複数を含む、請求項1から11のいずれか1項記載の方法。
【請求項13】
前記方法はさらに、前記ビデオに基づいて、前記イベントのシーケンス中の1つ以上の推定されたイベントを含めるステップを有する、請求項1から12のいずれか1項記載の方法。
【請求項14】
ホバリングイベントは、前記GUIにおいて可視になる1つ以上のインターフェース要素に基づいて推測される、請求項12記載の方法。
【請求項15】
前記分析することは、前記プロセスのサブプロセスのシーケンスを識別するステップを有する、請求項1から1のいずれか1項記載の方法。
【請求項16】
前記シーケンスのサブプロセスのうちの1つのプロセス出力が、前記シーケンスの別のサブプロセスへのプロセス入力として前記RPAロボットによって使用される、請求項1記載の方法。
【請求項17】
前記方法はさらに、前記生成されたワークフローを編集して、別サブプロセスに対応する以前に生成されたワークフローの一部分を含めることにより、前記編集されたワークフローがRPAロボットによって実行されると、前記RPAロボットに、前記GUIを使用して前記プロセスのバージョンを実行させるステップを有し、前記プロセスのバージョンは前記別サブプロセスを含む、請求項1または請求項1記載の方法。
【請求項18】
前記プロセスのバージョンが、前記プロセスの既存のサブプロセスの代わりに前記別サブプロセスを含む、請求項1記載の方法。
【請求項19】
前記ビデオおよび/または前記イベントのシーケンスは、リモートデスクトップシステムを使用してキャプチャされる、請求項1から1のいずれか1項記載の方法。
【請求項20】
請求項1に記載の方法によって訓練されたRPAロボットを使用して、GUIを使用してプロセスを実行する方法。
【請求項21】
前記RPAロボットが、ワークフローにおいて指定されたそれぞれのアンカー要素に基づいて、前記GUI内の1つ以上の対話型要素を再識別する、請求項20記載の方法。
【請求項22】
機械学習アルゴリズムを使用して、1つ以上の所定の特徴値に基づいて前記1つ以上の対話型要素を再識別する、請求項21記載の方法。
【請求項23】
前記特徴値は、前記機械学習アルゴリズムのトレーニングを介して決定される、請求項22記載の方法。
【請求項24】
前記特徴値は、
第1GUI要素と第2GUI要素との間の距離;
第1GUI要素の第2GUI要素に対する向き;
第1GUI要素が第2GUI要素と同じアプリケーションウィンドウ内にあるかどうか;
のうちいずれか1つ以上である、請求項22または23記載の方法。
【請求項25】
請求項1から2のいずれか1項記載の方法を実行するように構成された装置。
【請求項26】
プロセッサによって実行されると、前記プロセッサに、請求項1から2のいずれか1項記載の方法を実行させるコンピュータプログラム。
【請求項27】
請求項2記載のコンピュータプログラムを記録したコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットによるプロセス自動化のためのシステムおよび方法に関し、特に、ロボットによるプロセス自動化のロボットの自動トレーニングに関する。
【背景技術】
【0002】
人間が誘導するコンピュータプロセスは、多くの技術および努力の分野にわたって至る所に存在する。現代のグラフィカルユーザインターフェース(GUI)は、人間のオペレータがコンピュータシステムを使用して、しばしば複雑なデータ処理および/またはシステム制御タスクを実行することを可能にすることにおいて、非常に貴重であることが証明されている。しかし、GUIは多くの場合、人間のオペレータが新しいタスクの実行にすぐに慣れることを可能にするが、GUIはタスクの任意のさらなる自動化に対する高い壁がある。
【0003】
従来のワークフロー自動化は、通常はGUIを使用してオペレータによって実行されるタスクを取得し、それらを自動化することにより、コンピュータシステムが、タスクを実行するために使用される基礎となるソフトウェアの大幅な再設計をすることなく、同じタスクを実行できるようにすることを目的とする。最初の時点において、これは、ソフトウェアのアプリケーションプログラミングインターフェース(API)を公開することにより、必要なタスクを実行するためにスクリプトがソフトウェアの必要な機能を実行するように手動で考案されるようにすることを必要とした。
【0004】
ロボットによるプロセス自動化(RPA)システムはこのアプローチの進化を表し、ソフトウェアエージェント(RPAロボットと呼ばれる)を使用して、既存のグラフィカルユーザインタフェース(GUI)を介してコンピュータシステムと対話する。RPAロボットは、GUIのための適切な入力コマンドを生成して、コンピュータシステムによって所与のプロセスを実行させることができる。これにより、プロセスの自動化が可能になり、参加したプロセスが無人プロセスになる。そのようなアプローチの利点は多数であり、複数のRPAロボットが複数のコンピュータシステムにわたって同じタスクを実行することを可能にするより大きなスケーラビリティと、所与のプロセスにおけるヒューマンエラーの可能性が低減されるかまたは排除されることによるより大きな再現性とを有する。
【0005】
しかしながら、特定のタスクを実行するためにRPAロボットを訓練するプロセスは煩雑である可能性があり、RPAシステムを使用して個々の各ステップを具体的に識別する特定のプロセスにおいてプログラムするために、人間のオペレータがRPAシステム自体を使用することを必要とする。また、人間のオペレータは対話されるべきGUIの特定の部分を識別し、RPAロボットが使用するためのワークフローを構築することも要求される。
【発明の概要】
【0006】
本発明は、GUIを使用するオペレータのビデオの分析およびプロセスを実行するときにオペレータによってトリガされるイベント(または入力)のみに基づいて、GUIを使用してタスクを実行するようにRPAロボットを訓練する方法を提供する。このようにして、RPAロボットの訓練に関する従来技術の上記の問題を回避することができる。
【0007】
第1態様では、GUIを使用するためにRPAロボット(またはスクリプトまたはシステム)をトレーニングする方法が提供される。この方法は、オペレータ(またはユーザ)がGUIを使用してプロセス(またはタスク)を実行するときにGUIのビデオをキャプチャするステップ;オペレータがGUIを使用して前記プロセスを実行するときにトリガされるイベントのシーケンスをキャプチャし、前記ビデオおよび前記イベントのシーケンスを分析してワークフローを生成するステップ;を含む。ワークフローはRPAロボットによって実行されると、RPAロボットに、GUIを使用して前記プロセスを実行させるようになっている。キャプチャするステップは、リモートデスクトップシステムによって実行することができる。
【0008】
分析するステップは、前記ビデオからGUIの1つまたは複数の対話型要素を識別するステップと、対話型要素のうちの少なくとも1つに対応するものとして、イベントのシーケンス内のイベントのうちの少なくとも1つを照合するステップとをさらに含み得る。対話型要素は、テキストボックス、ボタン、コンテキストメニュー、タブ、ラジオボタン(またはそのアレイ)、チェックボックス(またはそのアレイ)など(ただし、これらに限定されない)、任意の典型的なGUI要素であり得る。対話型要素を識別するステップは、トレーニングされた機械学習アルゴリズムをビデオの少なくとも一部に対して適用することによって実行され得る。
【0009】
対話型要素を識別するステップは、前記対話型要素に対するGUI内の1つまたは複数のアンカー要素の位置を識別することを含み得る。たとえば、機械学習アルゴリズム(グラフニューラルネットワークなど)を使用して、1つまたは複数の所定の特徴値に基づいて1つまたは複数のアンカー要素を識別することができる。前記特徴値はまた、機械学習アルゴリズムの訓練を介して決定されてもよい。
【0010】
前記特徴値は、要素間の距離、要素の向き、要素が同じウィンドウ内にあるかどうか、のうちの任意の1つまたは複数を含み得る。
【0011】
イベントのシーケンスは、キープレスイベント、クリックイベント(例えば、シングルクリック、またはその倍数)、ドラッグイベント、ジェスチャイベント、のうちの任意の1つまたは複数を含み得る。ビデオに基づく推論されたイベント(ホバリングイベントなど)も、イベントのシーケンスに含まれ得る。典型的には、GUIにおいて見えるようになる1つまたは複数のインターフェース要素に基づいて、ホバリングイベントが推測され得る。
【0012】
分析するステップは、前記プロセスのサブプロセスのシーケンスを識別することをさらに含むことができる。サブプロセスのシーケンスにおいては、シーケンスのサブプロセスのうちの1つのプロセス出力がシーケンスの別のサブプロセスへのプロセス入力としてRPAロボットによって使用され得る。
【0013】
生成されたワークフローは、別のサブプロセスに対応する以前生成されたワークフローの一部を含めることを可能にするようにユーザが編集可能であり、これにより、編集されたワークフローがRPAロボットによって実行されたとき、RPAロボットにGUIを用いてプロセスのあるバージョンを実施させ、このプロセスバージョンは別のサブプロセスを含む。前記プロセスのバージョンは、前記プロセスの既存のサブプロセスの代わりに、別のサブプロセスを含むことができる。
【0014】
第2態様では、上記の第1態様による方法によって訓練されたRPAロボットを使用して、GUIを使用してプロセスを実行する方法が提供される。特に、前記方法は、ワークフローにおいて指定されたそれぞれのアンカー要素に基づいて、RPAロボットがGUI内の1つまたは複数の対話型要素を再識別することを含んでもよい。機械学習アルゴリズム(グラフニューラルネットワークなど)は、1つまたは複数の所定の特徴値(第1態様の方法の一部として決定されたものなど)に基づいて1つまたは複数の対話型要素を再識別するために使用され得る。
【0015】
上記の方法のいずれかを実行するように構成されたシステムおよび装置も提供される。例えば、GUIを使用するためにRPAロボット(またはスクリプトまたはシステム)を訓練するためのシステムが提供される。システムは、オペレータ(またはユーザ)がGUIを使用してプロセス(またはタスク)を実行するときGUIのビデオをキャプチャし、オペレータがGUIを使用して前記プロセスを実行するときにトリガされる一連のイベントをキャプチャするように構成される。システムは、前記ビデオおよび前記イベントのシーケンスを分析して、それによってワークフローを生成するように構成されたワークフロー生成モジュールをさらに備える。
【0016】
また、本発明は1つまたは複数のプロセッサによる実行に適した1つまたは複数のコンピュータプログラムを提供し、そのようなコンピュータプログラムは、上で概説され、本明細書で説明される方法を実施するように構成される。本発明はまた、そのような1つまたは複数のコンピュータプログラムを含む(またはその上に記憶する)1つまたは複数のコンピュータ可読媒体、および/またはネットワークを介して搬送されるデータ信号を提供する。
【図面の簡単な説明】
【0017】
本発明の実施形態を、添付の図面を参照して、例として説明する:
図1】コンピュータシステムの1例を概略的に示す;
図2】ロボットによるプロセス自動化(RPA)のためのシステムを概略的に示す;
図3a】RPAロボットを訓練するための例示的な方法を概略的に示す流れ図である;
図3b】プロセスを実施するためにワークフローを実行するRPAシステムのRPAロボットの例示的な方法を概略的に示すフロー図である;
図4図2のRPAシステムなどのようなRPAシステムの例示的なワークフロー分析モジュールを概略的に図示する;
図5図2および図4のRPAシステムとともに使用され得るようなコンピュータビジョンモジュールを概略的に図示する;
図6図2および図4のRPAシステムとともに使用され得るようなアクション識別モジュールを概略的に図示する;
図7】ワークフローの例と、ワークフローの編集されたバージョンとを概略的に示す;
図8図2に記載されるRPAシステムなどのようなRPAシステムの例示的な実行モジュールを概略的に示す。
図9a】GUIのビデオからの画像を示す;
図9b】再識別プロセスを経たGUIのビデオからのさらなる画像を示す。
【発明を実施するための形態】
【0018】
以下の説明および図面において、本発明の特定の実施形態を説明する。しかしながら、本発明は説明される実施形態に限定されず、いくつかの実施形態は以下に説明される特徴の全てを含まなくてもよいことが理解されよう。しかしながら、添付の特許請求の範囲に記載される本発明のより広い趣旨および範囲から逸脱することなく、様々な修正および変更を本明細書でなすことができることは明らかであろう。
【0019】
図1は、コンピュータシステム100の1例を概略的に示す。システム100は、コンピュータ102を備える。コンピュータ102は、記憶媒体104、メモリ106、プロセッサ108、インターフェース110、ユーザ出力インターフェース112、ユーザ入力インターフェース114、ネットワークインターフェース116を備え、これらはすべて、1つまたは複数の通信バス118を介して互いにリンクされる。
【0020】
記憶媒体104は、ハードディスクドライブ、磁気ディスク、光ディスク、ROMなどのうちの1つまたは複数など、任意の形態の不揮発性データ記憶デバイスである。記憶媒体104は、コンピュータ102が機能するためにプロセッサ108が実行するオペレーティングシステムを記憶することができる。記憶媒体104はまた、1つまたは複数のコンピュータプログラム(またはソフトウェアもしくは命令またはコード)を記憶することができる。
【0021】
メモリ106は、データおよび/またはコンピュータプログラム(またはソフトウェアもしくは命令もしくはコード)を記憶するのに適した任意のランダムアクセスメモリ(記憶ユニットまたは揮発性記憶媒体)である。
【0022】
プロセッサ108は1つまたは複数のコンピュータプログラム(記憶媒体104および/またはメモリ106に記憶されたものなど)を実行するのに適した任意のデータ処理ユニットであってもよく、そのうちのいくつかは本発明の実施形態によるコンピュータプログラムであり、または、プロセッサ108によって実行されたときにプロセッサ108に本発明の実施形態による方法を実行させ、システム100を本発明の実施形態によるシステムに構成させるコンピュータプログラムであってもよい。プロセッサ108は並列に、または互いに協働して動作する、単一のデータ処理ユニットまたは複数のデータ処理ユニットを備えてもよい。プロセッサ108は本発明の実施形態のためのデータ処理動作を実行する際に、記憶媒体104および/またはメモリ106にデータを記憶し、および/またはそこからデータを読み出すことができる。
【0023】
インターフェース110は、コンピュータ102の外部にある、またはそこから取り外し可能な、デバイス122へのインターフェースを提供するための任意のユニットである。デバイス122はデータ記憶デバイス、たとえば、光ディスク、磁気ディスク、ソリッドステート記憶デバイスなどのうちの1つまたは複数である。デバイス122は処理能力を有してもよく、例えば、デバイスは、スマートカードであってもよい。したがって、インターフェース110はプロセッサ108から受信する1つまたは複数のコマンドに従って、デバイス122からデータにアクセスし、またはデバイス122にデータを提供し、またはデバイス122と対話することができる。
【0024】
ユーザ入力インターフェース114は、システム100のユーザまたはオペレータからの入力を受信するように構成される。ユーザは、ユーザ入力インターフェース114に接続されているか、またはそれと通信しているマウス(または他のポインティングデバイス)126および/またはキーボード124などのシステム100の1つまたは複数の入力デバイスを介して、この入力を提供することができる。しかし、ユーザは、1つまたは複数の追加のまたは代替の入力デバイス(タッチスクリーンなど)を介してコンピュータ102に対して入力を提供し得ることが理解されよう。コンピュータ102は、ユーザ入力インターフェース114を介して入力デバイスから受信された入力を、プロセッサ108が後でアクセスおよび処理するためにメモリ106に記憶することができ、またはプロセッサ108がそれに応じてユーザ入力に応答することができるように、それをプロセッサ108に直接渡すことができる。
【0025】
ユーザ出力インターフェース112は、システム100のユーザまたはオペレータにグラフィカル/ビジュアルおよび/またはオーディオ出力を提供するように構成される。したがって、プロセッサ108は所望のグラフィカル出力を表す画像/ビデオ信号を形成するようにユーザ出力インターフェース112に命令し、この信号を、ユーザ出力インターフェース112に接続されたシステム100のモニタ(またはスクリーンまたはディスプレイユニット)120に提供するように構成することができる。これに加えて、または代替として、プロセッサ108は所望のオーディオ出力を表すオーディオ信号を形成するようにユーザ出力インターフェース112に命令し、この信号を、ユーザ出力インターフェース112に接続されたシステム100の1つまたは複数のスピーカ121に提供するように構成することができる。
【0026】
最後に、ネットワークインターフェース116は、コンピュータ102が1つまたは複数のデータ通信ネットワークからデータをダウンロードおよび/またはアップロードするための機能を提供する。
【0027】
図1に示され、上記で説明されたシステム100のアーキテクチャは単なる例示であり、異なるアーキテクチャ(例えば、図1に示されたものよりも少ない構成要素を有するか、または図1に示されたものよりも追加のおよび/もしくは代替の構成要素を有する)を有する他のコンピュータシステム100が、本発明の実施形態において使用され得ることが理解されよう。例として、コンピュータシステム100は、パーソナルコンピュータ、サーバコンピュータ、携帯電話、タブレット、ラップトップ、テレビセット、セットトップボックス、ゲームコンソール、他のモバイルデバイスまたは家電デバイスなどのうちの1つまたは複数を含むことができる。
【0028】
図2は、ロボットによるプロセス自動化(RPA)のためのシステムを概略的に示す。図2に示すように、オペレータ(またはユーザ)201によって操作されるコンピュータシステム200(上述のコンピュータシステム100など)がある。コンピュータシステム200は、RPAシステム230に対して通信可能に結合される。
【0029】
オペレータ201は、コンピュータシステム200と対話して、コンピュータシステム200にプロセス(または機能または活動)を実行させる。典型的には、コンピュータシステム200上で実行されるプロセスは、1つまたは複数のアプリケーション(またはプログラムまたは他のソフトウェア)によって実行される。そのようなプログラムは、システム200上で直接実施または実行されてもよく、または他の場所(リモートまたはクラウドコンピューティングプラットフォーム上など)で実行されてもよく、コンピュータシステム200によって制御および/またはトリガされてもよい。オペレータ201は、1つまたは複数の対話型要素をオペレータ201に表示するグラフィカルユーザインタフェース(GUI)210を介してコンピュータシステム200と対話する。オペレータ201は、コンピュータシステム200のユーザ入力インターフェース(上述のユーザ入力インターフェース114など)を介して、対話型要素と対話することができる。オペレータ201が、オペレータ201に表示されるGUI210と対話すると、オペレータ対話を反映するように通常変化することが理解されるであろう。例えば、オペレータがテキストをGUI210内のテキストボックスに入力すると、GUI210は、テキストボックスに入力されたテキストを表示する。同様に、オペレータがポインティングデバイス(マウス126など)を使用してGUI210を横切ってカーソルを移動させると、ポインタはGUI210内を移動するように示される。
【0030】
RPAシステム230は、GUI210のビデオ215を受信するように構成される。GUI210のビデオ215は、オペレータ201がGUI210を使用して処理を実行する際に、オペレータ201に対して表示されるGUI210を示す(または視覚的に描写または記録する)。RPAシステム230はまた、プロセスを実行するためにGUIを使用するオペレータによってGUIに関連してトリガされる一連のイベント217を受信(またはキャプチャ)するように構成される。そのようなイベントは、オペレータ201によって実施される個々のキー押下、オペレータ201によって実施されるクリック(または他のポインタ相互作用イベント)、GUI自体によって生成されるイベント(特定の要素に関するクリックイベント、GUI内の特定のウィンドウのフォーカスの変更など)を含むことができる。
【0031】
RPAシステム230のワークフロー分析モジュール240は、GUI210のビデオおよびイベントシーケンス217を分析し、それによって、GUI210を使用して前記プロセスを実行するためのワークフロー(またはスクリプト)を生成するように構成される。ワークフローについては、以下でさらに詳細に説明する。しかしながら、ワークフロー250は、典型的にはGUI210との一連のインタラクション(またはアクション)を定義することが理解されよう。インタラクションは、GUIの特定の識別された要素上で、またはそれに関連して実行される入力であってもよく、これにより、インタラクションのシーケンスがGUI上で実行されるとき、GUIが動作しているシステム200が前記プロセスを実行する。したがって、ワークフロー250は、GUIを使用してプロセスを実行するための命令のセットである(または表す)と考えることができる。
【0032】
RPAシステム230の実行モジュール270は、ワークフロー250を、1つまたは複数のさらなるコンピュータシステム200-1;200-2;...のそれぞれのGUI210-1;210-2;...上で実行させるように構成される。特に、実行モジュール270は、さらなるコンピューティングシステム200-1;200-2;...上で、それぞれのGUI210-1;210-2;...のビデオを受信するように構成される。実行モジュール270はまた、オペレータ201が提供する入力をエミュレートするコンピュータシステム200-1;200-2;..に対して、入力275を提供するように構成される。それぞれのGUIのビデオを分析することによって、実行モジュールはワークフロー250に存在するGUI要素を識別(または再識別)し、ワークフロー250に従ってさらなるGUIに入力を提供することができる。このようにして、実行モジュールは、プロセスを実行するためにそれぞれのGUI210-1を介してシステム200-1を動作させるRPAロボット(またはソフトウェアエージェント)であると見なすことができる。さらなるシステム200-1;200-2;...は、上述のコンピュータシステム100などのシステム200などのシステムであってもよいことが理解されるであろう。代替として、さらなるコンピューティングシステム200-1;200-2;..のうちの1つまたは複数は、仮想化されたコンピュータシステムであってもよい。実行モジュール270(またはRPAロボット)の複数のインスタンスは、RPAシステム230によって並列に(または実質的に並列に)インスタンス化することができ、これによりプロセスの複数のインスタンスがそれぞれのさらなるコンピューティングシステム200-1;200-2;...上で実質的に同時に実施できる。
【0033】
図3aは、図2のRPAシステム230に従ってRPAロボットを訓練するための例示的な方法300を概略的に示す流れ図である。
【0034】
ステップ310において、オペレータ201がGUI210を使用して処理を実行すると、GUI210のビデオ215がキャプチャされる。
【0035】
ステップ320において、オペレータ201がGUI210を使用して前記プロセスを実行する際にトリガされる一連のイベント217がキャプチャされる。
【0036】
ステップ330において、ビデオ215およびイベントシーケンス217に基づいてワークフローが生成される。特に、分析されることによりワークフローを生成するビデオ215および一連のイベント217は、RPAロボットによって実行されると、RPAロボットに、GUIを使用して前記プロセスを実行させる。ビデオ215およびイベントのシーケンス217は、1つまたは複数の訓練された機械学習アルゴリズムを使用して分析される。ステップ330は、前記ビデオからGUIの1つまたは複数の対話型要素を識別するステップと、対話型要素のうちの少なくとも1つに対応するものとしてイベントのシーケンス内のイベントのうちの少なくとも1つをマッチングするステップとを有することができる。このようにして、ステップ330は、ワークフローのためのインタラクションのシーケンスを識別するステップを有することができる。
【0037】
図3bは、プロセスを実行するためにワークフロー250を実行するRPAシステム230のRPAロボットの例示的な方法350を概略的に示すフロー図である。RPAシステム230は、図2に関連して上述したようなRPAシステム230であってもよい。
【0038】
ステップ360において、コンピューティングシステム200-1上のGUI210-1のビデオが受信される。
【0039】
ステップ370において、コンピューティングシステム200-1上のGUI210-1のビデオが受信される。
【0040】
ステップ380において、入力275が、ワークフロー250に基づいてコンピュータシステム200-1に対して提供される。ステップ380は、GUIのビデオを分析してワークフロー250内に存在するGUI要素を再識別し、ワークフロー250に従ってGUIに対して入力を提供するステップを有することができる。このようにして、ステップ380は、GUIを介してさらなるシステム200-1を動作させて、プロセスを実行することができる。
【0041】
図4は、図2に関連して上述したRPAシステム230などのRPAシステムの例示的なワークフロー分析モジュールを概略的に示す。
【0042】
図4に示されるワークフロー分析モジュール240は、ビデオ受信器モジュール410と、イベント受信器モジュール420、コンピュータビジョンモジュール430、アクション識別モジュール440、ワークフロー生成モジュール450を備える。図4には、図2に関連して上述したように、GUI210を介してコンピュータシステム200と対話するオペレータ201も示されている。
【0043】
ビデオ受信器モジュール410は、GUI210のビデオ215を受信(またはキャプチャ、または他の方法で取得)するように構成される。GUI210のビデオ215は、コンピュータシステム200上で(またはコンピュータシステムによって)生成さる。結果として得られるビデオ215は、次いで、適切なデータ接続を介してRPAシステム230に対して(したがって、ビデオ受信器モジュール410に対して)送信される。
【0044】
コンピュータシステム200は、データ接続によってRPAシステム230に対して接続できることが理解されよう。データ接続は、コンピュータシステム200とRPAシステム230との間でデータを通信または転送するのに適した任意のデータ通信ネットワークを利用することができる。データ通信ネットワークは、ワイドエリアネットワーク、メトロポリタンエリアネットワーク、インターネット、ワイヤレス通信ネットワーク、有線またはケーブル通信ネットワーク、衛星通信ネットワーク、電話ネットワークなどのうちの1つまたは複数を含み得る。コンピュータシステム200およびRPAシステム230は、任意の適切なデータ通信プロトコルを介してデータ通信ネットワークを介して互いに通信するように構成され得る。たとえば、ネットワークデータ通信がインターネットを含むとき、データ通信プロトコルは、TCP/IP、UDP、SCTPなどであり得る。
【0045】
同様に、コンピュータシステム200は、GUI210の視覚的表示をビデオ受信器モジュール410に対して転送する(または他の方法で送信する)ように構成される。ビデオ受信器モジュールは、転送されたGUIの視覚表示からビデオ215を生成(またはキャプチャ)するように構成される。GUIの視覚表示を転送することは周知であり、本明細書ではこれ以上説明しない。そのような転送の例には、X11ウィンドウシステムにおいて利用可能なX11転送システム、Windowsオペレーティングシステムにおいて利用可能なMicrosoft Corporationのリモートデスクトップサービスなどがある。リモートフレームバッファプロトコルを使用するようなフレームバッファタイプの転送システムも適している。そのようなシステムの例には、オープンソース仮想ネットワークコンピューティング(VNC)およびその変形が含まれる。
【0046】
これに加えて、または代替として、ビデオ受信器モジュール410は、出力インターフェース112によって生成された画像/ビデオ信号を受信するように構成される。画像/信号は、コンピュータシステム200のユーザ出力インターフェース112とコンピュータシステム200のモニタ120との間の画像/信号経路内のハードウェアデバイスから受信される。ビデオ受信器モジュール410は、受信された画像/ビデオ信号からビデオ215を生成(またはキャプチャ)するように構成される。
【0047】
ビデオ受信器モジュール410の機能の一部は、コンピュータシステム200上で(またはコンピュータシステムによって)実行できることが理解されよう。特に、コンピュータシステム200は、GUI210のビデオ215を生成するように構成されたソフトウェア(またはソフトウェアエージェント)を実行することができる。
【0048】
イベント受信モジュール420は、GUIを使用して処理を実行するオペレータによってGUIに関連してトリガされた一連のイベント217を受信(またはキャプチャ)するように構成される。イベントは、コンピュータシステム200への入力である場合がある(またはそれを含み得る)。特に、イベントは、(マウスポインタなどの)ポインタクリック、ポインタドラッグ、ポインタ移動、(キーボード、またはディスプレイベースのソフトキーボードなどを介した)キー押下、スクロールホイール移動、(ドラッグまたはクリックまたはジェスチャなどの)タッチスクリーン(またはパッド)イベント、ジョイスティック(またはdパッド)移動、などのいずれかを含むことができる。
【0049】
イベントは、2つ以上の入力を含み得ることが理解されよう。例えば、複数の同時キー押下(制御キーおよび/または代替キー、または他の修飾キーの使用など)が、単一のイベントとして記録されてもよい。同様に、閾値時間内にグループ化された入力(例えば、ダブルクリックまたはトリプルクリック)は、単一のイベントとして記録され得る。イベントは、通常、メタデータも含む。イベントのメタデータは、イベント時の画面上のポインタ(またはカーソル)位置、キー(キー押下の場合)、などを含むことができる。
【0050】
ビデオ受信器モジュール410と同様に、コンピュータシステム200は、GUI210に関してオペレータによってトリガされたイベントをイベント受信器モジュール420に対して転送する(または他の方法で送信する)ように構成される。イベント受信器モジュール420は、受信されたイベントを順に生成(またはキャプチャ)するように構成される。入力イベントの転送は周知であり、本明細書ではこれ以上説明しない。そのような転送の例には、X11ウィンドウシステムにおいて利用可能なX11転送システム、Windowsオペレーティングシステムにおいて利用可能なMicrosoft Corporationのリモートデスクトップサービス、オープンソース仮想ネットワークコンピューティング(VNC)およびその変形が含まれる。典型的には、そのような転送システムは、オペレーティングシステムレベルでイベントをキャプチャするソフトウェアエージェント(またはヘルパープログラム)をコンピュータシステム200上で実行することを伴う。Microsoft Remote Desktop ServicesやX11 転送システムなど、転送システムがオペレーティングシステムの一部である場合もある。
【0051】
これに加えて、または代替として、イベント受信器モジュール420は、1つまたは複数の入力デバイス124、126によって生成された入力信号を受信するように構成される。入力信号は、1つまたは複数の入力デバイス124、126とコンピュータシステム200のユーザ入力インターフェース114との間の入力信号経路内のハードウェアデバイスから受信される。そのようなハードウェアデバイス(キーロガーなど)は周知であり、本明細書ではこれ以上説明しない。イベント受信器モジュール420は、受信された入力信号からイベント217のシーケンスを生成(またはキャプチャ)するように構成される。
【0052】
コンピュータビジョンモジュール430は、GUIのビデオ215からGUI210の要素(一般にグラフィカルユーザインタフェース要素と呼ばれる)を識別するように構成される。コンピュータビジョンモジュール430は、特徴検出などの画像分析技法を使用して、予想されるGUI要素の既知の構成(または外観)に基づいてGUI要素を識別するように構成される。これに加えて、または代替として、コンピュータビジョンモジュール430は、特定のGUI要素を識別するように訓練された機械学習アルゴリズムを使用するように構成することができる。コンピュータビジョンモジュール430は、識別されたGUI要素のテキスト構成要素を識別するために光学文字認識技法を使用するように構成することができる。このような識別においては、標準的な物体検出技術を用いることができる。例えば、"Mask R-CNN"、Kaiming He、Georgia Gkioxari、Piotr Dollar、Ross Girshick、IEEE Transactions on Pattern Analysis and Machine Intelligence 2020、DOI:10.1109/TPAMI.2018.2844175に記載されているように、Mask-RCNNアプローチを使用することができ、その全内容は参照により本明細書に組み込まれる。
【0053】
追加または代替として、そのような技法はGUI要素を検出するために、深層学習モデルなどの機械学習を使用することができる。そのようなディープラーニングモデルは、GUI要素の注釈付きスクリーンショット(またはその一部)を含むトレーニングデータを使用してトレーニングすることができる。特に、注釈は、所与のスクリーンショット内の既知のGUI要素を識別するために使用されるバウンディングボックスを含むことができる。
【0054】
コンピュータビジョンモジュール430は、所与の識別されたGUI要素のための1つまたは複数のアンカーGUI要素を識別するようにさらに構成される。コンピュータビジョンモジュール430はまた、1つまたは複数のアンカー要素を所与の識別されたGUI要素と関連付けるように構成される。以下で簡単に説明するように、アンカー要素は、予想される同時発生GUI要素に基づいて所与の要素について識別することができる。アンカー要素は、典型的には所与のGUI要素について識別され、これにより、GUIの変化に起因して所与のGUI要素の位置(または配置)が変化した場合にコンピュータビジョンモジュール430が所与の要素を再識別することを可能にする。
【0055】
アクション識別モジュール440は、GUI210上でオペレータ201によって実行される1つまたは複数の動作を識別するように構成される。特に、アクション識別モジュール440は、イベント217のシーケンスと、コンピュータビジョンモジュール430によって識別されたGUI要素とに基づいて、動作を識別するように構成される。通常、アクションは、1つまたは複数のGUI要素に対して適用される入力を含む。例えば、アクションは、GUI要素(ボタンまたは他のクリック可能な要素など)上のポインタクリック、テキストボックスへのテキスト入力、ドラッグイベントによる1つまたは複数のGUI要素の選択、などのうちのいずれかであり得る。
【0056】
アクション識別モジュール440は、典型的にはイベント217のシーケンス内の1つまたは複数のイベントを1つまたは複数の識別されたGUI要素と照合することによって、アクションを識別するように構成される。例えば、クリック可能なGUI要素(ボタンなど)と一致するポインタ位置を有するポインタクリックは、GUI要素がクリックされたアクションとして識別され得る。同様に、識別されたテキストボックスにカーソルが存在するときに発生する1つまたは複数のキープレスイベントは、テキストがテキストボックスに入力されるアクションとして識別され得る。これに加えて、または代替として、GUI要素内で発生しないクリックイベントなどのイベントは無視され得る。
【0057】
ワークフロー生成モジュール450は、アクション識別モジュール440によって識別されたアクションに基づいてワークフロー250を生成するように構成される。上述のように、ワークフロー250は、GUI210との一連の対話を定義する。ワークフローの各対話(またはステップ)は、典型的には、トリガされる入力(または複数の入力)と、作用されるGUI要素とを定義する。例えば、対話はボタンのクリックであってもよく、対話はクリックされるボタン(すなわち、GUI要素)およびクリックのタイプ(例えば、右または左)を指定してもよい。対話(またはステップ)はまた、作用を受けるGUI要素のためのアンカー要素を指定(または定義する、または示す)し、これにより、以下で簡単に説明するように、ワークフローが実行されるときにGUI要素の再識別を可能にする。
【0058】
このようにして、生成されたワークフロー250は以下で簡単に説明するように、実行システム(またはRPAロボット)がGUIを使用してプロセスを実行することを可能にすることが理解されよう。言い換えれば、ワークフロー分析モジュールは、生成されたワークフロー250によって、所与のRPAロボットを訓練して、GUI210を使用して前記プロセスを実行する人間オペレータ201の観察に基づくプロセスを実行するように構成される。
【0059】
図5は、図4に関連して上述したコンピュータビジョンモジュールなどのコンピュータビソンモジュール430を概略的に示す。
【0060】
コンピュータビジョンモジュール430は、代表フレーム識別モジュール510、GUI要素識別モジュール520、イベント識別モジュール530を備える。
【0061】
代表フレーム識別モジュール510は、GUIのビデオ215内の代表フレーム(または画像)を識別するように構成される。代表フレームは、特定の状態にあるGUIを描写するフレームとして識別され得る。オペレータ201がGUI210と対話するとき、通常、GUI210は、新しい状態を反映するようにGUIの表示が変化することによって状態を変化させることが理解されよう。例えば、新しいウィンドウは新しいGUI(またはインターフェース)要素とともに表示されてもよく、ダイアログボックスが表示されてもよい、などである。同様に、GUI(またはインターフェース)要素を除去することができ、例えば、オペレータがそれらと対話すると、ダイアログボックスを消すことができ、古いタブの表示を新しいタブに置き換える新しいタブを選択することができる、などである。このようにして、表示されたGUIに対する変更に基づいて、代表的なフレームが識別され得ることが理解されるであろう。
【0062】
代表フレーム識別モジュール510は、ビデオ分析技法を適用して、それらに先行するフレーム(または複数のフレーム)に対する視覚差の閾値レベルを上回る、ビデオ内のフレームまたは画像を識別することによって、代表フレームを識別するように構成され得る。これに加えて、または代替として、代表フレーム識別モジュール510は、前のフレームに存在しなかった所与のフレームに存在する新しいインターフェース要素を識別することに基づいて、代表フレームを識別するように構成される。GUI要素の識別は、以下で簡単に説明するGUI要素識別モジュール520によって実行することができる。
【0063】
代表フレーム識別モジュール510は、適切な訓練された機械学習アルゴリズム(またはシステム)を使用して、代表フレームを識別するように構成される。ここで、機械学習アルゴリズムは、GUIのビデオに基づいてGUI状態変化を識別するように訓練される。特に、機械学習アルゴリズムは、GUIのビデオからのフレーム(または画像)を、ビデオ内の隣接する(または近くの)フレームに対するフレームの視覚的外観の変化に基づいて代表的なフレームとして分類することができる。そのような分類はまた、視覚的外観のそのような変化と入力イベントとの間の相関(または共起)に基づく場合があり、これにより、ユーザインタラクションに起因する外観の変化と、そうではない変化とを区別することができる。
【0064】
GUI要素識別モジュール520は、GUI内の1つまたは複数のGUI(またはインターフェース)要素を識別するように構成される。特に、GUI要素識別モジュール520は、代表フレーム識別モジュール510によって識別される代表フレームなどのGUIのビデオ215のフレームの画像からGUI要素を識別するように構成される。GUI要素識別モジュール520は、特徴検出などの画像分析技法を使用して、予想されるGUI要素の既知の構成(または外観)に基づいてGUI要素を識別するように構成することができる。これに加えて、または代替として、GUI要素識別モジュール520は、特定のGUI要素を識別するように訓練された機械学習アルゴリズムを使用するように構成される。
【0065】
さらに、GUI要素識別モジュール520は1つまたは複数のアンカー要素を識別し、および/または所与の識別されたGUI要素に関連付けるように構成される。所与のGUI要素のためのアンカーGUI要素は、所与の識別された要素への近接度(または距離)に基づいて識別される。特に、GUI要素は、所与のGUI要素の所定の距離内に配置される場合、アンカー要素として識別され得る。これに加えて、または代替として、アンカー要素は、アンカー要素のタイプおよび所与の要素に基づいてアンカー要素として識別され得る。例えば、所与のGUI要素がテキストボックスである場合、テキストラベルは、テキストボックスの近くに存在することが期待される。このように、ラベルGUI要素は、テキストボックスGUI要素のためのアンカー要素として識別され得る。同様に、所与のGUI要素がラジオボタン要素である場合、識別されたラジオボタンの近くにさらなるラジオボタン要素が存在することが予期される。アンカー要素を識別するための他の方法も、上述のものの代わりに、または上述のものに加えて、使用され得ることが理解されよう。そのような方法は、所定の数の最近傍要素をアンカー要素として識別すること(k-最近傍アプローチ)、1つまたは複数の所定の方向における最近傍要素をアンカー要素として識別すること、所与の識別された要素のある所定の領域内のすべての要素をアンカー要素として識別することなどの任意の組み合わせを含み得る。
【0066】
GUI要素識別モジュール520はさらに、GUIのビデオ215(またはさらなるビデオ)の別画像(またはフレーム)において識別されたGUI要素(GUI要素識別モジュール520によって以前に識別されたGUI要素など)を再識別するように構成される。特に、GUI要素識別モジュール520は、以前に識別されたGUI要素に関連するアンカー要素に基づき、以前の画像から、別画像において識別されたGUI要素が以前に識別されたGUI要素に対応することを決定するように構成される。別画像中のGUI要素は、以前に識別されたGUI要素の同じアンカー要素に対応する別画像中のGUI要素のアンカー要素を識別することに基づいて、再識別される。アンカー要素は、それぞれの識別されたGUI要素に対するアンカー要素の相対位置が所定の閾値内にある場合、別のアンカー要素に対応すると見なすことができる。同様に、識別されたGUI要素が複数(またはセット)のアンカー要素に関連付けられている場合、アンカー要素のセットの、それぞれの識別されたGUI要素に対する相対位置が所定の閾値内で一致する場合、アンカー要素のセットは、別のアンカー要素のセットに対応すると見なされる。アンカー要素は、相対的位置に関連する重み(または重要度)を有することができ、より高い重み付けされたアンカー要素は、より小さい所定の閾値を白色化することに合意するために必要とされることが理解されよう。
【0067】
このようにして、GUI要素識別モジュールは、GUIの後続インスタンスのビデオにおいて、GUI内の特定の入力フィールドなどの同じGUI入力要素を再識別できることが理解されよう。アンカー要素の使用により、GUI要素が位置を変更するようにGUIが修正されても、この再識別は依然として実施可能である。これは、移動された可能性が高いテキストボックスのラベルなどの共起GUI要素(アンカー要素)を使用して、GUI要素を再識別できるからである。
【0068】
GUI要素識別モジュール520は、適切な訓練された機械学習アルゴリズム(またはシステム)を使用して、それぞれのアンカー要素に基づいてGUI要素を再識別するように構成される。例えば、グラフニューラルネットワークは、機械学習アルゴリズムの一部として使用され得る。ここで、GUI要素は、グラフ内のノードによってマッピングされる(または表される)。ノード間の接続は、2つのノードに依存する異なる特徴値を有する。そのような特徴値は、2つのノード間の距離、ノードの向き(または姿勢)、ノードがアプリケーションウィンドウ内の同じパネルに属するかどうか、などのうちの任意の1つまたは複数を含み得る。グラフニューラルネットワークは、ノードを再識別することを最適化することによって訓練され得る。事実上、グラフニューラルネットワークは、トレーニングプロセスを通して、どの特徴値が再識別に重要であるかを学習する。このようにして、GUI要素識別モジュールは、アンカー要素を最初に識別するときにこれを考慮することができ、再識別のためにより効果的なアンカー要素を選択する。
【0069】
GUI要素識別モジュール520は、機械学習アルゴリズムの一部としてグラフニューラルネットワークを使用して、同じように所与の要素について最初にアンカー要素を識別するように構成できることが理解されよう。特に、要素は、上述した特徴値に基づいてアンカー要素として識別されてもよい。
【0070】
イベント識別モジュール530は、GUIのビデオ215に基づいてさらなるイベントを識別するように構成される。本明細書で上述したイベントは、オペレータ201からの入力によってトリガされる(または他の形で関与する)イベントに関するが、他のイベントはオペレータの非活動に基づいて、または外部トリガに基づいて発生し得ることが理解されよう。例えば、対話型要素の上にポインタをホバリングすることは、1つ以上のさらなるGUI要素(コンテキストメニューなど)の表示をトリガすることができるホバリングイベントと考えることができる。これは非アクティビティによって引き起こされるので、すなわち、オペレータは所定の期間、ポインタを動かさないので、そのようなイベントはイベント受信器モジュール420によってキャプチャされたイベント217のシーケンスに現れないことがある。これに加えて、または代替として、非アクティビティは、広告などの動的コンテンツ(または要素)を識別するために使用され得る。これは、ウェブページがロードを終了したときなどのページロードイベントを決定することに基づいて実施できる。イベント識別モジュール530は、イベント受信器モジュール420によってキャプチャされたイベント217のシーケンス中に対応するイベントがないポイントにおいて、GUI中の1つまたは複数の別GUI要素の外観(またはマテリアライゼーションまたは表示)を識別することに基づいて、さらなるイベントを識別するように構成することができる。イベント識別モジュール530は、適切な訓練された機械学習アルゴリズム(またはシステム)を使用して、GUIのビデオ215に基づいてさらなるイベントを識別するように構成することができる。イベント識別モジュール530は、同様のユーザ入力を有するイベントを区別するように構成されてもよい。例えば、マウスをドラッグするユーザ入力は、いくつかの異なる対話に関連し得る。これらの対話は、識別されたGUI要素(または複数の要素)に依存し得る。例えば、マウスをドラッグするユーザ入力は、スライダをドラッグすること、要素をドラッグアンドドロップすること、ドラッグすることによって作成された領域内の要素を選択すること(投げ縄ツールとして知られる)に関連することができる。これらはすべて、マウス左ボタン押下、マウス移動、およびマウス左ボタンのリリースという類似の入力イベントキャプチャであるが、意味的に異なる機能を有する。イベント識別モジュール530は、識別されたGUI要素との照合入力に基づいて、これらのイベントを区別するように構成され得る。特に、イベント識別モジュール530は、ヒューリスティックまたは訓練された機械学習分類モデルを使用することができる。
【0071】
イベント識別モジュール530は典型的には、アクション識別モジュール440によるさらなる処理のために、イベントのシーケンス217内に識別されたさらなるイベントを含むように構成される。
【0072】
図6は、図4に関連して上述したアクション識別モジュール440などのアクション識別モジュール440を概略的に示す。
【0073】
アクション識別モジュール440は、イベント照合モジュール610、サブプロセス識別モジュール620、入力/出力識別モジュール630を備える。
【0074】
イベント照合モジュール610は上述のように、イベント217のシーケンス内の1つまたは複数のイベントを1つまたは複数の識別されたGUI要素と照合することによって、アクションを識別するように構成される。例えば、イベントマッチングモジュール610は、イベントと、アクションを受けた対応する識別されたGUI要素とをペアにすることができる。これは、イベントの空間座標(マウスクリックなど)と、画面上のその位置のGUI要素とをマッチングすることによって実施できる。空間座標(キーボードアクションなど)を持たないイベントの場合、マウスクリックなどの空間座標を有する以前のイベントを使用して、GUI要素とイベントとをペアリングすることができる。これに加えて、または代替的に、テキストカーソル(または他の入力マーカ)などの特定の識別されたGUI要素の位置を使用して、イベント(キー押下など)をそれぞれのGUI要素(テキストボックスなど)とペアにすることができる。
【0075】
サブプロセス識別モジュール620は、1つまたは複数のサブプロセスを識別するように構成される。GUI210を使用してオペレータ201によって実行される所与のプロセスは、別々のサブプロセスに分解され得ることが理解されよう。典型的にはプロセスが2つ以上の別個のタスクを含むことができ、各々は1つ以上のアプリケーションのセットによって実行される。例えば、経費請求書を提出するプロセスの場合、第1アプリケーションを使用して必要な請求書を取得する第1サブプロセスがあり、第2サブプロセスとして、請求書はその後、内部会計プラットフォームにアップロードされる必要があり、最後に、第3サブプロセスとして、経費アプリケーションが、請求書自体を生成するために使用される。したがって、サブプロセス識別モジュール620は、特定のアプリケーションに対応する一連のイベント217としてサブプロセスを識別するように構成することができる。アプリケーション(およびアプリケーションの使用)は、コンピュータビジョンモジュール430によって識別されるGUI要素に基づいて識別され得る。例えば、特定のアプリケーションのウィンドウがフォーカスされていた期間中にトリガされたイベントは、サブプロセスとして識別され得る。1例において、サブプロセスは、フォーカスされているときに特定のウィンドウ上でトリガされるすべてのイベント、および/またはウィンドウ上でトリガされるすべてのイベントとして識別され得るが、そのウィンドウのGUI要素は所定のしきい値を超えて変化しない。ウィンドウ上でトリガされたイベントを識別することによって、そのウィンドウのGUI要素が所定の閾値を超えて変化しない間に、例えば、タブ付きウィンドウ上の特定のタブに関連してサブプロセスを識別することができる。ここで、タブ間を移動すると、要素のしきい値数(またはそれ以上)が変化する(例えば、位置をシフトする、追加する、または除去する)可能性がある。他のそのようなヒューリスティックアプローチ(または基準)も使用され得ることが理解されよう。
【0076】
入力/出力識別モジュール630は、1つまたは複数のプロセス入力を識別するように構成される。所与のプロセスを実行する際に、オペレータ201は、データを入力する(または入力を処理する)ためにGUIを用いることができることが理解されよう。例えば、オペレータ201は、プロセスの一部としてGUIにユーザ名および/またはパスワードを投入(または入力)することができる。入力/出力識別モジュール630は、以下で簡単に説明するデータ記憶装置810(上述したデータ記憶装置122など)に入力データを記憶するように構成することができる。
【0077】
入力/出力識別モジュール630は、プロセス入力を、入力データが記憶装置810から取り出されることを必要とする動作として識別するように構成される。
【0078】
入力/出力識別モジュール630は、サブプロセスのための1つまたは複数のプロセス入力および/またはプロセス出力を識別するように構成される。サブプロセスは、別サブプロセスへのプロセス入力として使用され得る出力(またはプロセス出力)を提供できることが理解されよう。プロセス出力は、GUIを介して表示されるデータを含むことができる。例えば、上述の第1サブプロセスでは、取り出された請求書を閲覧することにより、請求書番号をクリップボードにコピーできるようにすることを含んでもよい。次に、第3サブプロセスは、この請求書番号を経費請求書フォームに貼り付けることを含むことができる。このようにして、第1サブステップのプロセス出力は、クリップボードにコピーされた請求書番号となる。クリップボードのこの請求書番号は、第3サブステップのプロセス入力として使用される。
【0079】
言い換えれば、サブプロセスに対する入力がある場合(ユーザ名および/またはパスワードなど)、ユーザは、入力のために使用されるソース(データストア、クリップボード、ファイルなど)を指定するための入力のためのオプションを与えられる場合がある。
【0080】
図7は、例示的なワークフロー700を概略的に示す。図7には、ワークフローの編集済みバージョン750も示されている。
【0081】
ワークフロー700は、上述のようなプロセス入力およびプロセス出力を有する4つのサブプロセス1、2、3、4を含む。サブプロセス1は、2つのプロセス出力1-1; 1-2を有する。第1プロセス出力1-1は、サブプロセス2に対するプロセス入力である。第2プロセス出力1-2は、サブプロセス3に対するプロセス入力である。サブプロセス2は、サブプロセス3のためのプロセス入力であるプロセス出力2-1を有する。同様に、サブプロセス3は、サブプロセス4のためのプロセス入力であるプロセス出力3-1を有する。
【0082】
サブプロセスによって実行されるタスクは、同じように異なるサブプロセスで実行されてもよいことが理解されるであろう。異なるサブプロセスは、異なるワークフローの一部を形成するものであってもよい。例えば、上述の経費請求を提出するプロセスについては、内部会計プラットフォームの変更があり得る。これは、新しいプラットフォームを使用するために、第2サブプロセスが変更されることを必要とする場合がある。これは、ワークフローの編集されたバージョンを生成するために既存のワークフロー内の新しい会計プラットフォームを使用する新しいサブプロセスを代わりに置き換えることによって、ワークフローを再記録(または再生成)することなく達成することができる。
【0083】
ワークフローの編集されたバージョン750は、ワークフロー700のサブプロセス1、2、4を含むが、第2サブプロセス2は別サブプロセス5に置き換えられる。これは、別サブプロセスが第2サブプロセスと同じプロセス入力およびプロセス出力を有するので、可能であった。図から分かるように、第1プロセス出力1-1は、ここでは別サブプロセスのためのプロセス入力である。別サブプロセス5は、サブプロセス3のためのプロセス入力であるプロセス出力5-1を有する。
【0084】
このようにして、ワークフローは、新しいプロセスがオペレータ201によって実行されることなく、新しいプロセスを実行して、新しいワークフローを形成するように変更および/または組み合わされ得ることが理解されよう。
【0085】
図8は、図2に関連して上述したRPAシステム230などのRPAシステムの例示的な実行モジュール270を概略的に示す。
【0086】
図8に示される実行モジュール270は、ビデオ受信器モジュール410、コンピュータビジョンモジュール430、(上述のデータ記憶デバイス122などの)データ記憶装置810、入力トリガモジュール820を備える。図8には、GUI210-1を有するコンピュータシステム200-1も示されている。
【0087】
ビデオ受信器モジュール410およびコンピュータビジョンモジュール430の上記の説明は、図8に示されるビデオ受信器モジュール410およびコンピュータビジョンモジュール430に対して等しく適用されることが理解されよう。特に、コンピュータビジョンモジュール430は、ビデオ受信器モジュール410からGUI210のビデオ215を受信するように構成されることが理解されよう。
【0088】
図8に示されるように、実行モジュール270は、前述のようにワークフロー250を受信する(またはロードする)。これは、実行モジュール270がコンピュータシステム200-1のGUIを使用してワークフロー250のプロセスを実行するように訓練する(または他の方法で可能にする)のに役立つ。
【0089】
入力トリガモジュール820は、コンピュータシステム200への入力信号を生成して、ワークフローにおいて指定された対話を実行するように構成される。特に、所与の対話について、入力トリガモジュール820は、コンピュータビジョンモジュール430を使用して、対話において指定されたGUI要素を再識別するように構成される。入力トリガモジュールは、再識別されたGUI要素に基づいて対話を実行するための入力を生成するように構成される。例えば、特定のボタン上のポインタクリックを指定するための対話である場合、入力トリガモジュールはポインタ移動およびクリックを生成し、これにより、ボタンの位置でクリックが発生してコンピュータビジョンモジュールによって再識別されるようにする。したがって、ワークフローが生成されたときのボタンの位置に対するGUI内のボタンの任意の変位が考慮される。
【0090】
入力トリガモジュール820はまた、データストレージ810などの外部ソースから対話のための特定のテキスト入力を取り出すように構成され得る。データ記憶装置は、ワークフローの特定のステップ(またはインタラクション)のための特定のテキスト入力を記憶するように構成されてもよい。そのような特定のテキスト入力の例は、ユーザ名および/またはパスワード、事前定義されたID番号またはコードなどを含むことができる。データ記憶装置は、そこに記憶されたデータの機密性を保証するために保護されてもよい。このようにして、(ユーザ名およびパスワードなどの)機密入力は、必要に応じて、プロセスの将来の実行のために保護および/または変更され得る。
【0091】
したがって、ワークフローにおける対話を反復することによって、実行モジュール270は、GUIを介してワークフローのプロセスを実行できることが理解されよう。このようにして、実行モジュール270は、プロセスを実行するように訓練されたRPAロボットであると理解される。
【0092】
図9aは、GUIのビデオ215からの画像900(またはフレーム)を示す。いくつかのGUI要素は前述のように、GUI要素識別モジュール520によって識別されている。識別されたGUI要素は図の目的のために、ボックスを用いて図に示される。図9aから分かるように、識別されたGUI要素は、アイコン、テキストラベル、タブ、メニュー項目(ボタン)などを含む。
【0093】
特に、特定のGUI要素910(図9aのメニュー項目「コンピュータ」)が識別され、4つの関連するアンカー要素920も識別されている。アンカー要素の識別は前述の通りであり、特定のGUI要素910の再識別を可能にするためである。この例では、アンカー要素がk個の最近傍に基づいてGUI要素識別モジュールによって選択されている。この場合、kはここでは4に等しい。これは、近接性を特徴値として優先することを理解することができる。しかしながら、互いに対するアンカー要素および/または識別された要素の向きも使用されてもよく、すなわち、アンカーボックスは、候補のすぐ近くであるだけでなく、同じ向き/方向でもある。
【0094】
図9bは、図9aのGUIのさらなるビデオ215からの画像950(またはフレーム)を示す。画像950において、GUIのいくつかの要素は図9に示される画像900に関して異なる。ここでも、前述のように、GUI要素識別モジュール520によって、いくつかのGUI要素が識別されている。識別されたGUI要素は、図中にボックスで示されている。図9aから分かるように、識別されたGUI要素は、アイコン、テキストラベル、タブなどを含む。
【0095】
画像950において、図9aにおいて識別された特定のGUI要素910は識別されたアンカー要素920に基づいて、前述のように、GUI要素識別モジュール520によって再識別されている。このようにして、特定の要素910は、GUIに対する変更にもかかわらず、再識別される。
【0096】
記載された方法は、特定の順序で実行される個々のステップとして示されていることが理解されるであろう。しかしながら、当業者は、これらのステップが所望の結果を依然として達成しながら、異なる順序で組み合わされ、または実行され得ることを理解するであろう。
【0097】
本発明の実施形態は、様々な異なる情報処理システムを使用して実装され得ることが理解されよう。特に、図およびその説明は例示的なコンピューティングシステムおよび方法を提供するが、これらは単に、本発明の様々な態様を説明する際に有用な標準を提供するために提示される。本発明の実施形態は、パーソナルコンピュータ、ラップトップ、パーソナルデジタルアシスタント、携帯電話、セットトップボックス、テレビ、サーバコンピュータなどの任意の適切なデータ処理デバイス上で実行され得る。もちろん、システムおよび方法の説明は議論の目的のために簡略化されており、それらは、本発明の実施形態のために使用され得る多くの異なるタイプのシステムおよび方法のうちの1つにすぎない。論理ブロック間の境界は単なる例示であり、代替実施形態は論理ブロックまたは要素をマージすることができ、または様々な論理ブロックまたは要素に機能の代替分解を課すことができることが理解されよう。
【0098】
上述の機能は、ハードウェアおよび/またはソフトウェアとして1つまたは複数の対応するモジュールとして実装され得ることが理解されよう。たとえば、上述の機能は、システムのプロセッサによって実行されるための1つまたは複数のソフトウェア構成要素として実装され得る。代替として、上述の機能は、1つまたは複数のフィールドプログラマブルゲートアレイ(FPGA)、および/または1つまたは複数の特定用途向け集積回路(ASIC)、および/または1つまたは複数のデジタル信号プロセッサ(DSP)、および/または他のハードウェア構成上などのハードウェアとして実装され得る。本明細書に含まれるフローチャートに実装される方法ステップ、または上述の方法ステップはそれぞれ対応するそれぞれのモジュールによって実装されてもよく、本明細書に含まれるフローチャートに実装されるか、または上述のように、複数の方法ステップは、単一のモジュールによって一緒に実装されてもよい。
【0099】
本発明の実施形態がコンピュータプログラムによって実施される限り、コンピュータプログラムを担持する記憶媒体および伝送媒体は、本発明の態様を形成することが理解されよう。コンピュータプログラムは、コンピュータによって実行されると、本発明の実施形態を実行する、1つまたは複数のプログラム命令またはプログラムコードを有する可能性がある。本明細書で使用される「プログラム」という用語は、コンピュータシステム上で実行するために設計された命令のシーケンスであってもよく、サブルーチン、関数、プロシージャ、モジュール、オブジェクトメソッド、オブジェクト実装、実行可能アプリケーション、アプレット、サーブレット、ソースコード、オブジェクトコード、共有ライブラリ、動的リンクライブラリ、および/またはコンピュータシステム上で実行するために設計された他の命令のシーケンスを含んでもよい。記憶媒体は、磁気ディスク(ハードドライブまたはフロッピーディスクなど)、光ディスク(CD-ROM、DVD-ROMまたはBluRayディスクなど)、またはメモリ(ROM、RAM、EEPROM、EPROM、フラッシュメモリ、またはポータブル/リムーバブルメモリデバイスなど)などであり得る。伝送媒体は、通信信号、データブロードキャスト、2つ以上のコンピュータ間の通信リンクなどであり得る。
図1
図2
図3a
図3b
図4
図5
図6
図7
図8
図9a
図9b