Select Page
OmniParser-微軟的開源螢幕解析工具

OmniParser-微軟的開源螢幕解析工具

繼之前提到的 Ahthropic Computer Use ,那時候超級驚豔的,馬上就看到MS也有推出自己的版本,雖然沒有自動執行功能,但可以配合 pyautogui 達成,雖然不支援中文,但可以透過中文OCR 或是 tesseract 處理

安裝到本地端

先建立一個虛擬環境起來

conda create -n omni python=3.12 -y
conda activate omni

選項:有GPU的,先把CUDA安裝起來

conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia

整個安裝也很簡單,就五個步驟

git clone https://github.com/microsoft/OmniParser.git && cd OmniParser
pip install -r requirements.txt
huggingface-cli download --repo-type model microsoft/OmniParser --local-dir weights --include "icon_detect/*" "icon_caption_blip2/*" "icon_caption_florence/*"
python /home/Ubuntu/OmniParser/weights/convert_safetensor_to_pt.py
python gradio_demo.py

OmniParser 2.0 更新

OmniParser V2 的主要改進與優勢

1. 更大、更乾淨的訓練資料集

OmniParser V2 採用了規模更大且模型已經清洗良好的「icon caption + grounding」資料集,涵蓋更豐富的 UI 標記與功能描述,進而提升模型對互動區域的識別能力。

2. 顯著降低推理延遲

V2 在推理速度上較 V1 快了 60%,平均延遲為每畫面 0.6 秒(A100 GPU)或 0.8 秒(RTX 4090),適合即時 GUI 解讀與互動場景。

3. Grounding 準確度大幅提升

在「ScreenSpot Pro」這項標註小型 UI 元素的基準上,搭配 GPT-4o,V2 的平均精準度達到 39.6%,遠高於 GPT-4o 原本只有 0.8% 的表現。

4. 整合 OmniTool,打造完整 AI GUI Agent 流程

V2 支援搭配 OmniTool,形成一個即插即用的環境,可控制 Windows 11 VM 並搭配各家大型語言模型,如 OpenAI (4o, o1, o3-mini)、DeepSeek R1、Qwen 2.5VL 甚至 Anthropic,使建構 GUI Agent 更簡單。

5. 擴大使用場景與穩定性

除了支援 PC 與手機螢幕截圖外,V2 的架構更穩定、更泛用,適合建構可解讀 GUI 的多種應用。


V1 vs V2 功能比較表

特性OmniParser V1OmniParser V2
訓練資料集標準 icon caption+grounding 少量更大、更乾淨的訓練資料集
推理速度較慢快了約 60%,平均延遲 0.6s–0.8s
Grounding 準確度基準低,難以處理小 UI 元素搭配 GPT-4o 平均達 39.6% 準確率
操作流程整合性需手動整合模型與 LLM支援 OmniTool,快速與多款 LLM 串接
適用場景廣度較狹窄更廣泛,包含各種 GUI 互動與截圖輸入

下載新的模型

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

如果你是 Windows 可以去 Hugginface 下載模型後,並且在目錄下建立 weights\icon_caption_florence ,把下載來的模型放在目錄中即可

https://huggingface.co/microsoft/OmniParser-v2.0/tree/main

OmniParser 1.5 更新

先下載模型

python weights/convert_safetensor_to_pt.py

For v1.5: 
download 'model_v1_5.pt' from https://huggingface.co/microsoft/OmniParser/tree/main/icon_detect_v1_5, make a new dir: weights/icon_detect_v1_5, and put it inside the folder. No weight conversion is needed. 

執行指令要改成 1.5 版本

python gradio_demo.py --icon_detect_model weights/icon_detect_v1_5/model_v1_5.pt --icon_caption_model florence2

支援其他的語言

舉例來說,要改成中文,請找到專案下的 utils.py ,將 en 改成 ch

reader = easyocr.Reader(['en'])
paddle_ocr = PaddleOCR(
#    lang='en',  # other lang also available
    lang='ch',  # other lang also available
    use_angle_cls=False,
    use_gpu=False,  # using cuda will conflict with pytorch in the same process
    show_log=False,
    max_batch_size=1024,
    use_dilation=True,  # improves accuracy
    det_db_score_mode='slow',  # improves accuracy
    rec_batch_num=1024)

在介面中選取使用 PaddleOCR

相關資源

OmniParser 原始碼

OmniParser 官網

OmniParser 模型

https://blog.stoeng.site/20241030.html

Open Canvas-本地使用 OpenAI Canvas功能

Open Canvas-本地使用 OpenAI Canvas功能

最近 OpenAI 推出了 Canvas ,開始流行在 ChatGPT 上頭寫程式、寫郵件等等,馬上就有人推出本地端一樣的服務 Open Canvas ,解放了你只能在 OpenAI 上使用的困境,除了 Git 以外,也馬上有了 docker 版本,可以快速體驗

Open Canvas 架構圖
Open Canvas Workflow

相關資源

Open Canvas 原始檔

Open Canvas Docker

LangGraph Studio

LangSmith

PyAutoGUI-自動控制你的電腦

可以在 windows, mac, Linux 上使用,自動地透過滑鼠鍵盤來控制你的電腦畫面,還支援螢幕截圖

簡易使用方法

安裝 pyautogui

pip install pyautogui

使用 pyautogui

import pyautogui

螢幕截圖

pyautogui.screenshot('screenshot.png')

滑鼠控制

pyautogui.moveTo(100, 100, duration = 1.5) #用1.5秒移動到x=100,y=100的位置
pyautogui.dragTo(100, 100, duration=2, button='right') #用2秒按住滑鼠右鍵到x=100,y=100的位置
pyautogui.click(clicks=2, interval=0.5, button='right') #雙擊左鍵並且中途間隔0.5秒

鍵盤控制

pyautogui.keyDown('ctrl')
pyautogui.press('a')
pyautogui.keyUp('ctrl') #全選的功能鍵效果
pyautogui.hotkey('ctrl', 'shift', 'esc') #開啟工作管理員的快捷鍵

資源

PyAutoGUI 說明文件

PyAutoGUI 原始碼

中文說明檔

相關資源

Windows下如何釋放被占用的port

Windows下如何釋放被占用的port

使用 docker 時候,常常遇到被占用的 port 要處理,這邊記錄下正確的處理方法

找到占用port的程式

netstat -ano | findstr 8080

會得到下面的輸出,最後面一個是 PID

查詢程式資訊

tasklist | findstr 8080

刪除占用的程式行程

舉例來說,我要刪除佔用了 port 50912 的程式,由上圖知道他的 PID 是 6664,那就輸入以下指令即可

taskkill /T /F /PID 6664
用AI操作電腦的這一天來了,Ahthropic Computer Use

用AI操作電腦的這一天來了,Ahthropic Computer Use

終於來到電影中的AI操作電腦的情節了,動動嘴巴就可以控制電腦,AI 透過 LLM 模型,知道你的意圖,在看你的電腦畫面,去決定要點選甚麼樣的位置,或是輸入甚麼樣的資訊,原來可以這麼簡單就實現用嘴巴操作電腦

準備 API Key

請先到這邊,https://www.anthropic.com/api,取得 API Key,等等 docker 建立的時候會用到

Docker 安裝 Ahthropic computer use

Linux / Mac

export ANTHROPIC_API_KEY=%your_api_key%
docker run \
    -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
    -v $HOME/.anthropic:/home/computeruse/.anthropic \
    -p 5900:5900 \
    -p 8501:8501 \
    -p 6080:6080 \
    -p 8080:8080 \
    -it ghcr.io/anthropics/anthropic-quickstarts:computer-use-demo-latest

Windows

export ANTHROPIC_API_KEY=%your_api_key%

docker run `
    -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY `
    -v $HOME/.anthropic:/home/computeruse/.anthropic `
    -p 5900:5900 `
    -p 8501:8501 `
    -p 6080:6080 `
    -p 8080:8080 `
    -it ghcr.io/anthropics/anthropic-quickstarts:computer-use-demo-latest