YYPOST群发软件 发表于 前天 06:49

苹果IOS系统找字OCR方法例子



苹果IOS系统找字OCR方法例子



// 苹果系统找字方法综合示例
// 交流QQ群711841924

function printl(msg) {
    console.log(msg);
}

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

function main() {
    printl("========== 苹果系统找字方法综合示例 ==========\n");

    example1_getAllString();      // 示例1: 获取所有识别的文本
    example2_getAllDetect();      // 示例2: 获取所有识别的目标对象
    example3_findText();            // 示例3: 精确查找特定文本
    example4_findIncludeText();   // 示例4: 查找包含特定文本的单个目标
    example5_findIncludeTexts();    // 示例5: 查找包含特定文本的多个目标
    example6_findTextWithRegex();   // 示例6: 正则表达式查找
    example7_getJSON();             // 示例7: 获取JSON格式结果
    example8_lockOCR();             // 示例8: OCR缓存锁定机制
    example9_clickRandom();         // 示例9: 随机位置点击
    example10_regionOCR();          // 示例10: 区域OCR识别
    example11_iterateTexts();       // 示例11: 遍历所有文本
    example12_stringMethods();      // 示例12: JavaScript String类方法
    example13_opencvOCR();          // 示例13: OpenCV找图找字
    example14_safeOCR();            // 示例14: 安全OCR操作(带重试机制)
    example15_comprehensiveFlow();// 示例15: 综合自动化流程

    printl("\n========== 所有示例执行完毕 ==========");
}

function example1_getAllString() {
    printl("【示例1】getAllString - 获取所有识别的文本");
    try {
      var ocrResult = screen.ocr(0, 0, 1, 1);
      var allText = ocrResult.getAllString();
      printl("识别到的所有文本: " + allText);
      printl("文本长度: " + allText.length);
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

function example2_getAllDetect() {
    printl("【示例2】getAllDetect - 获取所有识别的目标对象");
    try {
      var ocrResult = screen.ocr(0, 0, 1, 1);
      var detects = ocrResult.getAllDetect();
      printl("识别到的目标数量: " + detects.length);
      for (var i = 0; i < Math.min(5, detects.length); i++) {
            printl("目标" + i + ": " + detects.text);
      }
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

function example3_findText() {
    printl("【示例3】findText - 精确查找特定文本");
    try {
      var ocrResult = screen.ocr(0, 0, 1, 1);
      var target = ocrResult.findText("确定", );
      if (target != null) {
            printl("找到文本: " + target.text);
            printl("位置: x=" + target.x + ", y=" + target.y);
            printl("尺寸: width=" + target.width + ", height=" + target.height);
      } else {
            printl("未找到文本 '确定'");
      }
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

function example4_findIncludeText() {
    printl("【示例4】findIncludeText - 查找包含特定文本的单个目标");
    try {
      var ocrResult = screen.ocr(0, 0, 1, 1);
      var target = ocrResult.findIncludeText("设置", );
      if (target != null) {
            printl("找到包含 '设置' 的文本: " + target.text);
      } else {
            printl("未找到包含 '设置' 的文本");
      }
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

function example5_findIncludeTexts() {
    printl("【示例5】findIncludeTexts - 查找包含特定文本的多个目标");
    try {
      var ocrResult = screen.ocr(0, 0, 1, 1);
      var targets = ocrResult.findIncludeTexts("按钮", );
      printl("找到包含 '按钮' 的文本数量: " + targets.length);
      for (var i = 0; i < Math.min(3, targets.length); i++) {
            printl("目标" + i + ": " + targets.text);
      }
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

function example6_findTextWithRegex() {
    printl("【示例6】findTextWithRegex - 正则表达式查找");
    try {
      var ocrResult = screen.ocr(0, 0, 1, 1);
      var targets = ocrResult.findTextWithRegex("\\d+", );
      printl("找到包含数字的文本数量: " + targets.length);
      for (var i = 0; i < Math.min(3, targets.length); i++) {
            printl("数字文本" + i + ": " + targets.text);
      }

      var diamondTargets = ocrResult.findTextWithRegex("领.*?钻石", );
      if (diamondTargets != null && diamondTargets.length > 0) {
            printl("找到匹配 '领.*?钻石' 的文本: " + diamondTargets.text);
      }
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

function example7_getJSON() {
    printl("【示例7】getJSON - 获取JSON格式结果");
    try {
      var ocrResult = screen.ocr(0, 0, 1, 1);
      var json = ocrResult.getJSON();
      printl("JSON结果长度: " + json.length);
      printl("JSON前100字符: " + json.substring(0, 100));
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

function example8_lockOCR() {
    printl("【示例8】lockOCR/unLock - OCR缓存锁定");
    try {
      OCR.lockOCR();
      printl("OCR结果已锁定");

      var image = screen.screenShotFull();
      var result1 = image.ocr(0, 0, 1, 1);
      var text1 = result1.getAllString();
      printl("第一次识别文本长度: " + text1.length);

      var result2 = image.ocr(0, 0, 1, 1);
      var target = result2.findIncludeText("设置", );
      if (target != null) {
            printl("在锁定状态下找到文本: " + target.text);
      }

      image.close();
      OCR.unLock();
      printl("OCR结果已解锁");
    } catch (e) {
      printl("错误: " + e);
      try {
            OCR.unLock();
      } catch (unlockError) {
            printl("解锁错误: " + unlockError);
      }
    }
    printl("");
}

function example9_clickRandom() {
    printl("【示例9】clickRandom - 随机位置点击");
    try {
      var ocrResult = screen.ocr(0, 0, 1, 1);
      var target = ocrResult.findText("确定", );
      if (target != null) {
            printl("找到文本: " + target.text);
            printl("方式1: 使用clickRandom()在文本区域内随机点击");
            target.clickRandom();
            printl("点击成功");
      } else {
            printl("未找到文本 '确定'");
      }
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

function example10_regionOCR() {
    printl("【示例10】区域OCR识别");
    try {
      var region = ;
      printl("识别区域: [" + region.join(", ") + "]");

      var ocrResult = screen.ocr(region, region, region, region);
      var allText = ocrResult.getAllString();
      printl("区域内识别到的文本长度: " + allText.length);

      var target = ocrResult.findText("下一步", region);
      if (target != null) {
            printl("在区域内找到文本: " + target.text);
      } else {
            printl("区域内未找到文本 '下一步'");
      }
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

function example11_iterateTexts() {
    printl("【示例11】遍历所有文本");
    try {
      var ocrResult = screen.ocr(0, 0, 1, 1);
      var allDetects = ocrResult.getAllDetect();
      printl("总共识别到 " + allDetects.length + " 个文本元素");

      for (var i = 0; i < Math.min(5, allDetects.length); i++) {
            var detect = allDetects;
            printl("文本" + i + ": " + detect.text);
            printl("位置: [" + detect.x + ", " + detect.y + ", " + detect.width + ", " + detect.height + "]");

            if (detect.text.includes("取消")) {
                printl("找到包含 '取消' 的文本,准备点击");
                detect.clickRandom();
                printl("点击成功");
                break;
            }
      }
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

function example12_stringMethods() {
    printl("【示例12】JavaScript String类方法");
    var text = "Hello World";

    printl("原始文本: " + text);
    printl("charAt(0): " + text.charAt(0));
    printl("indexOf('o'): " + text.indexOf("o"));
    printl("lastIndexOf('o'): " + text.lastIndexOf("o"));
    printl("length: " + text.length);
    printl("match(//g): " + text.match(//g));
    printl("replace('Hello', 'Hi'): " + text.replace("Hello", "Hi"));
    printl("replaceAll('l', 'L'): " + text.replaceAll("l", "L"));
    printl("split(' '): " + text.split(" "));
    printl("startsWith('He'): " + text.startsWith("He"));
    printl("substr(0, 5): " + text.substr(0, 5));
    printl("substring(0, 5): " + text.substring(0, 5));
    printl("trim(): '" + "Hello".trim() + "'");
    printl("");
}

function example13_opencvOCR() {
    printl("【示例13】OpenCV OCR");
    try {
      var ocr1 = opencv.OCREx('图色994166.cv');
      if (ocr1 != null) {
            printl("OpenCV OCR识别成功");
            var allText = ocr1.getAllString();
            printl("识别到的文本: " + allText);

            var targetText = ocr1.findIncludeText("确定");
            if (targetText != null) {
                printl("找到包含 '确定' 的文本");
                targetText.clickRandom();
                printl("点击成功");
            } else {
                printl("未找到包含 '确定' 的文本");
            }
      } else {
            printl("OpenCV OCR初始化失败");
      }
    } catch (e) {
      printl("错误: " + e);
    }
    printl("");
}

function example14_safeOCR() {
    printl("【示例14】安全OCR操作(带重试机制)");
   
    function safeFindText(targetText, region, maxRetries) {
      for (var retry = 0; retry < maxRetries; retry++) {
            try {
                printl("查找文本: " + targetText + " (尝试 " + (retry + 1) + "/" + maxRetries + ")");
                var ocrResult = screen.ocr(region, region, region, region);
                var detect = ocrResult.findIncludeText(targetText, region);
               
                if (detect) {
                  printl("找到文本: " + targetText);
                  return detect;
                }
               
                if (retry < maxRetries - 1) {
                  printl("未找到,等待重试...");
                  sleep(1000);
                }
            } catch (error) {
                printl("查找出错: " + error);
                if (retry < maxRetries - 1) {
                  OCR.unLock();
                  sleep(2000);
                }
            }
      }
      printl("未找到文本: " + targetText);
      return null;
    }

    var detect = safeFindText("设置", , 2);
    if (detect) {
      printl("安全查找成功");
    }
    printl("");
}

function example15_comprehensiveFlow() {
    printl("【示例15】综合自动化流程");
    try {
      printl("步骤1: 查找并点击 '设置'");
      var ocrResult1 = screen.ocr(0, 0, 1, 1);
      var settingTarget = ocrResult1.findIncludeText("设置", );
      
      if (settingTarget != null) {
            settingTarget.clickRandom();
            printl("点击设置成功");
            sleep(2000);

            printl("步骤2: 查找并点击 '通用'");
            var ocrResult2 = screen.ocr(0, 0, 1, 1);
            var generalTarget = ocrResult2.findText("通用", );
            
            if (generalTarget != null) {
                generalTarget.clickRandom();
                printl("点击通用成功");
                sleep(2000);

                printl("步骤3: 查找数字");
                var ocrResult3 = screen.ocr(0, 0, 1, 1);
                var numberTargets = ocrResult3.findTextWithRegex("\\d+", );
               
                if (numberTargets != null && numberTargets.length > 0) {
                  printl("找到 " + numberTargets.length + " 个数字");
                  printl("第一个数字: " + numberTargets.text);
                }
            } else {
                printl("未找到文本 '通用'");
            }
      } else {
            printl("未找到包含 '设置' 的文本");
      }
    } catch (e) {
      printl("综合流程错误: " + e);
    }
    printl("");
}

main();



页: [1]
查看完整版本: 苹果IOS系统找字OCR方法例子