ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

OmniParser 屏幕解析工具教程:5步把截图变成结构化UI元素

OmniParser 屏幕解析工具教程:5步把截图变成结构化UI元素 OmniParser 屏幕解析工具教程5步把截图变成结构化UI元素【免费下载链接】OmniParserA simple screen parsing tool towards pure vision based GUI agent项目地址: https://gitcode.com/GitHub_Trending/omn/OmniParser想让视觉模型看懂屏幕再动手最难的不是模型够不够聪明而是屏幕上每个按钮、输入框究竟在哪里。OmniParser 屏幕解析工具只吃一张截图输出界面上所有元素的位置、文字内容和功能描述不依赖任何应用的 DOM 或无障碍接口——Windows、macOS 甚至手机截图都能处理。 能做什么OmniParser 视觉解析的能力边界先看一张场景 → 能力对照表快速定位它适合你的哪种需求使用场景OmniParser 做的事你拿到的东西GUI Agent 动作定位检测界面元素 为图标生成功能描述带编号、坐标、文字的元素列表界面元素识别YOLOv9-E 检测器找图标/控件OCR 读屏幕文字元素画了框、标了编号的标注图屏幕内容提取提取屏幕上全部文本及其位置文本 对应文本框坐标可交互性判断预测每个元素能否被点击V1.5 起支持interactable 标记同时要清楚它的边界避免用错地方不执行任何动作。它只负责看懂想让它真的移动鼠标、敲键盘需要配套组件 OmniTool见下文场景部分。不是独立 OCR 引擎。文字识别只是整条流水线的环节之一核心价值在元素 文字 描述的结构化组合。输入是单张图片没有实时视频流解析解析一张截图在 CPU 上要几十秒GPU 上快得多。适合三类人做 GUI Agent 的开发者、需要免定位代码做 UI 测试的工程师、以及想从屏幕里批量提取结构化信息的数据工程师。弄清了能力边界下面是最短的上手路径五步走完就能解析你自己的截图。 5步最短上手路径从克隆到第一次成功解析第 1 步克隆仓库git clone https://gitcode.com/GitHub_Trending/omn/OmniParser cd OmniParser确认方法ls能看到README.md、requirements.txt、gradio_demo.py。第 2 步建 Python 3.12 环境官方要求 3.12conda create -n omni python3.12 conda activate omni确认方法python --version输出 3.12.x。第 3 步安装依赖pip install -r requirements.txt依赖里有 torch、paddleocr、gradio 等体积不小耐心等完。确认方法命令正常返回 shell 提示符、无红色报错。第 4 步下载模型权重图标检测器 图标描述模型缺一不可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_florence确认方法weights/icon_detect_v3/model.pt存在且weights/icon_caption_florence/目录里有model.safetensors。第 5 步启动并验证二选一Web 界面python gradio_demo.py浏览器打开http://127.0.0.1:7861页面有Upload image上传框即成功。REST 服务python -m omnitool.omniparserserver.omniparserserver --device cpu --port 8000然后访问http://127.0.0.1:8000/probe/返回{message: Omniparser API ready}即部署成功。服务起来后两个核心端点的用法一览端点方法请求/返回/probe/GET返回{message: Omniparser API ready}验证服务存活/parse/POST请求体{base64_image: ...}返回som_image_base64标注图、parsed_content_list元素列表、latency耗时秒数接口源码很短逻辑全部集中在 omnitool/omniparserserver/omniparserserver.py核心解析逻辑在 util/omniparser.py。服务能跑通了下一步看看一次解析到底产出什么。️ 一次解析返回什么标注图 元素列表/parse/的返回里parsed_content_list是按编号排列的界面元素清单每项包含元素的位置框、OCR 读出的文字、对图标的功能描述如搜索分享V1.5 之后还会带可交互标记som_image_base64则是把编号直接画回截图上的标注图方便肉眼核对。下面这组输入 → 输出对比最直观图1输入只是普通截图没有任何标注图2同一张截图经 OmniParser 解析后的结果——每个彩色框对应一个界面元素搜索框、股价卡片、导航链接、任务栏图标框旁的编号就是元素列表里的下标屏幕上可见的文字也被 OCR 提取它不限于 Windows 截图macOS 窗口同样能解析图3macOS Finder 窗口截图侧边栏、标签页、AirDrop 按钮都会被检测为独立元素看懂输出之后看看它实际能落到哪些工作里。 三个落地场景谁在用、怎么用、得到什么场景一给 GUI Agent 装眼睛Agent 开发者开发者把截图丢给/parse/拿到带编号的元素列表后连同标注图一起喂给 GPT-4o、Claude 这类视觉模型。模型只需说点击 icon 42代码就能按编号查到坐标执行。得到的价值视觉模型的动作首次能精确落到具体控件上而不是模糊地点屏幕中间。场景二UI 自动化测试测试工程师测试脚本每轮先解析被测页面自动获得按钮和输入框的位置清单用例直接按元素编号或文字断言不需要为每个控件手写定位器。得到的价值页面改版导致定位器失效的情况大幅减少解析步骤还能塞进 CI 流程。场景三屏幕内容结构化提取数据 / 无障碍方向对截图、报表界面批量解析得到文字 位置 元素功能的结构化数据可用于数据采集或转换为语音描述辅助视障用户。得到的价值一次解析同时产出文本和版面信息省掉单独搭 OCR 管线。前两个场景都停留在看懂。如果你想让 Agent 真的动手操作电脑仓库里的 OmniToolOmniParser Windows 11 虚拟机 Gradio 控制台是官方给出的完整方案部署说明见 omnitool/readme.md。场景之外有几个参数值得动手调一下。⚙️ 关键参数表与 GPU 启动示例REST 服务的全部启动参数如下参数作用默认值--device推理设备cpu或cudacpu--BOX_TRESHOLD检测框置信度阈值调低检出更多、误检也更多0.05--caption_model_name图标描述模型florence2或blip2florence2--caption_model_path描述模型本地权重路径../../weights/icon_caption_florence--som_model_path检测器本地权重路径不指定则自动从 Hugging Face 拉取 V3 权重自动下载优先用本地weights/icon_detect_v3/model.pt--port/--host服务端口 / 监听地址8000/127.0.0.1Gradio 界面里还有两个滑块对应另外两个阈值IOU Threshold默认 0.1控制重叠框去重和Icon Detect Image Size默认 640检测输入分辨率越大越细但越慢。最短的 GPU 加速启动示例python -m omnitool.omniparserserver.omniparserserver --device cuda --BOX_TRESHOLD 0.03预期输出日志打印Omniparser initialized!!!后uvicorn 显示服务监听在 8000 端口此时curl http://127.0.0.1:8000/probe/应返回 ready 消息。跑的过程中新手最常卡在这几处提前自查一遍能省不少时间。❓ 新手常见卡点报错自查问答Q启动后解析报错提示找不到权重文件九成是目录结构不对。检查weights/icon_detect_v3/model.pt与weights/icon_caption_florence/model.safetensors是否都在。注意描述模型目录必须叫icon_caption_florence带后缀这正是第 4 步里mv命令要做的事。QWindows 上 pip 安装或启动时报libpaddle: The specified module could not be foundOCR 用的 PaddleOCR 在 Windows 依赖 C Redistributable。先装上它再重跑一次pip install -r requirements.txt。QCPU 上解析一张图要几十秒是不是坏了没坏。CPU 只是参考运行方式--device cuda上 GPU 会快得多OmniParser V2 相对 V1 本身就提速了 60%。Q检测框要么一堆冗余、要么漏掉小图标怎么调调--BOX_TRESHOLD漏检多就调低如 0.03误检多就调高框互相重叠严重时再配合 Gradio 里的IOU Threshold去重。Q解析完想让它真的去点鼠标、敲键盘够吗不够。OmniParser 只输出解析结果执行动作要靠 OmniToolOmniBox 里的 Windows 11 虚拟机 Gradio 控制台支持接 OpenAI、DeepSeek、Qwen、Anthropic 等视觉模型。完整搭建含 Docker 虚拟机管理脚本见 omnitool/readme.md。 文档与源码导航安装与权重说明README.md解析示例 Notebookdemo.ipynbWeb 界面入口gradio_demo.pyREST 服务源码omnitool/omniparserserver/omniparserserver.py核心解析逻辑util/omniparser.pyScreenSpot Pro 评测说明docs/Evaluation.md先从 Gradio 界面扔一张自己的桌面截图进去看看标注结果里漏了哪些元素、编号对不对——这是理解整个输出格式最快的方式跑顺之后再接/parse/接口进你的 Agent 管线。【免费下载链接】OmniParserA simple screen parsing tool towards pure vision based GUI agent项目地址: https://gitcode.com/GitHub_Trending/omn/OmniParser创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进