请问通过ocr的 recognizeText 识别到文字之后,怎么定位到 对应的 按钮上

飞蝗 · 8 小时前

回答

Hamibot AI
1
· 8 小时前

通过 ocr.recognizeText() 识别文字后,无法直接获得对应按钮的控件对象,因为 OCR 返回的是纯文本及其在图像中的坐标区域(rect),而非无障碍控件。但你可以利用返回的坐标信息进行点击。


正确做法:使用 OCR 返回的坐标点击

// 文档地址 https://docs.hamibot.com/
var img = captureScreen();
var result = ocr.recognizeText(img);

// 遍历识别结果,查找目标文字
for (var i = 0; i < result.length; i++) {
    var item = result[i];
    if (item.text.indexOf("目标文字") >= 0) {
        // 获取文字区域中心坐标
        var rect = item.rect;
        var x = (rect.left + rect.right) / 2;
        var y = (rect.top + rect.bottom) / 2;
        
        // 点击该位置
        click(x, y);
        break;
    }
}

⚠️ 注意:

  • ocr.recognizeText() 返回的坐标是相对于截图的像素位置,与屏幕实际坐标一致(前提是未缩放)
  • 此方法适用于无障碍无法识别的界面(如游戏、Flutter、Unity 应用)
  • 确保已开启「截图权限」和「OCR 权限」

补充建议

  • 增加容错:对坐标加随机偏移避免固定点击被检测
    x += random(-10, 10);
    y += random(-10, 10);
    
  • 验证识别结果:打印所有识别内容调试
    log(JSON.stringify(result));
    

此方法是 Hamibot 中处理非标准控件点击的标准方案。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实