什么是 RPA?RPA 是機器人流程自動化 Robotic Process Automation 的簡寫。在《智能RPA實戰》中,我們這樣定義:通過特定的、可模擬人類在計算機界面上進行操作的技術,按照規則自動執行相應的流程任務,代替或輔助人類完成相關的計算機操作。一句話總結就是:用軟件機器人自動化之前由人完成的任務。
那么什么是 IPA 呢?IPA (Intelligent Process Automation) = RPA+AI。簡單來說就是使用 AI 來強化 RPA 的各項能力。比如:加強 RPA 的界面元素識別能力、賦能 RPA 來完成 RPA 任務執行過程中的智能決策等。我們通常把 RPA 比作抓手、AI 比作大腦。AI 負責思考,RPA 負責行動。RPA 是一個數字化平臺,可以調用計算機所有軟硬件能力。AI 可以作為其中一個智能組件存在,被 RPA 調用。AI 也可以作為 RPA 的一部分進行賦能,比如智能化機器人調度邏輯。
目前,主要有 CV 和 NLP 兩個領域的 AI 技術在 RPA 中應用比較廣泛。
1. 計算機視覺
CV (Computer Vision) 計算機視覺是一個專門研究如何從數字圖像中提取有用信息的領域。在 RPA 中,常見的 CV 技術有模板匹配、光學字符識別、目標檢測等:
-
Template Matching 模板匹配:模板匹配是大圖中定位小圖(模板)的算法。比如在桌面中定位一個圖標的位置、尋找窗體中的一個按鈕等。 -
OCR (Optical Character Recognition) 光學字符識別:通過輸入一張圖像,OCR 模型分析處理后,輸出圖像上的結構化字符信息(字符的坐標、字符的具體值)。比如驗證碼識別、提取發票上的信息等。
-
OD (Object Detection) 目標檢測:通過給計算機輸入一張圖像,讓計算機分析出其中的物體。比如分析一個應用窗體內的所有控件(按鈕、編輯框等)來進行后續的 RPA 操作。
-
IDP (Intelligent Document Processing) 智能文檔處理:比如合同文檔自動解析:自動化處理大量合同文檔、快速應對審閱、查找、校對等工作。文件信息分析提?。簩ζ髽I招投標文件、內部文檔資料等長篇幅文件進行解析。HR人崗精準匹配:對簡歷進行關鍵信息提取構建人才畫像,匹配精準崗位。 -
文本審核:黃反審核,識別文本中色情等低俗信息;識別宗教、槍支等反動信息。涉政識別,識別文本中涉政等敏感信息。廣告過濾,識別和攔截廣告信息,并對用戶發言進行識別和分析。垃圾檢測,識別文本中罵人、刷帖等垃圾信息。
-
提升企業效率:時間上,人類選手 5 x 8h = 40h。機器選手 7 x 24h = 168h 是人類的 4.2 倍!畢竟 RPA 機器人一天有 3 個工作日,上一天班加兩天班…速度上,業務系統響應有多快,RPA 就能執行有多快。并且不會因為工作時間延長而出現疲勞或準確率降低等問題。 -
降低人工風險:人類擅長抽象、推理。機器擅長重復。人類在疲倦、外界干擾、主觀情感波動時,容易產生誤操作、誤判。RPA 機器人擅長不斷地重復執行特定的工作。
-
打通業務系統:不需要改造原有系統、不需要開發接口或 SDK 來實現對接。也就是大家所聽到的“非侵入式”。典型應用就是:完成孤立應用間的數據轉移。
-
有人值守階段:在這個階段 RPA 以“虛擬助手”的身份出現,幾乎涵蓋了機器人自動化的主要功能、以及現有桌面自動化軟件的全部操作。部署在員工PC機上,用于提高工作效率。缺點是難以實現端到端的自動化,做不到成規模應用。不過已能夠有效減少業務平均處理時間,可有效改善客戶體驗并節省成本。 -
無人值守階段:在這個階段 RPA 被稱為“虛擬勞動力”,主要目標即實現端到端的自動化,以及虛擬員工分級。主要部署在VMS虛擬機上,能夠編排工作內容,集中化管理機器人、分析機器人的表現等。缺點是對于 RPA 軟件機器人的工作仍然需要人工的控制和管理。無人值守 RPA 機器人可以全天候工作 24 * 7,并用業務流程代替了人機交互,釋放了更大的增效降本可能性。
-
自主性 RPA 階段:在這個階段,RPA 的主要目標是實現端到端的自動化和成規模多功能虛擬勞動力。通常部署在云服務器和 SaaS 上,特點是實現自動分級、動態負載平衡、情景感知、高級分析和工作流。缺點是處理非結構化數據仍較為困難。但更多技術的融合,使得自主性 RPA 可從根本上提升業務價值并為用戶帶來更多優勢。
-
認知性 RPA 階段:這個階段將是未來RPA發展的方向。開始運用人工智能、機器學習以及自然語言處理等技術,以實現非結構化數據的處理、預測和分析、自動接受任務處理等。借助認知能力,決策過程全都由機器人執行,從而可以將所有漫長而復雜的任務自動化。
01
RPA 的核心模塊
1、開發平臺
達觀 RPA 開發平臺
開發平臺是流程設計者設計流程的工具。主要有以下功能:
-
流程設計:當我們有一個想法,我們想使它變為可自定執行的流程,我們就需要用它來設計一個流程??梢暬幊探缑?、低代碼編程,提供拖拉拽方式進行業務邏輯的設計。必須要有設計復雜流程的能力,如流程、子流程、第三方庫、自定義組件等功能。也必須要有“封裝”能力,從小流程封裝為大流程。以及提供”復用“的概念,避免重復造輪子。另外還有幾個流程設計過程中的必備工具: A. 元素分析器:界面上,我們肉眼看到的一個個按鈕、編輯框等,在 RPA 的世界里都是一個個“元素”。很多可視化組件都是以一個元素作為輸入參數,執行相應的動作,比如“點擊按鈕”、“在編輯框內輸入文本”等。通過元素分析器,我們可以很方便地在屏幕上選擇一個目標元素。有了元素分析器,流程設計者不必擁有過多的底層界面元素技術知識即可識別、定位元素,指哪兒就是哪兒。 B.元素錄制器:顧名思義,通過錄制一段用戶的操作,自動地生成一堆可視化組件。在環境干擾比較小的時候,往往很有用。再結合調試進行微調,往往可以較快設計出一個流程原型。 C.數據抓?。哼@是一個特別有意思的功能,可以抓取屏幕上的結構化信息:任何看起來像列表、表格、樹的數據都應支持被抓取。 D.智能組件包:也就是部分通過 AI 賦能的可視化組件,通過簡單拖拽方式,可以完成像下面的一些功能:
-
圖片抽取信息:身份證抽取、發票抽取、營業執照抽取、銀行卡抽取、火車票抽取等。 -
文檔抽取信息:采購類合同、銀行業零售貸款合同、民事判決、債券募集說明書等。 -
文檔智能分析:文本分類、文本審核、文本摘要、標簽提取、觀點提取、情感分析等。
-
流程調試:流程開發過程中,我們可能需要實時進行調試來發現流程中存在的問題。比如隨機斷點、單步調試、單步進入、單步跳出、查看當前狀態(如變量)等信息。利用調試功能,我們可以很方便地停留在流程的任一步驟,檢查當前的上下文狀態,以便調整、優化流程。 -
版本管理:流程開發好以后,我們需要發布到控制臺。這個過程也就是“發版”。成熟的 RPA 產品應當有完善的版本化支持,可以為當前流程發布特定的版本。也應支持回滾到歷史任意版本。當然,也應該允許多個流程設計者同時修改同一個流程。
-
畫中畫:主要目的是提供環境隔離。通過提供一層虛擬會話,將機器人的運行和當前宿主機隔離開。讓機器人在執行的同時,業務老師也能正常使用電腦,互不干擾。
-
代碼支持:也是專家模式,直接調用底層 API、Block API 等。提供了任意復雜度的擴展,允許有編程能力的流程設計同學進行 RPA 的能力擴展。
-
流程管理:對已發布的可視化流程進行管理,也可以進行導入導出、查看特定流程版本等。 -
機器人管理:管理 RPA 機器人。包含審核機器人上線、啟用禁用機器人、是否共享機器人等功能。也可以通過遠程桌面技術,直接查看機器人桌面。
-
任務管理:任務是機器人運行流程的模板(static、靜態),通過選擇特定的流程、配置特定的參數,可以創建一個任務。任務創建好以后,控制中心會根據任務的調度信息對 RPA 機器人進行調度。
-
作業管理:當任務開始運行,則會產生“作業”(runtime、動態)。包含機器人的運行時的各種各樣的信息。比如運行日志、運行狀態等。
-
數據資產:簡單理解就是云端的安全數據庫,在權限滿足的情況下,流程可以增刪查改指定的數據。同時也有安全字段的概念,比如當一個字段為“加密”類型時,我們不應該能夠在開發平臺直接打印出它的值。
-
權限管理:基于角色的權限管理模型??梢詫Σ煌馁~號賦予不同的角色,對不同的角色賦予不同的功能。
-
租戶管理:多租戶是一種單個軟件實例可以為多個不同用戶組提供服務的軟件架構。SaaS 就是一種多租戶架構。不同租戶間數據完全隔離。
-
運維管理:管理 RPA 服務器本身??梢詫Ψ掌鬟M行資源監控、系統運行監控等。
-
報表分析:控制中心提供了關于機器人所有的數據,我們可以通過這些數據來進行各種統計分析。比如,分析某個流程的執行成功率、某個機器人的執行效率等。
-
日志審計:每一次操作,都應留痕。應包含 RPA 機器人的相關日志、也包含用戶操作的相關日志。
02
RPA 元素分析器
-
用戶界面樹:用戶界面的抽象數據結構呈現,包含靜態數據和動態數據。樹上的每個節點都是用戶界面上的一個元素。針對每個元素,我們可以對它進行屬性查看、操作測試。 -
元素選擇器:用于在用戶界面樹上定位某個或某組元素的方式??梢跃珳识ㄎ荒硞€元素,比如找一個標題為 X 的窗體;也可以模糊定位某個元素,找一個按鈕名稱以 X 開頭的元素。
-
絕對坐標定位:自動喝藥輔助外掛。監控屏幕上特定坐標點的顏色變化,當血槽顏色變為灰色時,就喝一瓶金瘡藥(按下使用金瘡藥道具的按鍵) 圖像識別示意圖1 -
圖像識別:在大圖中找小圖。循環監控屏幕上是否出現了“地鼠”,出現了以后,則操作鼠標點擊目標位置。
-
選擇器定位:DOM (Document Object Model) 文檔對象模型,把整個 UI 界面抽象成一個“樹”數據結構,使用 XPath、CSS Selector 等語法來定位。我們可以把選擇器寫得很“精確”,也可以把選擇器寫得很“模糊”。
-
智能定位:使用 AI 賦能 RPA。比如使用目標檢測相關算法來進行定位。
-
基于屏幕坐標點(HitTest):主要是元素分析器的捕獲功能,可以讓流程設計者便捷地選擇一個目標元素。
-
基于選擇器:通過簡單的選擇器語法,選擇 DOM 上的某個或某組元素。主要是流程運行過程中,為了在運行的環境中找到目標元素。
-
基于 CV:通過模板匹配或相關 AI 算法來定位目標元素。當業務程序不支持捕獲時,它很有用!
-
基于方法 AT (Assistive Technology):當業務程序支持 AT 時,我們可以直接調用 AT 方法來進行操作。比如調用一個按鈕的點擊功能、設置文本框的內容等。大部分業務程序都支持了 AT 方法!
-
基于消息:在 Windows 上,窗體之間可以通過消息來進行通訊。我們可以利用 Window Message 來操控元素。
-
基于鍵鼠模擬:在獲取到目標元素后,如果目標元素不支持任何 AT 或消息,我們還可以簡單粗暴地利用鍵鼠模擬來操作。這也是最模擬人工的一種方式,在所有場景都可以用,畢竟人也是通過這種方式來和計算機進行交互的。鍵鼠模擬本質上也是基于 Windows 消息的。
-
非 GUI 自動化編寫簡單:測試代碼相對容易編寫,調試容易。運行穩定,不容易受到環境變化影響。易于維護,不需要經常更新測試代碼。運行效率高,相對于 GUI 自動化,非 GUI 自動化非??臁?/section> -
GUI 自動化主要是覆蓋范圍廣:大多遵循 UI 框架底層 Accessibility 規范。非侵入式,不需要業務應用的源代碼或 SDK 接入。(其實本質上是被侵入了……在 UI 框架層?。┳畲蟪潭饶M用戶操作,用戶怎么操作就怎么模擬。
-
有一些造成 GUI 自動化不穩定的因素:
-
隨機彈窗:當自動化腳本發現控件無法正常定位,或無法操作時,GUI 自動化框架自動進入“異常場景恢復模式”。在“異常場景恢復模式”下,GUI 自動化框架依次檢測各種可能出現的對話框,一旦確認了對話框的類型,立即執行預定義的操作(比如:點擊“確定”按鈕),接著重試剛失敗的步驟。
-
控件屬性變化:絕對匹配比較精準,但”模糊匹配“彈性更大,可以提升控件的識別率。往往流程設計過程中需要權衡目標元素以及相鄰層級之前的屬性使用。
-
被測系統的 A/B 測試:開發流程時見到的界面和運行時見到的界面并不相同。需要在測試用例腳本中做分支處理,正確識別出不同的分支。
-
還有一些隨機的頁面延遲造成控件識別失敗:引入重試機制,可以是步驟級別、頁面級別、業務流程級別。
03
元素分析器的幕后技術
1、Win32 API
微軟的 Windows 操作系統底層 API。優點就是看起來很高深、很強大、很底層,對標準 Windows 的控件支持還不錯。缺點是很復雜,開發效率低下。不支持自定義控件。
-
窗體識別:需要通過 FindWindow 和 EnumWindows 來查找到窗口句柄,然后再調用其它 API GetWindowText,GetWindowRect, GetWindowLong 等來獲取窗口屬性,以此來找到想要的控件或窗口。 -
操控和獲取屬性:通過 SetWindowText 和 GetWindowText 來操作控件上顯示的文字,通過SetForegroundWindow 設置頂層窗口,GetForegroundWindow 獲取當前的頂層窗口,類似的還有 GetActiveWindow 和 SetActiveWindow。從理論上來說,通過 Windows API 和 Windows Message 可以完成對大部分控件或窗口的操作,也可以獲取部分控件的部分屬性。
-
優點:比起 Windows API 來說,用戶只需要跟 IAccessible 打交道,通過這個接口能獲得的控件信息相對豐富很多,基本操作也不需要通過 Windows Message 的方式來實現。另外一個比較大的優點就是,自定義控件的支持,當然了,并不是說開發寫一個自定義控件,這個控件就可以通過 MSAA 來識別,而是說當開發人員在實現自定義控件的時候,可以實現 IAccessible 的接口,并且通過這個接口,把一些的屬性和操作暴露出來,測試人員就可以將這個控件當作標準控件,并通過MSAA來自動化??雌饋砺闊┝它c,但是最起碼對自動化自定義控件提供了可能。 -
缺點:天生不足,MSAA 從來就不是給自動化測試設計的,所以也不會考慮自動化測試的需求,獲取到的控件信息比 Windows API 多,但是相對自動化測試的需求來說還是遠遠不夠,而且僅僅支持一個基本操作,其它的操作還必須通過 Windows Message。另外就是微軟推出 WPF 以后,MSAA 的局限性越加明顯(這也是因為 WPF 的控件屬性更加豐富、更具定制性、更自由,用 MSAA 難以描述),這也是微軟推出 UIAutomation 的一個的原因。
-
IE自動化:MSHTML/Trident - IWebBrowser2 接口。IE 瀏覽器使用的是 Trident 瀏覽器引擎,是 IE4 在 1997 年發布的。通過提供 IWebBrowser 接口來進行自動化操控。Windows 10 上的 IE11 已在 2022-06-15 號停止維護。 -
Chrome Extension:Chrome 瀏覽器插件是允許開發者自定義用戶使用體驗的一種技術??梢岳?Web 技術,如 HTML、CSS、JavaScript 來自定義瀏覽體驗。 -
CDP (Chrome Devtools Protocol):DevTools 協議是 Chrome、Chromium,或任何基于 Blink 引擎的瀏覽器都支持的一種通訊協議。該協議可以對瀏覽器進行檢查、調試、監控等。Blink 是 Chromium 的渲染引擎。
未經允許不得轉載:RPA中國 | RPA全球生態 | 數字化勞動力 | RPA新聞 | 推動中國RPA生態發展 | 流 > RPA界面元素定位與操控技術詳解
熱門信息
閱讀 (14728)
1 2023第三屆中國RPA+AI開發者大賽圓滿收官&獲獎名單公示閱讀 (13753)
2 《Market Insight:中國RPA市場發展洞察(2022)》報告正式發布 | RPA中國閱讀 (13055)
3 「RPA中國杯 · 第五屆RPA極客挑戰賽」成功舉辦及獲獎名單公示閱讀 (12964)
4 與科技共贏,與產業共進,第四屆ISIG中國產業智能大會成功召開閱讀 (11567)
5 《2022年中國流程挖掘行業研究報告》正式發布 | RPA中國