利用影像辨識實現GUI操作自動化的機制與使用方法
在錄製並播放巨集時,許多人都會遇到「昨天還能執行,今天點擊位置卻偏了」的情況。這通常是因為錄製的巨集以「畫面上的固定座標」為基準運作。視窗在其他位置開啟、螢幕解析度改變,或是在另一台顯示器上播放——這些情況的變化都會讓點擊落在錯誤的位置。解決這項根本問題的方法,就是採用「影像辨識」進行自動化。
影像辨識是一種不以座標、而以「外觀」為基準在畫面上尋找元素的技術。事先登錄一張想點擊之按鈕的小型影像,播放時工具就會掃描整個畫面,找出與該影像相符的位置。無論按鈕移到哪裡,只要外觀相同,就能準確找到並點擊——這正是影像辨識的優勢。
影像辨識如何找到元素
其機制很簡單。首先,擷取並儲存想作為標記的元素——例如「傳送」按鈕或特定圖示——的小型影像(範本影像)。執行巨集時,工具會擷取當下的畫面,並在畫面中搜尋與範本影像相符的區域。找到相符位置後,它會傳回該區域中心點的座標,巨集便會將滑鼠移到那裡並點擊。
這裡的關鍵設定是「相符閾值(比對精度)」。即使不是100%完全一致,也可以調整為例如相似度達90%以上就判定為「相符」。提高閾值可減少誤判,但些微的外觀差異也可能導致找不到目標。相反地,降低閾值會提高彈性,但也會增加誤將其他相似元素辨識為目標的風險。訣竅是配合實際畫面反覆測試,找出恰當的數值。
FIND_IMAGE 與 WAIT_IMAGE 的選用方式
makuroku 提供了兩個具代表性的命令,用於從指令碼中使用影像辨識。FIND_IMAGE 命令可尋找「此時此刻該影像位於畫面上的哪個位置」。由於能將找到的座標儲存在變數中,因此適合用於「點擊不知道會顯示在哪裡的按鈕」等情境。
另一方面,WAIT_IMAGE 是「等待該影像出現」的命令。載入網頁或啟動應用程式需要時間,如果不等其完成就執行下一項操作,便會失敗。使用 WAIT_IMAGE,就能實現配合畫面狀態的可靠自動化,例如「等到表示載入完成的圖示出現後再繼續」。將這兩個命令結合起來,就能建構不易受實際工作中常見的「時間差異」影響、更穩定可靠的自動化。
影像辨識特別實用的情境
圖像辨識在以下情況中特別有效。
- • 按鈕或視窗的顯示位置每次都會變動的應用程式
- • 希望等待載入或處理完成後再繼續時
- • 版面配置會動態變化、僅靠指定座標無法充分應對的畫面
- • 希望在特定圖示或狀態出現時觸發處理
不過,圖像辨識也有其極限。對於目標外觀經常變化的設計,以及帶有半透明或動畫效果的元素,匹配判定往往不夠穩定。此外,由於需要掃描整個畫面,處理時間會比指定座標稍長一些。不要將所有操作都改用圖像辨識,而應視情況靈活運用:「能以座標處理的位置就使用座標,只有位置會變動的地方才使用圖像辨識。」這才是實現實用且快速自動化的訣竅。
妥善準備範本圖像的訣竅
圖像辨識的準確度很大程度取決於所登錄範本圖像的品質。這裡有幾個訣竅。首先,應將作為辨識標記的範圍裁切得「小而有特色」。不要擷取整個按鈕,而只擷取該按鈕特有的圖示或文字,這樣便不容易與其他元素混淆。相反地,如果擷取範圍過大,周圍的細微變化(例如背景色或相鄰元素)就可能導致無法匹配。
其次,應避開顏色或狀態容易變化的部分。如果將滑鼠移上去時會變色的按鈕,或選取時會反白顯示的區域作為辨識標記,就可能因狀態不同而無法匹配。請選擇外觀始終一致的穩定部分。此外,畫面顯示縮放比例改變時,圖像尺寸也會隨之改變,因此最穩妥的做法是以實際運作時使用的解析度和縮放比例擷取範本。正是這些細節上的周全考量,能夠大幅提升圖像辨識的成功率。
結合圖像辨識與其他方法
圖像辨識功能強大,但並非萬能。要在實際工作中建立穩健的自動化,正確的做法是依照具體情況組合多種方法。對於位置完全不變的按鈕,使用快速的座標指定就足夠了。只有位置會變動的按鈕,或需要一段時間才會顯示的元素,才交給圖像辨識處理。此外,如果需要讀取畫面上的文字資訊,則使用OCR(文字辨識);如果需要與外部服務整合,則使用HTTP通訊——像這樣依照目的選用不同的方法。
makuroku 可以在一個指令碼中自由組合這些方法。例如,「以WAIT_IMAGE等待畫面準備完成,用FIND_IMAGE尋找並點擊按鈕,再以OCR讀取結果數值,最後透過條件分支選擇不同的處理流程」——像這樣,可以將接近人工操作的靈活自動化撰寫成一套連貫的流程。不要拘泥於單一方法,而應發揮各自的優勢並加以組合。這種思維才是實現真正適用於現場自動化的捷徑。
影像辨識無法正常運作時的處理方法
開始使用影像辨識後,有時會遇到「找不到明明已經登錄的影像」的情況。原因可能有好幾個。最常見的是,擷取範本影像時與實際搜尋時的螢幕縮放比例或解析度不同。在這種情況下,影像大小會改變,因此無法比對。最可靠的解決方法是使用與實際運作環境相同的設定重新擷取範本。
其次常見的情況是比對閾值過於嚴格。如果要求100%完全相符,即使只有極輕微的色調或反鋸齒差異,也會導致找不到影像。稍微降低閾值,將相似度達到90%左右判定為相符,通常可以提高穩定性。不過,降得太低會增加誤判,因此訣竅是在實際畫面中反覆測試,找出適當的值。
如果仍然無法解決,請重新檢查被選作範本的區域本身。如果把背景容易變化的部分或選取時會反白的部分當作標記,其外觀就會隨情況改變,導致無法比對。將範圍縮小到外觀始終一致、特徵鮮明且穩定的部分——例如特有的圖示或標誌——可以提高成功率。「選擇容易尋找的標記」是讓影像辨識保持穩定的最大訣竅。
影像辨識在最初調整時確實需要花費一些工夫,但一旦正確設定,就能展現出座標指定無法實現的靈活性。即使視窗移動、版面配置改變,只要「外觀」相同,它就能準確反應——這種穩健性可以讓自動化在實際業務中長期持續使用,帶來極大的安心。
使用影像辨識的實用情境
讓我們透過具體情境來看看影像辨識的真正實力。例如,假設要自動執行定期從某個Web應用程式下載資料的工作。該應用程式每次登入時的畫面配置都會略有變化,下載按鈕的位置也不固定。使用座標指定的巨集無法因應這種變化,很快就會失效。
這正是影像辨識發揮作用的時候。首先,將下載按鈕的圖示登錄為範本影像。巨集先使用WAIT_IMAGE等待頁面載入完成,再透過FIND_IMAGE從畫面中找出下載按鈕並點擊其所在位置。無論按鈕顯示在哪裡,只要外觀相同,就能準確找到並點擊,因此可實現不受版面配置變化影響的穩定自動化。
此外,如果先用WAIT_IMAGE等待表示下載完成的訊息出現,再進入下一步處理,即使網路較慢也不會遺漏。影像辨識就是這樣將人類習以為常的判斷——「查看畫面狀態,在適當的時機操作適當的位置」——導入自動化。正因如此,即使在實際業務環境這種「充滿變化的場所」,也能建立不易失效的自動化。
此類情境不僅適用於Web應用程式,還可以應用於桌面應用程式、業務系統等各種場合。那些因為「位置會移動」或「時機無法預料」而一直放棄自動化的工作,也能藉助影像辨識納入自動化範圍。首先,請想一想那些「每次位置都會偏移,令人困擾」的工作,並嘗試用影像辨識使其穩定運作。
打造不易失效的自動化
自動化能否在實際工作中「真正派上用場」,取決於它對意外情況的承受能力。僅依賴記錄座標的自動化,即使第一次運作順利,也往往會因環境稍有變化而停止。將影像辨識結合進來,就能把人類下意識進行的判斷融入自動化,例如「根據外觀點擊」和「等待畫面準備就緒」。
除了透過 GUI 錄製之外,makuroku 還內建了 FIND_IMAGE、WAIT_IMAGE 等影像辨識指令。先錄製操作建立基本架構,再只將位置會變動或需要等待時機的部分替換為影像辨識——透過這種組合,您可以打造出能夠承受現實環境中的混亂情況,而不會一遇到最初的意外就失效的自動化。所有功能都能免費試用,不妨先用影像辨識,讓那些「每次都因位置偏移而令人困擾的作業」穩定運行。
免費試用
用 makuroku 來自動化它
makuroku 錄製你的滑鼠和鍵盤操作,然後自動回放。需要更多時可加上 SCR 腳本和 AI(MCP)整合。所有功能在 Windows 上免費使用。