YYPOST群发软件 发表于 2025-10-9 07:52:11

苹果系统里如何使用OCR进行文本识别并执行点击操作

苹果系统里如何使用OCR进行文本识别并执行点击操作

/**
* 苹果OCR点击示例
* 这个示例展示了如何使用OCR进行文本识别并执行点击操作
* 🍎交流QQ群711841924群一,苹果内测群,528816639
*/

/**
* 示例1: 基本OCR识别与精确文本点击
* 使用findText方法查找精确文本并点击
*/
function ocrClickExample() {
    printl("==== 示例1: 基本OCR识别与精确文本点击 ====");
   
    try {
      // 执行全屏幕OCR识别
      var ocrResult = screen.ocr(0, 0, 1, 1);
      
      // 查找精确文本"确定"
      var target = ocrResult.findText("确定", );
      
      if (target != null) {
            printl("找到文本 '确定',准备点击");
            
            // 获取文本的中心点坐标
            var x = target.x + target.width / 2;
            var y = target.y + target.height / 2;
            
            printl("点击坐标: x=" + x + ", y=" + y);
            
            // 执行点击操作
            hid.click(x * device.width, y * device.height);
            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("设置", );
      
      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+", );
      
      if (targets != null && targets.length > 0) {
            printl("找到 " + targets.length + " 个包含数字的文本");
            printl("第一个匹配的文本是: " + targets.text);
            
            // 点击第一个匹配项
            targets.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;
            printl("文本 " + i + ": " + detect.text + ", 位置: [" + detect.x + ", " + detect.y + ", " +
                  detect.width + ", " + detect.height + "]");
            
            // 如果文本包含"取消",点击它
            if (detect.text.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 = ;
      
      printl("在区域 [" + region + ", " + region + ", " + region + ", " + region + "] 内进行OCR识别");
      
      // 在指定区域执行OCR识别
      var ocrResult = screen.ocr(region, region, region, region);
      
      // 查找文本
      var target = ocrResult.findText("下一步", region);
      
      if (target != null) {
            printl("在指定区域找到文本 '下一步',准备点击");
            target.clickRandom();
            printl("点击成功");
      } else {
            printl("在指定区域未找到文本 '下一步'");
      }
    } catch (e) {
      printl("OCR操作发生错误: " + e);
    }
}

/**
* 示例6: 综合示例 - 连续OCR识别和点击操作
* 模拟一个简单的自动化流程
*/
function comprehensiveOcrExample() {
    printl("\n==== 示例6: 综合示例 - 连续OCR识别和点击操作 ====");
   
    try {
      // 步骤1: 查找并点击"设置"
      printl("步骤1: 查找并点击'设置'");
      var ocrResult1 = screen.ocr(0, 0, 1, 1);
      var settingTarget = ocrResult1.findIncludeText("设置", );
      
      if (settingTarget != null) {
            settingTarget.clickRandom();
            printl("点击设置成功");
            sleep(2000); // 等待2秒,让页面加载
            
            // 步骤2: 在新页面查找并点击"通用"
            printl("步骤2: 查找并点击'通用'");
            var ocrResult2 = screen.ocr(0, 0, 1, 1);
            var generalTarget = ocrResult2.findText("通用", );
            
            if (generalTarget != null) {
                generalTarget.clickRandom();
                printl("点击通用成功");
            } else {
                printl("未找到文本 '通用'");
            }
      } else {
            printl("未找到包含 '设置' 的文本");
      }
    } 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("设置", );
      
      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. 错误处理是必要的,可以根据需要扩展异常处理逻辑
*/

页: [1]
查看完整版本: 苹果系统里如何使用OCR进行文本识别并执行点击操作