通过桌面录屏实现自动化 RPA 的最佳实践
传统的 RPA(Robotic Process Automation)工具通常需要手动编写脚本或使用可视化编排工具,学习成本高且维护困难。随着多模态 AI 的发展,一种新的范式正在兴起:通过录制用户的桌面操作,让 AI 自动理解并复现这些操作。这种方式大大降低了自动化的门槛,让业务人员也能快速构建自动化流程。
为什么选择录屏驱动的 RPA?
传统 RPA 的痛点
- 高技术门槛:需要编写代码或学习复杂的可视化工具
- 维护成本高:UI 变化时脚本经常失效
- 场景覆盖有限:难以处理动态内容和异常情况
- 缺乏智能:无法理解操作的语义,只是机械重复
录屏 + AI 的优势
- 零代码上手:只需录制一次操作,AI 自动学习
- 语义理解:AI 理解操作意图,而非死记硬背坐标
- 智能适应:界面变化时能自动调整
- 异常处理:可以识别并处理意外情况
整体架构设计
1 | ┌──────────────────────────────────────────────────────────────────┐ |
Step 1: 构建录制模块
1.1 屏幕录制
我们需要同时录制屏幕画面和用户的输入事件。
1 | import cv2 |
1.2 关键帧提取
录制完成后,我们需要从视频中提取关键帧,用于后续的 AI 分析。
1 | import cv2 |
Step 2: 使用多模态 AI 理解操作
2.1 构建分析 Prompt
import base64
import io
from PIL import Image
from typing import List, Dict, Any
class OperationAnalyzer:
"""
使用多模态 LLM 分析操作序列
支持的模型:
- OpenAI GPT-4 Vision
- Anthropic Claude 3
- Google Gemini Pro Vision
"""
ANALYSIS_PROMPT = """你是一个 RPA 自动化专家。请分析以下屏幕截图序列,理解用户正在执行的操作。
对于每个截图:
1. 描述当前屏幕的状态
2. 识别用户点击/操作的元素
3. 推断用户的意图
最后,请将整个操作序列抽象为一个可重复执行的自动化流程。
输出格式(JSON):
{
"workflow_name": "流程名称",
"description": "流程描述",
"steps": [
{
"step_id": 1,
"action": "click|type|scroll|wait|verify",
"target": {
"description": "目标元素的描述",
"visual_features": ["视觉特征1", "特征2"],
"text_content": "元素包含的文本(如有)",
"relative_position": "相对位置描述"
},
"parameters": {
"text": "要输入的文本(type 操作)",
"direction": "滚动方向(scroll 操作)",
"condition": "验证条件(verify 操作)"
},
"expected_result": "执行后的预期结果"
}
],
"preconditions": ["前置条件1", "前置条件2"],
"error_handling": {
"timeout": "超时处理策略",
"element_not_found": "元素未找到处理策略"
}
}
"""
def __init__(self, model_provider: str = "openai", api_key: str = None):
self.model_provider = model_provider
self.api_key = api_key
def _encode_image(self, image: np.ndarray) -> str:
"""将图像编码为 base64"""
# 转换为 PIL Image
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
pil_image = Image.fromarray(image_rgb)
# 压缩并编码
buffer = io.BytesIO()
pil_image.save(buffer, format="JPEG", quality=85)
return base64.b64encode(buffer.getvalue()).decode()
def _build_messages(self, keyframes: List[KeyFrame]) -> List[Dict]:
"""构建多模态消息"""
messages = [
{"role": "system", "content": self.ANALYSIS_PROMPT}
]
# 构建用户消息,包含所有关键帧
content = []
for i, kf in enumerate(keyframes):
# 添加图像
content.append({
"type": "image_url",
"image
---
原文链接: [通过桌面录屏实现自动化 RPA 的最佳实践](https://hugozhu.site/post/2026/121-desktop-screen-recording-rpa-best-practices/)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 椰果点心的博客!
评论
