OmniParser:3 步跑通纯视觉 GUI 自动化,让 AI 看懂并操控你的屏幕
【免费下载链接】OmniParserA simple screen parsing tool towards pure vision based GUI agent项目地址: https://gitcode.com/GitHub_Trending/omn/OmniParser
想让 AI 像你一样点鼠标、敲键盘吗?OmniParser 是一个纯视觉的界面解析工具:给它一张截图,它就能把屏幕上每个按钮、图标、文字框定位出来,再交给大模型决定下一步该点哪里、输什么。它不依赖系统底层接口,只看画面,所以无论网页、桌面应用还是虚拟机,只要看得见的界面它都能处理。
认识它:截图进来,结构化元素出去
一句话讲清定位:OmniParser 把一张 GUI 截图翻译成「带编号方框的图 + 一份元素清单」,让 GPT-4o、Claude 这类视觉模型能准确地把动作落到界面对应区域上。下面这张图就是它的典型输出——原截图上每个可交互元素都被框住并编号,右侧还能读出一条条文本描述。
它有两个入口:轻量的单图解析页,和更完整的 OmniTool 智能体(带 Windows 11 虚拟机 + 实时画面 + 模型决策闭环)。
快速上手:最小可行路径,先跑通单图解析
下面是最短路径,目标是先在浏览器里看到「截图 → 标注 → 元素列表」这条链路。🔧
1. 克隆仓库并准备 Python 3.12 环境,把依赖一次性装齐:
git clone https://gitcode.com/GitHub_Trending/omn/OmniParser cd OmniParser conda create -n omni python=3.12 conda activate omni pip install -r requirements.txt2. 下载两个模型权重:YOLO 图标检测器 + Florence2 元素描述模型,后者需要改个目录名:
huggingface-cli download microsoft/OmniParser-v2.0 icon_detect_v3/model.pt --revision refs/pr/37 --local-dir weights for f in icon_caption/{config.json,generation_config.json,model.safetensors}; do huggingface-cli download microsoft/OmniParser-v2.0 "$f" --local-dir weights done mv weights/icon_caption weights/icon_caption_florence3. 启动解析页,浏览器会自动打开:
python gradio_demo.py服务默认起在http://127.0.0.1:7861。上传一张截图、点 Submit,右侧立刻给出标注图和元素清单。想换端口,在 gradio_demo.py 末尾的demo.launch(...)里改server_port即可。
想要「AI 真的动手操作一台 Windows」的完整体验,走 OmniTool:它由三部分组成——跑 OmniParser 的 omniparserserver、Docker 里的 Windows 11 虚拟机(omnibox)、以及 omnitool/gradio/app.py 这个操作面板。三者都在同一台机器上拉起后,用
python app.py --windows_host_url localhost:8006 --omniparser_server_url localhost:8000启动面板即可。
场景走一遍:让 AI 填一张 Excel 表
假设你给智能体下达任务:「打开 Excel,在 A1 到 C3 填入数据并设置表格格式」。面板左侧是决策记录,右侧是虚拟机的实时画面。🎯
- 下达任务:在输入框写好上面那句话,点 Send。左侧随即显示
Analysis:开头的分析,说明 AI 当前看到了什么、打算做什么。 - 执行过程:左侧滚动出
Next I will perform the following action:这样的动作说明(点击图标、双击启动应用、键入文本),右侧画面同步回放鼠标移动、点击落点、键盘输入——你看着它一步步操作,全程可追。 - 看到结果:应用按预期打开,单元格被填好、边框和格式被调整完,任务在聊天区收尾。
鼠标和键盘的底层动作都由 omnitool/gradio/tools/computer.py 统一封装,涵盖移动、单击、双击、拖拽、右键、键入、截图等十几类操作。想暂停随时点 Stop。
原理速览:先检测,后解析
机制不复杂,核心是「两阶段」。📸
第一阶段·检测:YOLO 模型先找出屏幕上所有可交互区域,OCR(PaddleOCR / EasyOCR)负责把文字连同位置一起捞出来。这一步回答「界面上有哪些东西、它们在哪」。
第二阶段·解析:Florence2 模型给每个图标生成一句功能描述,比如「红色删除按钮」「用户名输入框」,再把编号、坐标、文字、描述拼成结构化清单交给大模型。这一步回答「这些是什么、该怎么用」。
两张模型各司其职,最终产出下面这种带编号方框的画面和一份可被大模型直接读取的清单。
检测与解析的合并逻辑集中在 util/omniparser.py 的Omniparser.parse,整条链路读起来不到百行。
调优与避坑:参数怎么调,问题怎么解
参数不多,但每个都对应一个可见效果。⚙️
检测太松(杂框多)还是太严(漏框):在 gradio_demo.py 里调Box Threshold(默认 0.05,越低框越多)和IOU Threshold(默认 0.1,管重叠框的合并)。漏了小图标,把Icon Detect Image Size从 640 往上调,检测更精细。
智能体记太多画面 / 记太少:在 omnitool/gradio/app.py 的N most recent screenshots滑块控制喂给模型的最近几张截图,默认 2,长任务可适当调大。
模型怎么选:面板下拉里omniparser + gpt-4o是默认均衡档,omniparser + o1更强分析,claude-3-5-sonnet走 Anthropic 通道。换模型后 API 提供方会自动跟着切,填对应 Key 就行。
几个高频问题,都是「现象 → 一句话解法」:
- 现象:点 Send 报
Windows Host is not responding→ 虚拟机内的命令服务还没就绪,等它装完(终端提示VM + server is up and running!)或重开 omnibox。 - 现象:Windows 上装依赖报
libpaddle ... module could not be found→ 缺 C++ 运行时,装好 C++ Redistributable 再重装一次 requirements。 - 现象:提示模型文件缺失→ 权重没下全,重跑上面的
huggingface-cli download命令,并确认icon_caption已改名为icon_caption_florence。
下一步
OmniParser 把「看懂界面」这件最难的事抽成了一个独立工具:检测、解析、操控各归其位,任何视觉模型即插即用。你可以先拿自己的截图在单图解析页试手感,再升级到 OmniTool 让它真的动手;想深挖评测数据可以看 docs/Evaluation.md,完整说明以 README.md 为准。换个截图、换条任务,跑起来就是最快的学习。
【免费下载链接】OmniParserA simple screen parsing tool towards pure vision based GUI agent项目地址: https://gitcode.com/GitHub_Trending/omn/OmniParser
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考