B2B网络软件

标题: 苹果IOS系统找字OCR方法例子 [打印本页]

作者: YYPOST群发软件    时间: 3 小时前
标题: 苹果IOS系统找字OCR方法例子


苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子 B2B网络软件
苹果IOS系统找字OCR方法例子 B2B网络软件
苹果IOS系统找字OCR方法例子 B2B网络软件
  1. // 苹果系统找字方法综合示例
  2. // 交流QQ群711841924

  3. function printl(msg) {
  4.     console.log(msg);
  5. }

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

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

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

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

  28. function example1_getAllString() {
  29.     printl("【示例1】getAllString - 获取所有识别的文本");
  30.     try {
  31.         var ocrResult = screen.ocr(0, 0, 1, 1);
  32.         var allText = ocrResult.getAllString();
  33.         printl("识别到的所有文本: " + allText);
  34.         printl("文本长度: " + allText.length);
  35.     } catch (e) {
  36.         printl("错误: " + e);
  37.     }
  38.     printl("");
  39. }

  40. function example2_getAllDetect() {
  41.     printl("【示例2】getAllDetect - 获取所有识别的目标对象");
  42.     try {
  43.         var ocrResult = screen.ocr(0, 0, 1, 1);
  44.         var detects = ocrResult.getAllDetect();
  45.         printl("识别到的目标数量: " + detects.length);
  46.         for (var i = 0; i < Math.min(5, detects.length); i++) {
  47.             printl("目标" + i + ": " + detects[i].text);
  48.         }
  49.     } catch (e) {
  50.         printl("错误: " + e);
  51.     }
  52.     printl("");
  53. }

  54. function example3_findText() {
  55.     printl("【示例3】findText - 精确查找特定文本");
  56.     try {
  57.         var ocrResult = screen.ocr(0, 0, 1, 1);
  58.         var target = ocrResult.findText("确定", [0, 0, 1, 1]);
  59.         if (target != null) {
  60.             printl("找到文本: " + target.text);
  61.             printl("位置: x=" + target.x + ", y=" + target.y);
  62.             printl("尺寸: width=" + target.width + ", height=" + target.height);
  63.         } else {
  64.             printl("未找到文本 '确定'");
  65.         }
  66.     } catch (e) {
  67.         printl("错误: " + e);
  68.     }
  69.     printl("");
  70. }

  71. function example4_findIncludeText() {
  72.     printl("【示例4】findIncludeText - 查找包含特定文本的单个目标");
  73.     try {
  74.         var ocrResult = screen.ocr(0, 0, 1, 1);
  75.         var target = ocrResult.findIncludeText("设置", [0, 0, 1, 1]);
  76.         if (target != null) {
  77.             printl("找到包含 '设置' 的文本: " + target.text);
  78.         } else {
  79.             printl("未找到包含 '设置' 的文本");
  80.         }
  81.     } catch (e) {
  82.         printl("错误: " + e);
  83.     }
  84.     printl("");
  85. }

  86. function example5_findIncludeTexts() {
  87.     printl("【示例5】findIncludeTexts - 查找包含特定文本的多个目标");
  88.     try {
  89.         var ocrResult = screen.ocr(0, 0, 1, 1);
  90.         var targets = ocrResult.findIncludeTexts("按钮", [0, 0, 1, 1]);
  91.         printl("找到包含 '按钮' 的文本数量: " + targets.length);
  92.         for (var i = 0; i < Math.min(3, targets.length); i++) {
  93.             printl("目标" + i + ": " + targets[i].text);
  94.         }
  95.     } catch (e) {
  96.         printl("错误: " + e);
  97.     }
  98.     printl("");
  99. }

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

  109.         var diamondTargets = ocrResult.findTextWithRegex("领.*?钻石", [0, 0, 1, 1]);
  110.         if (diamondTargets != null && diamondTargets.length > 0) {
  111.             printl("找到匹配 '领.*?钻石' 的文本: " + diamondTargets[0].text);
  112.         }
  113.     } catch (e) {
  114.         printl("错误: " + e);
  115.     }
  116.     printl("");
  117. }

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

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

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

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

  144.         image.close();
  145.         OCR.unLock();
  146.         printl("OCR结果已解锁");
  147.     } catch (e) {
  148.         printl("错误: " + e);
  149.         try {
  150.             OCR.unLock();
  151.         } catch (unlockError) {
  152.             printl("解锁错误: " + unlockError);
  153.         }
  154.     }
  155.     printl("");
  156. }

  157. function example9_clickRandom() {
  158.     printl("【示例9】clickRandom - 随机位置点击");
  159.     try {
  160.         var ocrResult = screen.ocr(0, 0, 1, 1);
  161.         var target = ocrResult.findText("确定", [0, 0, 1, 1]);
  162.         if (target != null) {
  163.             printl("找到文本: " + target.text);
  164.             printl("方式1: 使用clickRandom()在文本区域内随机点击");
  165.             target.clickRandom();
  166.             printl("点击成功");
  167.         } else {
  168.             printl("未找到文本 '确定'");
  169.         }
  170.     } catch (e) {
  171.         printl("错误: " + e);
  172.     }
  173.     printl("");
  174. }

  175. function example10_regionOCR() {
  176.     printl("【示例10】区域OCR识别");
  177.     try {
  178.         var region = [0.2, 0.3, 0.8, 0.7];
  179.         printl("识别区域: [" + region.join(", ") + "]");

  180.         var ocrResult = screen.ocr(region[0], region[1], region[2], region[3]);
  181.         var allText = ocrResult.getAllString();
  182.         printl("区域内识别到的文本长度: " + allText.length);

  183.         var target = ocrResult.findText("下一步", region);
  184.         if (target != null) {
  185.             printl("在区域内找到文本: " + target.text);
  186.         } else {
  187.             printl("区域内未找到文本 '下一步'");
  188.         }
  189.     } catch (e) {
  190.         printl("错误: " + e);
  191.     }
  192.     printl("");
  193. }

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

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

  204.             if (detect.text.includes("取消")) {
  205.                 printl("  找到包含 '取消' 的文本,准备点击");
  206.                 detect.clickRandom();
  207.                 printl("  点击成功");
  208.                 break;
  209.             }
  210.         }
  211.     } catch (e) {
  212.         printl("错误: " + e);
  213.     }
  214.     printl("");
  215. }

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

  219.     printl("原始文本: " + text);
  220.     printl("charAt(0): " + text.charAt(0));
  221.     printl("indexOf('o'): " + text.indexOf("o"));
  222.     printl("lastIndexOf('o'): " + text.lastIndexOf("o"));
  223.     printl("length: " + text.length);
  224.     printl("match(/[a-z]/g): " + text.match(/[a-z]/g));
  225.     printl("replace('Hello', 'Hi'): " + text.replace("Hello", "Hi"));
  226.     printl("replaceAll('l', 'L'): " + text.replaceAll("l", "L"));
  227.     printl("split(' '): " + text.split(" "));
  228.     printl("startsWith('He'): " + text.startsWith("He"));
  229.     printl("substr(0, 5): " + text.substr(0, 5));
  230.     printl("substring(0, 5): " + text.substring(0, 5));
  231.     printl("trim(): '" + "  Hello  ".trim() + "'");
  232.     printl("");
  233. }

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

  242.             var targetText = ocr1.findIncludeText("确定");
  243.             if (targetText != null) {
  244.                 printl("找到包含 '确定' 的文本");
  245.                 targetText.clickRandom();
  246.                 printl("点击成功");
  247.             } else {
  248.                 printl("未找到包含 '确定' 的文本");
  249.             }
  250.         } else {
  251.             printl("OpenCV OCR初始化失败");
  252.         }
  253.     } catch (e) {
  254.         printl("错误: " + e);
  255.     }
  256.     printl("");
  257. }

  258. function example14_safeOCR() {
  259.     printl("【示例14】安全OCR操作(带重试机制)");
  260.    
  261.     function safeFindText(targetText, region, maxRetries) {
  262.         for (var retry = 0; retry < maxRetries; retry++) {
  263.             try {
  264.                 printl("查找文本: " + targetText + " (尝试 " + (retry + 1) + "/" + maxRetries + ")");
  265.                 var ocrResult = screen.ocr(region[0], region[1], region[2], region[3]);
  266.                 var detect = ocrResult.findIncludeText(targetText, region);
  267.                
  268.                 if (detect) {
  269.                     printl("找到文本: " + targetText);
  270.                     return detect;
  271.                 }
  272.                
  273.                 if (retry < maxRetries - 1) {
  274.                     printl("未找到,等待重试...");
  275.                     sleep(1000);
  276.                 }
  277.             } catch (error) {
  278.                 printl("查找出错: " + error);
  279.                 if (retry < maxRetries - 1) {
  280.                     OCR.unLock();
  281.                     sleep(2000);
  282.                 }
  283.             }
  284.         }
  285.         printl("未找到文本: " + targetText);
  286.         return null;
  287.     }

  288.     var detect = safeFindText("设置", [0, 0, 1, 1], 2);
  289.     if (detect) {
  290.         printl("安全查找成功");
  291.     }
  292.     printl("");
  293. }

  294. function example15_comprehensiveFlow() {
  295.     printl("【示例15】综合自动化流程");
  296.     try {
  297.         printl("步骤1: 查找并点击 '设置'");
  298.         var ocrResult1 = screen.ocr(0, 0, 1, 1);
  299.         var settingTarget = ocrResult1.findIncludeText("设置", [0, 0, 1, 1]);
  300.         
  301.         if (settingTarget != null) {
  302.             settingTarget.clickRandom();
  303.             printl("点击设置成功");
  304.             sleep(2000);

  305.             printl("步骤2: 查找并点击 '通用'");
  306.             var ocrResult2 = screen.ocr(0, 0, 1, 1);
  307.             var generalTarget = ocrResult2.findText("通用", [0, 0, 1, 1]);
  308.             
  309.             if (generalTarget != null) {
  310.                 generalTarget.clickRandom();
  311.                 printl("点击通用成功");
  312.                 sleep(2000);

  313.                 printl("步骤3: 查找数字");
  314.                 var ocrResult3 = screen.ocr(0, 0, 1, 1);
  315.                 var numberTargets = ocrResult3.findTextWithRegex("\\d+", [0, 0, 1, 1]);
  316.                
  317.                 if (numberTargets != null && numberTargets.length > 0) {
  318.                     printl("找到 " + numberTargets.length + " 个数字");
  319.                     printl("第一个数字: " + numberTargets[0].text);
  320.                 }
  321.             } else {
  322.                 printl("未找到文本 '通用'");
  323.             }
  324.         } else {
  325.             printl("未找到包含 '设置' 的文本");
  326.         }
  327.     } catch (e) {
  328.         printl("综合流程错误: " + e);
  329.     }
  330.     printl("");
  331. }

  332. main();
复制代码








欢迎光临 B2B网络软件 (http://bbs.niubt.cn/) Powered by Discuz! X3.2