KR20230005246A - 로봇 프로세스 자동화를 위한 시스템 및 방법들 - Google Patents

로봇 프로세스 자동화를 위한 시스템 및 방법들 Download PDF

Info

Publication number
KR20230005246A
KR20230005246A KR1020227040656A KR20227040656A KR20230005246A KR 20230005246 A KR20230005246 A KR 20230005246A KR 1020227040656 A KR1020227040656 A KR 1020227040656A KR 20227040656 A KR20227040656 A KR 20227040656A KR 20230005246 A KR20230005246 A KR 20230005246A
Authority
KR
South Korea
Prior art keywords
gui
elements
events
video
sequence
Prior art date
Application number
KR1020227040656A
Other languages
English (en)
Inventor
재키스 칼리
크리쉬나 듀바
벤 카르
기욤 쿠쿠룰
위미트 루센 악타스
Original Assignee
블루 프리즘 리미티드
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
Application filed by 블루 프리즘 리미티드 filed Critical 블루 프리즘 리미티드
Publication of KR20230005246A publication Critical patent/KR20230005246A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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/0423Input/output
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B13/00Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
    • G05B13/02Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
    • G05B13/0265Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric the criterion being a learning criterion
    • 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/36Nc in input of data, input key till input tape
    • G05B2219/36184Record actions of human expert, teach by showing
    • 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/40116Learn by operator observation, symbiosis, show, watch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3438Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Automation & Control Theory (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Computation (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • User Interface Of Digital Computer (AREA)
  • Manipulator (AREA)
  • Programmable Controllers (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

GUI를 이용하기 위해 RPA 로봇을 트레이닝하는 방법이 개시된다. 방법은 조작자가 GUI를 이용하여 프로세스를 수행함에 따라 GUI의 비디오를 캡처하는 단계; 조작자가 GUI를 이용하여 상기의 프로세스를 수행함에 따라 트리거된 이벤트들의 시퀀스를 캡처하는 단계; 및 상기의 비디오 및 상기의 이벤트들의 시퀀스를 분석하여 작업흐름을 생성하는 단계를 포함한다. 작업흐름은, RPA 로봇에 의해 실행될 때, RPA 로봇이 GUI를 이용하여 상기의 프로세스를 수행하게 한다.

Description

로봇 프로세스 자동화를 위한 시스템 및 방법들
본 발명은 로봇 프로세스 자동화(robotic process automation)를 위한 시스템들 및 방법들에 관한 것으로서, 특히, 로봇 프로세스 자동화 로봇들의 자동 트레이닝에 관한 것이다.
인간 안내 컴퓨터 프로세스들은 많은 기술 분야 및 노력에 걸쳐 보편적이다. 현대의 그래픽 사용자 인터페이스(GUI)들은 인간 조작자들이 컴퓨터 시스템들을 이용하여 종종 복잡한 데이터 처리 및/또는 시스템 제어 작업들을 수행하는 것을 허용함에 있어서 귀중한 것으로 입증되었다. 그러나, GUI들은 종종 인간 조작자들이 새로운 작업들을 수행하는 것에 빠르게 익숙해지게 하지만, 그들은 작업들의 임의의 추가 자동화에 대한 높은 장벽을 제공한다.
전통적인 작업흐름 자동화는 GUI들을 이용하여 통상적으로 조작자들에 의해 수행되는 작업들을 취하고, 컴퓨터 시스템이 작업을 수행하기 위해 이용되는 기반 소프트웨어의 상당한 리엔지니어링(re-engineering) 없이 동일한 작업을 수행할 수 있도록 그것들을 자동화하는 것을 목표로 한다. 처음에, 이것은 요구된 작업을 수행하기 위해 소프트웨어의 요구된 기능을 실행하도록 스크립트들이 수동으로 고안될 수 있도록 소프트웨어의 API(application programming interface)들을 노출시키는 것을 요구하였다.
로봇 프로세스 자동화(RPA) 시스템들은 이러한 접근법의 진화를 나타내고, 기존의 그래픽 사용자 인터페이스(GUI)들을 통해 컴퓨터 시스템들과 상호작용하기 위해 소프트웨어 에이전트들(RPA 로봇들이라고 지칭됨)을 이용한다. RPA 로봇들은 이어서 주어진 프로세스가 컴퓨터 시스템에 의해 수행되게 하기 위해 GUI에 대한 적절한 입력 커맨드들을 생성할 수 있다. 이것은 프로세스들의 자동화를 가능하게 하여, 유인 프로세스들(attended processes)을 무인 프로세스들(unattended processes)로 바꾼다. 그러한 접근법의 이점들은 다수이며, 다수의 RPA 로봇들이 다수의 컴퓨터 시스템들에 걸쳐 동일한 작업을 수행할 수 있게 하는 더 큰 확장성과 함께, 주어진 프로세스에서 인간 에러에 대한 가능성의 감소 또는 심지어 제거를 위한 더 큰 반복성을 포함한다.
그러나, 특정한 작업을 수행하도록 RPA 로봇을 트레이닝하는 프로세스는 번거로울 수 있고, 인간 조작자가 RPA 시스템을 이용하여 각각의 개별 단계를 구체적으로 식별하는 특정한 프로세스에서 프로그래밍하기 위해 RPA 시스템 자체를 이용할 것을 요구한다. 인간 조작자는 또한, 상호작용될 GUI의 특정한 부분들을 식별하고 RPA 로봇이 이용하기 위한 작업흐름을 구축할 것이 요구된다.
본 발명은 GUI를 이용하는 조작자의 비디오의 분석 및 프로세스를 수행할 때 조작자에 의해 트리거된 이벤트들(또는 입력)에만 기초하여 GUI를 이용해서 작업을 수행하도록 RPA 로봇을 트레이닝하는 방법을 제공한다. 이러한 방식으로, RPA 로봇들의 트레이닝에 관한 종래 기술의 상기의 문제점들이 제거될 수 있다.
제1 양태에서, GUI를 이용하기 위해 RPA 로봇(또는 스크립트 또는 시스템)을 트레이닝하는 방법이 제공된다. 방법은 조작자(또는 사용자)가 GUI를 이용하여 프로세스(또는 작업)를 수행함에 따라 GUI의 비디오를 캡처하는 단계; 조작자가 GUI를 이용하여 상기의 프로세스를 수행함에 따라 트리거된 이벤트들의 시퀀스를 캡처하는 단계 및 상기의 비디오 및 상기의 이벤트들의 시퀀스를 분석하여 작업흐름을 생성하는 단계를 포함한다. 작업흐름은, RPA 로봇에 의해 실행될 때, RPA 로봇이 GUI를 이용하여 상기의 프로세스를 수행하게 한다. 캡처하는 단계는 원격 데스크톱 시스템에 의해 수행될 수 있다.
분석하는 단계는 상기의 비디오로부터 GUI의 하나 이상의 대화형 요소를 식별하는 단계 및 이벤트들의 시퀀스에서의 이벤트들 중 적어도 하나를 대화형 요소들 중 적어도 하나에 대응하는 것으로서 매칭하는 단계를 더 포함할 수 있다. 대화형 요소는 텍스트 박스(text box), 버튼(button), 컨텍스트 메뉴(context menu), 탭(tab), 라디오 버튼(radio button)(또는 그의 어레이), 체크박스(checkbox)(또는 그의 어레이) 등과 같은(그러나 그에 제한되지 않는) 임의의 전형적인 GUI 요소일 수 있다. 대화형 요소를 식별하는 단계는 트레이닝된 머신 학습 알고리즘을 비디오의 적어도 일부에 적용함으로써 수행될 수 있다.
대화형 요소를 식별하는 단계는 상기의 대화형 요소에 대한 GUI에서의 하나 이상의 앵커(anchor) 요소의 위치들을 식별하는 단계를 포함할 수 있다. 예를 들어, (그래프 신경망과 같은) 머신 학습 알고리즘이 하나 이상의 미리 결정된 특징 값에 기초하여 하나 이상의 앵커 요소를 식별하는데 이용될 수 있다. 상기의 특징 값들은 또한 머신 학습 알고리즘의 트레이닝을 통해 결정될 수 있다.
상기의 특징 값들은 요소들 사이의 거리, 요소의 배향; 및 요소들이 동일한 윈도우에 있는지 여부 중 임의의 하나 이상을 포함할 수 있다.
이벤트들의 시퀀스는 키 누름(keypress) 이벤트; (단일 클릭 또는 그 다수와 같은) 클릭(click) 이벤트; 드래그(drag) 이벤트; 및 제스처(gesture) 이벤트 중 임의의 하나 이상을 포함할 수 있다. 비디오에 기초한 (호버오버(hoverover) 이벤트와 같은) 추론된(inferred) 이벤트들이 또한 이벤트들의 시퀀스에 포함될 수 있다. 전형적으로, 호버 이벤트는 GUI에서 보이게 되는 하나 이상의 인터페이스 요소에 기초하여 추론될 수 있다.
분석하는 단계는 상기의 프로세스의 서브프로세스들의 시퀀스를 식별하는 단계를 더 포함할 수 있다. 서브프로세스들의 시퀀스에서, 시퀀스의 서브프로세스들 중 하나의 서브프로세스의 프로세스 출력은 RPA 로봇에 의해 시퀀스의 다른 서브프로세스에 대한 프로세스 입력으로서 이용될 수 있다.
생성된 작업흐름은 추가의 서브프로세스에 대응하는 이전에 생성된 작업흐름의 일부의 포함을 가능하게 하기 위해 사용자에 의해 편집가능할 수 있어서, 상기의 편집된 작업흐름은, RPA 로봇에 의해 실행될 때, RPA 로봇이 GUI를 이용하여 상기의 프로세스의 버전을 수행하게 하고, 상기의 프로세스의 버전은 추가의 서브프로세스를 포함한다. 상기의 프로세스의 버전은 상기의 프로세스의 기존의 서브프로세스 대신에 추가의 서브프로세스를 포함할 수 있다.
제2 양태에서, 상기의 제1 양태에 따른 방법들에 의해 트레이닝된 RPA 로봇을 이용하여 GUI를 이용해서 프로세스를 수행하는 방법들이 제공된다. 특히, 상기의 방법은 RPA 로봇이 작업흐름에서 지정된 각자의 앵커 요소들에 기초하여 GUI에서의 하나 이상의 대화형 요소를 재식별하는 단계를 포함할 수 있다. (그래프 신경망과 같은) 머신 학습 알고리즘은 (제1 양태의 방법들의 일부로서 결정된 것들과 같은) 하나 이상의 미리 결정된 특징 값에 기초하여 하나 이상의 대화형 요소를 재식별하기 위해 이용될 수 있다.
위에서 제시된 방법들 중 임의의 것을 수행하도록 배열된 시스템들 및 장치가 또한 제공된다. 예를 들어, GUI를 이용하기 위해 RPA 로봇(또는 스크립트 또는 시스템)을 트레이닝하기 위한 시스템이 제공된다. 시스템은 조작자(또는 사용자)가 GUI를 이용하여 프로세스(또는 작업)를 수행함에 따라 GUI의 비디오를 캡처하고, 조작자가 GUI를 이용하여 상기의 프로세스를 수행함에 따라 트리거된 이벤트들의 시퀀스를 캡처하도록 배열된다. 시스템은 상기의 비디오 및 상기의 이벤트들의 시퀀스를 분석하여 작업흐름을 생성하도록 배열된 작업흐름 생성 모듈을 더 포함한다.
본 발명은 또한 하나 이상의 프로세서에 의한 실행에 적합한 하나 이상의 컴퓨터 프로그램을 제공하며, 그러한 컴퓨터 프로그램(들)은 위에서 대략적으로 나타내고 본 명세서에서 설명되는 방법들을 실행하도록 배열된다. 본 발명은 또한 하나 이상의 컴퓨터 프로그램을 포함하는(또는 그 상에 저장하는) 하나 이상의 컴퓨터 판독가능 매체, 및/또는 네트워크를 통해 운반되는 데이터 신호들을 제공한다.
이제, 본 발명의 실시예들이 첨부 도면들을 참조하여 단지 예로서 설명될 것이다.
도 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의 비디오로부터의 추가 이미지를 도시한다.
이하의 설명에서 그리고 도면들에서, 본 발명의 특정 실시예들이 설명된다. 그러나, 본 발명은 설명되는 실시예들로 제한되지 않으며, 일부 실시예들은 후술하는 특징들 모두를 포함하지 않을 수 있음을 알 것이다. 그러나, 첨부된 청구항들에 개시된 바와 같은 본 발명의 더 넓은 사상 및 범위로부터 벗어나지 않고서도 다양한 수정들 및 변경들이 이루어질 수 있다는 점이 명백할 것이다.
도 1은 컴퓨터 시스템(100)의 예를 개략적으로 도시한다. 시스템(100)은 컴퓨터(102)를 포함한다. 컴퓨터(102)는 저장 매체(104), 메모리(106), 프로세서(108), 인터페이스(110), 사용자 출력 인터페이스(112), 사용자 입력 인터페이스(114) 및 네트워크 인터페이스(116)를 포함하며, 이들 모두는 하나 이상의 통신 버스(118)를 통해 함께 링크된다.
저장 매체(104)는 하드 디스크 드라이브, 자기 디스크, 광학 디스크, ROM 등 중 하나 이상과 같은 임의의 형태의 비휘발성 데이터 저장 디바이스일 수 있다. 저장 매체(104)는 컴퓨터(102)가 기능하도록 프로세서(108)가 실행하기 위한 운영 체제를 저장할 수 있다. 저장 매체(104)는 또한 하나 이상의 컴퓨터 프로그램(또는 소프트웨어 또는 명령어들 또는 코드)을 저장할 수 있다.
메모리(106)는 데이터 및/또는 컴퓨터 프로그램들(또는 소프트웨어 또는 명령어들 또는 코드)을 저장하기에 적합한 임의의 랜덤 액세스 메모리(저장 유닛 또는 휘발성 저장 매체)일 수 있다.
프로세서(108)는 (저장 매체(104) 상에 및/또는 메모리(106)에 저장된 것들과 같은) 하나 이상의 컴퓨터 프로그램을 실행하기에 적합한 임의의 데이터 처리 유닛일 수 있으며, 그 중 일부는 본 발명의 실시예들에 따른 컴퓨터 프로그램들 또는 프로세서(108)에 의해 실행될 때, 프로세서(108)로 하여금 본 발명의 실시예에 따른 방법을 수행하게 하고 시스템(100)을 본 발명의 실시예에 따른 시스템이 되도록 구성하게 하는 컴퓨터 프로그램들일 수 있다. 프로세서(108)는 서로 병렬로 또는 협력하여 동작하는 단일 데이터 처리 유닛 또는 다수의 데이터 처리 유닛을 포함할 수 있다. 프로세서(108)는, 본 발명의 실시예들에 대한 데이터 처리 동작들을 수행할 때, 저장 매체(104) 및/또는 메모리(106)에 데이터를 저장하고/하거나 그로부터 데이터를 판독할 수 있다.
인터페이스(110)는 컴퓨터(102) 외부의, 또는 컴퓨터(102)로부터 제거가능한 디바이스(122)에 인터페이스를 제공하기 위한 임의의 유닛일 수 있다. 디바이스(122)는 데이터 저장 디바이스, 예를 들어, 광학 디스크, 자기 디스크, 고체 상태 저장 디바이스 등 중 하나 이상일 수 있다. 디바이스(122)는 처리 능력을 가질 수 있다 - 예를 들어, 디바이스는 스마트 카드일 수 있다. 따라서, 인터페이스(110)는 프로세서(108)로부터 수신하는 하나 이상의 커맨드에 따라 디바이스(122)로부터 데이터에 액세스하거나, 디바이스(122)에 데이터를 제공하거나, 디바이스(122)와 인터페이스할 수 있다.
사용자 입력 인터페이스(114)는 시스템(100)의 사용자 또는 조작자로부터 입력을 수신하도록 배열된다. 사용자는 사용자 입력 인터페이스(114)에 접속되거나 그와 통신하는 마우스(또는 다른 포인팅 디바이스)(126) 및/또는 키보드(124)와 같은 시스템(100)의 하나 이상의 입력 디바이스를 통해 이러한 입력을 제공할 수 있다. 그러나, 사용자는 (터치 스크린과 같은) 하나 이상의 추가적인 또는 대안적인 입력 디바이스를 통해 컴퓨터(102)에 입력을 제공할 수 있다는 것을 알 것이다. 컴퓨터(102)는 프로세서(108)가 후속하여 액세스하고 처리하기 위해 사용자 입력 인터페이스(114)를 통해 입력 디바이스들로부터 수신된 입력을 메모리(106)에 저장할 수 있거나, 또는 프로세서(108)가 그에 따라 사용자 입력에 응답할 수 있도록 프로세서(108)에 직접 전달할 수 있다.
사용자 출력 인터페이스(112)는 시스템(100)의 사용자 또는 조작자에게 그래픽/시각 및/또는 오디오 출력을 제공하도록 배열된다. 이와 같이, 프로세서(108)는 원하는 그래픽 출력을 나타내는 이미지/비디오 신호를 형성하도록 사용자 출력 인터페이스(112)에 지시하고, 이 신호를 사용자 출력 인터페이스(112)에 접속되는 시스템(100)의 모니터(또는 스크린 또는 디스플레이 유닛)(120)에 제공하도록 배열될 수 있다. 추가적으로, 또는 대안적으로, 프로세서(108)는 원하는 오디오 출력을 나타내는 오디오 신호를 형성하도록 사용자 출력 인터페이스(112)에 지시하고, 이 신호를 사용자 출력 인터페이스(112)에 접속되는 시스템(100)의 하나 이상의 스피커(121)에 제공하도록 배열될 수 있다.
마지막으로, 네트워크 인터페이스(116)는 컴퓨터(102)가 하나 이상의 데이터 통신 네트워크로부터 데이터를 다운로드하고/하거나 그것에 데이터를 업로드하는 기능을 제공한다.
도 1에 도시되고 위에 설명된 시스템(100)의 아키텍처는 단지 예시적인 것이고, 상이한 아키텍처들을 갖는(예를 들어, 도 1에 도시된 것보다 적은 수의 컴포넌트들을 갖는 또는 도 1에 도시된 것보다 추가적인 및/또는 대안적인 컴포넌트들을 갖는) 다른 컴퓨터 시스템들(100)이 본 발명의 실시예들에서 이용될 수 있다는 것을 알 것이다. 예로서, 컴퓨터 시스템(100)은 개인용 컴퓨터; 서버 컴퓨터; 모바일 전화기; 태블릿; 랩톱; 텔레비전 세트; 셋톱 박스; 게임 콘솔; 다른 모바일 디바이스들 또는 소비자 전자 디바이스들 등 중 하나 이상을 포함할 수 있다.
도 2는 로봇 프로세스 자동화(RPA)를 위한 시스템을 개략적으로 도시한다. 도 2에 도시된 바와 같이, 조작자(또는 사용자)(201)에 의해 동작되는 (전술한 컴퓨터 시스템(100)과 같은) 컴퓨터 시스템(200)이 있다. 컴퓨터 시스템(200)은 RPA 시스템(230)에 통신가능하게 결합된다.
조작자(201)는 컴퓨터 시스템(200)과 상호작용하여 컴퓨터 시스템(200)이 프로세스(또는 기능 또는 활동)를 수행하게 한다. 전형적으로, 컴퓨터 시스템(200) 상에서 수행되는 프로세스는 하나 이상의 애플리케이션(또는 프로그램 또는 다른 소프트웨어)에 의해 수행된다. 그러한 프로그램들은 시스템(200) 상에서 직접 수행 또는 실행될 수 있거나, 다른 곳에서(예컨대, 원격 또는 클라우드 컴퓨팅 플랫폼 상에서) 수행되고 컴퓨터 시스템(200)에 의해 제어 및/또는 트리거될 수 있다. 조작자(201)는 하나 이상의 대화형 요소를 조작자(201)에게 디스플레이하는 그래픽 사용자 인터페이스(GUI)(210)를 통해 컴퓨터 시스템(200)과 상호작용한다. 조작자(201)는 컴퓨터 시스템(200)의 사용자 입력 인터페이스(예컨대, 전술한 사용자 입력 인터페이스(114))를 통해 상기의 대화형 요소들과 상호작용할 수 있다. 조작자(201)가 조작자(201)에게 디스플레이되는 바와 같은 GUI(210)와 상호작용함에 따라 조작자 상호작용을 반영하도록 전형적으로 변경된다는 것을 잘 알 것이다. 예를 들어, 조작자가 GUI(210)에서의 텍스트 박스에 텍스트를 입력함에 따라, GUI(210)는 텍스트 박스에 입력된 텍스트를 디스플레이할 것이다. 유사하게, 조작자가 (마우스(126)와 같은) 포인팅 디바이스를 이용하여 GUI(210)를 가로질러 커서를 이동함에 따라, 포인터가 GUI(210)에서 이동하는 것으로서 도시된다.
RPA 시스템(230)은 GUI(210)의 비디오(215)를 수신하도록 배열된다. GUI(210)의 비디오(215)는 조작자(201)가 GUI(210)를 이용하여 프로세스를 수행함에 따라 조작자(201)에게 디스플레이되는 GUI(210)를 보여준다(또는 시각적으로 묘사하거나 기록한다). RPA 시스템(230)은 또한 프로세스를 수행하기 위해 GUI를 이용하여 조작자에 의해 GUI와 관련하여 트리거된 이벤트들의 시퀀스(217)를 수신(또는 캡처)하도록 배열된다. 그러한 이벤트들은 조작자(201)에 의해 행해진 개별 키 누름들, 조작자(201)에 의해 행해진 클릭들(또는 다른 포인터 상호작용 이벤트들), GUI 자체에 의해 생성된 이벤트들(예컨대, 특정 요소들에 관한 클릭 이벤트들, GUI에서의 특정 윈도들의 포커스의 변경들 등)을 포함할 수 있다.
RPA 시스템(230)의 작업흐름 분석 모듈(240)은 GUI(210)의 비디오 및 이벤트들의 시퀀스(217)를 분석하고, 이에 의해 GUI(210)를 이용하여 상기의 프로세스를 수행하기 위한 작업흐름(또는 스크립트)을 생성하도록 배열된다. 작업흐름들은 바로 아래에서 더 상세히 설명되어 있다. 그러나, 작업흐름(250)은 전형적으로 GUI(210)와의 상호작용들(또는 액션들)의 시퀀스를 정의한다는 것을 알 것이다. 상호작용들은 GUI의 특정 식별된 요소들 상에서 또는 그와 관련하여 수행될 입력들일 수 있으며, 따라서 상호작용들의 시퀀스가 GUI 상에서 수행될 때, GUI가 동작하고 있는 시스템(200)은 상기의 프로세스를 수행한다. 이와 같이, 작업흐름(250)은 GUI를 이용하여 프로세스를 수행하기 위한 명령어들의 세트인 것으로서(또는 이를 나타내는 것으로서) 생각될 수 있다.
RPA 시스템(230)의 실행 모듈(270)은 작업흐름(250)이 하나 이상의 추가 컴퓨터 시스템(200-1; 200-2;...)의 각자의 GUI들(210-1; 210-2;...) 상에서 수행되게 하도록 배열된다. 특히, 실행 모듈(270)은 추가 컴퓨팅 시스템들(200-1; 200-2;...) 상에서 각자의 GUI(210-1; 210-2;...)의 비디오를 수신하도록 배열된다. 실행 모듈(270)은 또한 조작자(201)가 제공할 입력을 에뮬레이팅하는 추가 컴퓨터 시스템들(200-1; 200-2;...)에 입력(275)을 제공하도록 배열된다. 각자의 GUI들의 비디오를 분석함으로써, 실행 모듈은 작업흐름(250)에 존재하는 GUI 요소들을 식별(또는 재식별)하고, 작업흐름(250)에 따라 추가 GUI들에 입력들을 제공할 수 있다. 이러한 방식으로, 실행 모듈은 프로세스를 수행하기 위해 각자의 GUI(210-1)를 통해 추가 시스템(200-1)을 동작하는 RPA 로봇(또는 소프트웨어 에이전트)인 것으로 간주될 수 있다. 추가 시스템들(200-1; 200-2;...)은 전술한 컴퓨터 시스템(100)과 같은 시스템(200)과 같은 시스템들일 수 있음을 알 것이다. 대안적으로, 추가 컴퓨팅 시스템들(200-1; 200-2;...) 중 하나 이상은 가상화된 컴퓨터 시스템들일 수 있다. 실행 모듈(270)(또는 RPA 로봇)의 다수의 인스턴스들이 RPA 시스템(230)에 의해 병렬로(또는 실질적으로 병렬로) 인스턴스화되어 프로세스의 다수의 인스턴스들이 각자의 추가 컴퓨팅 시스템(200-1; 200-2;...) 상에서 실질적으로 동시에 수행되게 할 수 있다는 것을 알 것이다.
도 3a는 도 2의 RPA 시스템(230)에 따라 RPA 로봇을 트레이닝하기 위한 예시적인 방법(300)을 개략적으로 도시하는 흐름도이다.
단계(310)에서, 조작자(201)가 GUI(210)를 이용하여 프로세스를 수행함에 따라 GUI(210)의 비디오(215)가 캡처된다.
단계(320)에서, 조작자(201)가 GUI(210)를 이용하여 상기의 프로세스를 수행함에 따라 트리거된 이벤트들의 시퀀스(217)가 캡처된다.
단계(330)에서, 작업흐름은 비디오(215) 및 이벤트들의 시퀀스(217)에 기초하여 생성된다. 특히, 비디오(215) 및 이벤트들의 시퀀스(217)는 분석되어, RPA 로봇에 의해 실행될 때, RPA 로봇이 GUI를 이용하여 상기의 프로세스를 수행하게 하는 작업흐름을 생성한다. 비디오(215) 및 이벤트들의 시퀀스(217)는 하나 이상의 트레이닝된 머신 학습 알고리즘을 이용하여 분석될 수 있다. 단계(330)는 상기의 비디오로부터 GUI의 하나 이상의 대화형 요소를 식별하는 것 및 이벤트들의 시퀀스에서의 이벤트들 중 적어도 하나를 대화형 요소들 중 적어도 하나에 대응하는 것으로서 매칭하는 것을 포함할 수 있다. 이러한 방식으로, 단계(330)는 작업흐름에 대한 상호작용들의 시퀀스를 식별하는 것을 포함할 수 있다.
도 3b는 프로세스를 수행하기 위해 작업흐름(250)을 실행하는 RPA 시스템(230)의 RPA 로봇의 예시적인 방법(350)을 개략적으로 도시하는 흐름도이다. RPA 시스템(230)은 도 2와 관련하여 전술한 바에 따른 RPA 시스템(230)일 수 있다.
단계(360)에서, 컴퓨팅 시스템(200-1) 상의 GUI(210-1)의 비디오가 수신된다.
단계(370)에서, 컴퓨팅 시스템(200-1) 상의 GUI(210-1)의 비디오가 수신된다.
단계(380)에서, 입력(275)이 작업흐름(250)에 기초하여 컴퓨터 시스템(200-1)에 제공된다. 단계(380)는 GUI의 비디오를 분석하여 작업흐름(250)에 존재하는 GUI 요소들을 재식별하고, 작업흐름(250)에 따라 GUI에 입력을 제공하는 것을 포함할 수 있다. 이러한 방식으로, 단계(380)는 프로세스를 수행하기 위해 GUI를 통해 추가 시스템(200-1)을 동작할 수 있다.
도 4는 도 2와 관련하여 전술한 RPA 시스템(230)과 같은 RPA 시스템의 예시적인 작업흐름 분석 모듈을 개략적으로 도시한다.
도 4에 도시된 작업흐름 분석 모듈(240)은 비디오 수신기 모듈(410), 이벤트 수신기 모듈(420), 컴퓨터 비전 모듈(430), 액션 식별 모듈(440) 및 작업흐름 생성 모듈(450)을 포함한다. 또한, 도 2와 관련하여 전술한 바와 같이, GUI(210)를 통해 컴퓨터 시스템(200)과 상호작용하는 조작자(201)가 도 4에 도시되어 있다.
비디오 수신기 모듈(410)은 GUI(210)의 비디오(215)를 수신(또는 캡처 또는 다른 방식으로 획득)하도록 배열된다. GUI(210)의 비디오(215)는 컴퓨터 시스템(200) 상에(또는 그에 의해) 생성될 수 있다. 결과적인 비디오(215)는 이후 적절한 데이터 접속을 통해 RPA 시스템(230)에 (그리고 이에 의해 비디오 수신기 모듈(410)에) 송신될 수 있다.
컴퓨터 시스템(200)은 데이터 접속에 의해 RPA 시스템(230)에 접속될 수 있다는 것을 알 것이다. 데이터 접속은 컴퓨터 시스템(200)과 RPA 시스템(230) 사이에서 데이터를 통신 또는 전송하기에 적합한 임의의 데이터 통신 네트워크를 이용할 수 있다. 데이터 통신 네트워크는 광역 네트워크, 수도권 네트워크, 인터넷, 무선 통신 네트워크, 유선 또는 케이블 통신 네트워크, 위성 통신 네트워크, 전화 네트워크 등 중 하나 이상을 포함할 수 있다. 컴퓨터 시스템(200) 및 RPA 시스템(230)은 임의의 적절한 데이터 통신 프로토콜을 통해 데이터 통신 네트워크를 통해 서로 통신하도록 배열될 수 있다. 예를 들어, 네트워크 데이터 통신이 인터넷을 포함할 때, 데이터 통신 프로토콜은 TCP/IP, UDP, SCTP 등일 수 있다.
유사한 방식으로, 컴퓨터 시스템(200)은 GUI(210)의 시각 디스플레이를 비디오 수신기 모듈(410)에 전달(또는 달리 송신)하도록 배열될 수 있다. 비디오 수신기 모듈은 GUI의 전달된 시각 디스플레이로부터 비디오(215)를 생성(또는 캡처)하도록 구성될 수 있다. GUI들의 시각 디스플레이의 전달은 잘 알려져 있으며, 본 명세서에서 더 설명되지 않는다. 그러한 전달의 예들은 X11 윈도잉 시스템을 위해 이용가능한 X11 전달 시스템, 윈도우즈 운영 체제들을 위해 이용가능한 마이크로소프트사의 원격 데스크톱 서비스들 등을 포함한다. 원격 프레임 버퍼 프로토콜을 이용하는 것들과 같은 프레임버퍼 타입 전달 시스템들도 적합하다. 그러한 시스템들의 예들은 오픈 소스 가상 네트워크 컴퓨팅(Virtual Network Computing)(VNC) 및 그 변형들을 포함한다.
추가적으로 또는 대안적으로, 비디오 수신기 모듈(410)은 출력 인터페이스(112)에 의해 생성된 이미지/비디오 신호를 수신하도록 배열될 수 있다. 이미지/신호는 컴퓨터 시스템(200)의 사용자 출력 인터페이스(112)와 컴퓨터 시스템(200)의 모니터(120) 사이의 이미지/신호 경로에서 하드웨어 디바이스로부터 수신될 수 있다. 비디오 수신기 모듈(410)은 수신된 이미지/비디오 신호로부터 비디오(215)를 생성(또는 캡처)하도록 구성될 수 있다.
비디오 수신기 모듈(410)의 기능의 일부가 컴퓨터 시스템(200) 상에서(또는 그에 의해) 수행될 수 있다는 것을 알 것이다. 특히, 컴퓨터 시스템(200)은 GUI(210)의 비디오(215)를 생성하도록 배열된 하나의 소프트웨어(또는 소프트웨어 에이전트)를 실행할 수 있다.
이벤트 수신기 모듈(420)은 프로세스를 수행하기 위해 GUI를 이용하여 조작자에 의해 GUI와 관련하여 트리거된 이벤트들의 시퀀스(217)를 수신(또는 캡처)하도록 배열된다. 이벤트는 컴퓨터 시스템(200)에 대한 입력일 수 있다(또는 이를 포함할 수 있다). 특히, 이벤트는 (마우스 포인터와 같은) 포인터 클릭, 포인터 드래그, 포인터 이동, (키보드 또는 디스플레이 기반 소프트 키보드를 통한 것과 같은) 키 누름, 스크롤 휠 이동, (드래그 또는 클릭 또는 제스처 등과 같은) 터치 스크린(또는 패드) 이벤트, 조이스틱(또는 d-패드) 이동 등 중 임의의 것을 포함할 수 있다.
이벤트는 하나보다 많은 입력을 포함할 수 있다는 것을 이해할 것이다. 예를 들어, (제어 및/또는 대안, 또는 다른 변경자 키의 이용과 같은) 다수의 동시 키 누름들이 단일 이벤트로서 기록될 수 있다. 유사하게, (더블 또는 트리플 클릭과 같은) 임계 시간 내에 그룹화된 입력들은 단일 이벤트로서 기록될 수 있다. 이벤트는 또한 전형적으로 메타데이터를 포함한다. 이벤트에 대한 메타데이터는 이벤트 시의 스크린 상의 포인터(또는 커서) 위치; 키(키 누름의 경우) 등을 포함할 수 있다.
비디오 수신기 모듈(410)과 유사한 방식으로, 컴퓨터 시스템(200)은 GUI(210)와 관련하여 조작자에 의해 트리거된 이벤트들을 이벤트 수신기 모듈(420)에 전달(또는 다른 방식으로 송신)하도록 배열될 수 있다. 이벤트 수신기 모듈(420)은 수신된 이벤트들을 순차적으로 생성(또는 캡처)하도록 구성될 수 있다. 입력 이벤트들의 전달은 잘 알려져 있으며, 본 명세서에서 더 설명되지 않는다. 그러한 전달의 예들은 X11 윈도잉 시스템에 이용가능한 X11 전달 시스템, 윈도우즈 운영 체제들에 이용가능한 마이크로소프트사의 원격 데스크톱 서비스들, 오픈 소스 가상 네트워크 컴퓨팅(VNC) 및 그의 변형들을 포함한다. 전형적으로, 그러한 전달 시스템들은 운영 체제 레벨에서 이벤트들을 캡처하는 소프트웨어 에이전트(또는 헬퍼 프로그램)를 컴퓨터 시스템(200) 상에서 실행하는 것을 포함한다. 마이크로소프트 원격 데스크톱 서비스들 및 X11 전달 시스템과 같은 일부 경우에, 전달 시스템은 운영 체제의 일부이다.
추가적으로 또는 대안적으로, 이벤트 수신기 모듈(420)은 하나 이상의 입력 디바이스(124; 126)에 의해 생성된 입력 신호를 수신하도록 배열될 수 있다. 입력 신호는 하나 이상의 입력 디바이스(124; 126)와 컴퓨터 시스템(200)의 사용자 입력 인터페이스(114) 사이의 입력 신호 경로에서 하드웨어 디바이스로부터 수신될 수 있다. (키 로거(key logger)들과 같은) 그러한 하드웨어 디바이스들은 잘 알려져 있으며, 본 명세서에서 더 설명되지 않는다. 이벤트 수신기 모듈(420)은 수신된 입력 신호로부터 이벤트들의 시퀀스(217)를 생성(또는 캡처)하도록 구성될 수 있다.
컴퓨터 비전 모듈(430)은 GUI의 비디오(215)로부터 GUI(210)의 요소들(일반적으로 그래픽 사용자 인터페이스 요소들로 지칭됨)을 식별하도록 배열된다. 컴퓨터 비전 모듈(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 방식이 이용될 수 있다.
추가적으로 또는 대안적으로, 그러한 기법들은 GUI 요소들을 검출하기 위하여 심층 학습 모델들과 같은 머신 학습을 이용할 수 있다. 그러한 심층 학습 모델들은 GUI 요소들의 주석이 달린 스크린샷들(또는 그 부분들)을 포함하는 트레이닝 데이터를 이용하여 트레이닝될 수 있다. 특히 주석들은 주어진 스크린샷에서 알려진 GUI 요소들을 식별하는데 이용되는 바운딩 박스들을 포함할 수 있다.
컴퓨터 비전 모듈(430)은 주어진 식별된 GUI 요소에 대한 하나 이상의 앵커 GUI 요소를 식별하도록 더 배열된다. 컴퓨터 비전 모듈(430)은 또한 하나 이상의 앵커 요소를 주어진 식별된 GUI 요소와 연관시키도록 배열된다. 바로 아래에 설명되는 바와 같이, 앵커 요소는 예상된 동시 발생 GUI 요소들에 기초하여 주어진 요소에 대해 식별될 수 있다. 앵커 요소들은 전형적으로 주어진 GUI 요소에 대해 식별되어, 주어진 GUI 요소의 위치(또는 배열)가 GUI에서의 변경으로 인해 변경된다면 컴퓨터 비전 모듈(430)이 주어진 요소를 재식별할 수 있게 한다.
액션 식별 모듈(440)은 조작자(201)에 의해 GUI(210)에 대해 수행된 하나 이상의 액션을 식별하도록 배열된다. 특히, 액션 식별 모듈(440)은 이벤트들의 시퀀스(217) 및 컴퓨터 비전 모듈(430)에 의해 식별된 GUI 요소들에 기초하여 액션을 식별하도록 배열된다. 전형적으로, 액션은 하나 이상의 GUI 요소에 적용된 입력을 포함한다. 예를 들어, 액션은 (버튼 또는 다른 클릭가능한 요소와 같은) GUI 요소 상의 포인터 클릭; 텍스트 박스 내로의 텍스트 입력; 드래그 이벤트에 의한 하나 이상의 GUI 요소의 선택 등 중 임의의 것일 수 있다.
액션 식별 모듈(440)은 전형적으로 이벤트들의 시퀀스(217)에서의 하나 이상의 이벤트를 하나 이상의 식별된 GUI 요소에 매칭함으로써 액션을 식별하도록 배열된다. 예를 들어, (버튼과 같은) 클릭가능한 GUI 요소와 일치하는 포인터 위치를 갖는 포인터 클릭도 GUI 요소가 클릭된 액션으로서 식별될 수 있다. 유사하게, 커서가 식별된 텍스트박스에 존재할 때 발생하는 하나 이상의 키 누름 이벤트는 텍스트가 텍스트박스에 입력되는 액션으로서 식별될 수 있다. 추가적으로 또는 대안적으로, GUI 요소 내에서 발생하지 않는 클릭 이벤트들과 같은 이벤트들은 무시될 수 있다.
작업흐름 생성 모듈(450)은 액션 식별 모듈(440)에 의해 식별된 액션들에 기초하여 작업흐름(250)을 생성하도록 배열된다. 위에서 논의된 바와 같이, 작업흐름(250)은 GUI(210)와의 상호작용들의 시퀀스를 정의한다. 작업흐름의 각각의 상호작용(또는 단계)은 전형적으로 트리거링될 입력(또는 입력들) 및 작용될 GUI 요소를 정의한다. 예를 들어, 상호작용은 버튼의 클릭일 수 있고, 여기서 상호작용은 클릭될 버튼(즉, GUI 요소) 및 클릭의 타입(예를 들어, 우측 또는 좌측)을 지정할 수 있다. 상호작용(또는 단계)은 또한, 작업흐름이 바로 아래에 설명되는 바와 같이 실행될 때 GUI 요소의 재식별을 가능하게 하기 위해, 작용될 GUI 요소에 대한 앵커 요소들을 지정(또는 정의 또는 그렇지 않은 경우 표시)한다.
이러한 방식으로, 그렇게 생성된 작업흐름(250)이, 바로 아래에 설명되는 바와 같이, 실행 시스템(또는 RPA 로봇)이 GUI를 이용하여 프로세스를 수행할 수 있게 한다는 것이 이해될 것이다. 즉, 작업흐름 분석 모듈은, 생성된 작업흐름(250)을 통해, GUI(210)를 이용하여 상기의 프로세스를 수행하는 인간 조작자(201)의 관찰에 기초하여 프로세스를 수행하기 위해 주어진 RPA 로봇을 트레이닝하도록 배열된다.
도 5는 도 4와 관련하여 위에서 논의된 컴퓨터 비전 모듈과 같은 컴퓨터 비전 모듈(430)을 개략적으로 도시한다.
컴퓨터 비전 모듈(430)은 대표 프레임 식별 모듈(510), GUI 요소 식별 모듈(520), 및 이벤트 식별 모듈(530)을 포함한다.
대표 프레임 식별 모듈(510)은 GUI의 비디오(215)에서 대표 프레임들(또는 이미지들)을 식별하도록 배열된다. 대표 프레임은 특정 상태에서 GUI를 묘사하는 프레임으로서 식별될 수 있다. 전형적으로, 조작자(201)가 GUI(210)와 상호작용함에 따라, GUI(210)가 상태를 변경하고 GUI의 디스플레이가 새로운 상태를 반영하도록 변경된다는 것을 이해할 것이다. 예를 들어, 새로운 윈도우가 새로운 GUI(또는 인터페이스) 요소들과 함께 디스플레이될 수 있고, 대화 박스가 디스플레이될 수 있는 등이다. 마찬가지로, GUI(또는 인터페이스) 요소들이 제거될 수 있고, 예를 들어, 조작자가 대화 박스들과 상호작용하면 대화 박스들이 사라질 수 있고, 오래된 탭의 디스플레이를 새로운 탭으로 대체하는 새로운 탭이 선택될 수 있는 등으로 된다. 이러한 방식으로, 대표 프레임들이 디스플레이된 GUI에 대한 변경들에 기초하여 식별될 수 있다는 것이 이해될 것이다.
대표 프레임 식별 모듈(510)은 비디오 분석 기법들을 적용하여 그들에 선행하는 프레임(또는 프레임들)에 대한 시각적 차이의 임계 레벨 위에 있는 비디오에서의 프레임들 또는 이미지들을 식별함으로써 대표 프레임들을 식별하도록 배열될 수 있다. 추가적으로 또는 대안적으로, 대표 프레임 식별 모듈(510)은 이전 프레임들에 존재하지 않았던 주어진 프레임에 존재하는 새로운 인터페이스 요소들을 식별하는 것에 기초하여 대표 프레임들을 식별하도록 배열될 수 있다. GUI 요소들의 식별은 바로 아래에 설명되는 GUI 요소 식별 모듈(520)에 의해 수행될 수 있다.
대표 프레임 식별 모듈(510)은 대표 프레임들을 식별하기 위해 적절한 트레이닝된 머신 학습 알고리즘(또는 시스템)을 이용하도록 배열될 수 있다. 여기서, 머신 학습 알고리즘은 GUI의 비디오에 기초하여 GUI 상태 변경들을 식별하도록 트레이닝될 것이다. 특히, 머신 학습 알고리즘은 비디오에서의 인접한(또는 근처의) 프레임들에 대한 프레임의 시각적 외관에 대한 변경에 기초하여 GUI의 비디오로부터의 프레임(또는 이미지)을 대표 프레임으로서 분류할 수 있다. 그러한 분류는 또한 사용자 상호작용으로 인한 외관의 변경들과 그렇지 않은 변경들을 구별하기 위해 입력 이벤트와 그러한 시각적 외관의 변경의 상관(또는 동시 발생)에 기초할 수 있다.
GUI 요소 식별 모듈(520)은 GUI에서 하나 이상의 GUI(또는 인터페이스) 요소를 식별하도록 배열된다. 특히, GUI 요소 식별 모듈(520)은 대표 프레임 식별 모듈(510)에 의해 식별된 대표 프레임과 같은 GUI의 비디오(215)의 프레임의 이미지로부터 GUI 요소를 식별하도록 배열된다. GUI 요소 식별 모듈(520)은 예상된 GUI 요소들의 알려진 구성들(또는 외관들)에 기초하여 GUI 요소들을 식별하기 위해 특징 검출과 같은 이미지 분석 기법들을 이용하도록 배열될 수 있다. 추가적으로 또는 대안적으로, GUI 요소 식별 모듈(520)은 특정 GUI 요소들을 식별하도록 트레이닝된 머신 학습 알고리즘을 이용하도록 배열될 수 있다.
추가적으로, GUI 요소 식별 모듈(520)은 하나 이상의 앵커 요소를 식별하고/하거나 주어진 식별된 GUI 요소와 연관시키도록 배열될 수 있다. 주어진 GUI 요소에 대한 앵커 GUI 요소들은 주어진 식별된 요소에 대한 근접도(또는 거리)에 기초하여 식별될 수 있다. 특히, GUI 요소는 주어진 GUI 요소의 미리 결정된 거리 내에 배치되는 경우 앵커 요소로서 식별될 수 있다. 추가적으로 또는 대안적으로, 앵커 요소는 앵커 요소 및 주어진 요소의 타입에 기초하여 앵커 요소로서 식별될 수 있다. 예를 들어, 주어진 GUI 요소가 텍스트 박스인 경우, 텍스트 라벨(text label)이 텍스트 박스에 가깝게 존재할 것으로 예상될 수 있다. 따라서, 라벨 GUI 요소는 텍스트 박스 GUI 요소에 대한 앵커 요소로서 식별될 수 있다. 마찬가지로, 주어진 GUI 요소가 라디오 버튼 요소인 경우, 추가의 라디오 버튼 요소들이 식별된 라디오 버튼에 가깝게 존재할 것으로 예상될 수 있다. 앵커 요소들을 식별하기 위한 다른 방법들도 전술한 것들 대신에 또는 그에 부가하여 이용될 수 있다는 것을 알 것이다. 그러한 방법은 미리 결정된 수의 최근접 요소들(nearest elements)을 앵커 요소들로서 식별하는 것(k-최근접 이웃 접근법), 하나 이상의 미리 결정된 방향에서의 최근접 요소들을 앵커 요소들로서 식별하는 것, 주어진 식별된 요소의 특정의 미리 정의된 영역 내의 모든 요소들을 앵커 요소들로서 식별하는 것 등의 임의의 조합을 포함할 수 있다.
GUI 요소 식별 모듈(520)은 GUI의 비디오(215)(또는 추가 비디오)의 추가 이미지(또는 프레임)에서 식별된 (GUI 요소 식별 모듈(520)에 의해 이전에 식별된 GUI 요소와 같은) GUI 요소를 재식별하도록 더 배열된다. 특히, GUI 요소 식별 모듈(520)은 추가 이미지에서 식별된 GUI 요소가 이전에 식별된 GUI 요소와 연관된 앵커 요소들에 기초하여 이전 이미지로부터의 이전에 식별된 GUI 요소에 대응하는 것으로 결정하도록 배열된다. 추가 이미지에서의 GUI 요소는 이전에 식별된 GUI 요소의 동일한 앵커 요소들에 대응하는 추가 이미지에서의 GUI 요소의 앵커 요소들을 식별하는 것에 기초하여 재식별될 수 있다. 앵커 요소들의 그들 각자의 식별된 GUI 요소들에 대한 상대적 위치들이 미리 결정된 임계값 내에 있다면, 앵커 요소는 다른 앵커 요소에 대응하는 것으로 간주될 수 있다. 유사하게, 식별된 GUI 요소가 복수의(또는 세트의) 앵커 요소들과 연관된다면, 앵커 요소들의 세트는, 그들 각자의 식별된 GUI 요소들에 대한 앵커 요소들의 세트들의 상대적 위치들이 미리 결정된 임계값 내에서 동의한다면 앵커 요소들의 다른 세트에 대응하는 것으로 간주될 수 있다. 앵커 요소들은 연관된 가중치(또는 중요도)를 가질 수 있고, 더 높은 가중된 앵커 요소들의 상대적 위치들은 더 작은 미리 결정된 임계값을 백색화(whiting)하는 것에 동의할 것이 요구된다는 것을 알 것이다.
이러한 방식으로, GUI 요소 식별 모듈은 GUI의 후속 인스턴스들의 비디오들에서 GUI 내의 특정 입력 필드와 같은 동일한 GUI 입력 요소를 재식별할 수 있다는 것을 알 것이다. 앵커 요소들의 이용은 GUI 요소가 위치를 변경하도록 GUI가 수정되더라도 이러한 재식별이 여전히 발생할 수 있는 것을 제공한다. 이것은 또한 이동되었을 가능성이 있는 텍스트 박스들에 대한 라벨들과 같은 동시 발생 GUI 요소들(앵커 요소들)이 GUI 요소를 재식별하는데 이용될 수 있기 때문이다.
GUI 요소 식별 모듈(520)은 적절한 트레이닝된 머신 학습 알고리즘(또는 시스템)을 이용하여, 그들 각자의 앵커 요소들에 기초하여 GUI 요소들을 재식별하도록 배열될 수 있다. 예를 들어, 그래프 신경망은 머신 학습 알고리즘의 일부로서 이용될 수 있다. 여기서, GUI 요소들은 그래프에서의 노드들에 의해 맵핑(또는 표현)된다. 노드들 사이의 접속들은 2개의 노드에 의존하는 상이한 특징 값들을 갖는다. 그러한 특징 값들은 2개의 노드들 사이의 거리, 노드들의 배향(또는 포즈), 노드들이 애플리케이션 윈도우에서의 동일한 패널에 속하는지 여부 등 중 임의의 하나 이상을 포함할 수 있다. 그래프 신경망은 이후 재식별 노드들에 대해 최적화함으로써 트레이닝될 수 있다. 사실상, 그래프 신경망은, 트레이닝 프로세스를 통해, 어느 특징 값들이 재식별에 중요한지를 학습한다. 이러한 방식으로, GUI 요소 식별 모듈은 앵커 요소들을 초기에 식별할 때 이를 고려하여, 재식별에 더 효과적인 앵커 요소들을 선택할 수 있다.
GUI 요소 식별 모듈(520)은 유사한 방식으로 초기에 주어진 요소에 대한 앵커 요소들을 식별하기 위해 머신 학습 알고리즘의 일부로서 그래프 신경망을 이용하도록 배열될 수 있다는 것을 알 것이다. 특히, 요소들은 전술한 바와 같이 특징 값들에 기초하여 앵커 요소들로서 식별될 수 있다.
이벤트 식별 모듈(530)은 GUI의 비디오(215)에 기초하여 추가 이벤트들을 식별하도록 배열된다. 본 명세서에서 전술한 이벤트들은 조작자(201)로부터의 입력에 의해 트리거되는(또는 그렇지 않은 경우 그를 수반하는) 이벤트들과 관련되지만, 조작자의 비활동에 기초하여 또는 외부 트리거들에 기초하여 다른 이벤트들이 발생할 수 있다는 것을 알 것이다. 예를 들어, 대화형 요소 위에 포인터를 호버링하는 것은 (컨텍스트 메뉴와 같은) 하나 이상의 추가 GUI 요소의 디스플레이를 트리거할 수 있는 호버오버 이벤트로 생각될 수 있다. 이것은 비활성, 즉, 조작자가 미리 결정된 시간 기간 동안 포인터를 이동시키지 않음에 의해 야기되기 때문에, 그러한 이벤트는 이벤트 수신기 모듈(420)에 의해 캡처된 이벤트들의 시퀀스(217)에서 나타나지 않을 수 있다. 추가적으로 또는 대안적으로, 광고들과 같은 동적 콘텐츠(또는 요소들)를 식별하기 위해 비활동이 이용될 수 있다. 이것은 웹페이지가 로딩을 완료한 때와 같은 페이지 로딩 이벤트들을 결정하는 것에 기초하여 행해질 수 있다. 이벤트 식별 모듈(530)은 이벤트 수신기 모듈(420)에 의해 캡처된 이벤트들의 시퀀스(217)에서의 대응하는 이벤트들이 없는 포인트에서 GUI 내의 하나 이상의 추가의 GUI 요소의 외관(또는 구체화(materialization) 또는 디스플레이)을 식별한 것에 기초하여 추가의 이벤트를 식별하도록 배열될 수 있다. 이벤트 식별 모듈(530)은 GUI의 비디오(215)에 기초하여 추가의 이벤트들을 식별하기 위해 적절한 트레이닝된 머신 학습 알고리즘(또는 시스템)을 이용하도록 배열될 수 있다. 이벤트 식별 모듈(530)은 또한 유사한 사용자 입력을 갖는 이벤트들을 구별하도록 배열될 수 있다. 예를 들어, 마우스를 드래그하는 사용자 입력은 다수의 상이한 상호작용과 관련될 수 있다. 이러한 상호작용들은 식별된 GUI 요소(또는 요소들)에 의존할 수 있다. 예를 들어, 마우스를 드래그하는 사용자 입력은 슬라이더를 드래그하는 것, 요소를 드래그 앤 드롭하는 것, (래싱(lassoing)으로 알려진) 드래깅에 의해 생성된 영역 내의 요소들을 선택하는 것과 관련될 수 있다. 이들은 모두 캡처된 유사한 입력 이벤트들, 즉, 마우스 좌측 버튼 누름, 마우스 이동 및 마우스 좌측 버튼 해제를 갖지만, 의미적으로 상이한 기능성을 가진다. 이벤트 식별 모듈(530)은 식별된 GUI 요소들과의 매칭 입력에 기초하여 이들 이벤트를 구별하도록 배열될 수 있다. 특히, 이벤트 식별 모듈(530)은 휴리스틱(heuristics) 또는 트레이닝된 머신 학습 분류 모델을 이용할 수 있다.
이벤트 식별 모듈(530)은 전형적으로 액션 식별 모듈(440)에 의한 추가 처리를 위해 이벤트들의 시퀀스(217)에 식별된 추가 이벤트들을 포함하도록 배열된다.
도 6은 도 4와 관련하여 위에서 논의된 액션 식별 모듈(440)과 같은 액션 식별 모듈(440)을 개략적으로 도시한다.
액션 식별 모듈(440)은 이벤트 매칭 모듈(610), 서브프로세스 식별 모듈(620), 및 입력/출력 식별 모듈(630)을 포함한다.
이벤트 매칭 모듈(610)은, 위에서 논의된 바와 같이, 이벤트들의 시퀀스(217)에서의 하나 이상의 이벤트를 하나 이상의 식별된 GUI 요소에 매칭함으로써 액션을 식별하도록 배열된다. 예를 들어, 이벤트 매칭 모듈(610)은 이벤트들 및 작용되었던 대응하는 식별된 GUI 요소들을 페어링할 수 있다. 이것은 (마우스 클릭과 같은) 이벤트의 공간 좌표들과 스크린 상의 그 위치에서의 GUI 요소를 매칭함으로써 행해질 수 있다. (키보드 액션들과 같은) 공간 좌표들을 갖지 않는 이벤트들의 경우, GUI 요소와 이벤트를 페어링하기 위해 마우스 클릭과 같은 공간 좌표들을 갖는 이전의 이벤트가 이용될 수 있다. 추가적으로 또는 대안적으로, 텍스트 커서(또는 다른 입력 마커)와 같은 특정 식별된 GUI 요소의 위치를 이용하여, (키 누름과 같은) 이벤트를 (텍스트 박스와 같은) 각자의 GUI 요소와 페어링할 수 있다.
서브프로세스 식별 모듈(620)은 하나 이상의 서브프로세스를 식별하도록 배열된다. GUI(210)를 이용하여 조작자(201)에 의해 수행되는 주어진 프로세스가 개별적인 서브프로세스로 분해될 수 있다는 것을 알 것이다. 전형적으로, 프로세스는 하나보다 많은 개별 작업들을 수반할 수 있고, 그 각각은 애플리케이션들의 하나 이상의 세트에 의해 수행된다. 예를 들어, 비용 청구를 제출하는 프로세스의 경우, 제1 애플리케이션을 이용하여 필요한 인보이스(invoice)를 획득하는 제1 서브프로세스가 존재할 수 있고, 제2 서브프로세스로서, 인보이스는 내부 회계 플랫폼에 업로드될 필요가 있을 수 있고, 마지막으로 제3 서브프로세스로서, 비용 애플리케이션은 청구 자체를 생성하는데 이용될 수 있다. 따라서, 서브프로세스 식별 모듈(620)은 서브프로세스를 특정 애플리케이션에 대응하는 이벤트들의 시퀀스(217)로서 식별하도록 배열될 수 있다. 애플리케이션(및 애플리케이션의 이용)은 컴퓨터 비전 모듈(430)에 의해 식별된 GUI 요소들에 기초하여 식별될 수 있다. 예를 들어, 특정 애플리케이션의 윈도우가 포커스가 맞춰진 기간 동안 트리거된 이벤트들은 서브프로세스로서 식별될 수 있다. 일례에서, 서브프로세스는 포커스가 맞춰질 때 특정 윈도우 상에서 트리거되는 모든 이벤트들 및/또는 윈도우 상에서 트리거되는 모든 이벤트들로서 식별될 수 있는 한편, 그 윈도우에 대한 GUI 요소들은 미리 결정된 임계값보다 많이 변경되지 않는다. 윈도우에 대한 GUI 요소들이 미리 결정된 임계값보다 많이 변하지 않는 동안 그 윈도우 상에서 트리거된 이벤트들을 식별함으로써, 서브프로세스는, 예를 들어, 탭핑된 윈도우 상의 특정 탭과 관련하여 식별될 수 있다. 여기서, 탭들 사이의 이동은 임계 개수의 요소들(또는 그 이상)이 변경(예를 들어, 위치 시프트, 추가 또는 제거)되게 할 수 있다. 다른 그러한 휴리스틱 접근법들(또는 기준들)도 이용될 수 있다는 것을 알 것이다.
입력/출력 식별 모듈(630)은 하나 이상의 프로세스 입력을 식별하도록 배열된다. 주어진 프로세스를 수행할 때, 조작자(201)가 GUI를 이용하여 데이터(또는 프로세스 입력들)를 입력할 수 있다는 것을 알 것이다. 예를 들어, 조작자(201)는 프로세스의 일부로서 GUI에 사용자명 및/또는 패스워드를 입력(enter)(또는 입력)할 수 있다. 입력/출력 식별 모듈(630)은 (전술한 데이터 저장 디바이스(122)와 같은) 바로 아래에서 설명된 데이터 저장소(810)에 입력 데이터를 저장하도록 배열될 수 있다.
입력/출력 식별 모듈(630)은 입력 데이터가 저장소(810)로부터 검색될 것을 요구하는 액션으로서 프로세스 입력을 식별하도록 배열될 수 있다.
입력/출력 식별 모듈(630)은 서브프로세스에 대한 하나 이상의 프로세스 입력 및/또는 프로세스 출력을 식별하도록 배열될 수 있다. 서브프로세스가 추가의 서브프로세스에 대한 프로세스 입력으로서 이용될 수 있는 출력(또는 프로세스 출력)을 제공할 수 있다는 것을 알 것이다. 프로세스 출력은 GUI를 통해 디스플레이되는 데이터를 포함할 수 있다. 예를 들어, 전술한 제1 서브프로세스에서는 인보이스 번호가 클립보드에 복사될 수 있도록 검색된 인보이스를 보는 것을 포함할 수 있다. 이어서, 제3 서브프로세스는 이 인보이스 번호를 비용 청구 형태로 붙여넣기하는 것을 포함할 수 있다. 이러한 방식으로, 제1 하위 단계의 프로세스 출력은 클립보드에 복사된 인보이스 번호일 것이다. 이어서, 클립보드에서의 이 인보이스 번호는 제3 하위 단계에 대한 프로세스 입력으로서 기능할 것이다.
즉, 서브프로세스에 대한 입력(예컨대, 사용자명 및/또는 패스워드 등)이 있는 경우, 사용자는 입력에 대해 이용될 소스(예컨대, 데이터 저장소, 클립보드, 파일 등)를 지정하기 위해 입력에 대한 옵션을 제공받을 수 있다.
도 7은 예시적인 작업흐름(700)을 개략적으로 도시한다. 또한 도 7에는 작업흐름의 편집된 버전(750)이 도시되어 있다.
작업흐름(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을 갖는다.
서브프로세스에 의해 수행되는 작업이 똑같이 상이한 서브프로세스로 수행될 수 있다는 것을 알 것이다. 상이한 서브프로세스는 상이한 작업흐름의 일부를 형성하는 것일 수 있다. 예를 들어, 위에서 논의된 비용 청구를 제출하는 프로세스의 경우, 내부 회계 플랫폼의 변경이 있을 수 있다. 이것은 새로운 플랫폼을 이용하기 위해 제2 서브프로세스가 변경될 것을 요구할 수 있다. 이것은 작업흐름의 편집된 버전을 생성하기 위해 기존의 작업흐름에서의 새로운 회계 플랫폼을 이용하여 새로운 서브프로세스를 대신 대체함으로써 작업흐름을 재기록(또는 재생성)하지 않고 달성될 수 있다.
작업흐름의 편집된 버전(750)은 작업흐름(700)의 서브프로세스들 1, 2, 4를 포함하지만 제2 서브프로세스 2가 추가의 서브프로세스 5를 대체한다. 이것은 추가의 서브프로세스가 제2 서브프로세스와 동일한 프로세스 입력들 및 프로세스 출력들을 가졌기 때문에 가능하였다. 알 수 있는 바와 같이, 제1 프로세스 출력 1-1은 이제 추가 서브프로세스에 대한 프로세스 입력이다. 추가의 서브프로세스 5는 서브프로세스 3에 대한 프로세스 입력인 프로세스 출력 5-1을 갖는다.
이러한 방식으로, 새로운 프로세스가 조작자(201)에 의해 수행되지 않고, 새로운 프로세스를 수행하는 새로운 작업흐름을 형성하기 위해 작업흐름들이 변경 및/또는 결합될 수 있다는 점을 알 것이다.
도 8은 도 2와 관련하여 전술한 RPA 시스템(230)과 같은 RPA 시스템의 예시적인 실행 모듈(270)을 개략적으로 도시한다.
도 8에 도시된 실행 모듈(270)은 비디오 수신기 모듈(410), 컴퓨터 비전 모듈(430), (전술한 데이터 저장 디바이스(122)와 같은) 데이터 저장소(810), 및 입력 트리거 모듈(820)을 포함한다. 또한, GUI(210-1)를 갖는 컴퓨터 시스템(200-1)이 도 8에 도시되어 있다.
비디오 수신기 모듈(410) 및 컴퓨터 비전 모듈(430)의 상기의 설명들은 도 8에 도시된 비디오 수신기 모듈(410) 및 컴퓨터 비전 모듈(430)에 동일하게 적용된다는 것을 알 것이다. 특히, 컴퓨터 비전 모듈(430)은 비디오 수신기 모듈(410)로부터 GUI(210)의 비디오(215)를 수신하도록 배열된다는 것을 알 것이다.
도 8에 도시된 바와 같이, 실행 모듈(270)은 이전에 설명된 바와 같이 작업흐름(250)을 수신한다(또는 로딩하였다). 이것은 실행 모듈(270)이 컴퓨터 시스템(200-1)의 GUI를 이용하여 작업흐름(250)의 프로세스를 수행하도록 트레이닝(또는 그렇지 않은 경우 인에이블링)하는 역할을 한다.
입력 트리거 모듈(820)은 작업흐름에서 지정된 상호작용들을 수행하기 위해 컴퓨터 시스템(200)에 대한 입력 신호들을 생성하도록 배열된다. 구체적으로, 주어진 상호작용에 대해, 입력 트리거 모듈(820)은 컴퓨터 비전 모듈(430)을 이용하여 상호작용에서 지정된 GUI 요소를 재식별하도록 배열된다. 입력 트리거 모듈은 재식별된 GUI 요소에 기초하여 상호작용을 수행하기 위한 입력을 생성하도록 배열된다. 예를 들어, 특정 버튼에 대한 포인터 클릭을 지정하는 상호작용의 경우, 입력 트리거 모듈은 컴퓨터 비전 모듈에 의해 재식별되는 버튼의 위치에서 클릭이 발생하도록 포인터 이동 및 클릭을 생성할 것이다. 따라서, 작업흐름이 생성되었을 때 버튼의 위치에 대한 GUI 내의 버튼의 임의의 변위(displacement)가 고려될 것이다.
입력 트리거 모듈(820)은 또한 데이터 저장소(810)와 같은 외부 소스로부터 상호작용을 위한 특정 텍스트 입력을 검색하도록 배열될 수 있다. 데이터 저장소는 작업흐름의 특정 단계들(또는 상호작용들)에 대한 특정 텍스트 입력을 저장하도록 배열될 수 있다. 그러한 특정 텍스트 입력의 예들은 사용자명 및/또는 패스워드; 미리 정의된 ID 번호 또는 코드들 등을 포함할 수 있다. 데이터 저장소는 저장된 데이터의 기밀성을 보장하기 위해 보안될 수 있다. 이러한 방식으로, 민감한 입력(예컨대, 사용자명 및 패스워드 등)이 필요에 따라 프로세스의 장래의 실행을 위해 보호 및/또는 변경될 수 있다.
따라서, 작업흐름에서의 상호작용들에 대해 반복함으로써, 실행 모듈(270)이 GUI를 통해 작업흐름의 프로세스를 수행할 수 있다는 점을 알 것이다. 이러한 방식으로, 실행 모듈(270)은 프로세스를 수행하도록 트레이닝된 RPA 로봇인 것으로 이해될 것이다.
도 9a는 GUI의 비디오(215)로부터의 이미지(900)(또는 프레임)를 도시한다. 전술한 바와 같이, GUI 요소 식별 모듈(520)에 의해 다수의 GUI 요소들이 식별되었다. 식별된 GUI 요소들은 도면의 목적을 위해 박스들로 도면에 표시된다. 도 9a로부터 알 수 있는 바와 같이, 식별된 GUI 요소들은 아이콘들, 텍스트 라벨들, 탭들, 메뉴 항목들(버튼들) 등을 포함한다.
특히, 특정한 GUI 요소(910)(도 9a에서 메뉴 항목 "컴퓨터")가 식별되었고, 4개의 연관된 앵커 요소들(920)도 또한 식별되었다. 앵커 요소들의 식별은 전술한 바와 같으며, 특정 GUI 요소(910)의 재식별을 허용한다. 이 예에서, 앵커 요소들은 k-최근접 이웃들에 기초하여 GUI 요소 식별 모듈에 의해 선택되었다. 이 경우 k는 여기서 4이다. 이것은 특징 값으로서 근접도를 우선순위화하는 것을 갖는 것으로 이해될 수 있다. 그러나, 앵커 요소들의 서로에 대한 배향 및/또는 식별된 요소 또한 이용될 수 있다 - 즉, 앵커 박스는 후보 근처에 있을 뿐만 아니라 동일한 배향/방향에 있다.
도 9b는 도 9a의 GUI의 추가 비디오(215)로부터의 이미지(950)(또는 프레임)를 도시한다. 이미지(950)에서, GUI의 요소들의 수는 도 9에 도시된 이미지(900)에 대해 상이하다. 다시, 전술한 바와 같이, GUI 요소들의 수가 GUI 요소 식별 모듈(520)에 의해 식별되었다. 식별된 GUI 요소들은 도면에서 박스들로 표시된다. 도 9a로부터 알 수 있는 바와 같이, 식별된 GUI 요소들은 아이콘들, 텍스트 라벨들, 탭들 등을 포함한다.
이미지(950)에서, 도 9a에서 식별된 특정 GUI 요소(910)는 식별된 앵커 요소들(920)에 기초하여, 전술한 바와 같이, GUI 요소 식별 모듈(520)에 의해 재식별되었다. 이러한 방식으로, 특정 요소(910)는 GUI에 대한 변경들에도 불구하고 재식별된다.
설명된 방법들은 특정 순서로 수행되는 개별 단계들로서 도시되었다는 것을 알 것이다. 그러나, 통상의 기술자는 이들 단계들이 원하는 결과를 여전히 달성하면서 상이한 순서로 조합되거나 수행될 수 있다는 것을 알 것이다.
본 발명의 실시예들은 다양한 상이한 정보 처리 시스템들을 이용하여 구현될 수 있다는 것을 알 것이다. 특히, 도면들 및 그의 논의가 예시적인 컴퓨팅 시스템 및 방법들을 제공하지만, 이들은 단지 본 발명의 다양한 양태들을 논의함에 있어서 유용한 참조를 제공하기 위해 제시된다. 본 발명의 실시예들은 개인용 컴퓨터, 랩톱, 개인 휴대 정보 단말기(personal digital assistant), 모바일 전화기, 셋톱 박스, 텔레비전, 서버 컴퓨터 등과 같은 임의의 적절한 데이터 처리 디바이스 상에서 수행될 수 있다. 물론, 시스템들 및 방법들의 설명은 논의의 목적을 위해 단순화되었으며, 이들은 본 발명의 실시예들에 이용될 수 있는 많은 상이한 타입의 시스템 및 방법 중 단지 하나이다. 논리 블록들 사이의 경계들은 단지 예시적인 것이며, 대안적인 실시예들은 논리 블록들 또는 요소들을 병합할 수 있거나, 다양한 논리 블록들 또는 요소들에 대해 기능의 대안적인 분해를 부과할 수 있다는 것을 알 것이다.
전술한 기능은 하드웨어 및/또는 소프트웨어와 같은 하나 이상의 대응하는 모듈로서 구현될 수 있다는 것을 알 것이다. 예를 들어, 전술한 기능은 시스템의 프로세서에 의한 실행을 위한 하나 이상의 소프트웨어 컴포넌트로서 구현될 수 있다. 대안적으로, 전술한 기능성은 하나 이상의 필드-프로그래밍가능-게이트-어레이(FPGA)들, 및/또는 하나 이상의 주문형 집적 회로(ASIC)들, 및/또는 하나 이상의 디지털-신호-프로세서(DSP)들, 및/또는 다른 하드웨어 배열들 상에서와 같이, 하드웨어로서 구현될 수 있다. 본 명세서에 포함된 흐름도들에서, 또는 전술한 바와 같이 구현되는 방법 단계들 각각은 대응하는 각자의 모듈들에 의해 구현될 수 있고; 본 명세서에 포함된 흐름도들에서, 또는 전술한 바와 같이 구현되는 다수의 방법 단계들은 단일 모듈에 의해 함께 구현될 수 있다.
본 발명의 실시예들이 컴퓨터 프로그램에 의해 구현되는 한, 컴퓨터 프로그램을 운반하는 송신 매체 및 저장 매체는 본 발명의 양태들을 형성한다는 것을 알 것이다. 컴퓨터 프로그램은 컴퓨터에 의해 실행될 때 본 발명의 실시예를 수행하는 하나 이상의 프로그램 명령어 또는 프로그램 코드를 가질 수 있다. 본 명세서에서 이용된 바와 같은 용어 "프로그램"은, 컴퓨터 시스템 상에서 실행되도록 설계된 명령어들의 시퀀스일 수 있고, 서브루틴, 함수, 프로시저, 모듈, 객체 방법, 객체 구현, 실행가능 애플리케이션, 애플릿(applet), 서블릿(servlet), 소스 코드, 객체 코드, 공유 라이브러리, 동적 링크된 라이브러리, 및/또는 컴퓨터 시스템 상에서 실행되도록 설계된 명령어들의 다른 시퀀스들을 포함할 수 있다. 저장 매체는 (하드 드라이브 또는 플로피 디스크와 같은) 자기 디스크, (CD-ROM, DVD-ROM 또는 BluRay 디스크와 같은) 광학 디스크, 또는 (ROM, RAM, EEPROM, EPROM, 플래시 메모리 또는 휴대용/이동식 메모리 디바이스와 같은) 메모리 등일 수 있다. 송신 매체는 통신 신호, 데이터 브로드캐스트, 2개 이상의 컴퓨터들 사이의 통신 링크 등일 수 있다.

Claims (23)

  1. GUI를 이용하기 위해 RPA 로봇을 트레이닝하는 방법으로서,
    조작자가 상기 GUI를 이용하여 프로세스를 수행함에 따라 상기 GUI의 비디오를 캡처하는 단계;
    상기 조작자가 상기 GUI를 이용하여 상기 프로세스를 수행함에 따라 트리거된 이벤트들의 시퀀스를 캡처하는 단계; 및
    상기 비디오 및 상기 이벤트들의 시퀀스를 분석하여 작업흐름을 생성하는 단계 ― 상기 작업흐름은, RPA 로봇에 의해 실행될 때, 상기 RPA 로봇이 상기 GUI를 이용하여 상기 프로세스를 수행하게 함 ―
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 분석하는 단계는,
    상기 비디오로부터 상기 GUI의 하나 이상의 대화형 요소를 식별하는 단계; 및
    상기 이벤트들의 시퀀스에서의 상기 이벤트들 중 적어도 하나를 상기 대화형 요소들 중 적어도 하나에 대응하는 것으로서 매칭하는 단계
    를 더 포함하는, 방법.
  3. 제1항 또는 제2항에 있어서,
    대화형 요소를 식별하는 단계는 트레이닝된 머신 학습 알고리즘을 상기 비디오의 적어도 일부에 적용함으로써 수행되는, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    대화형 요소를 식별하는 단계는 상기 대화형 요소에 대한 상기 GUI에서의 하나 이상의 앵커 요소의 위치들을 식별하는 단계를 포함하는, 방법.
  5. 제4항에 있어서,
    머신 학습 알고리즘이 하나 이상의 미리 결정된 특징 값에 기초하여 상기 하나 이상의 앵커 요소를 식별하는데 이용되는, 방법.
  6. 제5항에 있어서,
    상기 특징 값들은 상기 머신 학습 알고리즘의 트레이닝을 통해 결정되는, 방법.
  7. 제5항 또는 제6항에 있어서, 상기 특징 값들은,
    요소들 사이의 거리;
    요소의 배향; 및
    요소들이 동일한 윈도우에 있는지 여부
    중 임의의 하나 이상을 포함하는, 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 이벤트들의 시퀀스는,
    키 누름 이벤트;
    호버오버 이벤트;
    클릭 이벤트;
    드래그 이벤트; 및
    제스처 이벤트
    중 임의의 하나 이상을 포함하는, 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 비디오에 기초하여 상기 이벤트들의 시퀀스에서의 하나 이상의 추론된 이벤트를 포함하는 단계를 포함하는, 방법.
  10. 제9항에 있어서,
    호버 이벤트는 상기 GUI에서 보이게 되는 하나 이상의 인터페이스 요소에 기초하여 추론되는, 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서, 상기 분석하는 단계는,
    상기 프로세스의 서브프로세스들의 시퀀스를 식별하는 단계를 포함하는, 방법.
  12. 제11항에 있어서,
    상기 시퀀스의 서브프로세스들 중 하나의 서브프로세스의 프로세스 출력은 상기 RPA 로봇에 의해 상기 시퀀스의 다른 서브프로세스에 대한 프로세스 입력으로서 이용되는, 방법.
  13. 제11항 또는 제12항에 있어서,
    추가의 서브프로세스에 대응하는 이전에 생성된 작업흐름의 일부를 포함하도록 상기 생성된 작업흐름을 편집하여, 상기 편집된 작업흐름이, RPA 로봇에 의해 실행될 때, 상기 RPA 로봇이 상기 GUI를 이용하여 상기 프로세스의 버전을 수행하게 하는 단계를 더 포함하고, 상기 프로세스의 버전은 상기 추가의 서브프로세스를 포함하는, 방법.
  14. 제13항에 있어서,
    상기 프로세스의 버전은 상기 프로세스의 기존의 서브프로세스 대신에 상기 추가의 서브프로세스를 포함하는, 방법.
  15. 제1항 내지 제14항 중 어느 한 항에 있어서,
    상기 비디오 및/또는 상기 이벤트의 시퀀스는 원격 데스크톱 시스템을 이용하여 캡처되는, 방법.
  16. 제1항에 따른 방법에 의해 트레이닝된 RPA 로봇을 이용하여 GUI를 이용해서 프로세스를 수행하는 방법.
  17. 제16항에 있어서,
    상기 RPA 로봇이 작업흐름에서 지정된 각자의 앵커 요소들에 기초하여 상기 GUI에서의 하나 이상의 대화형 요소를 재식별하는 단계를 더 포함하는, 방법.
  18. 제17항에 있어서,
    머신 학습 알고리즘이 하나 이상의 미리 결정된 특징 값에 기초하여 상기 하나 이상의 대화형 요소를 재식별하는데 이용되는, 방법.
  19. 제18항에 있어서,
    상기 특징 값들은 상기 머신 학습 알고리즘의 트레이닝을 통해 결정되는, 방법.
  20. 제18항 또는 제19항에 있어서, 상기 특징 값들은,
    요소들 사이의 거리;
    요소의 배향; 및
    요소들이 동일한 윈도우에 있는지 여부
    중 임의의 하나 이상을 포함하는, 방법.
  21. 제1항 내지 제20항 중 어느 한 항에 따른 방법을 수행하도록 배열된 장치.
  22. 컴퓨터 프로그램으로서, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 제1항 내지 제20항 중 어느 한 항에 따른 방법을 수행하게 하는, 컴퓨터 프로그램.
  23. 제22항에 따른 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 매체.
KR1020227040656A 2020-05-01 2020-05-01 로봇 프로세스 자동화를 위한 시스템 및 방법들 KR20230005246A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2020/062199 WO2021219234A1 (en) 2020-05-01 2020-05-01 System and methods for robotic process automation

Publications (1)

Publication Number Publication Date
KR20230005246A true KR20230005246A (ko) 2023-01-09

Family

ID=70483135

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227040656A KR20230005246A (ko) 2020-05-01 2020-05-01 로봇 프로세스 자동화를 위한 시스템 및 방법들

Country Status (9)

Country Link
US (1) US20230169399A1 (ko)
EP (1) EP4143643A1 (ko)
JP (1) JP7540003B2 (ko)
KR (1) KR20230005246A (ko)
CN (1) CN115917446A (ko)
AU (1) AU2020444647A1 (ko)
BR (1) BR112022022260A2 (ko)
CA (1) CA3177469A1 (ko)
WO (1) WO2021219234A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117671459B (zh) * 2024-01-30 2024-06-11 山东远联信息科技有限公司 引导式rpa人工智能深度学习方法及系统

Family Cites Families (5)

* 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
US11157855B2 (en) * 2017-01-09 2021-10-26 Sutherland Global Services Inc. Robotics process automation platform
JP7056289B2 (ja) 2018-03-23 2022-04-19 日本電気株式会社 管理システム、端末装置、管理装置、管理方法、およびプログラム
US11631151B2 (en) * 2018-09-30 2023-04-18 Strong Force Tp Portfolio 2022, Llc Intelligent transportation systems
US11822913B2 (en) * 2019-12-20 2023-11-21 UiPath, Inc. Dynamic artificial intelligence / machine learning model update, or retrain and update, in digital processes at runtime

Also Published As

Publication number Publication date
JP2023529556A (ja) 2023-07-11
JP7540003B2 (ja) 2024-08-26
CN115917446A (zh) 2023-04-04
EP4143643A1 (en) 2023-03-08
BR112022022260A2 (pt) 2023-01-31
WO2021219234A1 (en) 2021-11-04
CA3177469A1 (en) 2021-11-04
US20230169399A1 (en) 2023-06-01
AU2020444647A1 (en) 2022-12-08

Similar Documents

Publication Publication Date Title
CN107666987B (zh) 机器人过程自动化
US20120166980A1 (en) Automatic Sash Configuration in a GUI Environment
US20120110516A1 (en) Position aware gestures with visual feedback as input method
US20120107790A1 (en) Apparatus and method for authoring experiential learning content
CN104685449A (zh) 基于用户的目光的用户界面元素焦点
CN104246659A (zh) 可实例化的手势对象
WO2017001560A1 (en) Robotic process automation
JP2021018104A (ja) 自動判別処理装置、自動判別処理方法、検査システム、プログラム、および記録媒体
IL287818B1 (en) Electronic product testing system for automatic product testing
Tehranchi et al. Modeling visual search in interactive graphic interfaces: Adding visual pattern matching algorithms to ACT-R
Ivaschenko et al. Accented visualization in digital industry applications
US20230169399A1 (en) System and methods for robotic process automation
US20180090027A1 (en) Interactive tutorial support for input options at computing devices
CN110604918B (zh) 界面元素调整方法与装置、存储介质、电子设备
Mohamed Eye-gesture control of computer systems via artificial intelligence
CN113626309A (zh) 模拟移动终端操作的方法、装置、电子设备及存储介质
Poirier et al. Interactive multimodal system characterization in the internet of things context
Barz et al. MASTER-XR: Mixed Reality Ecosystem for Teaching Robotics in Manufacturing
Grill et al. Conwiz: The contextual wizard of oz
Silva et al. Android App Development Applied to Remote Tasks Simplification
Narayana et al. High speed script execution for GUI Automation using Computer Vision.
Dong et al. A Study on the Usability Evaluation of Teaching Pendant for Manipulator of Collaborative Robot
CN116755563B (zh) 用于头戴显示设备的交互控制方法和装置
CN114967927B (zh) 一种基于图像处理的智能手势交互方法
Figueira et al. Youkai: A Cross-Platform Framework for Testing VR/AR Apps