JP2023528092A - ロボティックプロセスオートメーションのためのグラフィカル要素検索技術の選択、アンカーおよびターゲットのファジー理論選択、ならびに/または階層的グラフィカル要素識別 - Google Patents

ロボティックプロセスオートメーションのためのグラフィカル要素検索技術の選択、アンカーおよびターゲットのファジー理論選択、ならびに/または階層的グラフィカル要素識別 Download PDF

Info

Publication number
JP2023528092A
JP2023528092A JP2020553527A JP2020553527A JP2023528092A JP 2023528092 A JP2023528092 A JP 2023528092A JP 2020553527 A JP2020553527 A JP 2020553527A JP 2020553527 A JP2020553527 A JP 2020553527A JP 2023528092 A JP2023528092 A JP 2023528092A
Authority
JP
Japan
Prior art keywords
target
matching
search
fuzzy
anchor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2020553527A
Other languages
English (en)
Inventor
ムンテアヌ ダン
マイロン イオン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
UiPath Inc
Original Assignee
UiPath Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/871,696 external-priority patent/US20210349430A1/en
Application filed by UiPath Inc filed Critical UiPath Inc
Publication of JP2023528092A publication Critical patent/JP2023528092A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04842Selection of displayed objects or displayed text elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40334By fuzzy logic supervisor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V2201/00Indexing scheme relating to image or video recognition or understanding
    • G06V2201/06Recognition of objects for industrial automation

Abstract

ロボティックプロセスオートメーション(RPA)のためのグラフィカル要素検索技術の選択、アンカーおよびターゲットのファジー論理選択、ならびに階層的グラフィカル要素識別が開示される。アンカーおよびターゲットのファジー論理選択は、UI内のグラフィカル要素を識別するための、より大きな、より段階的な、または階層的なプロセスの一部であり得る。UI要素のセレクタが少なくとも信頼度しきい値で見つからない場合、UI要素ターゲットのセレクタに対応する可能性のある類似要素は、ターゲットおよび対応するアンカー(複数可)のファジーマッチングに基づいて検索され得る。幾何学的なマッチングはまた、ターゲットUI要素とそのそれぞれのアンカー(複数可)との間で採用され得る。ファジーマッチングおよび幾何学的マッチングを組み合わせることで、RPAロボットが対話しようとしている正確なセレクタをより柔軟かつ正確に識別できるようになり得る。【選択図】図1

Description

(関連出願への相互参照)
本出願は、2020年5月11日に出願された米国非仮特許出願第16/871,696号の利益を主張する。先に提出された本出願の主題は、その全体を参照することにより、本明細書に組み込まれる。
本発明は概して、ロボティックプロセスオートメーション(RPA)に関し、より具体的には、RPAのためのグラフィカル要素検索技術の選択、アンカーおよびターゲットのためのファジー論理選択、ならびに/または階層的グラフィカル要素検出に関する。
RPAロボットは、特定のワークフローアクティビティのために、コンピューティングシステムのユーザーインターフェース(UI)のグラフィカル要素を識別し、対話することを試みてもよい。例えば、RPAロボットは、UI内の「提出」ボタンを特定しようとし、そのボタンに対してマウスクリック操作を行い得る。しかし、RPAロボットがワークフローの中でUI対話活動を正確に実行できるように、UIのグラフィカル要素を正しく識別することは、技術的に大きな課題を呈する。したがって、グラフィカル要素を識別して選択するための改善されたアプローチが有益であり得る。
本発明の特定の実施形態は、現在のRPA技術によってまだ十分に特定されていない、評価されていない、または解決されていない本分野における問題およびニーズのソリューションを提供し得る。例えば、本発明のいくつかの実施形態は、RPAのためのグラフィカル要素検索技術の選択、アンカーおよびターゲットのためのファジー論理選択、ならびに/または階層的グラフィカル要素検出に関する。
一実施形態では、コンピュータ実装方法は、RPAデザイナアプリケーションにより、設計時に自動化を行うアプリケーションのUIまたはライブアプリケーションのUIの一部もしくは全部の画像内のターゲットUI要素を指定することを含む。コンピュータ実装方法はまた、RPAデザイナアプリケーションにより、設計時に1または複数の検索アルゴリズムの選択を受信し、RPAデザイナアプリケーションによって、設計時に選択された1または複数の検索アルゴリズムを実行するようにRPAワークフローのアクティビティを構成することを含む。
別の実施形態では、RPAワークフローのアクティビティに関連付けられたターゲットUI要素を識別するためのコンピュータ実装方法は、RPAワークフローを実装するRPAロボットによって、ターゲットUI要素を識別するために、実行時にターゲットUI要素のセレクタ検索を実行することを含む。ターゲットUI要素が見つからない場合、コンピュータ実装方法は、RPAロボットによって、ターゲットUI要素を特定するために、ファジーセレクタ検索、ターゲットおよびアンカー検索、ファジーターゲットおよびアンカー検索、画像マッチング、テキストマッチング、CVマッチング、またはそれらの組み合わせを実行することを含む。コンピュータ実装方法はまた、RPAワークフローのアクティビティに基づいて、RPAロボットによって識別されたターゲットUI要素との対話を実行することを含む。
さらに別の実施形態では、RPAワークフローのアクティビティに関連付けられたターゲットUI要素を識別するためのコンピュータ実装方法は、RPAワークフローを実装するように構成されたRPAロボットによって、実行時に、ターゲットUI要素のための、セレクタ検索と、ファジーセレクタ検索、ターゲットおよびアンカー検索、ファジーターゲットおよびアンカー検索、画像マッチング、テキストマッチング、ならびにCVマッチングのうちの少なくとも1つとを実行することを含む。コンピュータ実装方法はまた、RPAロボットによって、検証スコアに基づいて、セレクタ検索と、ファジーセレクタ検索、ターゲットおよびアンカー検索、ファジーターゲットおよびアンカー検索、画像マッチング、テキストマッチング、ならびにCVマッチングのうちの少なくとも1つとから最適な結果を選択して、ターゲットUI要素を識別することを含む。コンピュータ実装方法はさらに、RPAワークフローのアクティビティに基づいて、RPAロボットによって識別されたターゲットUI要素との対話を実行することを含む。
本発明の特定の実施形態の利点が容易に理解されるように、上記で簡単に説明した本発明のより特定の説明は、添付の図面に図示されている特定の実施形態を参照して描写される。これらの図面は、本発明の典型的な実施形態のみを描いており、したがって、その範囲を限定するものとは考えられないことが理解されるべきであるが、本発明は、以下の添付の図面を使用することにより、さらなる特定および詳細をもって描写され、説明されるであろう。
本発明の実施形態による、ロボティックプロセスオートメーション(RPA)システムを示すアーキテクチャ図である。
本発明の実施形態による、展開したRPAシステムを示すアーキテクチャ図である。
本発明の実施形態による、デザイナ、アクティビティ、およびドライバの間の関係を示すアーキテクチャ図である。
本発明の実施形態による、RPAシステムを示すアーキテクチャ図である。
本発明の実施形態による、RPA用のグラフィカル要素検索を行うように構成されたコンピューティングシステムを示すアーキテクチャ図である。
本発明の実施形態による、例示的なUIツリーを示す。
本発明のいくつかの実施形態による、ファジーマッチングを用いたUI要素識別のためのターゲットおよびアンカーを選択するプロセスを説明するフローチャートである。
本発明の実施形態による、RPAデザイナアプリケーションにおけるターゲットおよびアンカーの選択を説明するスクリーンショットである。
本発明の実施形態による、RPAデザイナアプリケーションのターゲット選択オプションを示すスクリーンショットである。
本発明の実施形態による、RPAデザイナアプリケーションにおけるファジーセレクタの一致を説明するスクリーンショットである。
本発明の実施形態による、RPAのためのマルチアンカリングの例を示す。
本発明の実施形態による、RPAのための別のマルチアンカリングの例を示す。
本発明の実施形態による、階層化されたターゲットUI要素の識別およびRPAロボットアクティビティの実行のためのプロセスを説明するフローチャートである。
本発明の実施形態による、RPAのためのアンカーおよび/またはターゲットのためのファジー論理選択のためのプロセスを説明するフローチャートである。
本発明の実施形態による、ターゲットUI要素を検索するための1または複数以上の検索方法を構成するためのプロセスを説明するフローチャートである。
本発明の実施形態による、ターゲットUI要素を検索し、RPAワークフローのアクティビティを実装するためのプロセスを示すフローチャートである。
別段の記載がない限り、類似の参照文字は、添付の図面全体で一貫して対応する特徴を示す。
(実施形態の詳細な説明)
いくつかの実施形態は、RPAのためのグラフィカル要素検索技術の選択、アンカーおよびターゲットのためのファジー論理選択、ならびに/または階層的グラフィカル要素検出に関する。本明細書で定義されるように、「ターゲット」は、ロボットが対話しようとするUI内のグラフィカル要素(本明細書では「UI要素」とも呼ばれる)であり、「アンカー」は、ターゲットと1または複数のアンカーとの間の1または複数の関係に基づいてターゲットUI要素をより正確に識別するために使用され得るUI内の別のグラフィカル要素である。ユーザーインターフェースの特定のアクションを自動化するために、RPAロボットは、ターゲットをクリックしたり、テキストを追加したり、メニュー項目を選択したりすることなどによって、ターゲット(例えば、ウィンドウ、ボタン、ドロップダウンリスト、テキストフィールドなど)との対話を求めてもよい。セレクタは、いくつかの実施形態では、ターゲットおよびアンカー(複数可)に対して、それぞれのUI要素およびその親の属性を格納するために使用されてもよい(例えば、拡張可能なマークアップ言語(XML)フラグメント内)。
ターゲットおよびそのアンカー(複数可)に関する情報は、UI記述子に格納されてもよく、いくつかの実施形態では、ターゲットUI要素セレクタ、アンカーセレクタ、ターゲットおよびアンカーのためのコンピュータビジョン(CV)セレクタ、スクリーンイメージキャプチャ(コンテキスト)、UI要素イメージキャプチャ、他のメタデータ(例えば、アプリケーションおよびアプリケーションバージョン)、ならびにそれらの組み合わせなどを含むカプセル化されたデータ/構造フォーマットである。カプセル化されたデータ/構造フォーマットは、プラットフォームへの将来のアップデートで拡張可能であってもよく、上記の定義に限定されない。画面上のUI要素を識別するためのUI記述子としては、本発明の範囲を逸脱することなく、任意の好適なものを使用することができる。
アンカーおよびターゲットのファジー論理選択は、いくつかの実施形態において、UI内のグラフィカル要素を識別するための、より大きな、より段階的な、および/または階層的なプロセスの一部であり得る。例えば、システムは、最初に、スクリーンスクレイピング、ネイティブオペレーティングシステム(OS)機能を使用するなどして、ターゲットUI要素のセレクタを検索してもよい。UI要素のセレクタが少なくとも信頼度しきい値(例えば、97%、85%など)で見つからない場合、UI要素ターゲットのセレクタに潜在的に対応する類似の要素が、ターゲットのファジーマッチングに基づいて検索されてもよく、および/または対応するアンカー(複数可)が、ターゲットをより正確に識別するために使用されてもよい。ファジーマッチングを採用することで、システムは、ターゲットおよび/またはアンカーの1または複数の属性が実行時UIで見つかったものと正確に一致しないターゲットおよび/またはアンカーを識別することができ得る。
幾何学的なマッチングはまた、いくつかの実施形態では、ターゲットとそのそれぞれのアンカー(複数可)との間で採用され得る。ファジーマッチングおよび幾何学的マッチングを組み合わせることで、RPAロボットが対話しようとしている正確なUI要素をより柔軟かつ正確に識別できるようになり得る。実行時に、類似のターゲットを見つけた後、いくつかの実施形態は、ファジーマッチングを使用して、類似のターゲットのテキストが所望のUI要素のテキストと一致するかどうかを、追加的にまたは代替的に検証し得る。これは、例えばRPAロボットが間違ったボタンをクリックするのを防ぐのに役立ち得る。
いくつかの実施形態のファジーマッチングは、基礎となる実行時UI要素の候補が変更された場合に候補を提供してもよい。例えば、解像度の変更、新しいバージョンでのアプリケーションデザインの変更により、またはクライアントのためのカスタマイズなどにより、設計時のUI要素の外観および/または位置が実行時に異なることがある。設計時に示されたものに最も近い候補のリストが取得され、ファジーマッチングを使用して最良の候補が選択され得る。これは、実行時にアンカー(複数可)の特性が変化する場合にも適用され得る。
いくつかの実施形態では、UIの変更に対応する試みのために、幾何学的なマッチングは比較的緩和されていてもよい。例えば、ターゲットとそのアンカーを接続する線セグメント間の角度が多少異なる場合、距離許容差を使用する場合などがあり得る。コンポーネントによっては、設計時の設計選択の問題として、許容差が他よりも厳しくなり得る。例えば、開発者は、狭い範囲または正確な許容差内で、ターゲットを指定されたアンカーの右側に直接配置したいと希望し得る。これは、例えばグリッドレイアウトの場合などに有効であり得る。
いくつかの実施形態では、ターゲットおよびそのアンカー(複数可)のための定義された長方形は設計時に取得され、幾何学的検証ロジックは実行時に構成される。ファジー論理を適用して、潜在的なターゲットのセットおよび潜在的なアンカーのセットを識別した後、例えば、設計時の画面上の相対位置に基づいて、適切なターゲットおよびアンカーを選択し得る。これにより、RPA開発者の設計時のタスクが簡素化され得る。いくつかの実施形態では、ターゲットの特定のセレクタを探すときに、システムが2つ以上のUI要素を正確に区別できない場合は、開発者は、ターゲットおよびアンカー(複数可)の組み合わせが特定の信頼性でその識別を提供するまで、1または複数の追加のアンカーを追加するようにデザイナアプリケーションによって要求され得る。
設計時に、いくつかの実施形態では、ターゲットおよびそのアンカーの複数または全ての組み合わせを試みて、ターゲットを一意に識別するために必要な最小数のアンカー(複数可)を見つけ得る。これは、例えば、検証スコアに基づき得る。いくつかの実施形態では、異なるまたは複数の方法が選択され得る。例えば、セレクタ法、ファジーセレクタ法、マルチアンカー法、画像マッチング法、またはそれらの組み合わせが採用され得る。特定の実施形態では、これらの技術は、デザイナアプリケーションにおけるユーザーの選択に基づいて選択され得る。
これらの方法は、いくつかの実施形態では、順番に適用され得る(本明細書では「階層的アプローチ」とも呼ばれる)。例えば、セレクタ検索方法を最初に試みて、セレクタのツリーのような特性に基づいて要素を一意に識別できるかどうかを確認し得る。セレクタが特定の検証スコアで一意に識別できる場合、階層的アプローチはそこで停止し得る。しかしながら、特定の実施形態では、選択された全ての方法が一度に適用され、最良の結果が選択される。
セレクタベースのアプローチでは候補が見つからない可能性がある。例えば、アプリケーションの新しいバージョン、画面解像度の変更などにより、グラフィック要素の場所および/または外観が変更された場合、セレクタベースのアプローチでは候補が見つからない場合がある。この場合、階層的な実施形態では、ファジーセレクタ技術が採用されてもよい。これは、ファジーマッチングを用いて、ターゲットUI要素、またはターゲットUI要素およびそのアンカー(複数可)を検索し得る。画像マッチングは、ターゲットUI要素の画像が画面上の要素と一致するかどうかを確認するために使用され得る。テキストマッチングは、例えば、ターゲットUI要素のテキストが指定された文字列と正確に一致することが要求し得る。
全ての選択された方法が採用される実施形態では、各方法からの結果は、それぞれの検証スコアを使用して比較され、最良の結果が選択され得る。例えば、選択された方法を用いてターゲットに到達する方法が16通りある場合、検証スコアは最も正確な候補を見つける傾向があろう。例えば、ファジーセレクタ技術により、スコアが1である候補、または残りの候補よりも有意に高いスコア(例えば、0.1以上)を有する候補が提供された場合、この候補が選択されてもよい。
そうでない場合は、ファジーマッチングアプローチは重複した候補を提供することになるであろう。その後、ターゲットを一意に識別するために、ターゲットに対してアンカーが指定され得る。いくつかの実施形態では、アンカーは自動的に追加されてもよいし、または提案されたアンカーがユーザーに提案されてもよい。このアンカーを追加しても、信頼度しきい値超にターゲットを一意に識別することができない場合、少なくとも信頼度しきい値でターゲットが一意に識別されるまで、追加のアンカー(複数可)が追加され得る。
いくつかの実施形態では、ファジーセレクタの精度は、候補をフィルタリングするためにユーザーによって(例えば、スライダ、手動入力などを介して)選択され得る。例えば、0.7未満の候補は、それが選択された精度であれば無視され得る。ユーザーは、ターゲットが一意に識別されるまで、セレクタの精度を微調整してもよい。いくつかの実施形態のテストでは、特に1または複数のアンカーがある場合には、0.7のセレクタ精度値0が良好に機能する傾向がある。開発者は、いくつの組み合わせがターゲットを見つけることができるかを知らされ得る。
ファジーターゲットおよびアンカーは、ウェブコンポーネントの識別子(ID)が新しいページがロードされるたびに生成されることが多い、現代のウェブアプリケーションのいくつかの実施形態では、特に有益であり得る。そのため、与えられたUI要素のIDはその都度変更される傾向があり、それらが静的なIDに依存している場合はセレクタが動作しない場合がある。その後、ファジーターゲットおよびアンカーは、IDの変更にもかかわらず、候補を提供するために使用され得る。いくつかの実施形態では、UIコンポーネントのタグ、タイプ、または役割を変更することは許されないので、実行時にはそれは概して同じままである。
いくつかの実施形態では、開発者がターゲットを編集しようとするとき、開発者は、デザイナアプリケーションの「ターゲットを編集する」オプションをクリックしてもよい。その後、ターゲットは、例えば、上述した方法(複数可)を用いて検証される。開発者が検証を実行すると、いくつかの実施形態では、アプリケーションのUIツリーは1回だけ検索され得る。
例えば、セレクタアプローチのみでターゲットを見つけた場合の検証スコアがウェブページ上で100%であるが、要素IDが変わるなどウェブページが更新されている場合を考えてみる。再度検証を行うと、検証が失敗することがある。これにより、アプリケーションがファジーセレクタのアプローチを試し得る。開発者は、失敗したワークフロー内のアクティビティに行き、「ターゲットの編集」を選択して、構成のどこに問題があるのかを確認し得る。これにより、開発者は、このアクティビティでどのターゲット識別方法を(複数可)試すかを選択することが可能になる。いくつかの実施形態では、セレクタ法は最初に試みられてもよく、これが失敗した場合、アプリケーションは、所望に応じて、画像マッチングおよびテキストマッチングと並行して、ターゲットおよびアンカー(ならびに対応する幾何学的マッチング)のファジー選択を実行してもよい。
幾何学的マッチングでは、実行時に、ターゲット候補およびアンカー候補の各セットは、設計時のマッチング候補と比較され得る。候補は、ドライバ(例えば、図3のドライバ(複数可)340)から取得されてもよく、位置および他の幾何学的特性は、実行時候補のそれと比較されてもよい。幾何学的マッチングは、ターゲットおよびそのアンカー(複数可)のファジーマッチングを使用して発見された静的な位置に対して実行され得る。いくつかの実施形態では、コンピュータビジョンからの候補を使用して幾何学的マッチングアルゴリズムが適用されてもよいが、候補は実行時により共通する傾向がある。一致数を減らすためにファジーセレクタパラメータを変更すること、および/または一致数に上限を設けることは、こうして有益であり得る。そのような実施形態では。
いくつかの実施形態では、ターゲットおよび対応する全てのアンカーのファジーマッチングのために、単一のドライバコールが行われてもよい。ファジー一致の場合、例えばターゲットが1つでアンカーが3つの場合、ドライバへの4回の呼び出しの代わりに、1回の呼び出しで全てのターゲットおよびアンカーの候補を取得し得る。これを達成するために、ドライバはアプリケーションツリーを一度考察して、同じツリー考察でターゲットおよびアンカー(複数可)の候補を取得し得る。このように、ターゲットおよび各アンカーのドライバを順次呼び出す必要はないかもしれない。複数の検索方法(例えば、通常のセレクタ、ファジーセレクタ、ならびにファジーセレクタおよびファジーアンカー(複数可))が採用されている上記の実施形態では、UIツリーは一度解析され、その後、全ての選択された方法が検証されてもよい。
いくつかの属性については、テキストは変更されるべきではなく、ターゲットおよびアンカーの基礎となるファジー論理選択は、この制限を認識していない場合がある。例えば、最初の名前がUI要素のテキストと正確に一致するようにしたい場合がある。ファジー理論は、複数の候補を提供することはあっても、そのような情報と完全に一致するものを提供するものではない。実行時に、いくつかの実施形態では、各候補を取得し、ドライバを呼び出して基礎となるテキストを取得し、次いで適切なオプションが選択されている場合には、完全に一致するかどうかをチェックする。そうでない場合は、候補が捨てられ得る。特定の実施形態では、上記のように、全ての候補のテキストを取得するために、単一のドライバコールが行われてもよい。
ドライバ側に画像を強制することが望ましい場合がある。例えば、ファジーマッチングは、与えられたUI要素を探す際に様々なグラフィカルアイコンを提供し得るが、どのアイコンが正しいアイコンなのかを判断することができない場合がある。検証用のアイコンのテキストがない場合があり得る。
この問題に対処するために、いくつかの実施形態では、開発者が設計時に、実行時の画像の一致が必須であることを示すことができるようになっている。ファジーマッチングにより画像候補が提供された後、画像比較は、次いで正しい候補を一意に識別するために、候補に対して実行され得る。いくつかの実施形態では、ドライバはまた、ユーザーには見えない候補(例えば、ユーザーのディスプレイの円錐台の外にあり、かつ画面上に表示されているものの左、右、上、または下にあるとみなされ得る候補)を提供してもよい。これらの候補は、所望の理論に応じて、マッチングに使用され、または破棄され得よう。
いくつかの実施形態では、ファジーセレクタマッチングには、画像マッチングも実行するオプションが備えられてもよい。高解像度モニタの画像全体の画像マッチングを実行するには、いくつかのコンピューティングシステムを使用して10~15秒かかる場合がある。ファジーセレクタ画像マッチングを使用することで、例えば、与えられたUI要素に関連付けられたはるかに小さい画像をターゲット要素の画像と比較することができ、画像全体を検索するよりもはるかに高速にこれらの候補を提供することができる。
いくつかの実施形態では、複数のタグがファジーセレクタに囲まれていると、処理する理論が遅くなる。いくつかの実施形態は、この処理をより速く実行させるための速度改善が提供する。タグの最適な候補を識別するために、いくつかの実施形態では、アプリケーションのUIツリー全体が解析される。タグごとに解析を実行するのではなく、いくつかの実施形態では、UIツリーを一度解析して、全てのタグのターゲットを見つけ得る。言い換えれば、一旦最初のタグが見つかると、解析は、全てのタグが見つかるまで、2番目のタグ、次いで3番目のタグ、次いで4番目のタグなどを見つけ続けてもよい。
特定の実施形態は、ロボティックプロセスオートメーション(RPA)に採用されてもよい。図1は、本発明の実施形態による、RPAシステム100を示すアーキテクチャ図である。RPAシステム100は、開発者がワークフローを設計して実装することを可能にするデザイナ110を含む。デザイナ110は、アプリケーション統合のためのソリューションを提供するとともに、サードパーティアプリケーション、管理情報技術(IT)タスク、およびビジネスITプロセスを自動化する。デザイナ110は、ビジネスプロセスのグラフィック表現である自動化プロジェクトの開発を容易にし得る。簡単に言えば、デザイナ110は、ワークフローおよびロボットの開発およびデプロイメントを容易にする。
自動化プロジェクトは、本明細書で「アクティビティ」と定義されるワークフローで開発されたカスタムセットのステップ間の実行順序および関係の制御を開発者に与えることにより、ルールベースのプロセスの自動化を可能にする。デザイナ110の実施形態の商業的な一例は、UiPath Studio(商標)である。各アクティビティは、ボタンをクリックする、ファイルを読む、ログパネルに書き込むなどのアクションを含み得る。いくつかの実施形態では、ワークフローは入れ子になっているか、または埋め込まれ得る。
ワークフローのタイプには、シーケンス、フローチャート、(FSM)、および/またはグローバル例外ハンドラなどを含み得るが、これらに限定されない。シーケンスは、ワークフローを乱雑にすることなく、あるアクティビティから別のアクティビティへのフローを可能にする、線形プロセスに特に適し得る。フローチャートは、特により複雑なビジネスロジックに適し得、複数の分岐ロジックオペレータを介して、より多様な方法で意思決定の統合およびアクティビティの接続を可能にする。FSMは、大規模なワークフローに特に適し得る。FSMは、条件(すなわち、遷移)またはアクティビティによりトリガされる有限の数の状態をそれらの実行中に使用し得る。グローバル例外ハンドラは、実行エラーに遭遇したときのワークフローの動作を決定したり、プロセスをデバッグしたりするのに特に適し得る。
ワークフローがデザイナ110内で開発されると、ビジネスプロセスの実行は、コンダクタ120によって調整され、デザイナ110内で開発されたワークフローを実行する1または複数のロボット130を調整する。コンダクタ120の実施形態の商業的な一例は、UiPath Orchestrator(商標)である。コンダクタ120は、環境におけるリソースの生成、監視、およびデプロイメントの管理を容易にする。コンダクタ120は、サードパーティのソリューションおよびアプリケーションとの統合ポイント、または統合ポイントの1つとして動作し得る。
コンダクタ120は、全てのロボット130を管理し得、ロボット130を集中ポイントから接続して実行する。管理され得るロボット130のタイプには、アテンディッドロボット132、アンアテンディッドロボット134、開発ロボット(アンアテンディッドロボット134と同様であるが、開発およびテストの目的で使用される)、および非生産ロボット(アテンディッドロボット132と同様であるが、開発およびテストの目的で使用される)が含まれるが、これらに限定されない。アテンディッドロボット132は、ユーザーイベントによりトリガされてもよいし、自動的に発生するようにスケジュールされてもよく、同じコンピューティングシステム上で人と並んで動作し得る。アテンディッドロボット132は、集中プロセスデプロイメントおよびロギング媒体のためのコンダクタ120とともに使用され得る。アテンディッドロボット132は、人のユーザーが様々なタスクを達成するのを支援してもよく、ユーザーイベントによりトリガされてもよい。いくつかの実施形態では、プロセスは、このタイプのロボット上でコンダクタ120から開始することができず、および/またはそれらはロックされた画面の下で実行することができない。特定の実施形態では、アテンディッドロボット132は、ロボットトレイからまたはコマンドプロンプトからのみ起動され得る。アテンディッドロボット132は、いくつかの実施形態では、人の監督下で動作することが好ましい。
アンアテンディッドロボット134は、仮想環境または物理マシン上で無人で動作し、多くのプロセスを自動化することができる。アンアテンディッドロボット134は、リモート実行、監視、スケジューリング、および作業キューのサポートの提供を担当し得る。全てのロボットタイプのためのデバッグは、いくつかの実施形態では、デザイナ110から実行され得る。アテンディッドロボットおよびアンアテンディッドロボットの両方は、メインフレーム、ウェブアプリケーション、VM、エンタープライズアプリケーション(例えば、SAP(登録商標)、SalesForce(登録商標)、Oracle(登録商標)などによって生成されたもの)、およびコンピューティングシステムアプリケーション(例えば、デスクトップおよびラップトップアプリケーション、モバイル装置アプリケーション、ウェアラブルコンピュータアプリケーションなど)を含むが、これらに限定されない様々なシステムおよびアプリケーションを自動化し得る。
コンダクタ120は、プロビジョニング、デプロイメント、バージョニング、構成、キューイング、監視、ロギング、および/または相互接続性の提供を含むがこれらに限定されない様々な能力を有し得る。プロビジョニングは、ロボット130とコンダクタ120(例えば、ウェブアプリケーション)との間の接続を作成し、維持することを含み得る。デプロイメントは、実行のために割り当てられたロボット130へのパッケージバージョンの正しい配信を保証することを含み得る。バージョニングは、いくつかの実施形態では、いくつかのプロセスまたは構成の固有のインスタンスの管理を含んでもよい。構成は、ロボット環境およびプロセス構成のメンテナンスおよび配信を含み得る。キューイングは、キューおよびキュー項目の管理を提供することを含み得る。監視は、ロボットの識別データを追跡し、ユーザーの権限を維持することを含み得る。ロギングは、データベース(例えば、SQLデータベース)および/または別のストレージメカニズム(例えば、大規模なデータセットを格納し、迅速にクエリを実行する能力を提供するElasticSearch(登録商標)へのログの保存およびインデックス作成を含み得る。コンダクタ120は、サードパーティのソリューションおよび/またはアプリケーションのための通信の集中点として動作することにより、相互接続性を提供し得る。
ロボット130は、デザイナ110で構築されたワークフローを実行する実行エージェントである。ロボット(複数可)130のいくつかの実施形態の1つの商業的な例は、UiPath Robots(商標)である。いくつかの実施形態では、ロボット130は、デフォルトで、Microsoft Windows(登録商標)Service Control Manager(SCM)管理サービスをインストールする。その結果、このようなロボット130は、ローカルシステムアカウントの下でインタラクティブなWindows(登録商標)セッションを開くことができ、Windows(登録商標)サービスの権利を有し得る。
いくつかの実施形態では、ロボット130は、ユーザーモードで設置され得る。このようなロボット130については、所定のロボット130が設置されているユーザーと同じ権利を有することを意味する。この特色はまた、各マシンを最大限に全活用することを保証する高密度(HD)ロボットにも利用可能であり得る。いくつかの実施形態では、いずれかのタイプのロボット130は、HD環境で構成され得る。
いくつかの実施形態におけるロボット130は、複数のコンポーネントに分割され、それぞれが特定の自動化タスクに特化されている。いくつかの実施形態におけるロボットコンポーネントは、SCM管理ロボットサービス、ユーザーモードロボットサービス、エグゼキュータ、エージェント、およびコマンドラインを含むが、これらに限定されない。SCM管理ロボットサービスは、Windows(登録商標)セッションを管理および監視し、コンダクタ120と実行ホスト(すなわち、ロボット130が実行されるコンピューティングシステム)との間のプロキシとして動作する。これらのサービスは、ロボット130の資格情報を任されて管理する。コンソールアプリケーションは、ローカルシステム下のSCMによって起動される。
いくつかの実施形態におけるユーザーモードロボットサービスは、Windows(登録商標)セッションを管理および監視し、コンダクタ120と実行ホストとの間のプロキシとして動作する。ユーザーモードのロボットサービスは、ロボット130の資格情報を任されて管理し得る。SCM管理ロボットサービスがインストールされていない場合、Windows(登録商標)アプリケーションが自動的に起動され得る。
エグゼキュータは、Windows(登録商標)セッションの下で与えられたジョブを実行し得る(つまり、ワークフローを実行し得る。エグゼキュータは、モニタ毎のドットパーインチ(DPI)設定を意識し得る。エージェントは、システムトレイウィンドウに利用可能なジョブを表示するWindows(登録商標) Presentation Foundation(WPF)アプリケーションであり得る。エージェントはサービスのクライアントとなり得る。エージェントは、ジョブの開始または停止、設定の変更を依頼し得る。コマンドラインはサービスのクライアントである。コマンドラインは、ジョブの開始を要求し、その出力を待つことができるコンソールアプリケーションである。
上で説明したように、ロボット130のコンポーネントが分割されていることは、開発者、サポートユーザー、およびコンピューティングシステムが、各コンポーネントが何を実行しているかをより容易に実行し、識別し、および追跡するのに役立つ。この方法では、エグゼキュータとサービスに異なるファイアウォールルールを設定するなど、コンポーネントごとに特別な動作を構成し得る。エグゼキュータは常に、いくつかの実施形態では、モニタごとのDPI設定を認識し得る。その結果、ワークフローは、ワークフローが作成されたコンピューティングシステムの構成に関係なく、いずれかのDPIで実行し得る。また、いくつかの実施形態では、デザイナ110からのプロジェクトは、ブラウザのズームレベルに依存しないようにし得る。DPIを認識していないまたは意図的に認識していないとマークされているアプリケーションの場合、いくつかの実施形態ではDPIを無効にし得る。
図2は、本発明の実施形態による、展開したRPAシステム200を示すアーキテクチャ図である。いくつかの実施形態では、RPAシステム200は、図1のRPAシステム100であってもよく、またはその一部であってもよい。クライアント側、サーバー側、またはその両方が、本発明の範囲から逸脱することなく、いずれかの所望の数のコンピューティングシステムを含むことができることに留意すべきである。クライアント側では、ロボットアプリケーション210は、エグゼキュータ212、エージェント214、およびデザイナ216を含む。しかし、いくつかの実施形態では、デザイナ216は、コンピューティングシステム210上で実行されていなくてもよい。エグゼキュータ212はプロセスを実行する。図2に示すように、複数のビジネスプロジェクトが同時に実行され得る。エージェント214(例えば、Windows(登録商標)サービス)は、本実施形態では、全てのエグゼキュータ212のための単一の接続ポイントである。この実施形態における全てのメッセージは、コンダクタ230に記録され、コンダクタ230は、データベースサーバー240、インデクササーバー250、またはその両方を介して、それらをさらに処理する。図1に関して上述したように、エグゼキュータ212は、ロボットコンポーネントであり得る。
いくつかの実施形態では、ロボットは、マシン名とユーザー名との間の関連付けを表す。ロボットは、複数のエグゼキュータを同時に管理し得る。同時に実行される複数の対話型セッションをサポートするコンピューティングシステム(Windows(登録商標)Server 2012など)では、複数のロボットが同時に実行され得、それぞれが一意のユーザー名を使用して別々のWindows(登録商標)セッションで実行され得る。これは、上記のHDロボットと呼ばれる。
エージェント214はまた、ロボットの状態を送信し(例えば、ロボットがまだ機能していることを示す「ハートビート」メッセージを定期的に送信する)、実行されるパッケージの必要なバージョンをダウンロードすることにも責任を負う。エージェント214とコンダクタ230との間の通信は、いくつかの実施形態では、常にエージェント214によって開始される。通知シナリオでは、エージェント214は、後にコンダクタ230によってロボットにコマンド(例えば、開始、停止など)を送信するために使用されるWebSocketチャネルを開いてもよい。
サーバー側には、プレゼンテーション層(ウェブアプリケーション232、オープンデータプロトコル(OData)代表状態転送(REST)アプリケーションプログラミングインターフェース(API)エンドポイント234、通知および監視236)、サービス層(API実装/ビジネスロジック238)、永続層(データベースサーバー240、インデクササーバー250)が含まれる。コンダクタ230は、ウェブアプリケーション232、OData REST APIエンドポイント234、通知および監視236、ならびにAPI実装/ビジネスロジック238を含む。いくつかの実施形態では、ユーザーがコンダクタ230のインターフェース(例えば、ブラウザ220を介して)で実行するほとんどのアクションは、様々なAPIを呼び出すことによって実行される。このような動作は、本発明の範囲を逸脱することなく、ロボット上でのジョブの起動、キュー内のデータの追加/削除、無人で実行するジョブのスケジューリングなどを含み得るが、これらに限定されない。ウェブアプリケーション232は、サーバープラットフォームのビジュアル層である。この実施形態では、ウェブアプリケーション232は、ハイパーテキストマークアップ言語(HTML)およびジャバスクリプト(JS)を使用する。しかし、本発明の範囲を逸脱することなく、いずれかの所望のマークアップ言語、スクリプト言語、または他のいずれかのフォーマットを使用し得る。ユーザーは、コンダクタ230を制御するための様々な動作を実行するために、本実施形態ではブラウザ220を介してウェブアプリケーション232からのウェブページと対話する。例えば、ユーザーは、ロボットグループを作成し、ロボットへのパッケージの割り当てを行い、ロボット毎および/またはプロセス毎のログを解析し、ロボットを起動しおよび停止し得る。
ウェブアプリケーション232に加えて、コンダクタ230は、OData REST APIエンドポイント234を公開するサービス層も含む。しかし、本発明の範囲を逸脱することなく、他のエンドポイントが含まれていてもよい。REST APIは、ウェブアプリケーション232とエージェント214の両方によって消費される。エージェント214は、本実施形態では、クライアントコンピュータ上の1または複数のロボットのスーパーバイザである。
本実施形態のREST APIは、構成、ロギング、監視、およびキューイング機能をカバーする。構成エンドポイントは、いくつかの実施形態では、アプリケーションのユーザー、権限、ロボット、アセット、リリース、および環境を定義し、構成するために使用されてもよい。ロギングRESTエンドポイントは、例えば、エラー、ロボットによって送信された明示的なメッセージ、およびその他の環境固有の情報など、様々な情報をログに記録するために使用され得る。デプロイメントRESTエンドポイントは、コンダクタ230においてジョブ開始コマンドが使用された場合に実行されるべきパッケージのバージョンを問い合わせるためにロボットによって使用されてもよい。キューイングRESTエンドポイントは、キューへのデータの追加、キューからのトランザクションの取得、トランザクションのステータスの設定など、キューおよびキューアイテムの管理を担ってもよい。
RESTエンドポイントの監視は、ウェブアプリケーション232およびエージェント214を監視してもよい。通知および監視API236は、エージェント214の登録、エージェント214への構成設定の配信、およびサーバーとエージェント214との間の通知の送受信に使用されるRESTエンドポイントであってもよい。通知および監視API236は、いくつかの実施形態では、WebSocket通信を使用してもよい。
永続層は、本実施形態では、一対のサーバーデータベースサーバー240(例えば、SQLサーバー)およびインデクササーバー250-を含む。本実施形態におけるデータベースサーバー240は、ロボット、ロボットグループ、関連するプロセス、ユーザー、役割、スケジュールなどの構成を格納する。この情報は、いくつかの実施形態では、ウェブアプリケーション232を介して管理される。データベースサーバー240は、キューおよびキューアイテムを管理してもよい。いくつかの実施形態では、データベースサーバー240は、ロボットによって記録されたメッセージを(インデクササーバー250に加えて、またはインデクササーバー250に代えて)格納してもよい。
いくつかの実施形態では任意であるが、インデクササーバー250は、ロボットによって記録された情報を保存し、インデックスを作成する。特定の実施形態では、インデクササーバー250は、構成設定を介して無効化されてもよい。いくつかの実施形態では、インデクササーバー250は、オープンソースプロジェクトの全文検索エンジンであるElasticSearch(登録商標)を使用する。ロボットによって記録されたメッセージ(例えば、ログメッセージまたはライン書き込みのようなアクティビティを使用して)は、ロギングRESTエンドポイント(複数可)を介してインデクササーバー250に送信されてもよく、そこで将来の利用のためにそれらはインデックス化される。
図3は、本発明の実施形態による、デザイナ310、アクティビティ320、330、およびドライバ340の間の関係300を示すアーキテクチャ図である。以上のように、開発者は、デザイナ310を用いて、ロボットによって実行されるワークフローを開発する。ワークフローは、ユーザー定義のアクティビティ320およびUI自動化アクティビティ330を含んでもよい。いくつかの実施形態では、画像中の非テキストの視覚的コンポーネントを識別することができ、これは、本明細書ではコンピュータビジョン(CV)と呼ばれる。このようなコンポーネントに関連するいくつかのCVアクティビティは、クリック、タイプ、テキストを取得、ホバー、要素の有無を検出、スコープの更新、ハイライトなどを含むが、これらに限定されない。いくつかの実施形態では、クリックは、例えば、CV、光学的文字認識(OCR)、ファジーテキストマッチング、およびマルチアンカーを使用して要素を識別し、それをクリックする。タイプは、上記および要素内のタイプを用いて要素を識別してもよい。テキストの取得は、特定のテキストの場所を特定し、OCRを使用してそれをスキャンし得る。ホバーは、要素を識別し、その上にホバーし得る。要素の有無の検出は、上述した技術を用いて、画面上に要素の有無を検出するかどうかを確認し得る。いくつかの実施形態では、デザイナ310に実装され得る数百または数千でさえのアクティビティが存在してもよい。しかし、本発明の範囲を逸脱することなく、いずれかの数および/またはアクティビティのタイプを利用することができる。
UI自動化アクティビティ330は、低レベルのコード(例えば、CVアクティビティ)で記述され、UI層を介したアプリケーションとの対話を促進する特別な低レベルのアクティビティのサブセットである。特定の実施形態では、UI自動化アクティビティ300は、例えば、ウィンドウメッセージなどを介したユーザー入力をシミュレートしてもよい。UI自動化アクティビティ330は、ロボットが所望のソフトウェアと対話することを可能にするドライバ340を介して、これらの対話を促進する。例えば、ドライバ340は、OSドライバ342、ブラウザドライバ344、VMドライバ346、エンタープライズアプリケーションドライバ348などを含んでもよい。
ドライバ340は、フックを探したり、キーを監視したりするなど、低レベルでOSと対話してもよい。それらは、Chrome(登録商標)、IE(登録商標)、Citrix(登録商標)、SAP(登録商標)などとの統合を促進してもよい。例えば、「クリック」アクティビティは、ドライバ340を介して、これらの異なるアプリケーションにおいて同じ役割を果たす。
図4は、本発明の実施形態による、RPAシステム400を示すアーキテクチャ図である。いくつかの実施形態では、RPAシステム400は、図1および/または図2のRPAシステム100および/または200であってもよいし、それを含んでもよい。RPAシステム400は、ロボットを実行する複数のクライアントコンピューティングシステム410を含む。コンピューティングシステム410は、その上で実行されるウェブアプリケーションを介してコンダクタコンピューティングシステム420と通信することができる。コンダクタコンピューティングシステム420は、順番に、データベースサーバー430および任意のインデクササーバー440と通信することができる。
図1および図3に関して、これらの実施形態ではウェブアプリケーションが使用されているが、本発明の範囲から逸脱することなく、いずれかの適切なクライアントおよび/またはサーバーソフトウェアを使用することができることに留意すべきである。例えば、コンダクタは、クライアントコンピューティングシステム上で、非ウェブベースのクライアントソフトウェアアプリケーションと通信するサーバーサイドアプリケーションを実行してもよい。
図5は、本発明の実施形態による、RPA用のグラフィカル要素検索を行うように構成されたコンピューティングシステム500を示すアーキテクチャ図である。いくつかの実施形態では、コンピューティングシステム500は、本明細書に描かれたおよび/または記載された1または複数のコンピューティングシステムであってもよい。コンピューティングシステム500は、情報を通信するためのバス505または他の通信機構と、情報を処理するためのバス505に結合されたプロセッサ(複数可)510とを含む。プロセッサ(複数可)510は、中央処理ユニット(CPU)、特定用途集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、グラフィックスプロセッシングユニット(GPU)、それらの複数のインスタンス、および/またはそれらのいずれかの組み合わせを含む、いずれかのタイプの一般的または特定用途向けプロセッサであり得る。プロセッサ(複数可)510はまた、複数の処理コアを有してもよく、コアの少なくとも一部は、特定の機能を実行するように構成され得る。いくつかの実施形態では、複数並列処理が使用されてもよい。特定の実施形態では、少なくとも1つのプロセッサ(複数可)510は、生物学的ニューロンを模倣する処理要素を含むニューロモーフィック回路であり得る。いくつかの実施形態では、ニューロモーフィック回路は、フォンノイマンコンピューティングアーキテクチャの典型的なコンポーネントを必要としない場合がある。
コンピューティングシステム500は、プロセッサ(複数可)510によって実行される情報および命令を格納するためのメモリ515をさらに含む。メモリ515は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリ、キャッシュ、磁気ディスクもしくは光ディスクなどの静的記憶装置、または他のタイプの非一時的なコンピュータ読み取り可能な媒体、あるいはそれらの組み合わせのいずれかの組み合わせで構成され得る。非一時的なコンピュータ読み取り可能な媒体は、プロセッサ(複数可)510によってアクセス可能ないずれかの利用可能な媒体であってもよく、揮発性媒体、不揮発性媒体または両方などを含み得る。また、媒体は、取り外し可能なもの、取り外し不可能なもの、または両方であってもよい。
さらに、コンピューティングシステム500は、無線および/または有線接続を介して通信ネットワークへのアクセスを提供するために、トランシーバなどの通信装置520を含む。いくつかの実施形態では、通信装置520は、周波数分割多元接続(FDMA)、シングルキャリアFDMA(SC-FDMA)、時分割多元接続(TDMA)、符号分割多元接続(CDMA)、直交周波数分割多重方式(OFDM)、直交周波数分割多元接続(OFDMA)、移動体用グローバルシステム(GSM:Global System for Mobile)通信、汎用パケット無線サービス(GPRS:General Packet Radio Service)、ユニバーサル移動体通信システム(UMTS:Universal Mobile Telecommunications System)、cdma2000、広帯域CDMA(W-CDMA:Wideband CDMA)、高速ダウンリンクパケットアクセス(HSDPA:High-Speed Downlink Packet Access)、高速アップリンクパケットアクセス(HSUPA:High-Speed Uplink Packet Access)、高速パケットアクセス(HSPA:High-Speed Packet Access)、ロングタームエボリューション(LTE:Long Term Evolution)、LTEアドバンスト(LTE-A:LTE Advanced)、802.11x、Wi-Fi、Zigbee、超広帯域無線(UWB:Ultra-WideBand)、802.16x、802.15、Home Node-B(HnB)、Bluetooth、無線IDタグ(RFID:Radio Frequency Identification)、IrDA(Infrared Data Association)、近距離無線通信(NFC:Near-Field Communications)、第5世代(5G)、New Radio(NR)、それらのいずれかの組み合わせ、および/または本発明の範囲から逸脱することなく、いずれかの他の現在存在するまたは将来実装される通信標準および/またはプロトコルを使用するように構成され得る。いくつかの実施形態では、通信装置520は、本発明の範囲から逸脱することなく、単数のアンテナ、アレイ状のアンテナ、フェーズドアンテナ、スイッチドアンテナ、ビームフォーミングアンテナ、ビームステアリングアンテナ、それらの組み合わせ、および/またはいずれかの他のアンテナ構成である1または複数のアンテナを含み得る。
プロセッサ(複数可)510は、バス505を介して、プラズマディスプレイ、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、電界放出ディスプレイ(FED)、有機発光ダイオード(OLED)ディスプレイ、フレキシブルOLEDディスプレイ、フレキシブル基板ディスプレイ、プロジェクションディスプレイ、4Kディスプレイ、高精細ディスプレイ、Retina(登録商標)ディスプレイ、IPS(In-Plane Switching)ディスプレイ、またはユーザーに情報を表示するためのいずれかの他の適切なディスプレイなどのディスプレイ525にさらに結合されている。ディスプレイ525は、抵抗方式、静電容量方式、表面弾性波(SAW)静電容量方式、赤外線方式、光学イメージング方式、分散信号方式、音響パルス認識方式、フラストレート全内部反射方式などを用いて、タッチ(ハプティック)ディスプレイ、3次元(3D)タッチディスプレイ、マルチ入力タッチディスプレイ、マルチタッチディスプレイなどとして構成されていてもよい。本発明の範囲を逸脱することなく、いずれかの好適な表示装置およびハプティックI/Oを使用することができる。
コンピュータマウス、タッチパッドなどのようなキーボード530およびカーソル制御装置535は、ユーザーがコンピューティングシステム500とインターフェースすることを可能にするために、バス505にさらに結合されている。しかしながら、特定の実施形態では、物理的なキーボードおよびマウスが存在しない場合があり、ユーザーは、ディスプレイ525および/またはタッチパッド(図示せず)のみを介してデバイスと対話することができる。入力デバイスの種類および組み合わせは、設計の選択の問題として使用され得る。特定の実施形態では、物理的な入力装置および/またはディスプレイは存在しない。例えば、ユーザーは、コンピューティングシステム500と通信している別のコンピューティングシステムを介してリモートでコンピューティングシステム500と対話してもよいし、コンピューティングシステム500は自律的に動作してもよい。
メモリ515は、プロセッサ(複数可)510によって実行されたときに機能を提供するソフトウェアモジュールを格納する。モジュールは、コンピューティングシステム500のためのオペレーティングシステム540を含む。モジュールはさらに、本明細書に記載されたプロセスの全部もしくは一部またはその派生物を実行するように構成されたサーチモジュール545を含む。コンピューティングシステム500は、付加的な機能を含む1または複数の付加的な機能モジュール550を含み得る。
当業者であれば、「システム」は、本発明の範囲から逸脱することなく、サーバー、組み込みコンピューティングシステム、パーソナルコンピュータ、コンソール、パーソナルデジタルアシスタント(PDA)、携帯電話、タブレットコンピューティングデバイス、量子コンピューティングシステム、または他のいずれかの適切なコンピューティングデバイス、またはデバイスの組み合わせとして具現化され得ることを理解するであろう。上述した機能を「システム」によって実行されるものとして提示することは、何ら本発明の範囲を限定することを意図するものではなく、本発明の多くの実施形態の一例を提供することを意図するものである。実際、本明細書に開示された方法、システム、および装置は、クラウドコンピューティングシステムを含むコンピューティング技術と整合性のあるローカライズされた形態および分散された形態で実装されてもよい。
本明細書で説明するシステム特色のいくつかは、実装の独立性をより強調するために、モジュールとして提示されていることに留意すべきである。例えば、モジュールは、カスタムの非常に大規模な集積(VLSI)回路またはゲートアレイ、ロジックチップ、トランジスタ、または他の個別部品のような既製の半導体を含むハードウェア回路として実装され得る。また、モジュールは、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブルロジック装置、グラフィックス処理ユニットなどのプログラマブルハードウェア装置に実装され得る。
モジュールはまた、様々なタイプのプロセッサによって実行されるためのソフトウェアに少なくとも部分的に実装され得る。例えば、実行可能コードの識別された単位は、例えば、オブジェクト、プロシージャ、または関数として編成されていてもよいコンピュータ命令の1または複数の物理的または論理的なブロックを含み得る。それにもかかわらず、実行可能な識別されたモジュールは、物理的に一緒に配置されている必要はなく、論理的に結合されたときにモジュールを含み、モジュールのために述べられた目的を達成するために、異なる場所に格納された別々の命令を含んでいてもよい。さらに、モジュールは、例えば、ハードディスクドライブ、フラッシュ装置、RAM、テープのようなコンピュータ読み取り可能な媒体、および/または本発明の範囲から逸脱することなくデータを格納するために使用される他のいずれかのそのような非一時的なコンピュータ読み取り可能な媒体に格納されていてもよい。
実際、実行可能コードのモジュールは、単一の命令であってもよいし、多数の命令であってもよいし、さらには、複数の異なるコードセグメント、異なるプログラム間、および複数のメモリ装置間に分散されていてもよい。同様に、操作データは、モジュール内で識別され、ここで示されてもよく、いずれかの適切なタイプのデータ構造体内でいずれかの適切な形態で具現化され、組織化され得る。操作データは、単一のデータセットとして収集されてもよいし、または異なる記憶装置にわたり異なる場所に分散されていてもよく、少なくとも部分的には、単にシステムまたはネットワーク上の電子信号として存在していてもよい。
最近のコンピューティングシステムでは、オペレーティングシステムは通常、各ユーザーインターフェースを一般的にUIツリーと呼ばれる階層的なデータ構造として表現する。例示的なUIツリーは、ウェブブラウザアプリケーションによってレンダリングされるウェブページの基礎となるドキュメントオブジェクトモデル(DOM(Document Object Model))を含み得る。図6は、複数のノード602a-kを有する例示的なUIツリー600を示す。いくつかの実施形態では、各ノード602a-kは、UIの一部を表すオブジェクトを含む。例示的なUIでは、ルートノード602aは、UIウィンドウ全体を表してもよい。その子ノード602bおよび602hは、個々のUI要素(例えば、テキストボックス、ラベル、フォームフィールド、ボタンなど)、要素のグループ、それぞれのUIの異なる領域またはブロックなどを表してもよい。図6のノード602bのような中間ノードは、全ての入力フィールド、ラベル、およびボタンを含むフォーム全体を表してもよい。例えば、ノード602bは、HTML文書の<form>または<fieldset>コンテナの内容を表してもよい。中間ノードの別の例は、<div>または<span>のHTMLコンテナの内容を表してもよい。中間ノードのさらに別の例は、文書のヘッダまたはフッタの内容を含む。しかしながら、本発明の範囲から逸脱することなく、任意の好適な表現を用いることができる。602d、602e、602f、602g、および602kなどのエンドノード(本明細書では「リーフノード」とも呼ばれる)は、さらなる子ノードを有しないノードである。エンドノードは、個々のUI要素(ボタン、個々のラベル、個々の入力フィールドなど)を表し得る。ウェブブラウザUIの例では、エンドノードは、個々の画像、ハイパーリンク、テキスト段落などを表し得る。
本明細書では、UIツリーの選択されたノードとその子孫のみからなるノードのセットを、UIツリーの「サブツリー」として記述する。それぞれのサブツリーはさらに、それぞれのサブツリーのルートノードの祖先のサブツリーとみなされる。図6に描かれたUIツリー600において、ノード602f~602g~602h~602j~602kは、ノード602hがノード602aの子孫(子)であるので、ノード602aの例示的なサブツリーを形成する。
RPAロボットによる成功的かつ理想的に曖昧さのない識別を可能にするために、本発明のいくつかの実施形態では、それぞれのUI要素を特徴づける要素IDを使用して各UI要素を表現する。いくつかの実施形態では、要素IDは、UIツリー600内のターゲットノードの位置を示し、ここで、ターゲットノードはそれぞれのUI要素を表す。例えば、要素IDは、ターゲットノード/UI要素を、選択されたノードのサブセットのメンバーとして識別してもよい。ノードの選択されたサブセットは、系図、すなわち、各ノードが別のノードの先祖または子孫のいずれかであるUIツリーを介した下降線を形成することができる。例示的な系図604a~dは、図6に示される。
いくつかの実施形態では、要素IDは、ノードインジケータの順序付けされたシーケンスを含み、シーケンスはUIツリーを介して系図的な経路を追跡し、経路はそれぞれのターゲットノード/UI要素で終わる。各ノードインジケータは、それぞれのUIのオブジェクト階層のメンバーと、それぞれの階層と一致するシーケンス内のその位置を表してもよい。例えば、シーケンスの各メンバーは、前のメンバーの子孫(例えば、子ノード)を表し、次のメンバーを子孫(例えば、子ノード)としてもよい。HTMLの例では、個々のフォームフィールドを表す要素IDは、それぞれのフォームフィールドがHTMLフォームの子であることを示してもよく、その子は、順番にウェブページの特定のセクションなどの子である。系図は、いくつかの実施形態では完全である必要はない。例えば、系図604cは、リーフノードおよびルートノードだけを含むが、それでも、ルートノード602aによって表されるGUIウィンドウ内に表示されるUI要素としてノード602fを識別する。
要素ID610がXMLのバージョンで表現される図6に示されるそのような1つの例では、各個々のノードインジケータはXMLタグを含む。したがって、ノード602dを特徴付ける要素ID610は、最初のタグがGUIウィンドウ(ノード602a)を表し、最後のタグがターゲットノード602d自身(この例ではボタン)を表す一連のタグを含んでもよい。要素ID610の中間タグは、とりわけ、602b、602cなどのノードを表してもよい。各タグは、実装固有の区切り文字(現在の例では、各タグは「<」で始まり「/>」で終わる)でブックエンドされるシーケンスを有する文字の列を含んでいてもよい。図6では、各タグは、属性-値のペアのセットを介して指定され、例えば、とりわけ、それぞれのノードによって表されるUI要素の名前およびタイプを示す。要素ID610の図示されたフォーマットは、非限定的な例としてのみ提供される。ある当業者は、属性-値のペアのリスト以外に、UIツリー内の特定のノードの位置を表現する複数の方法があり得ることを理解するであろう。
実行時に、RPAロボットは、ターゲットUIの実行時インスタンス内(例えば、実行時コンピューティングシステム上で実行されているユーザアプリケーションのインスタンス内)でアクションのオペランド/ターゲットを識別しようとし得る。実際には、オペランドを識別することは、ターゲットUI要素の実行時インスタンス(本明細書では、「実行時間ターゲット」とも呼ばれる)を識別する試みを含み得る。いくつかの実施形態は、それぞれの要素IDに基づいて、および/または、それぞれのUI要素の画像、それぞれのUI要素の横または上に表示されたラベルなどの他の情報に基づいて、このような識別を試みる。要素IDのマッチングは、設計時(例えば、RPAロボットのワークフローが開発されているとき)と実行時の間に、それぞれのUI要素の特徴的ないくつかの特徴が変化している状況では失敗し得る。このような状況を克服するために、いくつかの実施形態では、以下でより詳細に説明するように、要素IDのファジー(部分的な)一致を試みる。
設計時に、ユーザーは、RPAワークフローアクティビティが対話することを意図したターゲットUI要素を選択し得る。セレクタは、いくつかの実施形態では、ターゲットおよびアンカー(複数可)に対して、それぞれのUI要素およびその親(例えば、XMLフラグメント)の属性を格納するために使用されてもよい。セレクタは、UI要素およびその親の属性をXMLフラグメントに格納することで、固定座標識別に関連する問題を克服し得る。UIが静的であるいくつかの実施形態では、セレクタは自動的に生成されてもよいが、いくつかのウェブアプリケーションなどのいくつかのソフトウェアプログラムでは、レイアウトが変化し、揮発性値を有する属性ノードが存在する。これらの変更は容易に予測できない場合があり、これは以前はいくつかのセレクタを手動で生成する必要があった。しかし、いくつかの実施形態では、この問題を克服し得る。
セレクタは、いくつかの実施形態では、以下の構造を有する。
<node_1/><node_2/>...<node_N/>
最後のノードは対象のUI要素を表し、それ以前の全てのノードはその要素の親を表す。<node_1>は通常ルートノードと呼ばれアプリケーションのトップウィンドウを表す。
各ノードは、選択されたアプリケーションの特定のレベルの正しい識別を支援する1または複数の属性を有してもよい。各ノードは、いくつかの実施形態では、以下の形式を有する。
<ui_system attr_name_1=’attr_value_1’ ... attr_name_N=’attr_value_N’/>
全ての属性は、割り当てられた値を有し得、一定の値を有する属性が選択され得る。これは、アプリケーションが起動するたびに属性の値を変更すると、セレクタが関連する要素を正しく識別できなくなる可能性があるからである。しかし、いくつかの実施形態では、ファジーマッチングを採用して、ある程度の不正確さを許容し、柔軟なマッチングを可能にしてもよい。
図7は、本発明のいくつかの実施形態による、ファジーマッチングを用いたUI要素識別のためのターゲットおよびアンカーを選択するプロセス700を説明するフローチャートである。プロセスは、開発者が705でRPAワークフローアクティビティのUI要素を選択することから始まる。例えば、開発者は、ボタンを見つけてそのボタンをクリックしようとするアクティビティのための画面上のボタンを選択してもよい。次に、ドライバ(例えば、ドライバ340)は、ターゲットUI要素のためのファジーセレクタを710で生成する。
いくつかの実施形態では、ファジーターゲットセレクタの生成は、開発者がターゲットUI要素に対するファジーマッチングのためのオプションを選択することに応答して実行される。特定の実施形態では、開発者は、ファジーマッチングのための類似度しきい値を選択してもよい。いくつかの実施形態では、ファジーセレクタは、選択されたUI要素の要素IDを含む。これは、ターゲットUIのソースコード(例えば、HTML)を解析し、属性-値のペアを含むタグのセットを抽出および/または定式化することによって決定され得る。
次に、マッチング精度計算が(例えば、機械学習(ML)モデルを使用して)715で実行され、ドライバによって生成されたファジーターゲットセレクタがUI要素とどれだけよく一致するかを決定する。精度計算が720でしきい値未満(例えば、97%未満、95%未満など)である場合、実行時にターゲットUI要素が所望のように正確に決定され得ない可能性がある。許容可能な精度は、RPAワークフローで達成されるタスク(複数可)によって異なり得る。利用可能なアンカーは、725で決定され、示される。次に、各アンカーの追加に基づく精度の上昇が730で示される。例えば、アンカーを追加したことによる精度の上昇率を表示してもよいし、全体の精度を表示するなどしてもよい。
ファジーアンカー選択(複数可)は、735で開発者から受信され、またはデザイナアプリケーションによって作成され、740でファジーアンカーセレクタ(複数可)がファジーアンカー(複数可)に対して生成される。いくつかの実施形態では、これは、開発者が、それぞれの類似度しきい値を有する1または複数のアンカーに対してファジーマッチングオプションを選択することを含み得る。特定の実施形態では、各アンカーは、それ自身の類似度しきい値を有し得る。いくつかの実施形態では、1または複数のアンカーはファジーアンカーであってもよく、1または複数の他のアンカーはファジーアンカーであり得ない。例えば、あるアンカーに対して、その属性が厳格な許容差に適合することが期待される場合、ファジーマッチングは望ましくない場合がある。特定の実施形態では、デザイナアプリケーションは、しきい値が満たされるか、またはしきい値を超えるまで、1または複数のアンカーを自動的に追加し得る。そのような実施形態では、ステップ725~735は省略されてもよい。
しきい値が720で超過した場合(ステップ720の最初の遭遇時またはアンカー(複数可)の追加後のいずれか)、アクティビティは、745でターゲットおよびアンカー(複数可)のためのファジーセレクタを含むように修正される。これは、いくつかの実施形態では、ファジーセレクタをUI記述子に追加し、そのUI記述子を使用するようにアクティビティを引き起こすことを含んでもよい。マルチアンカーマッチングは、実行時のRPAワークフローアクティビティの実行精度を高めるために、いくつかの実施形態において実行され得る。
アンカーは、ターゲットUI要素を一意に識別するのを助けるために使用され得る他のUI要素である。例えば、UIに複数のテキストフィールドが含まれている場合、テキストフィールドを検索するだけでは、与えられたテキストフィールドを一意に識別するには不十分である。したがって、いくつかの実施形態では、与えられたUI要素を一意に識別するために、追加の情報を探す。テキストフィールドの例を使用すると、「ファーストネーム(First Name)」というラベルの右側に、ファーストネームを入力するためのテキストフィールドが表示される場合があり得る。このファーストネームラベルは、「ターゲット」であるテキストフィールドを一意に識別するのに役立つように、「アンカー」として設定してもよい。
いくつかの実施形態では、ターゲットとアンカーの間の様々な位置および/または幾何学的な関連付けが、ターゲットを一意に識別するために、1つまたは複数の許容差内で使用される可能性がある。例えば、アンカーとターゲットのバウンディングボックスの中心が線セグメントを定義するために使用されてもよい。次いで、この線セグメントは、ターゲット/アンカーペアを使用してターゲットを一意に識別するために、許容差内の特定の長さおよび/または許容差内の傾きを有することが要求され得る。しかしながら、ターゲットおよび/またはアンカーに関連付けられた位置の任意の所望の位置は、本発明の範囲から逸脱することなく、いくつかの実施形態において使用され得る。例えば、線セグメントを描画するための点は、バウンディングボックス特性に関連して識別される、バウンディングボックスの境界上の中央、左上隅、右上隅、左下隅、右下隅、他の任意の位置、バウンディングボックス内の任意の位置、バウンディングボックスの外側の位置内などにあり得る。特定の実施形態では、ターゲットおよび1または複数のアンカーは、幾何学的マッチングのために使用されるそれらのバウンディングボックス内またはバウンディングボックス外の異なる位置を有してもよい。
以上のように、画面上のターゲット要素を一定の信頼性をもって一意に識別するためには、単一のアンカーだけでは必ずしも十分ではない場合がある。例えば、画面上の異なる位置にある「ファーストネーム」というラベルの右側に、ファーストネームを入力するための2つのテキストフィールドが表示されているウェブフォームを考えてみる。この例では、1または複数の追加のアンカーは、所与のターゲットを一意に識別するのに有用であり得る。アンカーとターゲットとの間の幾何学的特性(例えば、許容差を有する線セグメントの長さ、角度、および/または相対位置)は、ターゲットを一意に識別するために使用されてもよい。ユーザーは、ターゲットに対する一致強度がしきい値を超えるまでアンカーを追加し続けることが要求されてもよい。
図8Aは、本発明の実施形態による、RPAデザイナアプリケーション800におけるターゲットおよびアンカーの選択を説明するスクリーンショットである。RPAデザイナアプリケーションは、自動化が実行されるライブアプリケーションの画像810を含む。ドライバは、画像810のUI要素の中の選択可能な要素を検出し(例えば、API呼び出しを介して)、概して画像810の中にそれらを見つける。ターゲットおよびアンカー選択ペイン820は、RPAワークフローアクティビティが対話すべきターゲット812およびターゲット812を特定するのに役立つアンカー814を指定して受け入れるための使用を可能にする。いくつかの実施形態では、複数のアンカーがターゲットに対して選択され得る。ユーザーは、検証ボタン822を使用してターゲット812が一意に識別されることを検証してもよいし、確認ボタン824を使用して機能が正確であることを確認してもよいし、またはキャンセルボタン826を使用してターゲットおよびアンカーの選択をキャンセルしてもよい。
図8Bは、本発明の実施形態による、RPAデザイナアプリケーション800のターゲット選択オプションを示すスクリーンショットである。ここで、ユーザーは、ターゲット812のオプションで設定816を選択している。オプションは、例えば、ユーザーがターゲット812の上にマウスを移動させたときに表示され得る。設定816の選択により、詳細設定ペイン830がターゲット及びアンカー選択ペイン820の下に表示される。
セレクタセクション832は、本実施形態ではターゲット812のセレクタを見つけるために検索されるタグを含む。ファジーセレクタセクション834は、「編集可能なテキスト」という役割が追加されたタグを含む。スライダ835は、セレクタの精度を制御する。特定の実施形態では、ファジーアンカー設定も示されてもよい。なお、開発者は、セレクタセクション832およびファジーセレクタセクション834においても、タグを直接編集してもよい。画像マッチングセクション836は、RPAデザイナアプリケーション800に画像マッチング方法を採用してターゲット812を検索させ、各スライダ837は、画像マッチング精度を制御する。マッチング対象のUI要素の画像は、スライダ837の上にも表示される。
セクション832、834、836に関連付けられたチェックボックスをクリックすると、RPAデザイナアプリケーション800は、ターゲット812を検索する際に、それぞれの方法を適用する。目のアイコンをクリックすると、それぞれのセクション832、834、836の検索アルゴリズムを呼び出し得る。このように、開発者は、与えられたコンポーネントの個々の検索方法をテストして、それらを含めるかどうかを決定してもよい。「検索方法」は、本明細書では「検索アルゴリズム」とも呼ばれる。また、検証ボタン822をクリックすると、本実施形態では、選択された全ての検索戦略を検証する。
図8Cは、本発明の実施形態による、RPAデザイナアプリケーション800のファジーセレクタの一致を示すスクリーンショットである。ファジーセレクタセクション834のそれぞれの目のアイコンをクリックすることにより、「マッチ中」アイコン838がその位置に表示される。次に、RPAデザイナアプリケーション800は、ファジーセレクタマッチングのためのそれぞれの検索方法を採用し、マッチング要素818を画像810に表示する。これらの要素の各々は、タグで定義されているように、編集可能なテキストを有する。このように、与えられたテキストフィールドは、さらなる精緻化をせず、このタグだけに基づいて一意に識別されることはない。
いくつかの実施形態の例示的なマッチング技術は、厳密なマッチングおよび近似マッチングを含むが、これらに限定されない。厳密なマッチングは通常、各属性の実行時間値が設計時間値と正確に一致することを必要とする。近似マッチングは、それぞれの属性の設計時間および実行時間値の間の部分的なマッチングのみを必要とする場合があり、典型的にはテキストの属性(例えば、文字列)に適用される。近似マッチング技術は、正規表現、ワイルドカード、およびファジーマッチングを有するが、これらに限定されない。ファジーマッチングは、本発明のいくつかの実施形態によって以下に詳細に説明される。
ファジーマッチングとは、ターゲット(および潜在的なアンカー(複数可))の設計時間および実行時間値が、それぞれのしきい値(例えば、数値しきい値)によって異なることを許容するマッチング基準を指す。上記の通り、いくつかの実施形態では、所望であれば、異なるしきい値をターゲットおよび各アンカーに適用してもよい。特定の実施形態では、ファジーマッチングしきい値は、潜在的に各属性ごとにスライダによって制御されてもよい。ファジーマッチングは、ターゲットおよび/またはアンカー(複数可)の複数の属性に適用されてもよい。一般性を損なうことなく、2つの属性値の間の類似度/不一致の量を本明細書では「類似度測定値」と呼び、しきい値を本明細書では「類似度しきい値」と呼ぶ。また、しきい値は数値であってもよく、所定の範囲内の値をとる実数を表すものであってもよい。そうでなければ、類似度しきい値は、許容できる不一致の可変量または程度を定量化する。ファジー属性の同じ2つの値は、いくつかの実施形態では、類似度しきい値の1つの値に従って一致し、類似度しきい値の別の値に従って一致しないと考えられてもよい。
他の文字が正確に一致している一方で、2つの文字列が特定の位置/文字だけ異なることが許される他の近似マッチング技術(例えば、正規表現マッチング)とは対照的に、ファジーマッチングは、いくつかの実施形態では、任意の位置/文字が2つの文字列の間で異なることを可能にしてもよい。別の違いは、正規表現およびワイルドカードなどの他の近似マッチング技術では、2つの文字列間の不一致の量は通常制限されないのに対し、ファジーマッチングでは、不一致の量が予め定められた量に制限されることがあるという点である。これは、上記の通り、いくつかの実施形態ではスライダによって制御されてもよい。
当業者であれば、類似度測定は、類似度の量だけでなく、2つの属性値の間の不一致の量を定量化してもよいことを理解するであろう。さらに、様々な実施形態では、類似度しきい値は、不一致の最大量または一致に必要な類似度の最小量を表してもよい。類似度測定は、「文字列メトリック」として知られている文字列間距離に従うなど、様々な方法で表現されてもよい。レベンシュタイン距離として知られている文字列メトリックの一例としては、ある文字列を他の文字列に変換するのに必要な操作の数を決定する。その他の文字列間距離としては、とりわけ、ハミング距離およびジャロ-ウィンクラー距離を含む。
類似度測定値を計算する選択された方法に応じて、類似度しきい値は様々な解釈を有し得る。例えば、類似度しきい値は、2つの文字列の間で異なり得る文字の最大カウント数を示してもよいし、文字の合計カウント数(例えば、結合された文字列の長さ)の割合として計算された不一致の分数の程度を示してもよい。いくつかの実施形態では、類似度しきい値は、0と1の間、0と100の間、7と34の間などの所定の間隔に再スケーリングされてもよい。1つの非限定的な例では、比較的高い類似度しきい値(例えば、1または100%に近い)は、ほぼ完全一致の要件、すなわち、実行時間ターゲットにおけるファジー属性の値が、設計時間ターゲットにおける各属性の値から非常にわずかに逸脱することしか許されないことを示す。一方、類似度しきい値が比較的低い(例えば、0に近い)場合には、それぞれのファジー属性のほぼ全ての値が一致するとみなされる。
いくつかのものは、例えばスライダを使って、設計時に類似度しきい値を調整し得る。いくつかの実施形態は、開発者が、ターゲットまたはアンカーのためのそれぞれのタグのためのファジー類似度しきい値を直接コードすることなどによって、マッチングパラメータを手動でコードすることを可能にし得る。いくつかの実施形態では、同じタグの複数の属性が、ファジーマッチングのために同時に選択されてもよい。異なる属性は、異なる程度に一致させることができる(例えば、ファジー類似度しきい値に異なる値を設定することによって)。次いで、これらの設定は、RPAワークフローの各アクティビティに組み込まれ得る。
いくつかの実施形態では、それぞれの要素IDは、ターゲットおよび/またはアンカー(複数可)のためのファジーマッチングパラメータを含むように変更されてもよい。「ファジーネスフラグ」を使用して、ファジーマッチングのために属性にイヤーマークを付け得る。いくつかの実施形態では、ファジーネスフラグは、ターゲットおよびアンカー(複数可)のファジーマッチングのために選択された属性(複数可)を示し、それぞれの類似度しきい値を設定するために、既存のタグに追加された新しい属性-値のペアのセットを含む。例えば、以下のようなタグを考えてみる。
<wnd app=’java.exe’ cls=’SunAwtFrame’ title=’SwingSet2’
matching:title=’fuzzy’ fuzzylevel:title=’0.8’ />
ここで、元の<wnd />タグに、「マッチング:タイトル(matching:title)」と「ファジーレベル:タイトル(fuzzylevel:title)」という属性が追加された。マッチング:タイトル属性は、現在のタグの「タイトル」属性の値が実行時にファジーマッチングされることを示す「ファジー」という値を有する。ファジーレベル:タイトル属性の値は、開発者によって指定された所望のファジー類似度しきい値(この例では0.8)を示す。当業者であれば、本発明の範囲を逸脱することなく、ファジーマッチングのために選択された属性をイヤーマーキングするファジーネスフラグをコード化する他の多くの方法があることを理解するであろう。ターゲット(複数可)およびアンカー(複数可)の選択は、開発者が達成しようとするタスク(複数可)に応じて、各アクティビティごとに開発者によって行われ得る。設計時段階の完了後、論理はRPAスクリプトの形でスクリプトリポジトリに送信され、および/または他のRPAクライアントに配布されて実行され得る。
上述したように、いくつかの実施形態では、UI要素のターゲットおよびアンカー(複数可)は、ファジーマッチングを用いて識別されたターゲットおよびそのアンカー(複数可)に対して幾何学的マッチングを実行することによって発見される。RPAロボットは、いくつかの実施形態では、ファジーマッチングを実行する、幾何学的マッチングを実行する、またはその両方を実行するために、CVモデルまたはいくつかの他のML/AIモデルに要求を送信してもよい。しかし、いくつかの実施形態では、ファジーマッチングおよび/または幾何学的マッチング機能の一部または全部は、RPAロボットによって実行される。特定の実施形態では、RPAロボットは、モデル(複数可)による解析のために取得された画像またはスクリーンショットを送信し得る。
RPAロボットが対話しようとしているターゲットUI要素がテキストフィールドである場合を考えてみる。テキストフィールドは、空白文字、句読点文字、特殊文字などの一連の区切り文字の間に見られる1または複数の文字を含む1または複数のテキストトークンを含み得る。テキストトークンは、番号(複数可)、日付、電子メールアドレス、統一リソース識別子(URI)、郵便番号などを追加的にまたは代替的に含んでもよい。
ターゲットテキストフィールドは、いくつかの実施形態では、ファジーマッチングを実行した後、信頼度しきい値で一意に識別できない場合がある。ターゲットに関連付けられた1または複数のアンカーは、ファジーマッチングによって識別され得る。集合的に、ファジーマッチングされたターゲットおよびアンカー(複数可)は、1または複数の関係(例えば、幾何学的、位置的、場所的、座標に基づくなど)を有し得る。これらの関係は、いくつかの実施形態では許容差内に制約され得る。特定の実施形態では、ファジーマッチングは、全てのUI要素ではなく、ターゲットおよびアンカー(複数可)うちの1またはサブセットに対して使用される。いくつかの実施形態では、ターゲットおよびそのアンカー(複数可)のそれぞれのファジーマッチングの特性はカスタマイズされ得る。例えば、ターゲットが2つのファジーマッチング属性を有し得、1つのアンカーがファジーマッチングを使用し得ず、別のアンカーが1つのファジーマッチング属性を有し得る。ファジーマッチングUI要素および/またはファジーマッチング属性の任意の組み合わせを、本発明の範囲から逸脱することなく使用し得る。
図9は、本発明の実施形態による、RPAのためのマルチアンカリングの例900を示す。アンカー点X912は、UIに対して相対的に定義された座標、ボタン2 908内またはボタン2 908に近接した位置に対して相対的に定義された座標などを有する。ボタン2 908は、UI内のボタン2 908の寸法を定義するバウンディングボックス(例えば、x、y、幅、高さ)を有し得る。同様に、アンカー点Y914は、UIに対して相対的に定義された座標、ボタン1 906内の位置またはボタン1 906に近接した位置に対して相対的に定義された座標などを有する。いくつかの実施形態では、相対的な関係は、RPAロボットによってUI要素間で自動的に推測され得る。実行時の相対関係の使用は、いくつかの実施形態ではCVモジュールを用いて実行され得る。
ターゲットおよびそのアンカー(複数可)との間の1または複数の関係は、UIまたはアプリケーション領域におけるスケール、1インチあたりのドット数(DPI)などの変化または変動に対する許容差またはしきい値の範囲内で弾性的であってもよい。このような「弾性」は、ウィンドウサイズに基づいてコンテンツをリフローするウェブページのような動的または「流動的」なレイアウトを持つアプリケーションにとって特に望ましい場合がある。弾性は、仮想マシン、リモートマシン、または仮想デスクトップ環境のビデオストリームまたは出力にも有益であり得る。特定の実施形態では、少なくともいくつかの特性(例えば、幾何学的アンカーまたは参照座標または角度)が非弾性であることが望ましい場合がある。例えば、ターゲットと1つのアンカーとの間に描かれたセグメントの距離については許容されないが、そのセグメントと別のセグメントとの間の角度については許容されてもよい。
アンカー点Y914は、ボタン1 906とターゲットテキストフィールド904との間の幾何学的な角度(θ)関係を測定することによって、ウィンドウまたはアプリケーション902内の要素検出のために利用され得る。アンカー点X912およびアンカー点Y914を介したマルチアンカリングは、ウィンドウまたはアプリケーション902内の要素が実質的に異なるか、または自動化開発の間に異なる場合に、実行時にロボットのクラッシュを防止し得る。これは、いくつかの実施形態では、ファジーターゲット、複数のファジーアンカー、およびファジーアンカーUI要素とのその関係、インターフェース内のその位置、関連するテキストラベルなどに基づいてターゲットUI要素を一意に識別するためのCVを使用して達成され得る。
アンカー点X912は、ボタン2 908とターゲットテキストフィールド904との間の距離関係916を決定するために利用され得る。アンカー点Xとフィールド904との間の距離916(例えば、この例では、その中心点からの)は、相対的であっても、絶対的であってもよい。その関係は、OCRの結果を有するCVモジュールによって利用され得る。検出されたUI要素の全てまたはサブセットの結果は、エラーを減らすために、各UI要素の信頼度が備わってもよい。
図10は、本発明の実施形態による、RPAのための別のマルチアンカリングの例1000を示す。UI内のウィンドウまたはアプリケーション1002は、ボタン1 1006およびボタン2 1008と同様に、それぞれテキストフィールド10041-4のラベル1-4を含む。アンカー点X1010がボタン2内に定義され、アンカー点Y1012がボタン1 1006内に定義され、ターゲット点Zがターゲットテキストフィールド1004内(例えば、この例では、その左上隅)に定義される。
アンカー点Y1012とアンカー点X1010は、アンカー点X1010、アンカー点Y1012およびターゲット点Z1016の間の三角関係を解析することにより、ウィンドウまたはアプリケーション1002におけるUI要素の検出に利用され得る。線セグメントは、セグメント1014のように、各点間で決定されてもよい。セグメントの長さ、セグメント間の角度、および許容差は、与えられたターゲットを見つけるために使用され得る。この関係は、いくつかの実施形態では、CVモジュールによって決定または利用されてもよい。
本発明の範囲から逸脱することなく、長方形、N辺多角形、ターゲットUI要素から各アンカーへのセグメントセット(例えば、セグメントは、ターゲットUI要素から各アンカーUI要素への中心を形成する)等の他の幾何学的形状が使用され得ることに留意すべきである。ターゲットUI要素とアンカー(複数可)の間の潜在的な許容差が制限された関係は、実行時にターゲットUI要素を見つけたりまたは識別したりするための指紋、印象、テンプレートなどとして機能し、RPAロボットワークフロー内のアクティビティがそのUI要素と望ましい方法で対話できるようにする。
ファジーマッチングは、Google(商標)クラウドOCR、Microsoft(商標)OCR、Tesseract OCR(商標)などのOCRエンジンによるエラーを補正するために利用され得る。画像または画像の一部は、検出されたテキストおよび/またはグラフィカル要素を提供するために、OCRモジュールおよび/またはCVモジュールに送られてもよい。一例として、ファジーマッチングでは、ラベル1~4がそれぞれ名前のリストに割り当てられ得る。ファジーマッチングでは、「NAM」または「NME」の検出は、「NAME」と論理的に関連付けまたはマッチングされてもよく、および/またはテキストフィールドは、それぞれテキストフィールドのリストに割り当てられてもよい。
本明細書に記載されている例では、アンカーに関連する相対距離のようなしきい値を持つ幾何学的マッチングが、UIのRPAに利用され得る。一例として、UIの画像内の各要素は、信頼度、しきい値、マッチングしきい値、許容度などと関連し得る。しきい値未満の要素に一致する可能性のあるものは破棄され得る。複数のアンカーを使用して、UI要素のための可能な関係適合は、1つまたは複数の要素の偽陽性が減少するような信頼区間(CI)を利用し得る。
一例として、例えば、50%、60%、98%、または任意の所望の値のCI未満の検出された要素は、破棄され得る。CI、信頼度しきい値、許容度しきい値などは、トレーニングまたは再トレーニングされ得るMLモデルに基づく。RPAロボットの開発中または実行中異なるCI、信頼度しきい値、許容度しきい値、またはそのようなレベルまたは範囲は、UI内の要素のマッチングに利用され得る。
両方が一致するしきい値を満たす2つの要素の間で選択する必要があり得るロボットのために、要素、タイプ、または信頼度のリストが利用され得る。複数の一致を有する特定の構成では、UI内の複数のアンカーは、要素を一意に識別するのに役立ち得る。本明細書で与えられた例では、複数のアンカーの幾何学は、幾何学的しきい値のためのより小さい許容差で、水平方向または垂直方向にスナップし得る。特定の実施形態では、別の要素で水平または垂直にスナップするアンカーは、別の扱いをされ得る。例えば、方向がスナップ軸に対して垂直に移動できる距離については、より小さい許容差または全く許容差がないことが許され得る。ボタンがテキストフィールド、ラベル、ボタンなどのアンカーとして使用されている場合、実行時は、UI要素に接続が行われたときに、他のより低い確率の要素がそれぞれの位置または座標で接続されるように層化され得る。
図11は、本発明の実施形態による、階層化されたターゲットUI要素の識別およびRPAロボットアクティビティの実行のためのプロセス1100を説明するフローチャートである。プロセスは、1110でターゲットUI要素のセレクタを検索することから始まる。これは、いくつかの実施形態では、スクリーンスクレイピングおよび/またはネイティブOSの機能を使用することによって達成され得る。UI要素に対するセレクタが少なくとも一致強度しきい値1120で見つかった場合、UI要素に対するアクティビティ動作は、ターゲットセレクタを用いて1130で実行される。これは、ボタンをクリックすること、テキストフィールドに情報を入力すること、メニュー操作を選択することなどを含んでもよい。特定の実施形態では、複数のUI要素と対話する操作は、単一のアクティビティで実行されてもよく、および/または複数のUI要素と対話するアクティビティは、RPAワークフロー内のシーケンスで実行されてもよい。
しかし、ターゲットUI要素のセレクタが見つからないか、または1120において一致強度しきい値未満の信頼度を有する場合、1140においてターゲットUI要素の1または複数の属性についてファジーセレクタのマッチングが試みられる。例えば、1または複数の属性の類似度測定値は、1または複数のそれぞれの類似度しきい値と比較されてもよい。セレクタが少なくとも一致強度しきい値1150で見つかった場合、UI要素に対するアクティビティ動作は、ターゲットセレクタを用いて1130で実行される。
しかし、ターゲットUI要素に対するセレクタが見つからないか、または1150において一致強度しきい値未満の信頼度を有する場合、セレクタおよびそのアンカー(複数可)のためのファジーマッチング設定に基づいて、1160において、セレクタおよび/またはアンカーファジーマッチングが試みられる。例えば、ターゲットUI要素およびアンカー(複数可)のうちの1もしくは複数のファジー属性をファジーマッチングに使用してもよいし、または要素のサブセットがファジーマッチングを受け、一方で別のサブセットが正規マッチングを受けてもよい。幾何学的マッチングは、ターゲットおよびアンカー(複数可)のファジーマッチング結果に基づいて、1170で実行される。
また、1180でターゲットUI要素のセレクタが見つかった場合には、1130でターゲットセレクタを用いてUI要素のアクティビティ動作を行う。しかし、ターゲットUI要素のセレクタが見つからない場合、RPAロボットは1190でエラーを投げる。例えば、この時点で、ユーザーはエラーに対処しようとするか、またはエラーをRPA開発者に報告して、エラーを分析し、ターゲットおよびアンカー検出ロジックを修正することによってソリューションを見出しようと試み得る。
図12は、本発明の実施形態による、RPAのためのアンカーおよび/またはターゲットのためのファジー論理選択のためのプロセス1200を説明するフローチャートである。プロセスは、1210でRPAワークフローの第1アクティビティを実行することから始まる。1220でアクティビティにUIアクションがなく、1230でRPAワークフローにさらに多くのアクティビティが含まれている場合、ロボットは1240で次のアクティビティに進む。アクティビティが無くなった場合は、ワークフローの実行が終了し、プロセスが終了する。
アクティビティ1220において、ボタンのクリック、テキストフィールドへのテキスト入力、メニュー項目の選択、ウィンドウの開閉、フォームの送信などのUIアクションがある場合、RPAロボットは、1250において、マッチング設定を用いてUIアクションのターゲットUI要素のターゲットおよびアンカー候補を検出する。例えば、RPAロボットは、ターゲットUI要素およびそのアンカー(複数可)の属性を決定し、属性がファジーマッチングを採用しているかどうかを判断し得る。そして、RPAロボットは、これらの特性とファジー設定を利用して、ターゲットおよびアンカー(複数)を検索し得る。
幾何学的マッチングは、特定の幾何学的制約(例えば、角度、セグメントの長さなどの許容差)で一致が存在するかどうかを判断するために、ターゲットおよびアンカー候補において1260で実行される。1270でファジーマッチング設定および幾何学的マッチングを用いてターゲットが発見された場合、1280でターゲットUI要素においてUIアクティビティ操作が行われ、プロセスはステップ1230に進む。1270でターゲットが見つからない場合は、1290でエラーが投げられ、プロセスは終了する。
図13は、本発明の実施形態による、ターゲットUI要素を検索するための1または複数以上の検索方法を構成するためのプロセス1300を説明するフローチャートである。プロセスは、1310で設計時に自動化を実行するアプリケーションのUIまたはライブアプリケーションのUIの一部または全部の画像の中のターゲットUI要素をRPAデザイナアプリケーションが指定することから始まる。この指定は、例えば、ライブアプリケーションUI内のUI要素のユーザー選択に基づいて実行されてもよいし、ドライバまたはCVを介してUI要素が認識されたアプリケーションUIのスクリーンショットに基づいて実行されてもよい。
次に、1または複数の検索アルゴリズムの選択は、1320でRPAデザイナアプリケーションにより設計時に受信される。これは、ユーザーが適切なアンカー(複数可)、タグ属性、精度レベル、採用する検索方法の選択などを選択して構成することを含んでもよい。1または複数の検索アルゴリズムは、セレクタ検索、ファジーセレクタ検索、ターゲットおよびアンカー検索、ファジーターゲットおよびアンカー検索、画像マッチング、テキストマッチング(例えば、タグ内の文字列またはOCR結果に基づく)、CVマッチング(例えば、CVを使用して識別されたUI要素を検索する)、またはそれらの組み合わせを含んでもよい。いくつかの実施形態では、1または複数の検索アルゴリズムは、アプリケーションのUIのUIツリーを解析して、ターゲットUI要素の1もしくは複数の属性、1もしくは複数のアンカー、1もしくは複数のタグ、またはそれらの組み合わせを識別することを含む。特定の実施形態では、UIツリー内の全てのタグが1つの分析で発見される。
いくつかの実施形態では、1または複数の選択された検索方法がテキストマッチングを含む場合、テキストマッチングは、ターゲットUI要素に対する候補のテキストの完全一致を必要とする。特定の実施形態では、1または複数の選択された検索手段がテキストマッチングを含む場合、ターゲットUI要素に関連付けられた画像の一致は、画像マッチングが一致を見つけるために必須である。いくつかの実施形態では、1または複数の選択された検索方法がファジーセレクタマッチングを含む場合、ファジーセレクタマッチングは、画像マッチングを実行することを含む。
次に、RPAデザイナアプリケーションは、1330で設計時に選択された検索アルゴリズム(複数可)を実行するように、それぞれのRPAワークフローアクティビティを構成する。これにより、アクティビティを含むプロセスを実装するRPAロボットが、ターゲット要素を見つけ、アクティビティ内で所望のアクション(複数可)(例えば、ボタンをクリックする、フィールドにテキストを入力する、ウィンドウを閉じるなど)を実行することが可能になり得る。いくつかの実施形態では、RPAワークフローアクティビティの構成は、1もしくは複数のアンカー、1もしくは複数のタグ属性、1もしくは複数の精度レベル、またはそれらの組み合わせを構成することを含む。特定の実施形態では、アクティビティ内の1または複数の選択された検索アルゴリズムは、順番に実行されるように構成され、現在実行中の検索アルゴリズムがターゲットUI要素を見つけたときに実行が停止される。
図14は、本発明の実施形態による、ターゲットUI要素を検索し、RPAワークフローのアクティビティを実装するためのプロセス1400を示すフローチャートである。いくつかの実施形態では、図13および図14のプロセスは1つの集合的プロセスであり、図14は図13から続く。実行時1410において、ターゲットUI要素を特定するために、ターゲットUI要素に対するセレクタ検索が実行される。これは、例えば、RPAワークフロー内で検索アルゴリズム(複数可)を呼び出すアクティビティを実装したRPAロボットによって実行され得る。
図14において、いくつかの実施形態では、設計時に指定され得る2つのアクティビティ構成、AおよびBがある。アクティビティ構成Aが選択される場合、1420Aにおいて、セレクタ検索に加えて1または複数の他の検索アルゴリズム(例えば、ファジーセレクタ検索、ターゲットおよびアンカー検索、ファジーターゲットおよびアンカー検索、画像マッチング、テキストマッチング、CVマッチング、またはそれらの組み合わせ)も実行される。最良の結果が1430Aで選択されてターゲットUI要素が識別され、1440でそのアクティビティに基づいて、識別されたターゲットUI要素との対話が実行される。
アクティビティ構成Bが選択された場合、セレクタ検索からターゲットUI要素が1420Bで見つかった場合、アクティビティに基づいて、特定されたターゲットUI要素との対話が1440で実行される。しかし、ターゲットUI要素が見つからない場合には、ターゲットUI要素に対してファジーセレクタ検索、ターゲットおよびアンカー検索、ファジーターゲットおよびアンカー検索、画像マッチング、テキストマッチング、ならびにCVマッチングのうち少なくとも1つを1430Bで実行して、ターゲットUI要素を識別する。その後、処理はステップ1440に進み、ターゲットUI要素との対話を実行する。
いくつかの実施形態では、ファジーセレクタ検索、ターゲットおよびアンカー検索、ファジーターゲットおよびアンカー検索、画像マッチング、テキストマッチング、およびCVマッチングのうちの2つ以上が実行され、ファジーセレクタ検索、ターゲットおよびアンカー検索、ファジーターゲットおよびアンカー検索、画像マッチング、テキストマッチング、およびCVマッチングのうちの2つ以上の実行は、アクティビティの順序に基づいて実行される。特定の実施形態では、ファジーターゲットおよびアンカーの検索はRPAロボットによって行われ、ファジーターゲットおよびアンカー検索は、ファジーマッチングを使用してターゲットおよび少なくとも1つのアンカーを決定し、ファジーマッチングを使用して決定されたターゲットおよび少なくとも1つのアンカーに対して幾何学的マッチングを行うことを含む。いくつかの実施形態では、ファジーターゲットおよびアンカーの検索は、ドライバを呼び出すことを含み、単一のドライバコールがターゲットおよび少なくとも1つのアンカーに対して行われ、ドライバは、UIに関連付けられたアプリケーションのためのUIツリーの単一のトラバーサルにおいて、ターゲットおよび少なくとも1つのアンカーのための全ての候補を取得する。
図7および11-14で実行されるプロセスステップは、本発明の実施形態に従って、図7および11-14で説明したプロセス(複数可)の少なくとも一部を実行するようにプロセッサ(複数可)への命令をエンコードするコンピュータプログラムによって実行されてもよい。コンピュータプログラムは、非一時的なコンピュータ読み取り可能な媒体に具現化されていてもよい。コンピュータ読み取り可能な媒体は、ハードディスクドライブ、フラッシュ装置、RAM、テープ、および/またはデータを格納するために使用される他のいずれかのそのような媒体または媒体の組み合わせであってもよいが、これらに限定されるものではない。コンピュータプログラムは、図7および11-14に記載されたプロセスステップの全部または一部を実装するために、コンピューティングシステム(例えば、図5のコンピューティングシステム500のプロセッサ(複数可)510)のプロセッサ(複数可)を制御するためのコード化された命令を含んでもよく、これはまた、コンピュータ読み取り可能な媒体に格納されてもよい。
コンピュータプログラムは、ハードウェア、ソフトウェア、またはハイブリッド実装で実装され得る。コンピュータプログラムは、互いに操作可能な通信を行うモジュールで構成され得、情報または命令をディスプレイに送るように設計されている。コンピュータプログラムは、汎用コンピュータ、ASIC、またはいずれかの他の好適な装置で動作するように構成され得る。
本発明の様々な実施形態のコンポーネントは、本明細書に一般的に記載され、図示されているように、様々な異なる構成で配置され、設計されてもよいことが、容易に理解されるであろう。したがって、添付の図に表されるような本発明の実施形態の詳細な説明は、特許請求されるような本発明の範囲を限定することを意図するものではなく、本発明の選択された実施形態を代表するものにすぎない。
本明細書を通して記載された本発明の特色、構造、または特徴は、1または複数の実施形態では、いずれかの好適な方法で組み合わせられ得る。例えば、本明細書全体を通して「特定の実施形態」、「いくつかの実施形態」、または類似の言語を参照することは、実施形態に関連して記載された特定の特色、構造、または特徴が、本発明の少なくとも1つの実施形態に含まれていることを意味する。したがって、本明細書全体を通して「特定の実施形態では」、「いくつかの実施形態では」、「他の実施形態では」、または類似の言語の出現は、必ずしも全ての実施形態の同じグループを指すものではなく、記載された特色、構造、または特徴は、1または複数の実施形態ではいずれかの好適な方法で組み合わせられ得る。
本明細書全体を通して特色、利点、または類似の言語への参照は、本発明で実現され得る特色および利点の全てが、本発明のいずれかの単一の実施形態にあるべきであること、または本発明のいずれかの実施形態にあることを意味するものではないことに留意すべきである。むしろ、特色および利点に言及する言語は、実施形態に関連して記載された特定の特色、利点、または特徴が、本発明の少なくとも1つの実施形態に含まれることを意味すると理解される。したがって、本明細書全体での特色および利点の議論、ならびに類似の言語は、同じ実施形態を参照することができるが、必ずしもその必要性はない。
さらに、本発明の記載された特色、利点、および特徴は、1または複数の実施形態では、いずれかの好適な方法で組み合わせることができる。関連する技術の当業者は、本発明が、1または複数の特定の実施形態の特定の特徴または利点なしに実施され得ることを認識するであろう。他の例では、追加の特徴および利点は、本発明の全ての実施形態には存在しないかもしれない特定の実施形態では認識され得る。
本分野における通常の技術を有する者は、上述したような本発明を、異なる順序でのステップを用いて、および/または開示されているものとは異なる構成のハードウェア要素を用いて実施することができることを容易に理解するであろう。したがって、本発明は、これらの好ましい実施形態に基づいて説明されてきたが、本発明の精神および範囲内にとどまりながら、特定の変更、変形、および代替的な構成が明らかになることは、当業者には明らかであろう。したがって、本発明の範囲を決定するためには、添付の特許請求の範囲を参照すべきである。

Claims (20)

  1. ロボティックプロセスオートメーション(RPA)デザイナアプリケーションによって、設計時に自動化が行われるべきアプリケーションのUIまたはライブアプリケーションのUIの一部もしくは全部の画像内のターゲットユーザーインターフェース(UI)要素を指定し、
    設計時に、前記RPAデザイナアプリケーションによって、1または複数の検索アルゴリズムの選択を受信し、
    設計時に、前記RPAデザイナアプリケーションによって、前記選択された1または複数の検索アルゴリズムを実行するようにRPAワークフローのアクティビティを構成することを含む、コンピュータ実装方法。
  2. 前記1または複数の検索アルゴリズムは、セレクタ検索、ファジーセレクタ検索、ターゲットおよびアンカー検索、ファジーターゲットおよびアンカー検索、画像マッチング、テキストマッチング、コンピュータビジョン(CV)マッチング、またはそれらの組み合わせを含む、請求項1に記載のコンピュータ実装方法。
  3. 前記1または複数の検索アルゴリズムは、前記アプリケーションの前記UIのUIツリーを解析して、前記ターゲットUI要素の1もしくは複数の属性、1もしくは複数のアンカー、1もしくは複数のタグ、またはそれらの組み合わせを識別することを含む、請求項2に記載のコンピュータ実装方法。
  4. 前記UIツリー内の全てのタグは、1回の解析で発見される、請求項3に記載のコンピュータ実装方法。
  5. 前記1または複数の選択された検索アルゴリズムは、テキストマッチングを含み、
    前記テキストマッチングは、前記ターゲットUI要素の候補のテキストを完全に一致させる必要がある、請求項2に記載のコンピュータ実装方法。
  6. 前記1または複数の選択された検索アルゴリズムは、画像マッチングを含み、
    前記ターゲットUI要素に関連付けられた画像の一致は、一致を見つけるために前記画像マッチングにとって必須である、請求項2に記載のコンピュータ実装方法。
  7. 前記1または複数の選択された検索アルゴリズムは、ファジーセレクタマッチングを含み、
    前記ファジーセレクタマッチングは、画像マッチングの実行を含む、請求項2に記載のコンピュータ実装方法。
  8. 前記RPAワークフローアクティビティの前記構成は、1もしくは複数のアンカー、1もしくは複数のタグ属性、1もしくは複数の精度レベル、またはそれらの組み合わせを構成することを含む、請求項1に記載のコンピュータ実装方法。
  9. 前記アクティビティで選択された前記1または複数の選択された検索アルゴリズムは、順番に実行されるように構成され、
    現在実行中の検索アルゴリズムが前記ターゲットUI要素を見つけると、実行が停止する、請求項1に記載のコンピュータ実装方法。
  10. 前記RPAワークフローを実装したRPAロボットによって、実行時に前記ターゲットUI要素に対してセレクタ検索を実行して、前記ターゲットUI要素を識別し、
    前記ターゲットUI要素が見つからない場合、前記RPAロボットによって、前記ターゲットUI要素を特定するために、ファジーセレクタ検索、ターゲットおよびアンカー検索、ファジーターゲットおよびアンカー検索、画像マッチング、テキストマッチング、コンピュータビジョン(CV)マッチング、またはそれらの組み合わせを実行し、
    前記構成されたアクティビティに基づいて、前記RPAロボットによって前記識別されたターゲットUI要素との対話を実行することをさらに含む、請求項1に記載のコンピュータ実装方法。
  11. 前記ファジーセレクタ検索、前記ターゲットおよびアンカー検索、前記ファジーターゲットおよびアンカー検索、前記画像マッチング、前記テキストマッチング、ならびに前記コンピュータビジョン(CV)マッチングのうちの2つ以上を実行し、
    前記ファジーセレクタ検索、前記ターゲットおよびアンカー検索、前記ファジーターゲットおよびアンカー検索、前記画像マッチング、前記テキストマッチング、ならびに前記CVマッチングのうちの2つ以上の実行は、前記構成されたアクティビティにおいて、順序に基づいて実行される、請求項10に記載のコンピュータ実装方法。
  12. 前記RPAロボットによってファジーターゲットおよびアンカーの検索が行われ、
    前記ファジーターゲットおよびアンカー検索は、ファジーマッチングを使用して前記ターゲットおよび少なくとも1つのアンカーを決定し、前記ファジーマッチングを使用して決定された前記ターゲットおよび前記少なくとも1つのアンカーに対して幾何学的マッチングを行うことを含む、請求項10に記載のコンピュータ実装方法。
  13. 前記ファジーターゲットおよびアンカー検索は、ドライバを呼び出すことを含み、
    前記ターゲットおよび前記少なくとも1つのアンカーに対して単一のドライバコールが行われ、
    前記ドライバは、前記UIに関連付けられた前記アプリケーションのためのUIツリーの単一のトラバーサルで前記ターゲットおよび前記少なくとも1つのアンカーの全ての候補を取得する、請求項12に記載のコンピュータ実装方法。
  14. 前記RPAワークフローを実装するように構成されたRPAロボットによって、実行時に、前記ターゲットUI要素のための、セレクタ検索と、ファジーセレクタ検索、ターゲットおよびアンカー検索、ファジーターゲットおよびアンカー検索、画像マッチング、テキストマッチング、ならびにコンピュータビジョン(CV)マッチングのうちの少なくとも1つとを実行し、
    前記RPAロボットによって、検証スコアに基づいて、前記セレクタ検索と、前記ファジーセレクタ検索、前記ターゲットおよびアンカー検索、前記ファジーターゲットおよびアンカー検索、前記画像マッチング、前記キストマッチング、ならびに前記CVマッチングのうちの少なくとも1つとから最適な結果を選択して、前記ターゲットUI要素を識別し、
    前記構成されたアクティビティに基づいて、前記RPAロボットによって前記識別されたターゲットUI要素との対話を実行することをさらに含む、請求項1に記載のコンピュータ実装方法。
  15. ロボティックプロセスオートメーション(RPA)ワークフローのアクティビティに関連付けられたターゲットユーザーインターフェース(UI)要素を識別するためのコンピュータ実装方法であって、
    前記RPAワークフローを実装したRPAロボットによって、実行時に前記ターゲットUI要素に対してセレクタ検索を実行して、前記ターゲットUI要素を識別し、
    前記ターゲットUI要素が見つからない場合、前記RPAロボットによって、前記ターゲットUI要素を特定するために、ファジーセレクタ検索、ターゲットおよびアンカー検索、ファジーターゲットおよびアンカー検索、画像マッチング、テキストマッチング、コンピュータビジョン(CV)マッチング、またはそれらの組み合わせを実行し、
    前記RPAワークフローのアクティビティに基づいて、前記RPAロボットによって前記識別されたターゲットUI要素との対話を実行することを含む、コンピュータ実装方法。
  16. 前記ファジーセレクタ検索、前記ターゲットおよびアンカー検索、前記ファジーターゲットおよびアンカー検索、前記画像マッチング、前記テキストマッチング、ならびに前記CVマッチングのうちの2つ以上を実行し、
    前記ファジーセレクタ検索、前記ターゲットおよびアンカー検索、前記ファジーターゲットおよびアンカー検索、前記画像マッチング、前記テキストマッチング、ならびに前記CVマッチングのうちの2つ以上の実行は、前記RPAワークフローのアクティビティにおいて、順序に基づいて実行される、請求項15に記載のコンピュータ実装方法。
  17. 前記RPAロボットによってファジーターゲットおよびアンカーの検索が行われ、
    前記ファジーターゲットおよびアンカー検索は、ファジーマッチングを使用して前記ターゲットおよび少なくとも1つのアンカーを決定し、前記ファジーマッチングを使用して決定された前記ターゲットおよび前記少なくとも1つのアンカーに対して幾何学的マッチングを行うことを含む、請求項15に記載のコンピュータ実装方法。
  18. 前記ファジーターゲットおよびアンカー検索は、ドライバを呼び出すことを含み、
    前記ターゲットおよび前記少なくとも1つのアンカーに対して単一のドライバコールが行われ、
    前記ドライバは、前記UIに関連付けられたアプリケーションのためのUIツリーの単一のトラバーサルで前記ターゲットおよび前記少なくとも1つのアンカーの全ての候補を取得する、請求項17に記載のコンピュータ実装方法。
  19. ロボティックプロセスオートメーション(RPA)ワークフローのアクティビティに関連付けられたターゲットユーザーインターフェース(UI)要素を識別するためのコンピュータ実装方法であって、
    前記RPAワークフローを実装するように構成されたRPAロボットによって、実行時に、前記ターゲットUI要素のための、セレクタ検索と、ファジーセレクタ検索、ターゲットおよびアンカー検索、ファジーターゲットおよびアンカー検索、画像マッチング、テキストマッチング、ならびにコンピュータビジョン(CV)マッチングのうちの少なくとも1つとを実行し、
    前記RPAロボットによって、検証スコアに基づいて、前記セレクタ検索と、前記ファジーセレクタ検索、前記ターゲットおよびアンカー検索、前記ファジーターゲットおよびアンカー検索、前記画像マッチング、前記キストマッチング、ならびに前記CVマッチングのうちの少なくとも1つとから最適な結果を選択して、前記ターゲットUI要素を識別し、
    前記RPAワークフローのアクティビティに基づいて、前記RPAロボットによって前記識別されたターゲットUI要素との対話を実行することを含む、コンピュータ実装方法。
  20. 前記RPAロボットによってファジーターゲットおよびアンカーの検索が行われ、
    前記ファジーターゲットおよびアンカー検索は、ファジーマッチングを使用して前記ターゲットおよび少なくとも1つのアンカーを決定し、前記ファジーマッチングを使用して決定された前記ターゲットおよび前記少なくとも1つのアンカーに対して幾何学的マッチングを行うことを含む、請求項19に記載のコンピュータ実装方法。
JP2020553527A 2020-05-11 2020-09-23 ロボティックプロセスオートメーションのためのグラフィカル要素検索技術の選択、アンカーおよびターゲットのファジー理論選択、ならびに/または階層的グラフィカル要素識別 Pending JP2023528092A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/871,696 US20210349430A1 (en) 2020-05-11 2020-05-11 Graphical element search technique selection, fuzzy logic selection of anchors and targets, and/or hierarchical graphical element identification for robotic process automation
US16/871,696 2020-05-11
PCT/US2020/052149 WO2021230901A1 (en) 2020-05-11 2020-09-23 Graphical element search technique selection, fuzzy logic selection of anchors and targets, and/or hierarchical graphical element identification for robotic process automation

Publications (1)

Publication Number Publication Date
JP2023528092A true JP2023528092A (ja) 2023-07-04

Family

ID=72709037

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020553527A Pending JP2023528092A (ja) 2020-05-11 2020-09-23 ロボティックプロセスオートメーションのためのグラフィカル要素検索技術の選択、アンカーおよびターゲットのファジー理論選択、ならびに/または階層的グラフィカル要素識別

Country Status (3)

Country Link
EP (1) EP3909722A1 (ja)
JP (1) JP2023528092A (ja)
CN (1) CN113811850A (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3112965A1 (en) * 2015-07-02 2017-01-04 Accenture Global Services Limited Robotic process automation

Also Published As

Publication number Publication date
EP3909722A1 (en) 2021-11-17
CN113811850A (zh) 2021-12-17

Similar Documents

Publication Publication Date Title
US11200073B1 (en) Automatic anchor determination and target graphical element identification in user interface automation
US20230168654A1 (en) Graphical element search technique selection, fuzzy logic selection of anchors and targets, and/or hierarchical graphical element identification for robotic process automation
US11301268B2 (en) Graphical element detection using a combination of user interface descriptor attributes from two or more graphical element detection techniques
KR102363774B1 (ko) 사용자 인터페이스 자동화에서의 자동 앵커 결정 및 타겟 그래픽 요소 식별
KR102444398B1 (ko) 그래픽 요소 검색 기술 선택, 앵커 및 타겟의 퍼지 논리 선택, 및/또는 로봇 프로세스 자동화를 위한 계층적 그래픽 요소 식별
JP7242981B2 (ja) 特定用途向けグラフィカル要素検出
US11232170B1 (en) Application-specific graphical element detection
EP3964947A1 (en) Graphical element detection using a combined series and delayed parallel execution unified target technique, a default graphical element detection technique, or both
EP3909722A1 (en) Graphical element search technique selection, fuzzy logic selection of anchors and targets, and/or hierarchical graphical element identification for robotic process automation
KR102447072B1 (ko) 둘 이상의 그래픽 요소 검출 기법들로부터의 사용자 인터페이스 디스크립터 속성들의 조합을 사용한 그래픽 요소 검출
US11507259B2 (en) Graphical element detection using a combined series and delayed parallel execution unified target technique, a default graphical element detection technique, or both

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20210915