Hamibot控制5台设备执行脚本,总会出现1台设备无法正常OCR识别的情况,怎么回事

HAMI_2631912741 · 5 天前

回答

Hamibot AI
1
· 5 天前

Hamibot在多台设备上运行时,出现其中一台设备无法正常OCR识别的情况,通常与以下几个因素有关:

1. 屏幕截图权限未正确授予

OCR功能依赖屏幕截图权限。如果某台设备没有成功授予该权限,captureScreen() 将返回 null 或失败,导致后续OCR识别异常。

解决方法:
确保每台设备都执行了以下代码,并且用户手动允许了截图权限请求:

// 文档地址 https://docs.hamibot.com/
auto.waitFor(); // 等待无障碍服务
if (!requestScreenCapture()) {
    toastLog('请授予屏幕截图权限!');
    hamibot.exit();
}

建议你在脚本开始时打印日志确认是否成功获取截图:

const img = captureScreen();
if (!img) {
    toastLog('截图失败,请检查权限');
    hamibot.exit();
} else {
    toastLog('截图成功');
}

2. 设备系统差异或省电策略限制

不同品牌和型号的Android设备对后台服务、自启动和前台服务的管理策略不同,可能导致Hamibot在某些设备上被系统“杀掉”或暂停执行,从而影响OCR流程。

常见问题设备:

  • 小米(MIUI)
  • 华为(EMUI)
  • OPPO(ColorOS)
  • vivo(Funtouch OS)

解决方法:
对每一台设备逐一检查并设置以下项:

  • ✅ 开启自启动
  • ✅ 关闭电池优化 / 省电模式
  • ✅ 锁定Hamibot应用不被清理
  • ✅ 开启“后台弹出界面”权限
  • ✅ 保持屏幕常亮(可使用 device.keepOn()

参考文档:保持 Hamibot 运行


3. OCR 引擎初始化延迟或网络问题(首次使用)

Hamibot的OCR功能基于云端识别服务,在部分设备上首次调用时需要下载模型或进行初始化。若设备网络不稳定,可能导致OCR服务加载失败。

解决方法:

  • 确保所有设备均处于稳定Wi-Fi环境下。
  • 首次使用OCR前,可在设备上单独运行一次最简识别脚本,完成初始化。
  • 添加错误捕获机制,提高容错性:
// 文档地址 https://docs.hamibot.com/
try {
    const img = captureScreen();
    const result = ocr.recognizeText(img);
    log('识别结果:', result);
} catch (e) {
    toastLog('OCR识别出错:' + e.message);
}

4. 图像质量或区域裁剪问题

即使截图成功,如果图像模糊、亮度低、文字过小或区域裁剪不当,也可能导致识别失败。

优化建议:

  • 使用 images.grayscale(img) 提升对比度
  • 对图片适当缩放以提高处理速度和准确率
  • 尽量限定识别区域,减少干扰

示例:

// 文档地址 https://docs.hamibot.com/
const img = captureScreen();
const region = images.clip(img, 100, 200, 500, 400); // 裁剪关键区域
const grayImg = images.grayscale(region); // 灰度化
const text = ocr.recognizeText(grayImg);

排查建议总结:

你可以在每台设备上分别运行一个最小测试脚本,记录日志来定位是哪一步出错:

// 文档地址 https://docs.hamibot.com/
auto.waitFor();
if (!requestScreenCapture()) {
    toastLog('截图权限被拒绝');
    hamibot.exit();
}

const img = captureScreen();
if (!img) {
    toastLog('截图失败');
    hamibot.exit();
}

try {
    const text = ocr.recognizeText(img);
    toastLog('识别成功:' + text.substring(0, 20));
} catch (e) {
    toastLog('OCR识别失败:' + e.message);
}

通过对比5台设备的日志输出,即可判断问题是出在权限、截图还是OCR本身。


如以上措施仍不能解决,建议将该设备的具体型号、系统版本、Hamibot版本信息整理后发送邮件至 support@hamibot.cn 获取技术支持。

ℹ️ 本回答由 AI 生成,内容仅供参考