B2B网络软件
标题:
苹果脚本7种不同的OCR识别
[打印本页]
作者:
YYPOST群发软件
时间:
3 小时前
标题:
苹果脚本7种不同的OCR识别
苹果脚本7种不同的OCR识别
1.png
(787.57 KB, 下载次数: 0)
下载附件
3 小时前
上传
3.png
(782.09 KB, 下载次数: 0)
下载附件
3 小时前
上传
//OCR文字识别[OCR]高级综合示例,交流QQ群711841924
// 本文件包含7种不同的OCR识别和点击方法的高级应用
/**
* 苹果OCR高级综合示例
* 这个示例展示了如何使用OCR进行文本识别并执行各种点击操作
* 🍎交流QQ群711841924群一,苹果内测群,528816639
*/
// 获取屏幕尺寸
var screenWidth = screen.getScreenWidth();
var screenHeight = screen.getScreenHeight();
printl("📱 屏幕尺寸: " + screenWidth + "x" + screenHeight);
/**
* 持续快速点击函数 - 移动一次后持续点击
* @param {number} x - X坐标(比例0-1)
* @param {number} y - Y坐标(比例0-1)
* @param {number} count - 点击次数
* @param {number} interval - 点击间隔(毫秒),默认2ms
*/
function continuousClick(x, y, count, interval) {
if (interval === undefined) interval = 2;
// 检查坐标有效性
if (isNaN(x) || isNaN(y)) {
printl("⚠️ 警告: 无效的坐标参数");
return;
}
// 将比例坐标转换为实际坐标
var realX = Math.floor(x * screenWidth);
var realY = Math.floor(y * screenHeight);
printl("移动到目标位置 (" + realX + ", " + realY + ")...");
hid.moveToRealPoint(realX, realY);
sleep.millisecond(50);
// 持续快速点击
for (var i = 0; i < count; i++) {
hid.mouseDown();
hid.mouseUp();
// 最小延迟等待
if (i < count - 1 && interval > 0) {
var start = new Date().getTime();
while (new Date().getTime() - start < interval) {
// 空循环等待
}
}
}
}
/**
* 示例1: 基本OCR识别与精确文本点击
* 使用findText方法查找精确文本并点击
*/
function ocrClickExample() {
printl("==== 示例1: 基本OCR识别与精确文本点击 ====");
try {
// 执行全屏幕OCR识别
var ocrResult = screen.ocr(0, 0, 1, 1);
// 查找精确文本"确定"
var target = ocrResult.findText("确定", [0, 0, 1, 1]);
if (target != null) {
printl("找到文本 '确定',准备点击");
// 直接使用内置的click方法
target.click();
printl("点击成功");
} else {
printl("未找到文本 '确定'");
}
} catch (e) {
printl("OCR操作发生错误: " + e);
}
}
/**
* 示例2: 使用内置的clickRandom方法进行随机位置点击
* 这是更简单的点击方式
*/
function ocrClickRandomExample() {
printl("\n==== 示例2: 使用clickRandom方法进行随机位置点击 ====");
try {
// 执行OCR识别
var ocrResult = screen.ocr(0, 0, 1, 1);
// 查找包含"设置"的文本
var target = ocrResult.findIncludeText("设置", [0, 0, 1, 1]);
if (target != null) {
printl("找到包含 '设置' 的文本,准备在其区域内随机点击");
// 使用内置的clickRandom方法在文本区域内随机位置点击
target.clickRandom();
printl("随机位置点击成功");
} else {
printl("未找到包含 '设置' 的文本");
}
} catch (e) {
printl("OCR操作发生错误: " + e);
}
}
/**
* 示例3: 使用正则表达式查找多个匹配项并点击第一个
*/
function ocrRegexClickExample() {
printl("\n==== 示例3: 使用正则表达式查找多个匹配项并点击第一个 ====");
try {
// 执行OCR识别
var ocrResult = screen.ocr(0, 0, 1, 1);
// 使用正则表达式查找包含数字的文本
var targets = ocrResult.findTextWithRegex("\\d+", [0, 0, 1, 1]);
if (targets != null && targets.length > 0) {
printl("找到 " + targets.length + " 个包含数字的文本");
printl("第一个匹配的文本是: " + targets[0].text());
// 点击第一个匹配项
targets[0].clickRandom();
printl("点击第一个匹配项成功");
} else {
printl("未找到包含数字的文本");
}
} catch (e) {
printl("OCR操作发生错误: " + e);
}
}
/**
* 示例4: OCR识别后遍历所有文本并点击特定条件的文本
*/
function ocrIterateAndClickExample() {
printl("\n==== 示例4: OCR识别后遍历所有文本并点击特定条件的文本 ====");
try {
// 执行OCR识别
var ocrResult = screen.ocr(0, 0, 1, 1);
// 获取所有识别到的文本
var allDetects = ocrResult.getAllDetect();
printl("总共识别到 " + allDetects.length + " 个文本元素");
// 遍历所有文本
for (var i = 0; i < allDetects.length; i++) {
var detect = allDetects[i];
var textContent = detect.text();
printl("文本 " + i + ": " + textContent);
// 如果文本包含"取消",点击它
if (textContent.includes("取消")) {
printl("找到包含 '取消' 的文本,准备点击");
detect.clickRandom();
printl("点击成功");
break; // 点击后退出循环
}
}
} catch (e) {
printl("OCR操作发生错误: " + e);
}
}
/**
* 示例5: 区域OCR识别并点击
* 只在屏幕的某个特定区域进行OCR识别
*/
function regionOcrClickExample() {
printl("\n==== 示例5: 区域OCR识别并点击 ====");
try {
// 定义一个区域: 屏幕的中间部分 (宽度: 60%, 高度: 40%, 居中)
var region = [0.2, 0.3, 0.8, 0.7];
printl("在区域 [" + region[0] + ", " + region[1] + ", " + region[2] + ", " + region[3] + "] 内进行OCR识别");
// 在指定区域执行OCR识别
var ocrResult = screen.ocr(region[0], region[1], region[2], region[3]);
// 查找文本
var target = ocrResult.findText("下一步", region);
if (target != null) {
printl("在指定区域找到文本 '下一步',准备点击");
target.clickRandom();
printl("点击成功");
} else {
printl("在指定区域未找到文本 '下一步'");
}
} catch (e) {
printl("OCR操作发生错误: " + e);
}
}
/**
* 示例6: 综合示例 - 循环点击底部三个按钮
* 在"软件"、"日志"、"设置"之间来回点击演示
*/
function comprehensiveOcrExample() {
printl("\n==== 示例6: 循环点击底部三个按钮 ====");
try {
// 定义要点击的按钮顺序
var buttons = ["软件", "日志", "设置"];
var rounds = 3; // 循环3轮
printl("开始循环点击演示,共 " + rounds + " 轮");
printl("点击顺序: " + buttons.join(" -> ") + " -> " + buttons.join(" -> ") + "...");
printl("========================================");
for (var round = 1; round <= rounds; round++) {
printl("\n--- 第 " + round + " 轮 ---");
// 按顺序点击每个按钮
for (var i = 0; i < buttons.length; i++) {
var buttonText = buttons[i];
printl("\n[" + round + "." + (i+1) + "] 查找并点击: '" + buttonText + "'");
// 执行OCR识别
var ocrResult = screen.ocr(0, 0, 1, 1);
var target = ocrResult.findIncludeText(buttonText, [0, 0, 1, 1]);
if (target != null) {
printl(" ✓ 找到 '" + buttonText + "',准备点击");
target.clickRandom();
printl(" ✓ 点击 '" + buttonText + "' 成功");
// 等待一下,让用户看到效果
if (i < buttons.length - 1 || round < rounds) {
sleep.millisecond(1500);
}
} else {
printl(" ✗ 未找到文本 '" + buttonText + "'");
}
}
printl("\n✓ 第 " + round + " 轮完成!");
// 轮次之间稍作停顿
if (round < rounds) {
printl("--- 休息2秒,准备下一轮 ---");
sleep.millisecond(2000);
}
}
printl("\n========================================");
printl("✅ 所有轮次完成!共点击 " + (rounds * buttons.length) + " 次");
} catch (e) {
printl("综合示例发生错误: " + e);
}
}
/**
* 示例7: 使用OCR锁定提高效率
*/
function lockedOcrExample() {
printl("\n==== 示例7: 使用OCR锁定提高效率 ====");
try {
// 锁定OCR识别结果
OCR.lockOCR();
printl("OCR结果已锁定");
// 执行截图
var image = screen.screenShotFull();
// 在锁定状态下进行多次识别操作
printl("执行第一次OCR识别");
var result1 = image.ocr(0, 0, 1, 1);
var text1 = result1.getAllString();
printl("第一次识别到的文本数量: " + text1.length);
printl("执行第二次OCR识别");
var result2 = image.ocr(0, 0, 1, 1);
var settingTarget = result2.findIncludeText("设置", [0, 0, 1, 1]);
if (settingTarget != null) {
printl("找到包含 '设置' 的文本");
}
// 关闭图片
image.close();
// 释放OCR锁
OCR.unLock();
printl("OCR结果已解锁");
} catch (e) {
printl("锁定OCR示例发生错误: " + e);
// 确保在错误情况下也能释放锁
try {
OCR.unLock();
} catch (unlockError) {
printl("释放锁时发生错误: " + unlockError);
}
}
}
/**
* 主函数 - 运行所有示例
*/
function main() {
printl("苹果OCR高级综合示例集合\n");
// 运行各个示例
ocrClickExample();
ocrClickRandomExample();
ocrRegexClickExample();
ocrIterateAndClickExample();
regionOcrClickExample();
comprehensiveOcrExample();
lockedOcrExample();
printl("\n所有示例执行完毕!");
}
// 调用主函数运行示例
main();
/**
* 使用说明:
* 1. 这个示例文件包含了7种不同的OCR识别和点击方式
* 2. 你可以根据实际需求选择适合的方法
* 3. 在实际使用时,可能需要根据具体应用的界面调整代码
* 4. 对于连续操作,适当添加sleep等待时间以确保操作的稳定性
* 5. 错误处理是必要的,可以根据需要扩展异常处理逻辑
*/
复制代码
欢迎光临 B2B网络软件 (http://bbs.niubt.cn/)
Powered by Discuz! X3.2