OmniParser 屏幕解析工具快速教程:三步把任意截图变成结构化 GUI 元素

OmniParser 屏幕解析工具快速教程:三步把任意截图变成结构化 GUI 元素 OmniParser 屏幕解析工具快速教程三步把任意截图变成结构化 GUI 元素【免费下载链接】OmniParserA simple screen parsing tool towards pure vision based GUI agent项目地址: https://gitcode.com/GitHub_Trending/omn/OmniParserOmniParser 是一个面向纯视觉 GUI Agent 的屏幕解析工具输入一张截图它会把屏幕上的按钮、文本、图标逐个框出来编号并附一行简短描述让视觉大模型能看懂界面并生成点击动作。本文用大白话讲清楚怎么跑通 demo、解析管线里有什么、以及它适合用在哪些场景。大模型为什么点不准屏幕GUI Agent 的元素定位痛点给一个视觉大模型一张截图让它点击右上角的提交按钮它给出的坐标经常会偏出几十像素点到旁边的元素上。这不是模型不听话而是 VLM 在像素级定位上本来就吃力。OmniParser 的做法是不让模型直接猜坐标先把屏幕解析一遍给每个可点击元素编号再交给大模型元素编号 一行描述。定位方式从看像素变成查列表点错的情况会明显减少。另一个特点是它只看像素、不依赖应用内部代码目标软件换版本、换实现都没关系只要界面长得一样解析结果就稳定。游戏界面、办公软件、网页对它就是同一类东西——截图。三步跑通 OmniParser 演示 第一步拿到代码git clone https://gitcode.com/GitHub_Trending/omn/OmniParser cd OmniParser第二步建环境装依赖。官方建议 Python 3.12 的 conda 环境conda create -n omni python3.12 conda activate omni pip install -r requirements.txt第三步下载模型权重并启动。你需要两组权重放到weights/目录检测模型icon_detect_v3/model.pt以及图标描述模型icon_caption目录下的三个文件config.json、generation_config.json、model.safetensors放好后把目录改名为icon_caption_florence。用 huggingface-cli 从 microsoft/OmniParser-v2.0 仓库拉取即可README 里写好了对应命令。然后python gradio_demo.py服务起在 7861 端口浏览器打开后上传截图、点 Submit左侧得到带编号方框的图右侧得到结构化元素列表。页面上有三个滑块值得注意box_threshold检测置信度阈值默认 0.05、iou_threshold重叠框去重阈值默认 0.1、imgsz检测输入分辨率默认 640。imgsz 调大能召回更多小图标代价是速度变慢。纯视觉解析机制一张截图到元素列表的三个阶段看 util/ 下的源码管线分三步逻辑不复杂。第一步找元素。基于 YOLOv9 的检测模型先在整张截图上圈出所有可能可点击的区域按钮、图标、菜单、复选框等同时 OCR 引擎默认 PaddleOCR可切 EasyOCR把所有文本框找出来。这两类框是解析的原材料。第二步去重合并。检测框和文本框经常互相叠在一起代码用 IoU 过滤大框包住小框时去掉大框文本框落在图标框内部时文字直接并进那个图标的描述里不再单独输出。这就是为什么 demo 里一个Search按钮只作为一个元素出现而不是图标 文字两条。第三步给图标起名字。每个没有文字内容的图标框被裁剪、缩放到 64×64送进 Florence-2 描述模型生成一句短描述比如a trash icon。有文字的框直接用 OCR 结果省掉这一步。最终产出两样东西一张画了编号的图加一段icon 5: Text Box ID 0: todays price of microsoft这样的结构化文本。喂给大模型后坐标问题就变成了编号指代问题。OmniTool接上 Windows 虚拟机让 AI 真的去点解析只是半条链路。仓库里配套的 OmniTool 把解析接进了一个可操作的系统omniparserserver 是用 FastAPI 包装的 OmniParser 服务OmniBox 是跑在 Docker 里的 Windows 11 虚拟机基于 KVM磁盘要留约 30GB首次创建 20 到 90 分钟Gradio 界面用来输入任务指令。接上之后的流程是agent 截取虚拟机屏幕 → OmniParser 编号元素 → 视觉模型OpenAI 4o / o1 / o3-mini、DeepSeek R1、Qwen 2.5VL、Claude Computer Use 都开箱支持决定点哪个编号 → 虚拟机执行鼠标键盘。部署细节和常见报错比如 VM 没装完导致 Windows Host is not responding在 omnitool/readme.md 里写得比较细。还有两个进阶点官方口径 V2 比 V1 快 60%2025 年 3 月起支持本地记录操作轨迹可以用 OmniParser OmniTool 批量产出带标注的屏幕操作数据拿去训练自己领域的 agent。OmniParser 能力边界与避坑提示上手之前有几点体验上的判断可以帮你少踩坑元素密度直接决定速度。单屏小图标多时工具栏密集、游戏 HUD检测框数量上来后描述模型要逐个框跑耗时明显高于简单页面。imgsz 保持 640 能提速但小图标会漏检两者要自己权衡。OCR 默认是英文。代码里 PaddleOCR 和 EasyOCR 的 lang 都写的 en中文界面要自己改语言参数否则文本框内容会是乱码。它只做解析不执行点击。OmniParser 只回答屏幕上有什么、在哪点下去这一步靠 OmniTool 或你自己的集成代码完成。如果只是想提取截图文字直接上 PaddleOCR 比走这一整套轻快得多。官方建议人留在回路里。自主操作场景下readme 明确建议 human in the loop别指望它无人值守长时间跑。多窗口、多任务的截图同样能解析只是元素密集时重叠框的噪声更多建议把 iou_threshold 调高一些再观察。OmniParser 适合什么人和项目最后给一个直接判断在做 GUI Agent 或 UI 自动化测试需要解决点击定位不准的编号 描述的输出格式是现成方案基准表现可以参考 docs/Evaluation.mdV2 在 ScreenSpot Pro 上得分 39.5%。需要 UI 操作训练数据的可以用轨迹记录功能产出标注数据再自己微调模型。只需要 OCR 或一次性截图解析的这套工具偏重单拿 OCR 或检测模型其中一个组件用就够了。商用分发前注意授权主仓库和描述模型是 MIT但早期基于 Ultralytics 的检测模型带 AGPL 条款实际用了哪套权重就按哪套的条款核对。一句话总结如果你要解决的是机器看屏幕之后怎么点得准OmniParser 是目前把这条路铺得比较平的一个开源选择如果你只是要读屏上的字绕开它会更省事。【免费下载链接】OmniParserA simple screen parsing tool towards pure vision based GUI agent项目地址: https://gitcode.com/GitHub_Trending/omn/OmniParser创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考