RPA相关技术解析

发布于:2022-10-12 ⋅ 阅读:(356) ⋅ 点赞:(0)

目录

抓屏技术

RPA处理不了三种情况

模拟鼠标和键盘技术

其他自动化处理技术

Office自动化

对Windows原生应用的自动化

电子邮件自动化

工作流技术

OCR技术

自然语言处理

用于决策判断的相关技术

业务规则引擎

知识库系统

基于数据的决策

RPA与人工智能技术的结合

抓屏技术

为了模拟人工在应用程序上的操作,RPA就必须要与屏幕上各种窗口、按钮、下拉列表等不同要素进行交互,所以RPA中有一项重要的技术,俗称“抓屏”(ScreenScraping)。这里谈到的抓屏技术,并不是传统意义上所说的截屏技术,即将电脑屏幕变成一张图片。抓屏技术是通过终端或显示器来直接抓取界面中的数据,而无须访问底层数据库或者接口,这种技术适用于不能开放或访问的遗留系统。抓屏技术由于提升了流程自动化处理的展示水平,使技术处理过程可以直观地展示在用户面前,因此迅速提升了RPA的易用性和影响力。

  1. 根据信息抓取技术实现方式分类

根据信息抓取的技术实现方式划分,抓屏技术又可以分为:依据对象句柄元素抓取、依据网页标签抓取、依据图像抓取、利用OCR识别、依据坐标位置抓取以及其他特别类型的抓取方式

依据对象句柄元素实现抓取

句柄是指操作系统内存里指向某个结构体的指针,如在Windows中设立句柄是由于内存管理的需要,就像公安部门对社区人口的户籍管理一样,操作系统也需要知道每个应用程序的内存位置,因此Windows用句柄来记载数据地址的变更。句柄标识了应用程序中不同类型的对象实例,如窗口、按钮、图标、滚动条、输出设备、控件或者文件等。同时,Windows也提供了相关的API来获取这些窗口句柄,如FindWindow(获取窗口句柄)、EnumWindows和EnumChildWindows(获取所有顶层窗口以及它们的子窗口)等函数

依据网页标签

实现抓取大多数Web网页源代码都是通过HTML语言编写的,页面中的数据通过各种HTML标签所标识,如<head>、<title>、<div>、<tr>、<td>等。当我们在浏览器中点击快捷键F12时,网页的全部HTML源代码就会展示出来。不同点是,RPA可以让用户更灵活、更快捷、更精准地获取到所需要的网页内容,而不必采用爬虫技术中的深度或广度搜索,甚至避免了通过种子URL扩展到整个网站页面进行访问或下载。

抓取Web网页中的数据,最重要的就是在页面中准确地定位该数据的位置。目前,经常采用的方式是通过关键值或特征值来查询Web页面中的某个元素,如ID、Name、Ta-g、Link、DOM、XPath、CssSelector等。就如前面谈到的客户端查询方式一样,这些特征值必须唯一,并保持不变,否则机器人再次打开网页时,就查询不到该元素了。页面中元素如ID、Name、Tag、Link值经常会改变,但页面的结构通常是不变的,所以最常用的页面元素就是XPath和CssSelector。XPath是一种在XML文档中定位元素的语言。因为HTML可以被看作XML的一种实现,因此可以将页面中元素的位置转换为XPath来表示。

为了使页面元素获取速度更快、运行更稳定,RPA厂商在技术上对浏览器原生的API进行封装。但是由于不同的浏览器厂商对Web页面元素的操作和呈现会有一些差异,这就需要开发者根据浏览器厂商提供的插件来实现。这就是为什么RPA脚本程序在更换终端、浏览器或者浏览器版本之后,都会对RPA运行速度和稳定性造成影响。现实中应用系统的情况是比较复杂的,由于应用开发者可能会对客户端或者页面元素做封装,或者安全控制等特殊处理,导致无法直接获取对象的句柄或页面的标签。

利用图像对比技术

实现抓取利用图像抓取技术的主要原理就是预先保存好需要查询的某对象的图像,如一个按钮或下拉控件的图像,当机器人在桌面窗口查询这个对象时,根据预存的该对象的图像对整个窗口的图像做查询和比对。如果匹配成功,机器人就可以获取该图像的坐标位置,进行下一步操作。通常,为了提高图像查询的稳定性,RPA软件中可预先设置对象图像的比对范围、对比模式、重试次数、精度要求等参数。图像抓取技术通常是作为辅助手段来使用的,比如UiPath会利用图像抓取技术选择辅助项作为锚点,再获取相对位置的某个对象元素,如某个对话框。AutomationAnywhere的ImageRecognize支持在识别对象附近偏移指定像素点的操作。图像抓取方式的缺点是:查询速度比较慢,远低于前面谈到的直接按照属性查询对象的方式的速度;如果页面中出现两个图像一致的控件对象,或者想获取的对象被隐藏或没有显示在图像中,那么就无法做出准确的抓取了。

借助OCR识别技术实现抓取

OCR(光学字符识别)技术是首先扫描识别整个屏幕图像,获取所有的文字信息,然后在其中查询某个关键字,确定它的坐标位置后再做其他处理动作。OCR还可以用来识别某个页面对象中的文字信息,如利用标准的抓取方式获得了某个对象,却无法获得对象中所显示的文字内容,OCR便可以通过该对象所对应的图像信息来识别其中的文字。OCR识别方式的缺点是:只能对图像已经展示出来的文字进行识别,而对表格中未显示完整的信息就无法识别;另外,受制于界面展示语言的问题,会出现OCR识别率偏低,而无法进行后续处理的情况。

依据界面坐标位置实现抓取

RPA软件通常也会提供依据界面坐标位置来获取界面要素的功能,这种功能在早期的自动化软件中经常被使用。但由于每次应用界面开启位置的不确定性和界面的低分辨率等问题,目前RPA技术实现中已经很少采用这种方式。但如果出现了前面所谈到的各种技术都无法实现,且客户端程序的界面位置不能随意调整,大小也不能缩放的情况,我们也可以采用这种方式

需要注意的是,在使用坐标位置定位某个对象时,有两种技巧可以提高识别的稳定性。一种是采用相对坐标的计算方法,比如先通过其他技术找到另一个对象的绝对位置,然后计算这个对象与目标对象之间的偏移量,最终计算出目标对象的绝对坐标位置。另一种是通过预先调整程序窗口位置的方式,窗口的位置固定以后,那么窗口里的对象位置也就固定了。

其他特别类型的抓取

如果一些应用程序是采用Java、Flex、Silverlight或其他特殊技术实现的,或者是像SAPGUI这种被特殊封装过的应用界面,标准的抓取方式通常是无效的,需要在RPA中提供单独的技术组件来实现。例如一些独立的程序或单独的插件,或者调整应用程序中的配置来适应RPA的访问,或者采用前面提到的图像比对、OCR识别和界面坐标定位的方式。这类实现自动化的方式差异很大,也比较繁杂,且大多是在实践中不断发现问题并解决问题的经验成果。

  1. 根据抓取目标对象分类

如果根据抓取的目标对象划分,抓屏技术可分为三类:本地客户端(Client)程序的界面抓取、浏览器页面(Web)信息的抓取,以及远程桌面或Citrix中界面信息抓取

本地客户端程序的界面抓取

客户端应用程序指安装和运行在Windows或Mac操作系统之上的应用程序。其被称作客户端,通常是与服务器端相对应的,但这里也可以指在本地电脑中单机运行的应用程序。客户端应用与网页版应用最大的区别就是对于操作系统的依赖,比如Windows的客户端应用无法运行在MacOS的电脑中,而网页版应用则可以实现跨操作系统的用户操作。那么,抓取客户端界面信息的RPA技术就必然依赖于操作系统,而且基于不同操作系统的抓取技术其实现也就必然不同,甚至是同样操作系统的不同版本也会造成技术差异。

目前最有效的技术抓取方式就是前面提到的抓取应用程序窗口中的对象句柄。在今天,企业中的业务用户仍旧主要基于微软的Windows系统来完成日常的业务操作,所以各家的RPA产品普遍对Windows应用程序的实现效果较好。而Mac或Linux操作系统上的应用程序,或是不支持抓取,或是支持能力较弱。

浏览器页面信息的抓取

最早流行的网页标签抓取技术就是我们经常谈到的“网页爬虫”。

RPA中的Web页面信息抓取技术可以看作爬虫技术的升级。二者的相同点是都需要对网页进行解析,即在网页服务器返回的页面信息中使用正则表达式提取所需的数据。不同点是,RPA可以让用户更加灵活、更快捷、更精准地获取所需要的网页内容,而不必采用爬虫技术中的深度或广度搜索,甚至是避免通过种子URL扩展到整个网站的页面访问或下载,以及对网络所带来的流量和访问量的冲击。

有别于本地的客户端应用程序,Web应用对操作系统的依赖较弱,而更依赖于浏览器的内核技术。目前,市场上流行的内核技术包括IE内核、Firefox(火狐)浏览器内核技术,以及目前最流行的GoogleChrome浏览器内核技术,而国内自产的各种浏览器也大多来自于以上三种内核技术。针对不同内核浏览器所展示出的Web页面,RPA抓取技术也存在差异,但由于前面我们提到的浏览器页面抓取技术主要是借助页面的xpath标签,所以浏览器差异所带来的影响远小于客户端对于操作系统差异的影响

远程桌面(RDP)或Citrix中界面信息抓取

如果RPA采用云端部署模式,则要通过远程桌面技术来访问远程应用程序;如果外包人员不能直接在企业内工作,则要通过VPN的方式来远程访问企业的办公网络和办公环境;如果网络存在安全隔离问题,则不得不通过堡垒机访问远程服务器,这些场景都要用到远程桌面。人们在日常工作中也经常会遇到通过远程桌面或Citrix访问系统的情况,所以RPA必须实现远程桌面信息的抓取。

由于远程桌面返给用户终端的并不是实际操作环境,而是加载的内存中的图像,所以无法用标准的抓取方式来解决这个问题。另外,由于远程桌面的打开位置和图像显示经常会变形,所以也不适合采用图像比对和界面坐标定位的方式实现。因此,借助OCR技术和下一节谈到的快捷键操作就成了其主要的处理手段

为了提高RPA处理能力,通常还需要加入一些辅助的处理手段,如AutomationAnywhere中的AISense,就是在OCR的基础上利用人工智能技来帮助识别Citrix中的界面信息。而且,界面中对象的位置改变也不会影响其对信息的识别。或者可以在Citrix中安装自定义的扩展插件,变相地将虚拟桌面中的内容转换成本地对象,那么就可以采用标准的抓取方式来实现自动化了.

RPA处理不了三种情况


找不到”是指RPA无法通过前面谈到的各类技术来抓取界面中的对象。这通常是由于应用开发者对程序界面或Web页面中的代码做了特别的框架封装,并且页面内容又经常会随着刷新而改变,导致无法采用图像识别或OCR技术来处理。虽然这种情况很少发生,但在实际应用中如果遇到这种问题,我们只能通过快捷键操作或者变通到其他业务处理方式上,以避开这种技术“陷阱”

“读不懂”是指虽然RPA可以抓取界面中的对象,但是无法理解其中的内容。一种最典型的情况就是用户在登录外部网站时经常出现的“验证码”。设置“验证码”的目的就是防止网络攻击访问(DDoS),以及防止非真实的人类用户或机器人的访问,所以RPA“读不懂”验证码,完全属于正常情况。部分开发者会借助互联网上所谓的“打码”工具对验证码进行破解,破解后再返回给RPA使用,但仍然存在验证码升级带来的潜在风险。另一种情况就是,RPA抓取到的对象中的文字完全是采用自然语言表达的,通过预定义规则和NLP的方式都无法对其进行处理。

“处理不了”是指RPA能够抓取界面中的对象,如一个文本输入框,但是无法向其中键入文字。这通常是由于开发者给这个输入框做了特别的安全控制,如禁止模拟键盘操作,像网上银行这类高安全要求的应用中经常会遇到这种情况。部分开发者会借助一些特殊的外接设备来解决此类问题。

综上所述,大部分不能抓取界面信息的情况是由于开发者当初设置的安全控制所引起的。所以在RPA项目中,开发者应当首先与安全部门了解企业的安全管控要求。如果这些安全管控要求是必需的,就不能使用机器人直接操作,但可采用人机结合的处理方式。例如机器人在处理到这些安全字段时,先暂停处理,转由人工完成键入或识别工作,然后触发机器人进行接下来的处理。如果这些安全管控要求对机器人是可以特别开放的,就可以在后台应用程序代码调整或系统配置之后,再来实现RPA自动化处理。

模拟鼠标和键盘技术

RPA一项重要的技术就是模拟人工对鼠标和键盘的一些操作,比如单击、双击、右击、拖拽等鼠标操作,或者键盘输入、快捷键使用、组合键使用等键盘操作,这项技术常用于游戏外挂的开发。

RPA中有三种模拟技术。

第一种是应用级模式,可以模拟键盘消息发给目标应用程序,例如利用Windows中提供的API函数,如SendMessage和PostMessage

第二种是系统级模拟,可以模拟全局键盘消息发送给所有程序的窗口,如利用API函数keybd_event或者全局钩子函数HOOK来模拟键盘消息。

第三种是驱动级模拟,可以直接读写键盘的硬件端口。这样的实现方式相当于绕过了应用层和操作系统层,直接与物理硬件进行对话。而普通应用程序是无权操作系统端口的,需要利用相应的驱动程序来实现。鼠标控制的方式是利用全局函数,需要给出横纵坐标才能确定鼠标的操作,如MOUSEEVENTF_MOVE(移动鼠标)、MOUSEEVENTF_LEFTDO-WN(按下鼠标左键)和MOUSEEVENTF_LEFTUP(放开鼠标左键)等。

其他自动化处理技术

除上面谈到的比较常用的自动化抓取界面信息、键盘和鼠标模拟技术以外,RPA对一些常用的软件工具也提供专门的自动化技术实现,主要是通过某些应用软件对外提供的API或者可扩展插件提高运行效率。

Office自动化

Excel、Word、Outlook等常用的Office软件都会对外提供可用的API函数,用于访问API功能。RPA可以通过这些API实现Office系列软件一些操作的自动化处理,如Excel表中的过滤、排序、透视图制作等,如果通过标准的抓取方式实现对透视图的自动化处理,虽然比较直观,但是涉及大量点击、拖拽和右键菜单操作,步骤多就会导致自动化操作的不稳定。如果通过API来实现,则速度更快,稳定性也更高。在这种API的实现方式下,客户端甚至不需要安装Excel软件。另外一种方式是在Office软件的可扩展加载项中增加专门的自动化插件,解决Office嵌入式的自动化处理

对Windows原生应用的自动化

RPA可以通过Windows的API实现对文件夹和文件的自动化处理,如新建文件夹、修改文件名称、复制新文件等;也可以实现对Windows窗口操作的自动化,如最小化、最大化等;还可以实现活动目录(ActiveDirectory)的自动化处理,如创建组、修改用户等。将API封装之后的自动化处理比标准的抓取方式更快、更稳定。

电子邮件自动化

RPA可调用收发邮件的API,如SMTP、POP3、IMAP等实现对电子邮件的自动化收发处理,包括收发邮件、删除邮件等。当然,我们也可以使用Outlook邮件的API或者在邮件客户端上采用标准的抓取方式来收发邮件。如果技术允许,RPA可以封装更多类型的API来实现自动化,如PDF、FTP等,关键看需要自动化的软件是否具有更广泛的使用度;也可以调用其他脚本文件或者可执行文件,如VBScript、JavaScript、Python、exe等,来保护原有已经开发的自动化资产管理;或者调用外部的Service或者API来执行自动化处理,借助第三方库实现自动化处理。

工作流技术

由于RPA的主要作用就是解决业务流程自动化的问题,那么工作流技术就是其必不可少的能力。工作流(Workflow)技术是基于业务流程管理(BusinessProcessManagement,BPM)理论和实践而诞生的一套技术解决方案,通常包含工作流设计、工作流运行和工作流监控三个部分。工作流技术通常用来控制和管理文档在各个计算机之间自动传递,而不是某个任务中步骤的自动化处理。而RPA通过操作用户界面来访问应用程序,实现了像人类用户一样在业务逻辑上的连续处理。在这个过程中,RPA需要操作一个或多个界面,在每个界面又须处理一些数据项,被视为一种微观层面的工作流处理。所以RPA须具有工作流技术的相关特征,如流程触发、流程嵌套、分支(IFELSE)、循环、暂停、取消、延时和错误处理等,同时在流程中须支持常量、变量的定义。

OCR技术

所谓光学字符识别(OpticalCharacterRecognition,OCR)技术,是指基于电子设备(如扫描仪或数码相机)扫描件的文字,通过OCR技术检测扫描件上暗、亮的模式以确定文字的形状,然后用字符识别方法将形状翻译成文字的过程。整个过程是首先需要对纸质文本资料进行扫描,然后对图像文件进行分析处理,最后获取文字及版面信息。

由于企业员工在办理业务过程中,仍然需要与真实的物理世界打交道,小到发票识别、文档识别、银行卡和身份证的识别,大到广告、海报的识别,而RPA却不能直接读取这些图像信息,因此需要借助OCR技术。另外,如果遇到需要识别远程桌面或无法获取本地桌面的字段的情况,也需要借助OCR技术来识别。例如,财务领域的自动化应用中,经常需要利用OCR技术对发票进行识别和处理

除技术方向外,另一个就是业务方向,即利用业务管理手段来帮助OCR提高识别率。例如,采用统一的高拍仪或扫描仪按照规范来获取图像,而避免个人手机拍摄因为手机的差异、拍摄角度和光线的差异导致识别率降低。例如,加入预校验功能,即事先排除那些低识别率的扫描件,直接转入人工处理,而避免流程进入大批量处理后,再由人工处理。

例如,采用在需要比对的系统用户界面上直接附着已经切割好的图像切片,这样就避免了用户的双屏来回切换以寻找对比要素的过程。类似的业务调整和管理手段还有很多,最终目的都是希望减轻业务人员的工作量,提高工作质量和效率。

最后,如果企业仍然觉得OCR技术难以实现和掌握,还可以利用一些互联网公司提供的云端服务,如腾讯云的文字识别提供了身份证、名片、银行卡、车牌、行驶证、驾驶证、营业执照、通用手写体、通用印刷体的识别,并提供了后付费和预付费两种计费模式;百度云的文字识别还提供了网络图片、火车票、出租车票的识别。利用云服务的OCR每次识别的费用相对较低,如果企业对信息识别量不大,也可以考虑利用云服务结合RPA来一起使用。

自然语言处理

自然语言处理(NaturalLanguageProcessing,NLP)是研究如何让计算机理解并生成人类自然语言的一种技术。在RPA的应用过程中,NLP的应用场景主要有以下几种情况。

【1】当机器人接收到的要处理的信息不是结构化字段,也不是待OCR处理的扫描图像,而是一段人类自然语言表达的文字时,这就需要NLP从中提取出关键的字段信息,然后自动录入系统或者与系统中的信息做比对。

【2】在OCR技术识别完信息之后,NLP技术可用来做优化处理,在识别完的文字中找出最合乎逻辑的词,做出文字修正。

【3】当需要处理大量信息时,RPA可以利用NLP进行检索或分类处理。

【4】NLP技术可以在RPA处理完成以后以自然语言的方式反馈给用户。

用于决策判断的相关技术

OCR和NLP技术基本上解决了RPA在数据获取环节遇到的问题,你也许还会问,“难道业务流程中就没有基于员工经验的主观判断吗?对于这些判断和决策,机器人如何自动处理?

业务规则引擎

业务规则引擎(BusinessRuleEngine,BRE)是指可以执行一个或多个业务规则的程序或软件。这些业务规则主要与企业中的业务规范、规章制度、逻辑判断有关,而与程序的处理过程无关。

注意在设计规则引擎时,业务规则不要直接写在RPA自动化脚本中,而是采用独立的规则引擎

设计方面。如果出现规则过于复杂的情况,则利用程序中if…else…的表达方式就会显得非常混乱和难以理解。而规则引擎可以让用户以可视化、近乎自然语言的方式来定义这些规则,并在运行过程中及时生效。

另外,如果将RPA流程处理过程与业务规则相解耦分离,也就可以将RPA开发人员和业务人员双方的权责分离。开发人员关注于流程实现,而业务人员关注于规则的定义。双方的权责明确不仅对自动化的设计过程有积极影响,而且对未来生产运行问题的界定和认责也是有积极影响的。

知识库系统

知识库系统是收集、处理、分享组织中全部知识的信息系统,可以对组织中大量有价值的方案、策划、成果、经验等知识进行分类存储和管理,积累知识资产避免流失,促进知识的学习、共享、培训、再利用和创新。RPA结合知识库系统的使用场景主要是呼叫中心对客户服务或员工服务。在自动化领域用好知识库系统,需要做到以下两点。第一,需要考虑知识库中知识的积累方式和表示模式,由于以前的知识库都是提供给人类使用的,大多采用自然语言表达,而如果是提供给机器人使用,则更多地需要采用规则化、知识图谱类的存储方式。第二,需要在知识库搜索到的结果中加入可信度分析,这样才能确保可信度高的知识可以被机器人拿来直接使用,而可信度低的知识还需要人工辅助校验。

基于数据的决策

当今时代,数据为企业所带来的价值是毋庸置疑的,但是绝大多数人讨论的都是大数据分析能够给企业的经营管理者或领导者带来什么价值。在自动化领域,我们需要利用小范围、小样本的数据,来帮助机器人在操作过程中快速地做出决策。其实,大数据帮助解决的是一线操作人员的判断和决策问题,以避免个人的直觉给企业带来风险隐患。所以,自动化领域的数据决策与大家经常讨论的大数据决策是有差别的。在自动化领域,用户通常会用数据决策来解决两类问题:分类问题和决策分析问题。

分类问题经常出现在自动化操作过程中。数据分类就是把具有某种共同属性或特征的数据归并在一起。最容易的是通过所属类别的属性或特征对数据进行分类,如信用评估、文本分类、风险判断等;相对容易的是对线性数据进行分类;相对难一点的是对非线性数据和随机数据进行分类。决策分析问题方法是利用一种树形结构,对树节点上的每个属性进行衡量,并以此做出最终的决策。该方法可以帮助RPA解决某些复杂问题的决策判断,而且决策结果也会更加理性。

RPA与人工智能技术的结合

智能RPA技术,或者IPA技术(Intelligent Processing Automation)中需要解决的问题仍然还是上面谈到的数据获取问题和决策判断问题。因为OCR还只是能解决图像中文字的识别,而如果需要对照片或影像进行识别,就需要采用计算机视觉技术。自然语言处理只能够处理静态扫描件,如果涉及机器人和人的交流过程,还需要用到对话机器人。对于自动化流程中更高难度的决策判断,我们则需要采用专家系统。

计算机视觉技术主要的应用领域是物理机器人行业,如机器人按照路线行进和躲避障碍物等。相信随着人工智能技术的进一步成熟,计算机视觉技术能够顺利地融入更多人工智能产品中,也会与流程自动化领域结合得更紧密。因为计算机视觉技术是把物理世界转换为数字化世界的重要一环,也是RPA从虚拟的软件环境连接到真实环境的重要手段,如路标的识别、汽车牌照的识别、商家招牌的识别,以便于后续统计和分类的自动化

对话机器人(Chatbot)其实也是一种软件机器人,其核心技术就是自动问答,即利用计算机自动回答用户所提出的问题以满足用户知识需求。

对话机器人中一项技术就是语音交互,这项技术不管是中文还是英文交互都已经非常成熟。语音交互主要包括语音识别(SpeechRecognizer)、语言生成(LanguageGenerator)和语音合成(SpeechSynthesizer)模块。语音识别是实现语音输入到文字识别的转换,即把用户说的语音转成文字;语言生成是根据解析模块得到的内部表示,在对话管理机制的作用下生成自然语言,即把回答的机器语言再转换成口语;语音合成是将模块生成的句子转换成语音输出,即把口语再转化成语音。这种语音交互能力最适合的载体是个人移动设备,而不是桌面电脑,因为个人移动设备距离人最近,也最容易产生交互。但是,RPA机器人却可以在桌面电脑上为你服务。所以,比较好的结合方式就是,利用移动设备上的对话机器人与桌面电脑中RPA机器人进行交互。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到