OCR智能识别找字点击
OCR智能识别找字点击/**
* ╔══════════════════════════════════════════════════════════╗
* ║ OCR 节奏点Tab v3:不再依赖 getAllDetect ║
* ║ 原因:你的 MLKitOcr 版本 getAllDetect() 永远返回 null ║
* ║ 新方案:区域坐标 已限制在底部导航栏 ║
* ║ → findIncludeText 返回的直接就是底部的 Tab ║
* ╚══════════════════════════════════════════════════════════╝
*/
printl("╔══════════════════════════════════════╗");
printl("║OCR节奏点Tab v3 — 不靠getAllDetect ║");
printl("╚══════════════════════════════════════╝");
function 取X(d) { try { return Math.round(d.getRect().getCenterX()); } catch (e) { return -1; } }
function 取Y(d) { try { return Math.round(d.getRect().getCenterY()); } catch (e) { return -1; } }
function 点击(d) {
var x = 取X(d), y = 取Y(d);
if (x < 0) return false;
auto.clickPoint(x + rand.randNumber(-8, 8), y + rand.randNumber(-8, 8));
return true;
}
// ==================== 核心:找底部Tab(v3 版)====================
// 区域已经锁定在 (屏幕最底部 8%)
// 所以 这个区域里的 findIncludeText 返回的一定是底部导航栏的 Tab
// 根本不需要 getAllDetect 排序!
function 找底部Tab(ocr结果, 关键词) {
return ocr结果.findIncludeText(关键词);
}
// ==================== Tab 配置 ====================
var Tab列表 = [
{ 主词: "首页",候选: ["首页"] },
{ 主词: "免费",候选: ["免费", "免費", "免费着片"] },
{ 主词: "消息",候选: ["消息", "99+", "+99+"] },
];
var 总轮次 = 3;
for (var 轮次 = 1; 轮次 <= 总轮次; 轮次++) {
printl("");
printl("━━━ 第 " + 轮次 + " / " + 总轮次 + " 轮 ━━━");
// 底部区域 —— 只覆盖快手底部导航栏
var 截图 = screen.screenShotFull();
var 底部OCR = 截图.MLKitOcrRect('zh', );
printl("🔍 底部92%+ OCR原文:" + 底部OCR.getAllString());
for (var t = 0; t < Tab列表.length; t++) {
var tab = Tab列表;
var 点到了 = false;
for (var c = 0; c < tab.候选.length; c++) {
var d = 找底部Tab(底部OCR, tab.候选);
if (d) {
printl("🎯 点 [" + tab.主词 + "]@(" + 取X(d) + "," + 取Y(d) + ")");
点击(d);
点到了 = true;
break;
}
}
if (!点到了) printl("⚠️ 找不到 [" + tab.主词 + "]");
var 等待秒 = rand.randNumber(2, 4);
printl("⏳ " + 等待秒 + "s...");
sleep.second(等待秒);
// 点完重 OCR
截图.recycle();
截图 = screen.screenShotFull();
底部OCR = 截图.MLKitOcrRect('zh', );
}
截图.recycle();
printl("━━━ 第 " + 轮次 + " 轮结束 ━━━");
}
printl("");
printl("✅ " + 总轮次 + " 轮点完!");
页:
[1]