欢迎大家来到IT世界,在知识的湖畔探索吧!
长久以来,人们都是依靠 GUI 图形用户界面来操作计算机的,我们熟悉的窗口、菜单、按钮等等,对于 AI 机器人来说却不是那么容易理解的。
想要把 AI 大模型应用在自动化操作中,图形用户界面 GUI 的解析和理解就成为了一个重要的课题。
如何将用户界面的截图解析为结构化且易于理解的元素,以增强 LLM 在界面交互中的准确性,OmniParser 项目给出了具有突破性的解决方案。
简介
OmniParser 是一个用于纯视觉 GUI 代理的屏幕解析工具,其代码仓库地址为
https://github.com/microsoft/OmniParser。该项目由微软推出,致力于为用户提供将用户界面的截图,解析为结构化且易于理解的元素的能力,从而显著提升 GPT – 4V 等模型在界面交互中生成准确动作的能力。

欢迎大家来到IT世界,在知识的湖畔探索吧!
OmniParser 具有诸多特色功能:
- OmniParser V2 相较于 V1 版本有了显著的性能提升,速度提高了 60%,并且能够理解更广泛的操作系统、应用程序和应用内图标。
- OmniTool 作为该项目的一部分,支持多种大型语言模型,如 OpenAI(4o/o1/o3 – mini)、DeepSeek(R1)、Qwen(2.5VL)或 Anthropic Computer Use 等,用户可以根据自己的需求选择合适的模型进行使用。
- OmniBox 在进行代理测试时,相比其他 Windows 虚拟机使用的磁盘空间减少了 50%,同时还能提供相同的计算机使用 API,这大大提高了资源的利用效率。
使用
要在本地部署运行 OmniParser 项目,首先把代码克隆到本地:
git clone https://github.com/microsoft/OmniParser.git
欢迎大家来到IT世界,在知识的湖畔探索吧!
然后使用 conda 创建环境,使用 Python 3.12:
欢迎大家来到IT世界,在知识的湖畔探索吧!cd OmniParser conda create -n "omni" python==3.12 conda activate omni
接着安装相关的 Python 依赖:
pip install -r requirements.txt
运行 V2 版本的模型之前,需要确保已经下载了 V2 的模型参数权重,若没有下载,可以使用以下脚本:
欢迎大家来到IT世界,在知识的湖畔探索吧! # download the model checkpoints to local directory OmniParser/weights/ for f in icon_detect/{train_args.yaml,model.pt,model.yaml} 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
OmniParser 使用较为简单,开发者可以首先使用 huggingface 上的在线 demo,上传一张屏幕截图,不限于 PC端、移动端、网页等,并简单调节阈值参数,就能够输出屏幕上所有的 GUI 元素:
我们也可以简单写一个脚本直接调用本地的模型:
import importlib import utils importlib.reload(utils) # from utils import get_som_labeled_img, check_ocr_box, get_caption_model_processor, get_yolo_model image_path = 'imgs/google_page.png' image_path = 'imgs/windows_home.png' # image_path = 'imgs/windows_multitab.png' # image_path = 'imgs/omni3.jpg' # image_path = 'imgs/ios.png' image_path = 'imgs/word.png' # image_path = 'imgs/excel2.png' image = Image.open(image_path) image_rgb = image.convert('RGB') print('image size:', image.size) box_overlay_ratio = max(image.size) / 3200 draw_bbox_config = { 'text_scale': 0.8 * box_overlay_ratio, 'text_thickness': max(int(2 * box_overlay_ratio), 1), 'text_padding': max(int(3 * box_overlay_ratio), 1), 'thickness': max(int(3 * box_overlay_ratio), 1), } BOX_TRESHOLD = 0.05 import time start = time.time() ocr_bbox_rslt, is_goal_filtered = check_ocr_box(image_path, display_img = False, output_bb_format='xyxy', goal_filtering=None, easyocr_args={'paragraph': False, 'text_threshold':0.9}, use_paddleocr=True) text, ocr_bbox = ocr_bbox_rslt cur_time_ocr = time.time() dino_labled_img, label_coordinates, parsed_content_list = get_som_labeled_img(image_path, som_model, BOX_TRESHOLD = BOX_TRESHOLD, output_coord_in_ratio=True, ocr_bbox=ocr_bbox,draw_bbox_config=draw_bbox_config, caption_model_processor=caption_model_processor, ocr_text=text,use_local_semantics=True, iou_threshold=0.7, scale_img=False, batch_size=128) cur_time_caption = time.time()
以上的例子中,
- 我们直接引用工具函数 check_ocr_box 和 get_som_labeled_img,
- 对于指定路径的图片,首先通过 Image 读取到内存中,
- 然后配置 Bounding Box 参数配置,利用 check_ocr_box 识别图片中各元素的位置
- 再利用 get_som_labeled_img 方法获得一张在原图上直接标注各个 GUI 元素的示意图
总结
OmniParser 项目作为一个纯视觉的 GUI 屏幕解析工具,为用户界面的解析和理解提供了一种全面且高效的解决方案。包括 OmniParser V2 的大幅性能提升、OmniTool 对多种大型语言模型的支持以及 OmniBox 的资源优化等,都使得该项目在 GUI 解析领域具有显著的优势。
OmniParser 可以广泛应用于各种需要对用户界面进行自动化处理的场景,如自动化测试、智能交互系统等。通过将用户界面的截图解析为结构化元素,能够更准确地识别界面中的各种组件,从而实现自动化的操作和交互。例如,在自动化测试中,可以使用 OmniParser 来检测界面元素的位置和状态,以确保测试的准确性和可靠性。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/114428.html