你好,我的 Hamibot 遇到了 ocr.init() 初始化失败的问题,麻烦帮忙看看。
设备信息:
手机型号:【 小米 Note 9 Pro】
系统版本:【安卓12;MIUI 14】
Hamibot 版本:【 1.6.7】
权限情况:
悬浮窗、后台运行、自启动、显示在其他应用上层 等所有权限均已开启。
测试脚本与日志:
javascript
运行
console.show();
log("🔧 测试 OCR 初始化...");
if (ocr.init()) {
log("✅ OCR 初始化成功!");
} else {
log("❌ OCR 初始化失败");
}
plaintext
13:31:31.501/D: 🔧 测试 OCR 初始化...
13:31:31.502/D: ❌ OCR 初始化失败
请问解决方案?
回答
ocr.init() 初始化失败通常与 OCR 模型文件未下载、存储权限受限或 MIUI 系统后台限制有关。结合你的设备环境(Android 12 / MIUI 14)和 Hamibot 1.6.7 版本,按以下步骤排查并解决:
1. 授予完整的存储/文件权限
OCR 引擎首次运行需要下载并缓存识别模型(约几十 MB)。MIUI 14 默认可能仅授予“媒体文件”访问权限,导致模型无法写入。
- 进入手机「设置」→「应用设置」→「应用管理」→ 找到 Hamibot →「权限管理」
- 将「存储」或「文件和媒体」权限改为 「允许管理所有文件」 或 「始终允许」
- 若系统有「特殊权限设置」→「所有文件访问权限」,请为 Hamibot 开启
2. 确保首次运行网络畅通
ocr.init() 首次执行会联网下载模型文件。请保持 Wi-Fi 或移动数据正常,下载完成后后续调用无需联网。若网络受限或 DNS 异常,初始化会直接返回 false。
3. 清除缓存强制重新下载
模型文件可能因中断下载而损坏:
- 进入 Hamibot 应用信息 →「清除缓存」+「清除数据」
- 重新打开 Hamibot,保持网络畅通,再次运行脚本
4. 关闭 MIUI 电池与内存限制
MIUI 14 的省电策略可能拦截后台文件读写或杀死初始化进程:
- 「设置」→「省电与电池」→ 右上角设置 →「应用智能省电」→ Hamibot → 设置为 「无限制」
- 确保「自启动」、「后台弹出界面」、「锁定任务」已开启
5. 优化脚本调用方式(推荐)
在 Hamibot 1.6.x 中,ocr.init() 已非必需。引擎会在首次调用识别方法时自动完成初始化与模型加载。建议直接使用以下兼容写法,避免显式调用 init() 导致的兼容问题:
// 文档地址 https://docs.hamibot.com/
console.show();
log("🔧 测试 OCR 识别...");
if (!requestScreenCapture()) {
toastLog("未授予屏幕截图权限");
hamibot.exit();
}
sleep(1000);
var img = captureScreen();
log("📸 截屏完成,开始识别");
// 直接调用识别方法,引擎会自动完成初始化与模型加载
var result = ocr.recognizeText(img);
if (result) {
log("✅ 识别成功:" + result);
} else {
log("❌ 识别失败,请检查权限或重试");
}
hamibot.exit();
注意事项
- 代码已适配 Hamibot 内置的 Rhino 1.7.15 引擎,未使用箭头函数或默认参数,确保兼容性。
- 若仍提示失败,可在脚本开头添加
auto.waitFor();,确保无障碍服务完全就绪后再执行 OCR 相关操作。 ocr.recognizeText(img)仅返回纯文本结果,性能优于ocr.recognize(img),适合大多数自动化场景。
按上述步骤操作后,OCR 初始化失败问题通常可彻底解决。如仍有异常,请切换网络环境后清除数据重试,或提供完整控制台日志以便进一步定位。