问题描述
computer_state(operation=state, mode="ocr", window_id=...) 显式请求 OCR 时,只要窗口没有产生"语义变化",就返回 UIA 缓存("source":"uia","unchanged":true),OCR 从未真正执行。这导致对 WebView2(Edge WebView2 Runtime)渲染的应用,所有无 aria-label 的 DOM 元素(纯 SVG 图标按钮)完全无法通过 OCR 定位——而本地 mss 截屏 + PaddleOCR 能正常读到这些按钮的文字(如 tooltip/图标旁文本)。
复现步骤
环境:Windows 11,Reasonix 桌面版(wails v2 + WebView2),computer-use MCP 插件。
- 打开 Reasonix 桌面版窗口(侧边栏有纯 SVG 图标按钮:回收站 / 自动化 / 设置,均无 aria-label)
- 调用
computer_state({window_id, mode: "ocr", goal: "查看侧边栏底部按钮"})
- 实际返回:
"source":"uia" + UIA 元素列表(TabItem 等带 aria 的 DOM 元素),或 "source":"uia","unchanged":true 复用缓存——mode=ocr 被忽略
- 同窗口下,只有当页面发生语义变化(如切换到另一个 Tab)后,OCR 才可能真正执行
对照实验:
- 本地截屏:
mss 截取侧边栏底部 160x240 区域 → PaddleOCR 识别出 回收站、自动化、设置、SSH·已断开(坐标精确)
- computer-use OCR:同一区域、同一时刻,返回 UIA 缓存,无任何 OCR 结果
影响
- WebView2 应用(wails、Electron 等)中没有无障碍属性的元素(纯图标按钮、canvas 绘制控件)无法用 computer-use 的 OCR 定位,必须借助外部截屏工具
- 依赖"语义变化"才触发 OCR 的机制还会错过短暂 UI 状态(如 hover tooltip,出现 1-2 秒即消失)
- UIA 模式对无 aria 元素同样无效(UIA 树中不存在这些节点),二者无法互补,唯一可靠路径是强制 OCR
期望行为
显式传 mode: "ocr" 时应强制执行截屏 + OCR,不因 UIA 缓存而短路;unchanged 判定不应影响显式模式选择。建议:mode 显式指定时跳过缓存复用,只有 mode: "auto" 才允许缓存/回退。
临时 workaround
本机验证可行的替代方案:Python mss 截屏 + paddleocr 直接识别窗口区域,输出文字及坐标(已封装为脚本,可稳定定位无 aria 的图标按钮)。
- 插件:Reasonix-computer-use(computer-use MCP)
- 报告日期:2026-08-07
问题描述
computer_state(operation=state, mode="ocr", window_id=...)显式请求 OCR 时,只要窗口没有产生"语义变化",就返回 UIA 缓存("source":"uia","unchanged":true),OCR 从未真正执行。这导致对 WebView2(Edge WebView2 Runtime)渲染的应用,所有无 aria-label 的 DOM 元素(纯 SVG 图标按钮)完全无法通过 OCR 定位——而本地mss截屏 + PaddleOCR 能正常读到这些按钮的文字(如 tooltip/图标旁文本)。复现步骤
环境:Windows 11,Reasonix 桌面版(wails v2 + WebView2),computer-use MCP 插件。
computer_state({window_id, mode: "ocr", goal: "查看侧边栏底部按钮"})"source":"uia"+ UIA 元素列表(TabItem 等带 aria 的 DOM 元素),或"source":"uia","unchanged":true复用缓存——mode=ocr 被忽略对照实验:
mss截取侧边栏底部 160x240 区域 → PaddleOCR 识别出回收站、自动化、设置、SSH·已断开(坐标精确)影响
期望行为
显式传
mode: "ocr"时应强制执行截屏 + OCR,不因 UIA 缓存而短路;unchanged判定不应影响显式模式选择。建议:mode显式指定时跳过缓存复用,只有mode: "auto"才允许缓存/回退。临时 workaround
本机验证可行的替代方案:Python
mss截屏 +paddleocr直接识别窗口区域,输出文字及坐标(已封装为脚本,可稳定定位无 aria 的图标按钮)。