CN112930537B - 文本检测、插入符号追踪以及活动元素检测 - Google Patents

文本检测、插入符号追踪以及活动元素检测 Download PDF

Info

Publication number
CN112930537B
CN112930537B CN202080002350.5A CN202080002350A CN112930537B CN 112930537 B CN112930537 B CN 112930537B CN 202080002350 A CN202080002350 A CN 202080002350A CN 112930537 B CN112930537 B CN 112930537B
Authority
CN
China
Prior art keywords
frame
character
characters
current
processor
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.)
Active
Application number
CN202080002350.5A
Other languages
English (en)
Other versions
CN112930537A (zh
Inventor
V·斯卡达
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.)
Yupas Co
Original Assignee
Yupas Co
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 Yupas Co filed Critical Yupas Co
Publication of CN112930537A publication Critical patent/CN112930537A/zh
Application granted granted Critical
Publication of CN112930537B publication Critical patent/CN112930537B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/0233Character input methods
    • G06F3/0236Character input methods using selection techniques to select from displayed items
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • 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/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • 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/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/0233Character input methods
    • 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
    • G06F3/04812Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/41Higher-level, semantic clustering, classification or understanding of video scenes, e.g. detection, labelling or Markovian modelling of sport events or news items
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/19007Matching; Proximity measures
    • G06V30/19013Comparing pixel values or logical combinations thereof, or feature values having positional relevance, e.g. template matching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V2201/00Indexing scheme relating to image or video recognition or understanding
    • G06V2201/02Recognising information on displays, dials, clocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Human Resources & Organizations (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Computational Linguistics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • User Interface Of Digital Computer (AREA)
  • Character Input (AREA)
  • Image Analysis (AREA)

Abstract

公开了用于计算系统的键入和/或粘贴文本的检测、插入符号追踪以及活动元素检测。与计算系统相关联的屏幕上的、用户一直在键入或粘贴文本的位置可以被标识,该文本潜在地包括热键或不会导致可见字符出现的其他键,并且屏幕上的发生了键入或粘贴的物理位置可以基于出现了一个或多个字符的位置、光标正在闪烁的位置或两者的当前分辨率而被提供。这可以通过标识屏幕上发生了变化的位置并且对这些位置执行文本识别和/或插入符号检测来完成。键入或粘贴活动的物理位置允许确定在屏幕上显示的应用中的活动元素或聚焦元素。

Description

文本检测、插入符号追踪以及活动元素检测
相关申请的交叉引用
本申请要求于2020年5月1日提交的美国非临时专利申请第16/864,629号的权益。该早前提交的申请的主题以其整体内容通过引用并入于此。
技术领域
本发明大体上涉及计算系统操作检测,并且更具体地涉及用于计算系统的键入和/或粘贴文本的检测、插入符号(caret)追踪以及活动元素检测。
背景技术
当用户与计算系统的输入设备交互时,虽然按键(key press)可以通过键挂钩(hooking)来确定,但可能无法知道用户正在键入屏幕上的哪个元素。因此,可能无法知道屏幕上的活动元素是什么。因此,用于监测与计算系统的用户交互的改进途径可以是有益的。
发明内容
本发明的某些实施例可以提供对本领域中尚未经当前检测技术完全标识、了解或解决的问题和需求的解决方案。例如,本发明的一些实施例涉及用于计算系统的键入和/或粘贴文本的检测、插入符号追踪以及活动元素检测。
在一个实施例中,一种包括键入文本检测逻辑的计算机程序被实施在非瞬态计算机可读介质上。该程序被配置为使至少一个处理器生成键盘字符队列,该键盘字符队列包括在时间窗口期间发生的按键事件,以及确定当前屏幕截图帧与前一个屏幕截图帧不同的一个或多个区域(region)。当前屏幕截图帧和前一个屏幕截图帧包括显示器的整个屏幕或整个屏幕的一部分。该程序还被配置为使至少一个处理器在一个或多个所确定的区域中提取一个或多个连接成员,并且对所提取的一个或多个连接成员执行OCR,从而产生一个或多个识别字符、一个或多个识别字符序列或两者,以及相应位置(position)。该程序还被配置为使至少一个处理器将一个或多个识别字符、一个或多个识别字符序列或两者与键盘字符队列进行比较;以及当字符或字符序列与键盘字符队列的字符或字符序列相匹配时,从键盘字符队列中移除该字符或字符序列。
在另一实施例中,一种用于机器人流程自动化的键入文本检测的计算机实现的方法包括:由RPA机器人生成键盘字符队列,该键盘字符队列包括在时间窗口期间发生的按键事件。按键事件包括被按下的键的字符和该键被按下的时间。该计算机实现的方法还包括:由RPA机器人确定当前屏幕截图帧与前一个屏幕截图帧不同的一个或多个区域。当前屏幕截图帧和前一个屏幕截图帧包括显示器的整个屏幕或整个屏幕的一部分。该计算机实现的方法还包括:由RPA机器人在一个或多个所确定的区域中提取一个或多个连接成员,并且对所提取的一个或多个连接成员执行OCR,从而产生一个或多个识别字符、一个或多个识别字符序列或两者,以及相应位置。附加地,该计算机实现的方法包括:由RPA机器人将一个或多个识别字符、一个或多个识别字符序列或两者与键盘字符队列进行比较。当字符或字符序列与键盘字符队列的字符或字符序列相匹配时,该计算机实现的方法包括:由RPA机器人从键盘字符队列中移除字符或字符序列;以及由RPA机器人将当前屏幕截图帧中的具有位置的图形元素设置为活动元素,该位置包括匹配的字符或字符序列的位置。
在又一实施例中,一种计算机程序被实施在非瞬态计算机可读介质上。该程序被配置为使至少一个处理器确定当前屏幕截图帧与前一个屏幕截图帧不同的一个或多个区域。当前屏幕截图帧和前一个屏幕截图帧包括显示器的整个屏幕或整个屏幕的一部分。该程序还被配置为使至少一个处理器在一个或多个所确定的区域中提取一个或多个连接成员,并且对所提取的一个或多个连接成员执行OCR,从而产生一个或多个识别字符、一个或多个识别字符序列或两者,以及相应位置。该程序还被配置为使至少一个处理器将一个或多个识别字符、一个或多个识别字符序列或两者与键盘字符队列进行比较。当字符或字符序列与键盘字符队列的字符或字符序列相匹配时,该程序被配置为使至少一个处理器从键盘字符队列中移除字符或字符序列;以及将当前屏幕截图帧中的具有位置的图形元素设置为活动元素,该位置包括匹配的字符或字符序列的位置。
在另一实施例中,一种包括插入符号追踪逻辑的计算机程序被实施在非瞬态计算机可读介质上。该程序被配置为使至少一个处理器确定当前屏幕截图帧与前一个屏幕截图帧不同的一个或多个区域。当前屏幕截图帧和前一个屏幕截图帧包括显示器的整个屏幕或整个屏幕的一部分。该程序被配置为使至少一个处理器计算针对一个或多个区域的像素变化并且针对一个或多个区域中的每个区域将计算得出的像素变化投影到二进制矩阵。该程序还被配置为使至少一个处理器针对每个二进制矩阵提取闪烁的插入符号区域候选并且结合(join)二进制矩阵中的成员。附加地,该程序被配置为使至少一个处理器从成员中提取形状并且针对插入符号的形状来验证成员的形状。
在又一实施例中,一种计算机程序被实施在非瞬态计算机可读介质上。该程序被配置为使至少一个处理器分析当前屏幕截图帧与前一个屏幕截图帧不同的一个或多个区域。当前屏幕截图帧和前一个屏幕截图帧包括显示器的整个屏幕或整个屏幕的一部分。该程序还被配置为使至少一个处理器基于分析来标识一个或多个插入符号候选并且执行验证以标识一个或多个插入符号候选中的插入符号候选正在闪烁。该程序还被配置为使至少一个处理器基于验证来标识插入符号的位置(location)并且将当前屏幕截图帧中的具有插入符号的位置的图形元素设置为活动元素。
在另一实施例中,一种用于针对RPA执行插入符号追踪的计算机实现的方法包括:由RPA机器人分析当前屏幕截图帧与前一个屏幕截图帧不同的一个或多个区域。当前屏幕截图帧和前一个屏幕截图帧包括显示器的整个屏幕或整个屏幕的一部分。该计算机实现的方法还包括:由RPA机器人基于分析来标识一个或多个插入符号候选;以及由RPA机器人执行验证以标识一个或多个插入符号候选中的插入符号候选正在闪烁。该计算机实现的方法还包括:由RPA机器人基于验证来标识插入符号的位置;并且由RPA机器人将当前屏幕截图帧中的具有插入符号的位置的图形元素设置为活动元素。
在另一实施例中,一种包括粘贴文本检测逻辑的计算机程序被实施在非瞬态计算机可读介质上。该程序被配置为使至少一个处理器监测剪贴板以确定内容是否已经在时间窗口内被添加至针对操作系统的剪贴板。当内容已经在时间窗口内被添加至剪贴板时,该程序被配置为使至少一个处理器确定当前屏幕截图帧与前一个屏幕截图帧不同的一个或多个区域,当前屏幕截图帧和前一个屏幕截图帧包括显示器的整个屏幕或整个屏幕的一部分;在一个或多个所确定的区域中提取一个或多个连接成员,并且对所提取的一个或多个连接成员执行OCR,从而产生一个或多个识别字符、一个或多个识别字符序列或两者,以及相应位置;将一个或多个识别字符、一个或多个识别字符序列或两者与剪贴板内容进行比较;以及当字符或字符序列与剪贴板内容的字符或字符序列相匹配时,获得粘贴文本的坐标并且将包括粘贴文本的坐标的图形元素设置为活动元素。
在又一实施例中,一种包括粘贴文本检测逻辑的计算机程序被实施在非瞬态计算机可读介质上。该程序被配置为使至少一个处理器确定是否存在剪贴板内容。当存在剪贴板内容并且该剪贴板内容在时间窗口期间被添加时,该程序被配置为使至少一个处理器确定当前屏幕截图帧与前一个屏幕截图帧不同的一个或多个区域,当前屏幕截图帧和前一个屏幕截图帧包括显示器的整个屏幕或整个屏幕的一部分;在一个或多个所确定的区域中提取一个或多个连接成员,并且对所提取的一个或多个连接成员执行OCR,从而产生一个或多个识别字符、一个或多个识别字符序列或两者,以及相应位置;将剪贴板内容与一个或多个识别字符、一个或多个识别字符序列或两者进行比较;以及当剪贴板内容与一个或多个识别字符、一个或多个识别字符序列或两者相匹配时,将当前屏幕截图帧中的具有位置的图形元素设置为活动元素,该位置包括一个或多个识别字符、一个或多个识别字符序列或两者。
在另一实施例中,一种当存在剪贴板内容并且剪贴板内容在时间窗口期间被添加时用于针对机器人流程自动化RPA的粘贴文本检测的计算机实现的方法包括:由RPA机器人确定当前屏幕截图帧与前一个屏幕截图帧不同的一个或多个区域。当前屏幕截图帧和前一个屏幕截图帧包括显示器的整个屏幕或整个屏幕的一部分。该计算机实现的方法还包括:由RPA机器人在一个或多个所确定的区域中提取一个或多个连接成员,并且对所提取的一个或多个连接成员执行OCR,从而产生一个或多个识别字符、一个或多个识别字符序列或两者,以及相应位置。该计算机实现的方法还包括:由RPA机器人将剪贴板内容与一个或多个识别字符、一个或多个识别字符序列或两者进行比较。当剪贴板内容与一个或多个识别字符、一个或多个识别字符序列或两者相匹配时,该计算机实现的方法附加地包括:由RPA机器人将当前屏幕截图帧中的具有位置的图形元素设置为活动元素,该位置包括一个或多个识别字符、一个或多个识别字符序列或两者。
在另一实施例中,一种用于预处理屏幕截图帧并检测活动元素的计算机程序被实施在非瞬态计算机可读介质上。该程序被配置为使至少一个处理器在前一个屏幕截图帧上运行计算机视觉(CV)预处理。该计算机程序还被配置为使至少一个处理器确定前一个屏幕截图帧中的图形元素的类型和位置并且确定在当前屏幕截图帧与前一个屏幕截图帧不同的区域中发生的变化。该区域至少部分地被包括在准许文本输入的一个或多个图形元素的区(area)内。当在准许文本输入的一个图形元素中发生了变化时,该程序还被配置为使至少一个处理器将发生了变化的图形元素设置为活动元素。
在又一实施例中,一种用于预处理屏幕截图帧并检测活动元素的计算机程序被实施在非瞬态计算机可读介质上。该程序被配置为使至少一个处理器在前一个屏幕截图帧上运行CV预处理。该程序还被配置为使至少一个处理器确定前一个屏幕截图帧中的图形元素的类型和位置,并且确定在当前屏幕截图帧与前一个屏幕截图帧不同的区域中发生的变化。该区域至少部分地被包括在准许文本输入的一个或多个图形元素的区内。当在准许文本输入的一个图形元素中发生了变化时,该程序被配置为使至少一个处理器将发生了变化的图形元素设置为活动元素。当在准许文本输入的多于一个的图形元素中发生了变化时,该程序被配置为使至少一个处理器生成在时间窗口期间发生的按键事件的键盘字符队列;确定在前一个屏幕截图帧与当前屏幕截图帧之间发生的新添加的按键事件;对发生了变化的两个或更多个图形元素的区域执行OCR;将新添加的按键事件与发生了变化的两个或更多个图形元素中的一个图形元素相匹配;以及将匹配的图形元素设置为活动元素。
在另一实施例中,一种用于预处理屏幕截图帧并检测针对RPA的活动元素的计算机实现的方法包括:由RPA机器人在前一个屏幕截图帧上运行CV预处理。该计算机实现的方法还包括:由RPA机器人确定前一个屏幕截图帧中的图形元素的类型和位置,并且由RPA机器人确定在当前屏幕截图帧与前一个屏幕截图帧不同的区域中发生的变化。该区域至少部分地被包括在准许文本输入的一个或多个图形元素的区内。当在准许文本输入的一个图形元素中发生了变化时,该计算机实现的方法还包括:由RPA机器人将发生了变化的图形元素设置为活动元素。
附图说明
为了容易地理解本发明的某些实施例的优点,将通过参考在附图中图示的特定实施例来呈现上文简要描述的本发明的更具体的描述。虽然应理解,这些图仅描绘了本发明的典型实施例,并且因此不应该被认为是对本发明的范围的限制,但是本发明将通过附图的使用以附加的特异性和细节来描述和阐释,在附图中:
图1是图示了根据本发明的实施例的机器人流程自动化(RPA)系统的架构图。
图2是图示了根据本发明的实施例的部署的RPA系统的架构图。
图3是图示了根据本发明的实施例的设计器、活动与驱动(driver)之间的关系的架构图。
图4是图示了根据本发明的实施例的RPA系统的架构图。
图5是图示了根据本发明的实施例的被配置为执行键入和/或粘贴文本的检测、插入符号追踪以及活动元素检测的计算系统的架构图。
图6是图示了根据本发明的实施例的用于执行键入文本检测、插入符号追踪以及活动元素检测的通用过程的架构图。
图7是图示了根据本发明的实施例的用于执行键入文本检测和插入符号追踪的过程的架构图。
图8A图示了根据本发明的实施例的分别包括帧N-1和N的校友捐赠窗口的屏幕截图的部分。
图8B图示了根据本发明的实施例的被划分成正方形网格的屏幕截图N-1。
图8C图示了根据本发明的实施例的被划分成正方形网格的屏幕截图N。
图8D图示了根据本发明的实施例的具有包括来自屏幕截图N-1的变化的高亮行(highlighted row)的屏幕截图N。
图8E图示了根据本发明的实施例的在包括来自屏幕截图N-1的变化的高亮行中具有高亮单元的屏幕截图N。
图8F图示了根据本发明的实施例的具有包括来自屏幕截图N-1的变化的高亮区域的屏幕截图N。
图9是图示了根据本发明的实施例的用于检查分辨率变化、检查所连接的显示器的范围的变化以及设置插入符号追踪视频逻辑以适应变化的过程的流程图。
图10是图示了根据本发明的实施例的用于录像机的过程的流程图。
图11是图示了根据本发明的实施例的用于执行插入符号追踪的过程的流程图。
图12A至图12D是图示了根据本发明的实施例的用于执行针对键入字符追踪、插入符号追踪以及活动元素检测的视频处理的过程的流程图。
图13A和图13B是图示了根据本发明的实施例的用于执行粘贴文本追踪的过程的流程图。
图14A图示了根据本发明的实施例的在已经被组合成32×32区域的四个16×16块中所包括的字母“E”的示例二进制矩阵。
图14B图示了根据本发明的实施例的针对图14A的区域的二进制矩阵中所包括的成员(字母“E”)的剪裁后的7×9二进制矩阵。
图15是图示了根据本发明的实施例的用于使用CV和键盘队列来确定活动元素的过程的流程图。
图16是图示了根据本发明的实施例的被配置为执行键入和/或粘贴文本的检测、插入符号追踪以及活动元素检测的系统的架构图。
图17是图示了根据本发明的实施例的用于执行预处理、键入文本检测、插入符号追踪以及活动元素检测的过程的流程图。
除非另有指示,否则类似的附图标记在整个附图中始终指示对应特征。
具体实施方式
一些实施例涉及用于计算系统的键入和/或粘贴文本的检测、插入符号追踪以及活动元素检测。一些实施例识别与计算系统相关联的屏幕上的用户一直在键入或粘贴文本的位置,该文本潜在地包括热键或不会导致可见字符出现的其他键,并且基于出现了一个或多个字符的位置、光标正在闪烁的位置或两者的当前分辨率(例如以坐标为单位)来提供屏幕上的物理位置。键入或粘贴活动和/或插入符号的物理位置可以允许确定用户正在键入或关注哪一(些)字段和确定用于过程发现的应用或其他应用。
一些实施例被实现于反馈回路(loop)过程中,该反馈回路过程连续地或周期性地将当前屏幕截图与前一个屏幕截图进行比较以标识变化。在屏幕上发生了视觉变化的位置可以被标识,并且可以对发生了变化的位置执行光学字符识别(OCR)。然后,OCR的结果可以与键盘队列的内容(例如,如通过键挂钩确定的)进行比较,以确定是否存在匹配。发生了变化的位置可以通过将来自当前屏幕截图的像素框与来自前一个屏幕截图的相同位置的像素框进行比较来确定。
某些实施例可以被部署用于机器人流程自动化(RPA)。图1是图示了根据本发明的实施例的RPA系统100的架构图。RPA系统100包括允许开发者设计和实现工作流的设计器110。设计器110可以提供用于应用集成以及自动化第三方应用、管理信息技术(IT)任务和业务IT过程的解决方案。设计器110可以支持自动化项目的开发,该自动化项目是业务过程的图形表示。简而言之,设计器110支持工作流和机器人的开发和部署。
自动化项目通过向开发者提供对在工作流中开发的一组定制步骤(在本文中被定义为“活动”)之间的执行顺序和关系的控制来实现基于规则的过程的自动化。设计器110的实施例的一个商业示例是UiPath StudioTM。每个活动可以包括动作,诸如点击按钮、读取文件、写入日志面板等。在一些实施例中,工作流可以被嵌套或嵌入。
一些类型的工作流可以包括但不限于序列、流程图、FSM和/或全局异常处理程序。序列可能特别适合于线性过程,从而能够在不使工作流混乱的情况下从一个活动流向另一活动。流程图可能特别适合于更复杂的业务逻辑,从而实现通过多个分支逻辑运算符以更为不同的方式进行的决策的集成以及活动的连接。FSM可能特别适合于较大工作流。FSM可以在其执行中使用有限数量的状态,这些状态由条件(即,过渡)或活动触发。全局异常处理程序可能特别适合于在遇到执行误差时确定工作流行为且特别适合于调试过程。
一旦工作流在设计器110中被开发,业务过程的执行就由指挥器(conductor)120编排,该指挥器编排执行设计器110中所开发的工作流的一个或多个机器人130。指挥器120的实施例的一个商业示例是UiPath OrchestratorTM。指挥器120支持对环境中的资源的创建、监测以及部署的管理。利用第三方解决方案和应用,指挥器120可以充当集成点、或充当聚合点中的一者。
指挥器120可以管理一队机器人130,从而从集中点连接并执行机器人130。可以管理的机器人130的类型包括但不限于:有人值守的(attended)机器人132、无人值守的机器人134、开发机器人(类似于无人值守的机器人134,但用于开发和测试目的)以及非生产型机器人(类似于有人值守的机器人132,但用于开发和测试目的)。有人值守的机器人132由用户事件触发并且与人类一起在相同计算系统上操作。有人值守的机器人132可以与指挥器120一起用于集中过程部署和记录介质。有人值守的机器人132可以帮助人类用户完成各种任务,并且可以由用户事件触发。在一些实施例中,无法从这种类型的机器人上的指挥器120开启过程和/或这些过程无法在锁定屏幕下运行。在某些实施例中,有人值守的机器人132只可以从机器人托盘或根据命令提示而被开启。在一些实施例中,有人值守的机器人132应该在人类监督下运行。
无人值守的机器人134在虚拟环境中以无人值守的方式运行并且可以使许多过程自动化。无人值守的机器人134可以负责远程执行、监测、调度并且为工作队列提供支持。在一些实施例中,可以在设计器110中运行针对所有机器人类型的调试。有人值守的机器人和无人值守的机器人两者都可以使各种系统和应用自动化,该系统和应用包括但不限于大型主机、web应用、VM、企业应用(例如由
Figure BDA0002729146480000102
Figure BDA0002729146480000101
等生产的那些企业应用)以及计算系统应用(例如台式机和笔记本应用、移动设备应用、可穿戴计算机应用等)。
指挥器120可以具有各种能力,包括但不限于供应(provisioning)、部署(deployment)、版本化(versioning)、配置(configuration)、排队(queueing)、监测(monitoring)、日志记录(logging)和/或提供互连性(interconnectivity)。供应可以包括在机器人130与指挥器120(例如web应用)之间创建和维护连接。开发可以包括确保将包(package)版本正确递送至所指派的机器人130以供执行。在一些实施例中,版本化可以包括某一过程或配置的唯一实例的管理。配置可以包括维护和递送机器人环境和过程配置。排队可以包括提供对队列和队列项的管理。监测可以包括追踪机器人标识数据和维护用户权限。日志记录可以包括将日志存储和编入索引至数据库(例如SQL数据库)和/或另一存储机制(例如
Figure BDA0002729146480000111
其提供用于存储和快速查询较大数据集的能力)。指挥器120可以通过充当第三方解决方案和/或应用的通信的集中点来提供互连性。
机器人130是运行内置于设计器110中的工作流的执行代理。(多个)机器人130的一些实施例的一个商业示例是UiPath RobotsTM。在一些实施例中,机器人130默认安装Microsoft
Figure BDA0002729146480000112
服务控制管理器(SCM)管理的服务。结果,此类机器人130可以在本地系统账户下打开交互式
Figure BDA0002729146480000113
会话,并且具有
Figure BDA0002729146480000114
服务的权限。
在一些实施例中,机器人130可以在用户模式下被安装。针对此类机器人130,这意味着其具有与已经安装了给定机器人130的用户相同的权限。此特征也可以供高密度(HD)机器人使用,该高密度机器人确保了每台机器以其最大潜力的充分利用。在一些实施例中,任何类型的机器人130可以在HD环境中被配置。
在一些实施例中,机器人130被分成分别专用于特定自动化任务的若干组件。在一些实施例中,机器人组件包括但不限于SCM管理的机器人服务、用户模式机器人服务、执行器、代理以及命令行。SCM管理的机器人服务管理和监测
Figure BDA0002729146480000115
会话,并且充当指挥器120与执行主机(即,机器人130在其上被执行的计算系统)之间的委托。这些服务受机器人130信任并且管理机器人130的凭证。控制台应用在本地系统下由SCM启动。
在一些实施例中,用户模式机器人服务管理和监测
Figure BDA0002729146480000116
会话,并且充当指挥器120与执行主机之间的委托。用户模式机器人服务可以受机器人130信任并且管理机器人130的凭证。在未安装SCM管理的机器人服务的情况下,
Figure BDA0002729146480000121
应用可以被自动启动。
执行器可以在
Figure BDA0002729146480000122
会话下运行给定作业(即,执行器可以执行工作流。执行器可以知道每个监测器的每英寸点数(DPI)设置。代理可以是
Figure BDA0002729146480000123
Presentation Foundation(WPF)应用,其在系统托盘窗口中显示可用的作业。代理可以是服务的客户端。代理可以请求开启或停止作业以及改变设置。命令行是服务的客户端。命令行是可以请求开启作业并等待其输出的控制台应用。
如上文所阐释一般使机器人130的组件分开帮助开发者、支持用户以及计算系统更容易地运行、标识和追踪每个组件正在执行的内容。特殊行为可以以这种方式按组件来配置,诸如针对执行器和服务设置不同的防火墙规则。在一些实施例中,执行器可以始终知道每个监测器的DPI设置。结果,不论创建工作流的计算系统的配置如何,工作流都可以在任何DPI处被执行。在一些实施例中,来自设计器110的项目也可以独立于浏览器缩放级别。在一些实施例中,针对DPI不知道的或有意地标记为不知道的应用,DPI可以被禁用。
图2是图示了根据本发明的实施例的部署的RPA系统200的架构图。在一些实施例中,RPA系统200可以是图1的RPA系统100或可以是该RPA系统的一部分。应注意,在不脱离本发明的范围的情况下,客户端侧、服务器侧或两者都可以包括任何期望数量的计算系统。在客户端侧,机器人应用210包括执行器212、代理214和设计器216。然而,在一些实施例中,设计器216可以不在计算系统210上运行。执行器212正在运行过程。如图2中所示,若干业务项目可以同时运行。在该实施例中,代理214(例如
Figure BDA0002729146480000124
服务)是所有执行器212的单个联系点。该实施例中的所有消息被日志记录到指挥器230中,该指挥器经由数据库服务器240、索引器服务器250或两者进一步处理这些消息。如上文相对于图1所讨论的,执行器212可以是机器人组件。
在一些实施例中,机器人表示机器名称与用户名之间的关联。机器人可以同时管理多个执行器。在支持同时运行的多个交互式会话的计算系统(例如
Figure BDA0002729146480000131
服务器2012)上,多个机器人可以同时运行,每个机器人在使用唯一用户名的单独
Figure BDA0002729146480000132
会话中。上文将此称为HD机器人。
代理214还负责发送机器人的状态(例如周期性地发送指示机器人仍在运作的“心跳”消息)并且下载要被执行的包的所需版本。在一些实施例中,代理214与指挥器230之间的通信始终由代理214发起。在通知场景中,代理214可以打开WebSocket信道,稍后由指挥器230使用该WebSocket信道来向机器人发送命令(例如开启、停止等)。
在服务器侧,包括了呈现层(web应用232、开放数据协议(OData)代表性状态转移(REST)应用编程接口(API)端点234以及通知和监测236)、服务层(API实现/业务逻辑238)以及持久层(数据库服务器240和索引器服务器250)。指挥器230包括web应用232、ODataREST API端点234、通知和监测236以及API实现/业务逻辑238。在一些实施例中,用户在指挥器220的接口中(例如经由浏览器220)执行的大多数动作是通过调用各种API来执行的。在不脱离本发明的范围的情况下,此类动作可以包括但不限于在机器人上开启作业、在队列中添加/移除数据、调度作业以便以无人值守的方式运行等。Web应用232是服务器平台的视觉层。在该实施例中,web应用232使用超文本标记语言(HTML)和JavaScript(JS)。然而,可以在不脱离本发明的范围的情况下使用任何期望标记语言、脚本语言或任何其他格式。在该实施例中,用户经由浏览器220与来自web应用232的网页交互,以便执行各种动作来控制指挥器230。例如,用户可以创建机器人群组、向机器人指派包、分析每个机器人和/或每个过程的日志、开启和停止机器人等。
除了web应用232之外,指挥器230还包括暴露OData REST API端点234的服务层。然而,在不脱离本发明的范围的情况下可以包括其他端点。REST API由web应用232和代理214两者消耗。在该实施例中,代理214是客户端计算机上的一个或多个机器人的监督器。
在该实施例中,REST API覆盖配置、日志记录、监测以及排队功能性。在一些实施例中,配置端点可以用于定义和配置应用用户、权限、机器人、资产、发布以及环境。日志记录REST端点可以用于日志记录不同信息,诸如(例如)误差、由机器人发送的显式消息以及其他环境特定信息。如果在指挥器230中使用了开启作业命令,那么可以由机器人使用部署REST端点来查询应该被执行的包版本。排队REST端点可以负责队列和队列项管理,诸如将数据添加至队列、从队列中获得事务、设置事务的状态等。
监测REST端点可以监测web应用232和代理214。通知和监测API 236可以是用于注册代理214、向代理214递送配置设置并且用于从服务器和代理214发送/接收通知的REST端点。在一些实施例中,通知和监测API 236还可以使用WebSocket通信。
在该实施例中,持久层包括一对服务器——数据库服务器240(例如SQL服务器)和索引器服务器250。在该实施例中,数据库服务器240存储机器人、机器人群组、相关联的过程、用户、角色、调度等的配置。在一些实施例中,该信息通过web应用232来管理。数据库服务器240可以管理队列和队列项。在一些实施例中,数据库服务器240可以存储由机器人(除了索引器服务器250之外或代替索引器服务器250)日志记录的消息。
在一些实施例中可选的索引器服务器250存储由机器人日志记录的信息并且将该信息编入索引。在某些实施例中,索引器服务器250可以通过配置设置来禁用。在一些实施例中,索引器服务器250使用
Figure BDA0002729146480000141
其为开源项目全文搜索引擎。由机器人日志记录的消息(例如使用比如日志消息或写入行的活动)可以通过(多个)日志记录的REST端点被发送到索引器服务器250,在索引器服务器250中这些消息被编入索引以供将来使用。
图3是图示了根据本发明的实施例的设计器310、活动320、330与驱动340之间的关系300的架构图。根据上文,开发者使用设计器310来开发由机器人执行的工作流。工作流可以包括用户定义的活动320和UI自动化活动330。一些实施例能够标识图像中的非文本视觉分量,在本文中称作计算机视觉(CV)。与此类分量相关的一些CV活动可以包括但不限于点击、键入(type)、取得文本、悬停、元素存在、刷新范围、高亮等。在一些实施例中,点击使用例如CV、光学字符识别(OCR)、模糊文本匹配以及多锚(multi-anchor)来标识元素,并且点击该元素。键入可以使用上述内容来标识元素和该元素中的类型。取得文本可以标识特定文本的位置并且使用OCR来扫描该位置。悬停可以标识元素并且悬停于元素上方。元素存在可以使用上文所描述的技术来检查在屏幕上是否存在元素。在一些实施例中,可以存在可以在设计器310中被实现的数百个甚至数千个活动。然而,在不脱离本发明的范围的情况下,任何数量和/或类型的活动都可以是可用的。
UI自动化活动330是利用较低级代码编写的特殊的较低级活动(例如CV活动)的子集并且有助于与屏幕的交互。UI自动化活动330经由允许机器人与期望软件交互的驱动340来支持这些交互。例如,驱动340可以包括OS驱动342、浏览器驱动344、VM驱动346、企业应用驱动348等。
驱动340可以与OS进行低级交互,进而寻找挂钩、监测键等。驱动器可以有助于与
Figure BDA0002729146480000151
等的集成。例如,“点击”活动经由驱动340在这些不同应用中扮演相同角色。
图4是图示了根据本发明的实施例的RPA系统400的架构图。在一些实施例中,RPA系统400可以是或包括图1和/或图2的RPA系统100和/或200。RPA系统400包括运行机器人的多个客户端计算系统410。计算系统410能够经由在其上运行的web应用与指挥器计算系统420进行通信。指挥器计算系统420又能够与数据库服务器430和可选的索引器服务器440进行通信。
相对于图1和图3,应注意,虽然在这些实施例中使用了web应用,但可以在不脱离本发明的范围的情况下使用任何合适的客户端/服务器软件。例如,指挥器可以运行服务器侧应用,该服务器侧应用与客户端计算系统上的非基于网络的客户端软件应用进行通信。
图5是图示了根据本发明的实施例的被配置为执行键入和/或粘贴文本的检测、插入符号追踪以及活动元素检测的计算系统500的架构图。在一些实施例中,计算系统500可以是本文中所描绘和/或描述的计算系统中的一者或多者。计算系统500包括总线505或用于传送信息的其他通信机制、以及被耦合至总线505以处理信息的(多个)处理器510。(多个)处理器510可以是任何类型的通用或专用处理器,包括中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、图形处理单元(GPU)、其多个实例和/或其任何组合。(多个)处理器510还可以具有多个处理核心,并且至少一些核心可以被配置为执行特定功能。在一些实施例中,可以使用多并行处理。在某些实施例中,(多个)处理器510中的至少一者可以是包括模仿生物神经的处理元件的神经形态电路。在一些实施例中,神经形态电路可以不需要冯·诺依曼计算架构的典型组件。
计算系统500还包括用于存储将由(多个)处理器510执行的信息和指令的存储器515。存储器515可以由随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器、缓存、静态存储装置(诸如磁盘或光盘)或任何其他类型的非瞬态计算机可读介质或其组合的任何组合组成。非瞬态计算机可读介质可以是可以由(多个)处理器510访问的任何可用介质,并且可以包括易失性介质、非易失性介质或两者。介质也可以是可移除的、不可移除的或两者。
附加地,计算系统500包括通信设备520(诸如收发器)以经由无线和/或有线连接提供对通信网络的访问。在一些实施例中,在不脱离本发明的范围的情况下,通信设备520可以被配置为使用频分多址(FDMA)、单载波FDMA(SC-FDMA)、时分多址(TDMA)、码分多址(CDMA)、正交频分复用(OFDM)、正交频分多址(OFDMA)、全球移动系统(GSM)通信、通用分组无线电服务(GPRS)、通用移动电信系统(UMTS)、cdma2000、宽带CDMA(W-CDMA)、高速下行分组接入(HSDPA)、高速上行分组接入(HSUPA)、高速分组接入(HSPA)、长期演进(LTE)、LTE高级(LTE-A)、802.11x、Wi-Fi、Zigbee、超宽带(UWB)、802.16x、802.15、家用节点B(HnB)、蓝牙、射频标识(RFID)、红外数据协会(IrDA)、近场通信(NFC)、第五代(5G)、新无线电(NR)、其任何组合和/或任何其他现有或将来实现的通信标准和/或协议。在一些实施例中,在不脱离本发明的范围的情况下,通信设备520可以包括一个或多个天线,这些天线是单数的、阵列的、相控的、切换的、波束成形的、波束导向的、其组合和/或任何其他天线配置。
(多个)处理器510进一步经由总线505被耦合到显示器525,诸如等离子体显示器、液晶显示器(LCD)、发光二极管(LED)显示器、场发射显示器(FED)、有机发光二极管(OLED)显示器、柔性OLED显示器、柔性基板显示器、投影显示器、4K显示器、高清显示器、
Figure BDA0002729146480000171
显示器、面内切换(IPS)显示器或用于向用户显示信息的任何其他合适的显示器。显示器525可以被配置为使用电阻性、电容性、表面声波(SAW)电容性、红外、光学成像、色散信号技术、声学脉冲识别、受抑全内反射等的触摸(触觉)显示器、三维(3D)触摸显示器、多输入触摸显示器、多触摸显示器等。可以在不脱离本发明的范围的情况下使用任何合适的显示设备和触觉I/O。
键盘530和光标控制设备535(诸如计算机鼠标、触摸板等)进一步被耦合到总线505以使得用户能够与计算系统500接口连接。然而,在某些实施例中,可以不存在物理键盘和鼠标,并且用户可以仅通过显示器525和/或触摸板(未示出)与设备交互。输入设备的任何类型和组合可以被用作设计选择的问题。在某些实施例中,不存在物理输入设备和/或显示器。例如,用户可以经由与之通信的另一计算系统与计算系统500远程地交互,或计算系统500可以自主地操作。
存储器515存储在被(多个)处理器510执行时提供功能性的软件模块。模块包括计算系统500的操作系统540。模块还包括被配置为执行本文中所描述的过程或其衍生物的全部或部分的视频处理模块545。计算系统500可以包括一个或多个附加功能模块550,该功能模块包括附加功能性。
本领域的技术人员应了解,在不脱离本发明的范围的情况下,“系统”可以被实施为服务器、嵌入式计算系统、个人计算机、控制台、个人数字助理(PDA)、手机、平板计算设备、量子计算系统或任何其他合适的计算设备或设备的组合。将上文所描述的功能呈现为由“系统”执行并不旨在以任何方式限制本发明的范围,而是旨在提供本发明的许多实施例的一个示例。实际上,本文中所公开的方法、系统和装置可以按照与包括云计算系统的计算技术一致的本地化和分布式形式来实现。
应注意,本说明书中所描述的一些系统特征已经作为模块而被呈现,以便更具体地强调其实现独立性。例如,模块可以被实现为包括定制的超大规模集成(VLSI)电路或门阵列、现成半导体(诸如逻辑芯片、晶体管或其他分立组件)的硬件电路。模块也可以被实现在可编程硬件设备中,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等。
模块也可以至少部分地被实现在软件中以便由各种类型的处理器执行。例如,可执行代码的所标识的单元可以包括计算机指令的一个或多个物理块或逻辑块,这些计算机指令可以例如被组织成对象、过程或功能。虽然如此,但所标识的模块的可执行文件不需要在物理上位于一处,而是可以包括存储在不同位置中的全异的指令,这些指令在以逻辑方式被结合在一起时包括该模块并且实现了该模块的既定目的。此外,模块可以被存储在计算机可读介质上,在不脱离本发明的范围的情况下,该计算机可读介质可以是例如硬盘驱动器、闪存设备、RAM、磁带和/或用于存储数据的任何其他此类非瞬态计算机可读介质。
实际上,可执行代码的模块可以是单个指令或许多指令,并且甚至可以分布在若干不同的代码段上、分布在不同程序之间以及跨多个存储器设备分布。类似地,操作数据在本文中可以被标识和图示为在模块内,并且该操作数据可以被实施为任何合适的形式并且被组织在任何合适类型的数据结构内。操作数据可以被收集为单个数据集,或可以分布于包括在不同存储设备上的不同位置上,并且可以至少部分地仅作为系统或网络上的电子信号存在。
图6是图示了根据本发明的实施例的用于执行键入文本检测、插入符号追踪以及活动元素检测的通用过程600的架构图。键盘记录610和屏幕视频记录620被执行,以分别确定被按下的键和屏幕上的已发生图形变化的(多个)位置。在一些实施例中,文本的粘贴可以被监测。例如,参见图13A和图13B。键盘记录610可以通过监测来自操作系统的按键事件来执行。例如,在
Figure BDA0002729146480000191
中,这可以是先前通过经由user32.dll方法“SetWindowsHookEx”注册低级键盘挂钩(WH_KEYBOARD_LL=13)而定义的低级挂钩委派(delegate)。然而,在不脱离本发明的范围的情况下,任何按键事件或提供用于任何编程语言和任何操作系统(例如移动、PC、Mac等)的按键信息的功能性可以被使用。在一些实施例中,按键可以经由硬件来检测。例如,通用串行总线(USB)设备可以被放置于计算系统与外部键盘之间。附加地或备选地,在某些实施例中,视频捕获和处理可以经由硬件被执行。在此类实施例中,第一设备可以捕获视频,第二设备可以捕获按键,并且第三设备(例如计算系统)可以处理视频和按键。
按键事件可以包括关于哪个字符与被按下的键(例如字母“a”、数字“2”、“%”符号等)相关联、发生按键事件的时间等的信息。键字符的队列(例如先进先出(FIFO)队列)可以在时间窗口(例如500毫秒(ms)、一秒等)内被存储,以考虑到在键被按下的时间与在屏幕上出现对应字符的时间之间的延迟。时间窗口通常长于在用户按下键的时间与在屏幕上出现键的时间之间的典型时间延迟(例如50ms的字符出现延迟和500ms的缓冲窗口)。
队列还可以用于同时捕获屏幕上出现的多个字符。例如,如果用户极为快速连续地(例如在15ms内)按下“abc”,但每秒仅25帧被捕获(即,每40ms捕获一帧),那么文本“abc”可能会在下一个屏幕截图中才能全部出现。通过在队列中具有“a”、“b”和“c”,当文本识别找到这些字符和/或序列时,算法可以搜索这些字符和/或其序列中的每一者。例如,在一些实施例中,如果用户键入“abc”,并且“ab”在下一帧中出现,那么可以假设按键队列中的顺序与屏幕上出现的顺序相同。
在不脱离本发明的范围的情况下,屏幕视频记录620可以由任何合适的硬件、软件或其任何组合来执行。例如,视频记录可以通过外部摄像机、内部图形卡、监测来自显示器的视频流(经由或不经由所连接的计算系统)的远程计算系统等来执行。所记录的屏幕截图可以按照任何期望的格式被存储,无论像素是否完美(例如JPEG、BMP、PNG等)。
在一种实现中,屏幕截图以Format16bppRgb555格式被存储为呈16比特颜色深度的BitmapData。将屏幕截图压缩为有损格式可能会降低准确性,这是由于一个或多个像素的变化可以改变以某些格式被传播至整个图像的颜色图,影响颜色深度,减少/移位总体细节或因压缩伪影(例如呈JPEG格式)的存在而影响图像像素。为了适应此情况,可以使用公差。屏幕视频记录620以特定帧速率产生帧,该帧速率可以根据计算系统的当前处理负载(例如每秒30帧)而变化。
然后,在630处,当前屏幕截图帧与紧邻的前一帧彼此进行比较,以确定其间的差异,并且其中的字符被确定。然而,在某些实施例中,多个帧可以被用来进一步提高准确性。例如,如果在键入字符的时间与在屏幕上出现该字符的时间之间存在变化的去同步(例如在30毫秒与42毫秒与24毫秒之间变化等),那么使用多个帧可以协助标识键入文本。这可以允许OCR被应用于可能包含完整词语而非一个或几个字符的较宽提取区域。一些OCR引擎比字符更佳地调谐为识别词语。通过将自动校正应用于OCR结果,可以在仅将OCR应用于单独字符时发生的不准确性可以被消除。例如,自动校正算法可以确定OCR词语“slpck”应为在键盘队列中找到的“slack”。
然后,视觉变化的(多个)位置可以被隔离,并且算法在发生了变化的位置上被运行以识别字符。该算法可以使用OCR、针对某些字体的字符的布尔数组映射进行的像素区域比较等。在一些实施例中,字符识别仅在相对较小的区域上被运行,在该相对较小的区域中,所发生的变化被隔离和分析,而剩余区域被丢弃。这有助于确保算法可以在计算系统上实时运行,在该计算系统中,在整个屏幕(例如3840×2160像素分辨率)上运行OCR对于计算系统而言在计算上可能过于昂贵,以致于无法跟上在屏幕上出现字符的速度。然而,对于具有足够的处理能力的计算系统,整个屏幕可以在不解析出未首先发生变化的区域的情况下被分析。
根据上文,在某些实施例中,视频帧比较计算并非是像素完美的,而是使用公差。如果颜色强度、亮度和/或其他因素落在特定公差内,那么颜色强度、亮度和/或其他因素可以被视为相同的。例如,如果像素值中的一者或多者的变化小于某个数字、某个百分比等,那么像素可以被视为相同的。红色、绿色、蓝色以及亮度的小于5、小于1%等的变化可以被视为相同的。在某些实施例中,这些变量中的一者或多者可以具有不同公差。例如,或许亮度变化可能需要大于或小于颜色变化以指示真实的像素变化。在某些实施例中,模糊图像匹配可以被执行,以标识相似性/差异。
在一些实施例中,模糊图像匹配考虑了亮度、图像模板、边缘比较、二值化、缩减(downscale)和比特下降(bit reduction)、扩张、应用内核模糊、其组合等,以便更准确地标识匹配。将公差应用于RGB值的像素间RGB匹配可以被使用,因此不完全相同的接近值可以被标识为匹配。比特深度和/或色标可以被减小,并且像素间RGB或灰度匹配可以被应用。来自图像的边缘可以被检测和比较。二值化可以被应用于图像(例如二进制阈值、Otsu阈值、自适应阈值等),并且像素间匹配可以被应用于二进制图像上。图像的尺度(scale)可以被减小,并且像素间匹配可以被执行。图像的扩张可以被执行,并且然后像素间匹配可以被应用。关键点可以从图像中被提取(例如最大稳定极值区域(MSER)描述符),并且所提取的关键点可以使用特征匹配器(例如蛮力匹配、k最近邻(kNN)匹配等)比较。
存在基于公差的计算可能有益的各种原因。例如,如果在捕获到帧之后对图像进行压缩,那么在计算中应涉及公差,这是由于有损压缩可以影响像素值。此外,可以(例如在经由仿真器启动虚拟计算系统并且仿真器对虚拟计算机屏幕内容进行压缩时)使用有损压缩在捕获之前对原始视觉源进行压缩。这可以是因为图像从远程机器(例如服务器)被广播到本地计算系统而发生。
一旦在630处发生了变化的(多个)屏幕区域的字符被标识,这些字符就与同按键事件相对应的所存储的字符的队列进行比较。如果找到匹配,那么在640匹配位置的屏幕坐标被提取。然而,在一些情况下,字符识别算法可能无法识别屏幕上的字符的实际含义。例如,OCR算法可以将屏幕上的字母“O”识别为数字“0”。在那种情况下,在一些实施例中,算法追踪屏幕上的插入符号的位置。这可以通过使用图像检测(例如CV)等将各种插入符号形状的图像图案与屏幕进行比较来确定。在一些实施例中,如果这样做,那么算法可以考虑插入符号闪烁。
在某些实施例中,模糊匹配可以用于将OCR结果与队列中的字符进行比较。模糊匹配逻辑可以识别出字母“O”看起来与数字“0”类似,并且可以将这些字符标识为匹配。如果在队列中不存在其他类似字符,那么可以确认匹配。
在某些实施例中,插入符号追踪被执行。对图像的(多个)改变的区域的分析可以被执行,以创建可以与插入符号相对应的候选的列表(例如候选呈现为细的竖直线或类似的事物)。可以执行验证以标识候选正随着时间而闪烁,并且然后可以标识真实的插入符号。可以执行进一步的验证,以核实插入符号出现在能够进行文本输入的图形元素(例如文本框、文字处理器文档、文本字段等)内。
如果在屏幕上的其他位置并未发生任何变化、或其他变化与队列中除了缺失的字符以外的字符相匹配,那么算法然后可以推断出因为这是唯一未经标识的变化,所以其一定是缺失的字符。算法然后可以推断出所识别的字母“O”实际上为例如字符队列中的另外未经标识的“0”,并且在640提取匹配位置的屏幕坐标。这可以提高算法的准确性。
在一些实施例中,当在预定时间过去(例如500ms、一秒等)之后在屏幕上找到字符或字符序列并且唯一地标识该字符或字符序列时,可以从队列中移除字符,基于预定大小(例如20个字符)的队列在队列末尾弹出字符等。为了移除落在时间窗口外部的字符,队列可以存储具有被键入的字符和时间戳的变量。算法可以将队列中的按键变量(潜在地开始于“先进(first in)”端)的时间戳与当前时间周期性地进行比较。如果在队列中找到晚于时间窗口的按键变量,那么变量可以被移除。在某些实施例中,一旦找到落在时间窗口内的按键变量,就可以假设队列中的所有其他变量都在时间窗口内,并且处理可以针对该迭代而停止。
在640,在具有最近键入的字符的屏幕区域的坐标被提取之后,在650处坐标与运行的(多个)应用进行比较,并且基于所提取的坐标属于哪个元素来确定活动元素。然后在660处,活动元素可以用于重构单独用户活动以学习用户正在执行的过程(例如过程提取、过程发现等)。这可以在用户与计算系统交互时被实时执行或稍后执行(例如视频和击键(keystroke)随后可以由服务器分析)。在一些实时实施例中,由于可以即时计算帧差,因此可以不记录和存储视频数据。
在一些实施例中,视频记录、键盘输入记录和/或其处理由RPA机器人执行。在某些实施例中,记录器应用将用户活动记录为屏幕截图或视频以及一系列按键,并且将其保存以供稍后处理,或将该信息传递给在计算系统或另一计算系统上运行的另一应用以进行实时或近实时处理。CV可以在视频和按键的处理之后被立即应用或稍后应用,以提供一组识别图形元素,包括其边界矩形。然后,如果在图形元素边界矩形与插入符号/文本的坐标之间找到交集,那么特定元素当前为活动的或“受到关注的”。
在一些情况下,屏幕的从一帧到下一帧的变化可以是显著的。例如,当用户关闭窗口时,屏幕的绝大部分可以改变。因此,在一些实施例中,变化阈值被确定并且被应用于确定是否完全比较时间相邻的屏幕截图(例如超过2%的屏幕已改变,超过5%、10%、30%、50%、70%等)。当满足或超过该阈值时,帧比较过程可以被跳过,直到两个时间相邻的帧之间的差低于阈值为止。
图7是图示了根据本发明的实施例的用于执行键入文本检测和插入符号追踪的过程700的架构图。屏幕视频记录710被执行,以产生视频帧N 712、N-1 714、N-2 716以及N-3718。视频帧可以是整个屏幕、与运行的应用相关联的窗口等。在某些实施例中,用于多个运行的窗口化应用的帧集可以被存储和比较,或者这些帧可以从屏幕截图中被拉取。键盘挂钩720还被执行,以产生包括与按键相关联的字符732的时间窗口化键盘字符队列730。在一些实施例中,当与字符相关联的按键超过预定使用年限时,这些字符从字符队列中被移除。在某些实施例中,在屏幕上找到字符之后,若字符是唯一的,那么从队列中移除这些字符。然而,如果字符不是唯一的(例如用户快速连续地按下“a a a a a”),那么可以从队列中移除“a”的最旧实例。
核心逻辑740接收当前帧和紧邻的前一帧(在这种情况下为帧712、714)以及键盘字符队列。核心逻辑740可以执行上文相对于图6所描述的各种逻辑。例如,核心逻辑740可以将帧712、714彼此进行比较,并确定其中已发生视觉变化的(多个)区域。例如,这可以通过比较相应像素的红色/绿色/蓝色(RGB)值是否相对于彼此超过阈值来确定。
核心逻辑740可以隔离视觉变化的(多个)位置,并且执行字符识别以识别(多个)位置中的字符。核心逻辑740还可以将所识别字符与键盘字符队列730中的字符732相匹配。当找到匹配时,匹配位置的屏幕坐标可以被提取并且被提供作为字符键入区域750。
除了使用字符识别之外或替代使用字符识别,在一些实施例中,图像识别(例如CV)可以用于检测新出现或消失的图像或图标。除了在区域差异分析阶段具有这种替换或补充逻辑外,过程可以另外与上文所描述的过程相同。例如,这对于确定用户正在将图像或文本剪切和粘贴到文档或字段中的位置可以是有用的。
在剪切和粘贴文本的情况下,当从剪贴板中清除文本时,单独字符并未被捕获作为按键事件。在这种情况下,可以捕获剪贴板的内容和用户正在按下CTRL+V的时间。然后,剪贴板的内容可以与OCR结果进行比较,类似于如何标识单独字符和字符序列。然而,算法并非审阅键入字符队列,而是将处理在发生CTRL+V之前被存储于剪贴板中的字符串。
图8A图示了根据本发明的实施例的分别包括帧N-1和N的校友捐赠窗口的屏幕截图800、810的部分802、812。如在图8A中可看出,帧N-1中的所有字段都为空,但在帧N中,用户已经在名字字段中键入了字母“E”。为了确定是否已经发生了变化,一些实施例的算法缩放屏幕截图并将其标准化为正方形。在这种情况下,屏幕截图800(参见图8B)和屏幕截图810(参见图8C)被标准化为64个正方形乘以48个正方形的网格,该网格的27×24部分在图8B至图8F中被示出。这些正方形或区域可以被表示为64×49二进制矩阵。
然后,针对每个屏幕截图的行彼此进行比较,以查看其中所包含的任何像素是否已经改变,并且针对具有变化的每一行,矩阵的值可以被设置为“1”。这可以通过检查每一行中是否存在非零元素来完成。如在图8D中所看出,当算法检查矩阵的第4行(在本文中被指定为814)时,在其中检测到变化。如在图8E中所看出,算法然后进入第4行,并且在第7列中的被指定为816的正方形包括新输入的字母“E”的一部分。算法继续标识包括变化的正方形,并将相邻的正方形818拼接在一起,作为要提交的区域以使OCR在该部分上运行。参见图8F。这在本文中被指示为“区域”。在一些实施例中,如果组成区域的一个或一些正方形不具有变化,那么这些正方形可以被设置成完全为一种颜色,例如以使OCR处理更快地运行。在某些实施例中,如果足够的处理资源可用,那么可以在整个屏幕截图对上运行OCR以识别文本。在屏幕截图之间文本和位置相同或类似的边界框可以被消除,并且新出现的(多个)OCR区域被标识。该所标识的文本可以与键盘字符队列进行比较以搜索匹配。
用户可以不时地改变显示器分辨率、联接附加监测器等。一些实施例检测并适应这些变化,以使得键入字符追踪、插入符号追踪和/或活动元素检测保持准确。图9是图示了根据本发明的实施例的用于检查分辨率变化、检查所连接的显示器的范围的变化、以及设置插入符号追踪视频逻辑以适应变化的过程900的流程图。该过程开始于在910处检查计算系统的一个或多个所连接的显示器,并且在920处将(多个)所连接的显示器与先前的(多个)所连接的显示器进行比较。这可以涉及检查是否存在不同显示设备、检查显示设备的分辨率是否已改变等。在一些实施例中,“所连接的”显示器可以是与计算系统集成的显示器(例如针对智能电话、膝上型计算机等通常如此)。
如果在930处(多个)所连接的显示设备和/或分辨率已经改变,那么在940处针对每个所连接的显示器获得分辨率和尺度。在950,针对将被捕获的屏幕截图的屏幕截图区被设置为乘以尺度并且与期望大小的倍数(例如8、16等)对准的完整显示尺寸。倍数可以有助于将屏幕截图划分成正方形,如本文中稍后进一步详细讨论的。然后在960设置(例如重启、重新初始化、为其提供新显示设置等)用于键入字符追踪、插入符号追踪和/或活动元素检测的视频逻辑。
图10是图示了根据本发明的实施例的用于录像机的过程1000的流程图。该过程开始于在1010截取屏幕截图。在一些实施例中,这可以使用针对
Figure BDA0002729146480000261
的图形设备接口(GDI)CopyFromScreen()指令在C#中完成。然后在1020,屏幕截图作为帧被添加至缓冲器。例如,这可以通过将屏幕截图作为C#中的位图对象添加至缓冲器来完成。如果在1030处该过程仍在运行(例如该过程尚未因关闭应用、屏幕分辨率变化等而停止),那么可以针对下一个屏幕截图重复屏幕截图捕获。应注意,虽然提供了C#示例,但针对本文中所公开的过程1000和其他过程,可以在不脱离本发明的范围的情况下使用任何合适的编程语言、操作系统、API以及功能。
一些实施例执行插入符号追踪,以更准确地标识用户正在关注屏幕的哪个元素。例如,如果插入符号出现在正出现文本的图形元素中,那么键盘队列中的新添加的文本有可能是正出现在该图形元素中的内容。图11是图示了根据本发明的实施例的用于执行插入符号追踪的过程1100的流程图。通常,插入符号将在用户最近点击的位置处或附近出现并且开始闪烁。因此,一些实施例存储最终鼠标点击的坐标,并且在此位置附近搜索插入符号。这可以减少为了定位插入符号而处理的屏幕截图的量,并可以进一步提高准确性。在一些实施例中,使用鼠标点击或单个最近点击位置的历史缓冲器。在某些实施例中,例如,如果用户按下tab键,那么系统可以假设插入符号可能已经移动到屏幕上的下一个图形元素,并且可以将搜索的重点重新放到该位置(若已知)上,否则搜索整个屏幕截图。
在1105,针对屏幕截图中的发生了变化的每个区域计算像素变化并且将这些区域投影到二进制矩阵。二进制矩阵为对区域的像素是否已经改变的表示,并且可以针对在屏幕截图之间不具有变化的像素包括“0”,而针对改变的像素包括“1”。在一些实施例中,“区域”是发生了变化的正方形,其可以包括来自屏幕截图的多个正方形。然而,可以在不脱离本发明的范围的情况下使用任何其他合适的形状(例如矩形、六边形等)。在一些实施例中,根据计算系统的处理能力,支持固定数量的区域进行分析。例如,一些实施例支持两个区域、三个区域、十个区域等的提取和OCR。一些实施例可以寻找插入符号和键入或粘贴文本两者。当在当前屏幕截图与前一个屏幕截图之间找到超过数量为L个变化区域时,可以处理找到的前L个区域,或可以完全忽略屏幕截图。这可以有助于忽略用户已启动不同窗口或另外改变了屏幕的足够部分的屏幕,以使得在捕获到下一个屏幕截图之前,OCR可能无法及时完成。
针对每个二进制矩阵,在1110闪烁的插入符号区域候选被提取,并且在1115二进制矩阵成员被结合。如本文中所使用,“成员”是存在于二进制矩阵中的所连接的形状,诸如表示字母、光标等的形状。例如,矩阵成员的结合可以使用“连接分量(connectedcomponents)”算法来执行,其中分量是8向连接的。连接分量是每个像素都被连接至所有其他像素的一组像素。
在1120从矩阵成员结合结果中提取形状,并且在1125验证形状。例如,该形状通常应该是完美的矩形,例如其可以包括线。在1130,存储经验证的形状候选并且将其与确认队列(confirmation queue)进行比较。可以将插入符号候选的位置、大小和形状连同时间戳一起存储。插入符号闪烁的频率应该在公差范围内(例如5%)。由于插入符号闪烁,因此候选应被存储以进行分析,以便查看这些候选是否与插入符号的预期属性(即,位置、大小和频率)相匹配。当在多个屏幕截图(例如20个)中进行比较时,这可以有助于确定插入符号候选是否以特定频率闪烁。如果用户在新字段上点击鼠标、按下Tab键等之后,插入符号再次出现在其他位置,那么该信息也可以有助于标识插入符号。自然地,在过程开始时,确认队列为空。
如果在1135基于插入符号候选的出现/消失、大小和位置来确认给定插入符号候选正在闪烁,那么在1140针对闪烁的插入符号产生插入符号追踪数据。这可以包括插入符号在屏幕上的位置、该插入符号所驻留的图形元素(即,活动元素)等。例如,然后在1145将经验证的候选区域和对应成员二进制矩阵数据保存到确认队列,以供稍后验证。在一些实施例中,可以针对每个新屏幕截图重复图11的过程。
图12A至图12D是图示了根据本发明的实施例的用于执行针对键入字符追踪、插入符号追踪以及活动元素检测的视频处理的过程1200的流程图。在过程1200之前,可以对分辨率变化进行检查,并且可以设置插入符号追踪视频逻辑以适应变化。例如,参见图9。在某些实施例中,过程1200可以与录像机同时运行。例如,参见图10。过程1200是使用C#和
Figure BDA0002729146480000281
操作系统的示例。然而,可以在不脱离本发明的范围的情况下使用任何合适的编程语言、操作系统、相关联的API、格式以及功能。
该过程开始于在1202处使用格式Format16bppRgb555对视频项N(例如屏幕截图、屏幕的一部分、应用窗口等)执行LockBit,以便为N创建BitmapData对象。LockBit锁定位图的矩形部分,并且提供可以用于以指定格式读取或写入像素数据的临时缓冲器。BitmapData存储位图的属性。
然后在1204处,BitmapData N和BitmapData N-1(即,前一项的BitmapData对象)被划分成高度为16个像素的水平行。然而,可以在不脱离本发明的范围的情况下使用用于过程1200的该步骤和其他步骤的任何期望高度(例如8个像素、32个像素等)。在1206,针对在相同竖直位置中(即,在相同“行”中——参见图8A至图8F)的BitmapData N和BitmapDataN-1的每个水平行执行MPCMP指令,MPCMP指令执行字节数组的快速比较。MEMCMP提供了对行是否相同的指示。
然后在1208,提取MEMCMP结果不等于0的相同行中的BitmapData N和BitmapDataN-1的水平行,并且在1210,将所提取的水平行划分成大小为16×16的像素。例如,参见图8C。然后针对BitmapData N和BitmapData N-1的每个16×16像素块,在1212提取这些像素之间存在差异的块。例如,参见图8F。这可以使用循环Intel
Figure BDA0002729146480000291
指令或一些其他合适的能力的长XOR函数的组合来执行。
根据上文,在一些实施例中,将可以被处理的区域的数量限制为预定数量L。在某些实施例中,可以限制在每个区域中可以包括的块的数量。例如,可以应用4个正方形、9个正方形、16个正方形等的限制,以确保OCR可以在获得下一个屏幕截图之前在每个区域上运行。这可以是“优化阈值”,其可以包括对已经改变的区域的数量的限制、对在给定改变区域中所包含的正方形的数量的限制或两者。
在1214,将每个区域中的所提取的16×16像素块的总计数、区域的数量或两者与优化阈值进行比较。如果在1214满足优化阈值,那么过程继续进行至步骤1246并进行下一个屏幕捕获。在一些实施例中,如果在步骤1214并未超过阈值,那么在1216使用连接分量算法结合邻近16×16像素块,在一些实施例中,该算法可以是8向连接的连接分量算法。这确定了哪些块是邻居。
一旦确定了所连接的邻居,就在1218确定每组邻近块的边界矩形,从而形成区域。这可以由极值算法来确定,在该极值算法中包括具有最高x值和最低x值的块(即,(多个)最左侧块和最右侧块)以及具有最高y值和最低y值的块(即,(多个)最高块和最低块)。此示例可以从图8F中看出。
在1220针对区域的每个边界矩形,计算像素变化并将其投影到二进制矩阵。例如,在图14A中示出了在已经组合成32×32区域的四个16×16块中所包括的字母“E”的示例二进制矩阵1400。
在大多数情况下,区域将大于其中所包含的(多个)成员(例如字母、插入符号、改变了像素的其他形状等)。为了提高OCR算法的速度,在1222针对每个二进制矩阵,(例如使用连接分量算法)确定每个区域中所包括的(多个)成员,并且针对每个成员剪裁二进制矩阵。这将针对每个区域中的每个成员产生剪裁后的矩阵。在图14B中示出了从二进制矩阵1400中产生的字母“E”的示例剪裁成员矩阵1410。在一些实施例中,剪裁还可以使用极值算法来执行。
然后在1224,从成员矩阵中提取闪烁的插入符号区域候选。例如,在一些实施例中,候选可以具有矩形形状,其潜在地包括具有单个像素的宽度的竖直线。然后在1226,将所提取的闪烁的插入符号区域候选和对应成员矩阵数据与确认队列进行比较,从而潜在地分析闪烁的大小、位置和频率。如果在1228发生闪烁,那么在1230针对闪烁的插入符号产生插入符号追踪数据。然后在1232,将闪烁的插入符号区域及其对应成员矩阵数据保存到确认队列。在一些实施例中,过程1200的该部分可以与图11的过程1100相同或类似。
成员二进制矩阵仅指示给定像素是否已从屏幕捕获N-1改变为屏幕捕获N。因此,在1234针对已经改变的每个像素,从BitmapData N中获取像素数据。然后在1236生成成员矩形,并且这些成员矩形被准备进行OCR。这可以包括:针对每个改变的像素填充像素数据;消除插入符号像素;处理背景(例如将未经改变的像素设置为空值或高度收缩的值)等。在消除了插入符号像素的情况下,可以假设此时利用二进制矩阵成员的特定位置、形状和集合来检测插入符号本身。可以出于插入符号追踪目的来存储该信息。然后在1238针对所准备的成员矩形像素数据执行OCR,并且在1240针对每个OCR结果执行与键盘队列的模糊匹配。在1242,针对匹配的OCR区域产生键入文本追踪数据。
一旦定位,就在1244从键盘队列中移除与OCR区域相匹配的键盘队列项。例如,在存在字符的多个实例的情况下,可以移除该字符在键盘队列中的最旧实例。然后在1246对BitmapData N-1执行UnlockBit,这将该位图从系统存储器中解锁,并且在1248将BitmapData N移动到位置N-1。过程1200然后可以针对下一个捕获到的项返回到开始。
图13A和图13B是图示了根据本发明的实施例的用于执行粘贴文本追踪的过程1300的流程图。该过程开始于在1305执行键盘记录以及在1310执行屏幕视频记录,以分别确定被按下的键和屏幕上的已发生图形变化的(多个)位置。然后在1315解译用户手势。用户手势可以包括但不限于鼠标点击、按下CTRL+V、右键点击加上从菜单中选择粘贴、点击主页按钮并粘贴于应用中等。如果用户点击位置并从剪贴板快速地粘贴,那么可能会缺失插入符号,并且可能需要以不同方式重构用户的动作。在一些实施例中,如果在1320没有发生来自剪贴板的粘贴,那么在1325执行键入文本检测和插入符号追踪逻辑,这潜在地沿着图12A至图12D的过程1200的线。
然而,如果在1320剪贴板包括来自用户的最近粘贴的数据(例如在最后500ms、最后一秒等内粘贴),那么在1330计算帧N与N-1之间的像素差。然后在1335提取帧N与N-1之间发生变化的所预测的相同位置的区域。在1340针对每个区域,计算像素变化并且将变化投影到二进制矩阵。
在1345,例如,针对每个二进制矩阵,使用连接分量算法确定成员,并且针对每个成员确定成员矩阵。在1350,针对成员矩阵中的每个改变的像素提取像素数据,并且生成成员矩形。在1355,每个成员矩形被准备进行OCR,并且在1360,在每个所准备的成员矩形上运行OCR。在1365,使用由剪贴板监测器在1370提供的剪贴板内容针对每个OCR结果执行OCR结果与剪贴板内容的模糊匹配比较。在一些实施例中,使用Clipboard.GetText()从System.Windows.Forms.dll中获得剪贴板文本内容。如果在1375找到匹配,那么产生粘贴文本的坐标(例如以矩形形式),并且在1380清除剪贴板,并且过程针对下一帧返回到步骤1305和1310。
在一些实施例中,可以针对用户按下导致屏幕变化的特定键的情况保存当前活动元素。例如,如果用户按下回车键,那么可以导致表格提交和窗口关闭。在另一示例中,如果用户在web浏览器的URL输入字段中按下回车,那么这可以导致web浏览器开始导航到网站。算法可以识别出这种情况,并且由于有可能发生显著的屏幕变化,因此该算法可以在其在这些场景中查看活动元素所处的位置之前等待一定的时间量。一旦屏幕变得相对静态(例如屏幕的仅相对较小的部分从一个屏幕截图改变为下一个屏幕截图),键入文本检测和插入符号追踪就可以再次恢复以找到新活动元素。因此,这可以有助于在用户按下回车、退出等时知道哪个元素受到关注。此外,如果当前操作系统提供了可靠方式来本机获得当前前景窗口的窗口边界矩形(例如在
Figure BDA0002729146480000321
中的user32.dll中可用的“GetForegroundWindow”),那么前景窗口边界矩形可以用于限制将用于屏幕捕获和帧处理的区。
在一些实施例中,如果确定了受关注的元素或活动元素,那么因按下不会导致文本出现的键(例如回车、退出、控制、控制和/或alt以及一个或多个字符的组合等)的行为可以基于活动元素的性质而被确定。例如,当按下此“热键”(不可见键或键的组合)时,可以对该“热键”已经触发的动作进行分类。例如,如果受关注的元素被标记为“密码”并且用户按下“回车”,那么可以推断出按下“回车”表示“登录”动作。这对于过程发现的目的而言可以是有用的,其中,与仅仅知道用户已按下“回车”相比,知道用户执行了“登录”对于业务过程建模的目的更具描述性。
在一些实施例中,CV可以用于确定屏幕中的图形元素的类型和位置,以更容易地确定活动元素。例如,CV可以用于确定给定图形元素是否是文本字段、文本框等。如果屏幕改变了相对较小的量或变化定位于图形元素内,那么可以假设变化与给定帧中的新出现的文本相对应。
图15是图示了根据本发明的实施例的用于使用CV和键盘队列来确定活动元素的过程1500的流程图。该过程开始于在1510确定帧是否相较于前一帧改变了超过预定阈值的量。这可以包括检查是否超过特定部分的帧(例如超过2%)已经改变;是否超过预定数量的像素(例如超过200个)已经改变;在准许文本输入的帧中的图形元素的位置外部是否发生了变化等。
如果在1520超过了阈值,那么屏幕上的至少一些图形元素有可能也已经改变。在1530执行CV预处理以标识可以被存储在存储器中的图形元素类型和位置。在一些实施例中,当执行CV预处理时,可以暂停帧比较过程。
在1520并未超过阈值的情况下或在1530完成了CV预处理之后,在1540确定在前一帧与当前帧之间添加的键盘队列中的新出现的元素。如果在键盘队列中存在新出现的元素,那么可以假设这些元素出现在屏幕上的合适的图形元素中。然后在1550确定当前帧中屏幕改变的(多个)位置,并且在1560尝试将变化与图形元素的位置相匹配。如果仅在图形元素中的一者中发生变化,那么在1570将匹配的图形元素设置为活动元素。然而,如果在多个图形元素中发生了变化或在图形元素中未找到任何变化,那么在1580执行基于OCR的处理。然后在1590取得下一帧,并且该过程重复。
图16是图示了根据本发明的实施例的被配置为执行键入和/或粘贴文本的检测、插入符号追踪以及活动元素检测的系统1600的架构图。系统1600包括用户计算系统,诸如台式计算机1602、平板电脑1604和智能电话1606。然而,可以在不脱离本发明的范围的情况下使用任何期望的计算系统,包括但不限于智能手表、膝上型计算机、物联网(IoT)设备、车辆计算系统等。
每个计算系统1602、1604、1606在其上运行有数字过程1610,该数字过程记录屏幕截图、击键、运行的应用、应用视觉元素、视觉元素位置、应用位置、剪贴板内容等。实际上,可以在不脱离本发明的范围的情况下记录与屏幕图形、用户输入、显示元素等相关的任何期望信息。在某些实施例中,最初仅捕获视频和击键记录,并且随后使用CV来确定其他信息。然而,附加信息可以有助于关注并改进CV过程。在不脱离本发明的范围的情况下,数字过程1610可以是经由RPA设计器应用生成的机器人、操作系统的一部分、个人计算机(PC)或智能电话的可下载应用生成的机器人,或者可以是任何其他软件和/或硬件。实际上,在一些实施例中,数字过程1610中的一个或多个数字过程的逻辑部分地或完全地经由物理硬件被实现。
数字过程1610经由网络1620(例如局域网(LAN)、移动通信网络、卫星通信网络、互联网、其任何组合等)向服务器1630发送所记录的屏幕截图、击键、运行的应用、应用元素和位置等。在一些实施例中,服务器1630可以运行指挥器应用,并且数据可以作为心跳消息的一部分周期性地被发送。在某些实施例中,可以在已经收集了预定量的再训练数据后、在已经过去了预定时间段之后或两者向服务器1630发送请求。服务器1630将来自数字过程1610的信息存储在数据库1640中。
在由人类用户(例如使用RPA开发者计算系统1650的设计器应用1652的RPA工程师)指示时,当已经在数据库1640中收集了预定数量的数据时,一旦从数字过程1610等接收到数据,服务器1630就运行用于计算系统的所检测到的键入和/或粘贴文本、插入符号追踪以及活动元素检测过程的实例1632,服务器1630从该计算系统接收数据。服务器可以分析来自实例1632的结果,以确定用户在与他们的计算系统进行交互时正在做什么。
图17是图示了根据本发明的实施例的用于执行预处理、文本检测、插入符号追踪以及活动元素检测的过程1700的流程图。该过程开始于在1705处确定当前屏幕截图帧与前一个屏幕截图帧(以及潜在地至少一个其他前一个屏幕截图帧)之间的变化。如果在1710超过了阈值(例如超过一定数量的像素已经改变、超过一定数量的区域已经改变、区域具有超过一定数量的块等),那么屏幕有可能已经发生了实质性变化,并且可以存在新图形元素。因此,在1715对当前屏幕截图帧执行CV预处理以确定当前屏幕截图帧中的图形元素的类型和位置,并且在1720过程继续进行到下一帧。应注意,“当前屏幕截图帧”和“前一个屏幕截图帧”是相对的。随着过程前进到下一个屏幕截图帧,该屏幕截图帧变成当前屏幕截图帧,而先前的当前屏幕截图帧变成前一个屏幕截图帧。
如果在1710并未超过阈值,那么在1725,系统尝试在不执行OCR的情况下标识活动元素。在一些实施例中,根据图15的全部或一部分执行CV预处理和用于尝试在无需OCR的情况下标识活动元素的过程。如果在1730成功,那么在1720过程继续进行到下一帧。否则,过程继续执行根据本文中所描述的实施例的键入文本检测、插入符号追踪和/或剪贴板内容检测。在一些实施例中,用于执行键入文本检测、插入符号追踪和/或剪贴板内容检测的(多个)过程可以根据相对于图6、图7以及图9至图13B所描述的过程中的全部或一部分。
根据本发明的实施例,图6、图7、图9至图13B、图15以及图17中执行的过程步骤可以由计算机程序执行,该计算机程序编码有指令,该指令用于使(多个)处理器执行图6、图7、图9至图13B、图15以及图17中所描述的(多个)过程的至少一部分。计算机程序可以被实施在非瞬态计算机可读介质上。计算机可读介质可以是但不限于硬盘驱动器、闪存设备、RAM、磁带和/或用于存储数据的任何其他此类介质或介质的组合。计算机程序可以包括用于控制计算系统的(多个)处理器(例如图5的计算系统500的(多个)处理器510)以实现图6、图7、图9至图13B、图15以及图17中所描述的过程步骤中的全部或一部分的编码指令,这些编码指令还可以被存储在计算机可读介质上。
计算机程序可以被实现在硬件、软件或混合实现中。计算机程序可以由彼此可操作地通信并且被设计成传递信息或指令以进行显示的模块组成。计算机程序可以被配置为在通用计算机、ASIC或任何其他合适的设备上操作。
将容易地理解,如本文中的诸图中大体上描述和图示的,本发明的各种实施例的组件可以以多种不同配置来布置和设计。因此,如附图中所表示,对本发明的实施例的详细描述并不旨在限制所要求保护的本发明的范围,而是仅仅表示本发明的所选择的实施例。
贯穿本说明书描述的本发明的特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。例如,贯穿本说明书,对“某些实施例”、“一些实施例”或类似语言的参考是指结合实施例所描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,贯穿本说明书,短语“在某些实施例中”、“在一些实施例中”、“在其他实施例中”或类似语言的出现并不一定全都是指同一组实施例,并且所描述的特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。
应注意,贯穿本说明书,对特征、优点或类似语言的参考并不意味着可以用本发明实现的所有特征和优点都应该在或都在本发明的任何单个实施例中。相反,涉及特征和优点的语言被理解为是指结合实施例所描述的特定特征、优点或特性被包括在本发明的至少一个实施例中。因此,贯穿本说明书,对特征和优点以及类似语言的讨论可以但并不一定是指相同实施例。
此外,本发明的所描述的特征、结构和特性可以在一个或多个实施例中以任何合适的方式组合。相关领域的技术人员应认识到,可以在不具有特定实施例的特定特征或优点中的一者或多者的情况下实践本发明。在其他情况下,可以不存在于本发明的所有实施例中的附加特征和优点在某些实施例中可能被识别。
本领域的普通技术人员应容易地理解,可以利用不同顺序的步骤和/或利用与所公开的配置不同的配置的硬件元件来实践如上文所描述的本发明。因此,尽管已经基于这些优选实施例描述了本发明,但对于本领域的技术人员而言将明显的是,某些修改、变型和备选构造将是明显的,同时仍在本发明的精神和范围内。因此,为了确定本发明的界限和边界,应当参考所附权利要求书。

Claims (40)

1.一种存储计算机程序指令的非瞬态计算机可读介质,所述计算机程序指令在被至少一个处理器执行时,使所述至少一个处理器:
生成键盘字符队列,所述键盘字符队列包括在时间窗口期间发生的按键事件;
确定当前屏幕截图帧与前一个屏幕截图帧不同的一个或多个区域,所述当前屏幕截图帧和所述前一个屏幕截图帧包括显示器的整个屏幕或所述整个屏幕的一部分;
在所确定的所述一个或多个区域中提取一个或多个连接成员,并且对所提取的所述一个或多个连接成员执行光学字符识别OCR,从而产生一个或多个识别字符、一个或多个识别字符序列或两者,以及相应位置;
将所述一个或多个识别字符、所述一个或多个识别字符序列或两者与所述键盘字符队列进行比较;以及
当字符或字符序列与所述键盘字符队列的字符或字符序列相匹配时,从所述键盘字符队列中移除所述字符或字符序列。
2.根据权利要求1所述的非瞬态计算机可读介质,其中所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
将所述当前屏幕截图帧中的具有位置的图形元素设置为活动元素,所述位置包括匹配的所述字符或字符序列的所述位置。
3.根据权利要求1所述的非瞬态计算机可读介质,其中所述键盘字符队列是先进先出FIFO队列,所述先进先出FIFO队列包括被按下的键的字符和所述键在所述时间窗口期间针对所述按键事件中的每个按键事件而被按下的时间。
4.根据权利要求1所述的非瞬态计算机可读介质,其中所述按键事件包括与被按下的键相关联的字符和所述按键事件发生的时间。
5.根据权利要求1所述的非瞬态计算机可读介质,其中所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
取得下一个屏幕截图帧;以及
重复将所述下一个屏幕截图帧用作所述当前屏幕截图帧并且将所述当前屏幕截图帧用作所述前一个屏幕截图帧的过程。
6.根据权利要求1所述的非瞬态计算机可读介质,所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
记录包括多个屏幕截图帧的屏幕视频,所述屏幕视频包括所述当前屏幕截图帧和所述前一个屏幕截图帧。
7.根据权利要求6所述的非瞬态计算机可读介质,其中对所述屏幕视频的所述记录和所述键盘字符队列的所述生成由与执行以下操作的计算系统不同的计算系统执行:对所述当前屏幕截图帧与所述前一个屏幕截图帧不同的所述一个或多个区域的所述确定;对在所确定的所述一个或多个区域中的所述一个或多个连接成员的所述提取;所述OCR对所提取的所述一个或多个连接成员的所述执行;以及对所述一个或多个识别字符、所述一个或多个识别字符序列或两者的所述比较。
8.根据权利要求1所述的非瞬态计算机可读介质,其中
所述当前屏幕截图帧和前一个屏幕截图帧以有损格式被压缩,并且
对所述当前屏幕截图帧与所述前一个屏幕截图帧不同的所述一个或多个区域的所述确定包括:将一个或多个公差应用于所述当前屏幕截图帧和所述前一个屏幕截图帧的对应区域。
9.根据权利要求1所述的非瞬态计算机可读介质,其中对所述当前屏幕截图帧与所述前一个屏幕截图帧不同的所述一个或多个区域的所述确定,对在所确定的所述一个或多个区域中的所述一个或多个连接成员的所述提取,所述OCR对所提取的所述一个或多个连接成员的所述执行,以及对所述一个或多个识别字符、所述一个或多个识别字符序列或两者与所述键盘字符队列的所述比较在不进行视频记录的情况下实时地发生。
10.根据权利要求1所述的非瞬态计算机可读介质,其中除了所述当前屏幕截图帧和所述前一个屏幕截图帧之外,至少一个附加帧被用于对具有差异的所述一个或多个区域的所述确定。
11.根据权利要求1所述的非瞬态计算机可读介质,其中所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
将自动校正算法应用于由所述OCR检测到的字符序列,以产生经自动校正的字符序列;以及
使用所述经自动校正的字符序列来执行与所述键盘字符队列的所述比较。
12.根据权利要求1所述的非瞬态计算机可读介质,其中对所述一个或多个识别字符、所述一个或多个识别字符序列或两者与所述键盘字符队列的所述比较包括:在所述一个或多个识别字符与关联于在所述键盘字符队列中的按键事件的字符之间执行模糊匹配。
13.根据权利要求1所述的非瞬态计算机可读介质,其中所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
分析所述当前屏幕截图帧与所述前一个屏幕截图帧不同的所述一个或多个区域,并且基于所述分析来标识一个或多个插入符号候选;
执行验证以标识所述一个或多个插入符号候选中的插入符号候选正在闪烁;
基于所述验证来标识插入符号的位置;以及
将所述当前屏幕截图帧中的具有所述插入符号的所述位置的图形元素设置为活动元素。
14.根据权利要求1所述的非瞬态计算机可读介质,其中当在所述当前屏幕截图帧之间只有一个区域改变、或其他区域中的所有其他变化与除了与所述键盘字符队列中缺失的按键事件相关联的字符以外的关联于所述键盘字符队列中的按键事件的字符相匹配时,所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
推断不具有匹配字符的所述区域是所述键盘字符队列中的缺失字符;以及
将所述当前屏幕截图帧中的具有所述缺失字符区域的位置的图形元素设置为活动元素。
15.根据权利要求1所述的非瞬态计算机可读介质,其中所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
在与按键事件相关联的字符未在时间窗口期间被标识之后,或者当将使所述键盘字符队列超过固定大小的按键事件被添加到所述键盘字符队列时,从所述键盘字符队列中移除所述按键事件。
16.根据权利要求1所述的非瞬态计算机可读介质,其中所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
重复对多个当前屏幕截图帧与先前屏幕截图帧的分析,直到视频或屏幕截图的其他序列已经被分析为止;以及
基于所述分析来重构与在计算系统上运行的一个或多个应用的用户交互,以确定所述用户正在执行的一个或多个过程。
17.根据权利要求1所述的非瞬态计算机可读介质,其中所述计算机程序指令是机器人过程自动化RPA机器人。
18.根据权利要求1所述的非瞬态计算机可读介质,其中所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
将计算机视觉CV算法应用于所述当前屏幕截图帧、所述前一个屏幕截图帧或两者;以及
基于来自对所述CV算法的所述应用的结果来提供一组识别图形元素和对应边界矩形。
19.根据权利要求1所述的非瞬态计算机可读介质,其中当所述当前屏幕截图与所述前一个屏幕截图之间的变化满足或超过变化阈值时,所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器在不执行进一步处理的情况下忽略所述当前屏幕截图帧和所述前一个屏幕截图帧。
20.根据权利要求1所述的非瞬态计算机可读介质,其中所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
确定是否存在剪贴板内容;以及
当存在所述剪贴板内容并且所述剪贴板内容在时间窗口期间被添加时:
将所述剪贴板内容与所述一个或多个识别字符、所述一个或多个识别字符序列或两者进行比较;以及
当所述剪贴板内容与所述一个或多个识别字符、所述一个或多个识别字符序列或两者相匹配时,将所述当前屏幕截图帧中的具有位置的图形元素设置为活动元素,所述位置包括所述一个或多个识别字符、所述一个或多个识别字符序列或两者。
21.根据权利要求1所述的非瞬态计算机可读介质,其中当所连接的显示设备是新的或所连接的显示设备的分辨率已经改变时,所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
获得针对所有所连接的显示设备的分辨率和尺度;
将针对要被捕获的屏幕截图帧的屏幕截图区设置为所述所连接的显示设备的完整显示尺寸乘以尺度并且与倍数对准;以及
基于所设置的所述屏幕截图区、所述分辨率和所述尺度来捕获所述当前屏幕截图帧和所述前一个屏幕截图帧。
22.根据权利要求1所述的非瞬态计算机可读介质,其中
预定数量的区域被支持,并且
当所述一个或多个区域的数量超过所支持区域的所述预定数量时,所述当前屏幕截图帧被忽略,并且所述键入文本检测逻辑继续进行至下一个屏幕截图帧。
23.根据权利要求1所述的非瞬态计算机可读介质,其中当所述当前屏幕截图帧的超过预定百分比的像素与所述前一个屏幕截图帧不同时,所述当前屏幕截图帧被忽略,并且所述键入文本检测逻辑继续进行至下一个屏幕截图帧。
24.根据权利要求1所述的非瞬态计算机可读介质,其中对所述当前屏幕截图帧与所述前一个屏幕截图帧不同的所述一个或多个区域的所述确定包括:
将所述当前屏幕截图帧和所述前一个屏幕截图帧划分成具有预定高度的水平行;
比较来自所述当前屏幕截图帧和所述前一个屏幕截图帧的每个对应行,以确定相应行是否相同;
当行在所述当前屏幕截图帧与所述前一个屏幕截图帧之间不相同时,提取所述行并且将所述行划分成相等大小的块;
确定在所述当前屏幕截图帧和所述前一个屏幕截图帧中的相应块之间是否存在差异;以及
提取存在差异的块。
25.根据权利要求24所述的非瞬态计算机可读介质,其中当区域中的块的数量超过预定数量时,所述当前屏幕截图帧被忽略,所述键入文本检测逻辑继续进行至下一个屏幕截图帧。
26.根据权利要求24所述的非瞬态计算机可读介质,其中当区域中的块的数量不超过预定数量时,所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
结合邻近块;
针对每一组邻近块确定针对区域的边界矩形;
计算针对每个区域的像素变化,并且将所述像素变化投影到二进制矩阵;
针对每个二进制矩阵中的所述一个或多个连接成员确定连接成员二进制矩阵;
剪裁每个连接成员二进制矩阵;
针对每个连接成员二进制矩阵获取针对所述当前屏幕截图帧与所述前一个屏幕截图帧之间的每个改变的像素的像素数据;以及
使用所获取的所述像素数据来执行所述OCR。
27.根据权利要求26所述的非瞬态计算机可读介质,其中针对被确定为插入符号的连接成员,所述像素数据未被获取并且OCR未被执行。
28.根据权利要求1所述的非瞬态计算机可读介质,其中所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
检测引起屏幕变化的用户交互;以及
在将新的当前屏幕截图帧与新的前一个屏幕截图帧进行比较之前,等待一定时间量、跳过多个屏幕截图帧或在小于所述新的当前屏幕截图帧与所述新的前一个屏幕截图帧之间的所述屏幕变化的一部分之前一直等待。
29.根据权利要求1所述的非瞬态计算机可读介质,其中所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
将所述当前屏幕截图帧中的具有位置的图形元素设置为活动元素,所述位置包括匹配的所述字符或字符序列;
分析所述键盘字符队列,以确定引起与所述活动元素的交互的字符或字符序列;以及
基于所述键盘字符队列分析和所述活动元素来对动作进行分类。
30.根据权利要求1所述的非瞬态计算机可读介质,其中所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
在所述当前屏幕截图帧、所述前一个屏幕截图帧或两者上运行计算机视觉CV算法;以及
确定所述当前屏幕截图帧、所述前一个屏幕截图帧或两者中的图形元素的类型和位置。
31.一种用于针对机器人过程自动化RPA的键入文本检测的计算机实现的方法,包括:
由RPA机器人生成键盘字符队列,所述键盘字符队列包括在时间窗口期间发生的按键事件,所述按键事件包括被按下的键的字符和所述键被按下的时间;
由所述RPA机器人确定当前屏幕截图帧与前一个屏幕截图帧不同的一个或多个区域,所述当前屏幕截图帧和所述前一个屏幕截图帧包括显示器的整个屏幕或所述整个屏幕的一部分;
由所述RPA机器人在所确定的所述一个或多个区域中提取一个或多个连接成员,并且对所提取的所述一个或多个连接成员执行光学字符识别OCR,从而产生一个或多个识别字符、一个或多个识别字符序列或两者,以及相应位置;
由所述RPA机器人将所述一个或多个识别字符、所述一个或多个识别字符序列或两者与所述键盘字符队列进行比较;以及
当字符或字符序列与所述键盘字符队列的字符或字符序列相匹配时:
由所述RPA机器人从所述键盘字符队列中移除所述字符或字符序列,以及
由所述RPA机器人将所述当前屏幕截图帧中的具有位置的图形元素设置为活动元素,所述位置包括匹配的所述字符或字符序列的所述位置。
32.根据权利要求31所述的计算机实现的方法,还包括:
由所述RPA机器人分析所述当前屏幕截图帧与所述前一个屏幕截图帧不同的所述一个或多个区域,并且基于所述分析来标识一个或多个插入符号候选;
由所述RPA机器人执行验证以标识所述一个或多个插入符号候选中的插入符号候选正在闪烁;
由所述RPA机器人基于所述验证来标识插入符号的位置;以及
由所述RPA机器人将所述当前屏幕截图帧中的具有所述插入符号的所述位置的图形元素设置为活动元素。
33.根据权利要求31所述的计算机实现的方法,还包括:
由所述RPA机器人在与按键事件相关联的字符未在时间窗口期间被标识之后,或者当将使所述键盘字符队列超过固定大小的按键事件被添加到所述键盘字符队列时,从所述键盘字符队列中移除所述按键事件。
34.根据权利要求31所述的计算机实现的方法,其中当所述当前屏幕截图与所述前一个屏幕截图之间的变化满足或超过变化阈值时,所述方法还包括:
由所述RPA机器人在不执行进一步处理的情况下忽略所述当前屏幕截图帧和所述前一个屏幕截图帧。
35.根据权利要求31所述的计算机实现的方法,还包括:
由所述RPA机器人确定是否存在剪贴板内容;以及
当存在所述剪贴板内容并且所述剪贴板内容在时间窗口期间被添加时:
由所述RPA机器人将所述剪贴板内容与所述一个或多个识别字符、所述一个或多个识别字符序列或两者进行比较;以及
当所述剪贴板内容与所述一个或多个识别字符、所述一个或多个识别字符序列或两者相匹配时,由所述RPA机器人将所述当前屏幕截图帧中的具有位置的图形元素设置为活动元素,所述位置包括所述一个或多个识别字符、所述一个或多个识别字符序列或两者。
36.根据权利要求31所述的计算机实现的方法,其中
预定数量的区域被支持,并且
当所述一个或多个区域的数量超过所支持区域的所述预定数量时,所述当前屏幕截图帧被忽略,并且所述键入文本检测逻辑继续进行至下一个屏幕截图帧。
37.根据权利要求31所述的计算机实现的方法,其中对所述当前屏幕截图帧与所述前一个屏幕截图帧不同的所述一个或多个区域的所述确定包括:
将所述当前屏幕截图帧和所述前一个屏幕截图帧划分成具有预定高度的水平行;
比较来自所述当前屏幕截图帧和所述前一个屏幕截图帧的每个对应行,以确定相应行是否相同;
当行在所述当前屏幕截图帧与所述前一个屏幕截图帧之间不相同时,提取所述行并且将所述行划分成相等大小的块;
确定在所述当前屏幕截图帧和所述前一个屏幕截图帧中的相应块之间是否存在差异;以及
提取存在差异的块。
38.根据权利要求37所述的计算机实现的方法,其中
当区域中的块的数量超过预定数量时,所述当前屏幕截图帧被忽略,所述键入文本检测逻辑继续进行至下一个屏幕截图帧,并且
当所述区域中的块的所述数量不超过所述预定数量时,所述方法还包括:
由所述RPA机器人结合邻近块;
由所述RPA机器人针对每一组邻近块确定针对区域的边界矩形;
由所述RPA机器人计算针对每个区域的像素变化,并且将所述像素变化投影到二进制矩阵;
由所述RPA机器人针对每个二进制矩阵中的所述一个或多个连接成员确定连接成员二进制矩阵;
由所述RPA机器人剪裁每个连接成员二进制矩阵;
由所述RPA机器人针对每个连接成员二进制矩阵获取针对所述当前屏幕截图帧与所述前一个屏幕截图帧之间的每个改变的像素的像素数据;以及
由所述RPA机器人使用所获取的所述像素数据来执行所述OCR。
39.一种存储计算机程序指令的非瞬态计算机可读介质,所述计算机程序指令在被至少一个处理器执行时,使所述至少一个处理器:
确定当前屏幕截图帧与前一个屏幕截图帧不同的一个或多个区域,所述当前屏幕截图帧和所述前一个屏幕截图帧包括显示器的整个屏幕或所述整个屏幕的一部分;
在所确定的所述一个或多个区域中提取一个或多个连接成员,并且对所提取的所述一个或多个连接成员执行光学字符识别OCR,从而产生一个或多个识别字符、一个或多个识别字符序列或两者,以及相应位置;
将所述一个或多个识别字符、所述一个或多个识别字符序列或两者与键盘字符队列进行比较;以及
当字符或字符序列与所述键盘字符队列的字符或字符序列相匹配时:
从所述键盘字符队列中移除所述字符或字符序列,以及
将所述当前屏幕截图帧中的具有位置的图形元素设置为活动元素,所述位置包括匹配的所述字符或字符序列的所述位置。
40.根据权利要求39所述的非瞬态 计算机可读介质,其中所述计算机程序指令在被所述至少一个处理器执行时,使所述至少一个处理器进一步:
分析所述当前屏幕截图帧与所述前一个屏幕截图帧不同的所述一个或多个区域,并且基于所述分析来标识一个或多个插入符号候选;
执行验证以标识所述一个或多个插入符号候选中的插入符号候选正在闪烁;
基于所述验证来标识插入符号的位置;以及
将所述当前屏幕截图帧中的具有所述插入符号的所述位置的图形元素设置为所述活动元素。
CN202080002350.5A 2020-05-01 2020-08-20 文本检测、插入符号追踪以及活动元素检测 Active CN112930537B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/864,629 US11080548B1 (en) 2020-05-01 2020-05-01 Text detection, caret tracking, and active element detection
US16/864,629 2020-05-01
PCT/US2020/047271 WO2021221708A1 (en) 2020-05-01 2020-08-20 Text detection, caret tracking, and active element detection

Publications (2)

Publication Number Publication Date
CN112930537A CN112930537A (zh) 2021-06-08
CN112930537B true CN112930537B (zh) 2022-11-25

Family

ID=76861450

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202080002350.5A Active CN112930537B (zh) 2020-05-01 2020-08-20 文本检测、插入符号追踪以及活动元素检测
CN202080002359.6A Pending CN113748412A (zh) 2020-05-01 2020-09-21 文本检测、插入符号追踪以及活动元素检测
CN202080002362.8A Active CN113748413B (zh) 2020-05-01 2020-09-21 文本检测、插入符号追踪以及活动元素检测

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN202080002359.6A Pending CN113748412A (zh) 2020-05-01 2020-09-21 文本检测、插入符号追踪以及活动元素检测
CN202080002362.8A Active CN113748413B (zh) 2020-05-01 2020-09-21 文本检测、插入符号追踪以及活动元素检测

Country Status (5)

Country Link
US (5) US11080548B1 (zh)
EP (1) EP3905134B1 (zh)
JP (1) JP7114157B2 (zh)
CN (3) CN112930537B (zh)
WO (4) WO2021221708A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11080548B1 (en) 2020-05-01 2021-08-03 UiPath, Inc. Text detection, caret tracking, and active element detection
US11200441B2 (en) 2020-05-01 2021-12-14 UiPath, Inc. Text detection, caret tracking, and active element detection
TWI767590B (zh) * 2021-03-02 2022-06-11 伊斯酷軟體科技股份有限公司 用於多部電子計算裝置的機器人流程自動化裝置及機器人流程自動化方法
CN114461122B (zh) * 2022-04-12 2022-07-19 杭州实在智能科技有限公司 Rpa元素拾取同屏切换方法及系统

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06274679A (ja) 1993-03-19 1994-09-30 Nec Eng Ltd 文字読取装置
US7437715B2 (en) 2002-04-09 2008-10-14 Hewlett-Packard Development Company, L.P. System and method for generating a set of robot commands based on user entry events in a user interface
JP4112968B2 (ja) 2002-12-26 2008-07-02 富士通株式会社 ビデオテキスト処理装置
US7379600B2 (en) 2004-01-28 2008-05-27 Microsoft Corporation Method and system for automatically determining differences in a user interface throughout a development cycle
JP4394595B2 (ja) * 2005-03-17 2010-01-06 Necディスプレイソリューションズ株式会社 画像送信装置及び画像伝送方法
JP2006274679A (ja) 2005-03-29 2006-10-12 Ishizaki Honten:Kk ウインドレギュレータ用のガラスホルダー
US7644368B2 (en) 2005-06-29 2010-01-05 Sap Ag System and method for regression tests of user interfaces
US7492957B1 (en) 2005-08-29 2009-02-17 Symantec Corporation Using run length encoding to detect target images
US7895518B2 (en) 2007-04-27 2011-02-22 Shapewriter Inc. System and method for preview and selection of words
KR100949581B1 (ko) 2007-10-08 2010-03-25 주식회사 자코드 통신단말기의 문자/숫자 입력장치 및 입력방법
US8271906B1 (en) 2008-06-09 2012-09-18 Intuit Inc. Method and system for using a dynamic cursor area to facilitate user interaction
JP2011081778A (ja) 2009-08-24 2011-04-21 Kryon Systems Ltd ディスプレイ非依存のコンピュータによるガイダンス方法および装置
US8310461B2 (en) 2010-05-13 2012-11-13 Nuance Communications Inc. Method and apparatus for on-top writing
US9213625B1 (en) 2010-07-27 2015-12-15 Intuit Inc. Method and apparatus for performing automated user-interface layout testing
US8924884B2 (en) * 2010-12-06 2014-12-30 International Business Machines Corporation Automatically capturing and annotating content
JP2012174208A (ja) 2011-02-24 2012-09-10 Sony Corp 情報処理装置、情報処理方法、プログラム及び端末装置
US8793578B2 (en) 2011-07-11 2014-07-29 International Business Machines Corporation Automating execution of arbitrary graphical interface applications
JP2013126153A (ja) 2011-12-15 2013-06-24 Canon Inc キャプチャ画像記録装置及びキャプチャ画像記録方法
CA2882590A1 (en) 2012-08-20 2014-02-27 Ctx Virtual Technologies Inc. Keyboard projection system with image subtraction
US20140192210A1 (en) 2013-01-04 2014-07-10 Qualcomm Incorporated Mobile device based text detection and tracking
US9014428B2 (en) 2013-02-15 2015-04-21 Sony Corporation Object detection using difference of image frames
US9495534B2 (en) 2013-03-26 2016-11-15 International Business Machines Corporation OCR-based single sign-on
US10496276B2 (en) 2013-09-24 2019-12-03 Microsoft Technology Licensing, Llc Quick tasks for on-screen keyboards
US9179096B2 (en) 2013-10-11 2015-11-03 Fuji Xerox Co., Ltd. Systems and methods for real-time efficient navigation of video streams
KR101549495B1 (ko) 2013-12-26 2015-09-03 조선대학교산학협력단 문자 추출 장치 및 그 방법
US10339342B2 (en) * 2014-05-09 2019-07-02 Lenovo (Singapore) Pte. Ltd. Data transfer based on input device identifying information
US9424167B2 (en) 2014-05-21 2016-08-23 Cgi Technologies And Solutions Inc. Automated testing of an application system
US20160078115A1 (en) 2014-09-16 2016-03-17 Breach Intelligence LLC Interactive System and Method for Processing On-Screen Items of Textual Interest
US20160349928A1 (en) 2015-05-27 2016-12-01 International Business Machines Corporation Generating summary of activity on computer gui
EP3112965A1 (en) * 2015-07-02 2017-01-04 Accenture Global Services Limited Robotic process automation
WO2017001560A1 (en) 2015-07-02 2017-01-05 Accenture Global Services, Ltd. Robotic process automation
KR20170086228A (ko) 2016-01-18 2017-07-26 성하규 손글씨 실시간 텍스트 변환 시스템
US9779293B2 (en) 2016-01-27 2017-10-03 Honeywell International Inc. Method and tool for post-mortem analysis of tripped field devices in process industry using optical character recognition and intelligent character recognition
EP3206170A1 (en) 2016-02-09 2017-08-16 Wipro Limited System and methods for creating on-demand robotic process automation
FR3048099B1 (fr) 2016-02-18 2018-03-23 Airbus Operations Systeme de controle permettant la comparaison de deux chaines de caracteres et procede d'installation d'une nouvelle configuration dans un aeronef
KR102561711B1 (ko) 2016-02-26 2023-08-01 삼성전자주식회사 컨텐트를 인식하는 방법 및 장치
US10073766B2 (en) 2016-08-25 2018-09-11 Entit Software Llc Building signatures of application flows
JP6274679B2 (ja) 2016-09-16 2018-02-07 株式会社大一商会 遊技機
US20180107380A1 (en) 2016-10-14 2018-04-19 Samsung Electronics Co., Ltd. System and method for key area correction
US10204092B2 (en) 2016-12-12 2019-02-12 Wipro Limited Method and system for automatically updating automation sequences
US11157855B2 (en) 2017-01-09 2021-10-26 Sutherland Global Services Inc. Robotics process automation platform
US9817967B1 (en) 2017-01-13 2017-11-14 Accenture Global Solutions Limited Integrated robotics and access management for target systems
EP3619610A1 (en) 2017-05-02 2020-03-11 Soroco Private Limited Systems and methods for detecting anomalies in execution of computer programs
JP6881004B2 (ja) 2017-05-09 2021-06-02 船井電機株式会社 表示装置
US10637674B2 (en) 2017-06-07 2020-04-28 Tg-17, Inc. System and method for real-time decoding and monitoring for encrypted instant messaging and other information exchange applications
US10682761B2 (en) 2017-06-21 2020-06-16 Nice Ltd System and method for detecting and fixing robotic process automation failures
US10235192B2 (en) 2017-06-23 2019-03-19 Accenture Global Solutions Limited Self-learning robotic process automation
JP7005314B2 (ja) 2017-11-22 2022-01-21 キヤノン株式会社 画像処理装置、画像処理方法、及びプログラム
KR20190095651A (ko) 2018-02-07 2019-08-16 삼성에스디에스 주식회사 문자 학습 트레이닝 데이터 생성 장치 및 그 방법
US10489644B2 (en) 2018-03-15 2019-11-26 Sureprep, Llc System and method for automatic detection and verification of optical character recognition data
US20190324781A1 (en) 2018-04-24 2019-10-24 Epiance Software Pvt. Ltd. Robotic script generation based on process variation detection
CN110032319A (zh) * 2019-04-18 2019-07-19 广州申铭信息技术有限公司 一种屏幕界面中特殊位置的识别方法及其应用
US11200441B2 (en) 2020-05-01 2021-12-14 UiPath, Inc. Text detection, caret tracking, and active element detection
US11461164B2 (en) 2020-05-01 2022-10-04 UiPath, Inc. Screen response validation of robot execution for robotic process automation
US11080548B1 (en) 2020-05-01 2021-08-03 UiPath, Inc. Text detection, caret tracking, and active element detection

Also Published As

Publication number Publication date
US11625138B2 (en) 2023-04-11
US20210342625A1 (en) 2021-11-04
EP3905134A1 (en) 2021-11-03
US11630549B2 (en) 2023-04-18
US11302093B2 (en) 2022-04-12
EP3905134B1 (en) 2023-10-25
CN113748413B (zh) 2023-10-03
US11080548B1 (en) 2021-08-03
JP7114157B2 (ja) 2022-08-08
WO2021221708A1 (en) 2021-11-04
US11068738B1 (en) 2021-07-20
WO2021221711A1 (en) 2021-11-04
JP2022527873A (ja) 2022-06-07
US20220245921A1 (en) 2022-08-04
WO2021221712A1 (en) 2021-11-04
CN112930537A (zh) 2021-06-08
US20210342623A1 (en) 2021-11-04
CN113748412A (zh) 2021-12-03
WO2021221710A1 (en) 2021-11-04
CN113748413A (zh) 2021-12-03

Similar Documents

Publication Publication Date Title
KR102446521B1 (ko) 로보틱 프로세스 자동화를 위한 로봇 실행의 스크린 응답 검증
CN112930537B (zh) 文本检测、插入符号追踪以及活动元素检测
US11594007B2 (en) Text detection, caret tracking, and active element detection
KR102297356B1 (ko) 텍스트 검출, 캐럿 추적, 및 활성 엘리먼트 검출
KR102373943B1 (ko) 텍스트 검출, 캐럿 추적, 및 활성 엘리먼트 검출
KR102297355B1 (ko) 텍스트 검출, 캐럿 추적, 및 활성 엘리먼트 검출
EP3905038A1 (en) Screen response validation of robot execution for robotic process automation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant