B2B网络软件

标题: 苹果脚本7种不同的OCR识别 [打印本页]

作者: YYPOST群发软件    时间: 3 小时前
标题: 苹果脚本7种不同的OCR识别
苹果脚本7种不同的OCR识别


苹果脚本7种不同的OCR识别 B2B网络软件

苹果脚本7种不同的OCR识别 B2B网络软件

  1. //OCR文字识别[OCR]高级综合示例,交流QQ群711841924
  2. // 本文件包含7种不同的OCR识别和点击方法的高级应用

  3. /**
  4. * 苹果OCR高级综合示例
  5. * 这个示例展示了如何使用OCR进行文本识别并执行各种点击操作
  6. * 🍎交流QQ群711841924群一,苹果内测群,528816639
  7. */

  8. // 获取屏幕尺寸
  9. var screenWidth = screen.getScreenWidth();
  10. var screenHeight = screen.getScreenHeight();
  11. printl("📱 屏幕尺寸: " + screenWidth + "x" + screenHeight);

  12. /**
  13. * 持续快速点击函数 - 移动一次后持续点击
  14. * @param {number} x - X坐标(比例0-1)
  15. * @param {number} y - Y坐标(比例0-1)
  16. * @param {number} count - 点击次数
  17. * @param {number} interval - 点击间隔(毫秒),默认2ms
  18. */
  19. function continuousClick(x, y, count, interval) {
  20.     if (interval === undefined) interval = 2;
  21.    
  22.     // 检查坐标有效性
  23.     if (isNaN(x) || isNaN(y)) {
  24.         printl("⚠️ 警告: 无效的坐标参数");
  25.         return;
  26.     }
  27.    
  28.     // 将比例坐标转换为实际坐标
  29.     var realX = Math.floor(x * screenWidth);
  30.     var realY = Math.floor(y * screenHeight);
  31.    
  32.     printl("移动到目标位置 (" + realX + ", " + realY + ")...");
  33.     hid.moveToRealPoint(realX, realY);
  34.     sleep.millisecond(50);
  35.    
  36.     // 持续快速点击
  37.     for (var i = 0; i < count; i++) {
  38.         hid.mouseDown();
  39.         hid.mouseUp();
  40.         
  41.         // 最小延迟等待
  42.         if (i < count - 1 && interval > 0) {
  43.             var start = new Date().getTime();
  44.             while (new Date().getTime() - start < interval) {
  45.                 // 空循环等待
  46.             }
  47.         }
  48.     }
  49. }

  50. /**
  51. * 示例1: 基本OCR识别与精确文本点击
  52. * 使用findText方法查找精确文本并点击
  53. */
  54. function ocrClickExample() {
  55.     printl("==== 示例1: 基本OCR识别与精确文本点击 ====");
  56.    
  57.     try {
  58.         // 执行全屏幕OCR识别
  59.         var ocrResult = screen.ocr(0, 0, 1, 1);
  60.         
  61.         // 查找精确文本"确定"
  62.         var target = ocrResult.findText("确定", [0, 0, 1, 1]);
  63.         
  64.         if (target != null) {
  65.             printl("找到文本 '确定',准备点击");
  66.             
  67.             // 直接使用内置的click方法
  68.             target.click();
  69.             printl("点击成功");
  70.         } else {
  71.             printl("未找到文本 '确定'");
  72.         }
  73.     } catch (e) {
  74.         printl("OCR操作发生错误: " + e);
  75.     }
  76. }

  77. /**
  78. * 示例2: 使用内置的clickRandom方法进行随机位置点击
  79. * 这是更简单的点击方式
  80. */
  81. function ocrClickRandomExample() {
  82.     printl("\n==== 示例2: 使用clickRandom方法进行随机位置点击 ====");
  83.    
  84.     try {
  85.         // 执行OCR识别
  86.         var ocrResult = screen.ocr(0, 0, 1, 1);
  87.         
  88.         // 查找包含"设置"的文本
  89.         var target = ocrResult.findIncludeText("设置", [0, 0, 1, 1]);
  90.         
  91.         if (target != null) {
  92.             printl("找到包含 '设置' 的文本,准备在其区域内随机点击");
  93.             
  94.             // 使用内置的clickRandom方法在文本区域内随机位置点击
  95.             target.clickRandom();
  96.             printl("随机位置点击成功");
  97.         } else {
  98.             printl("未找到包含 '设置' 的文本");
  99.         }
  100.     } catch (e) {
  101.         printl("OCR操作发生错误: " + e);
  102.     }
  103. }

  104. /**
  105. * 示例3: 使用正则表达式查找多个匹配项并点击第一个
  106. */
  107. function ocrRegexClickExample() {
  108.     printl("\n==== 示例3: 使用正则表达式查找多个匹配项并点击第一个 ====");
  109.    
  110.     try {
  111.         // 执行OCR识别
  112.         var ocrResult = screen.ocr(0, 0, 1, 1);
  113.         
  114.         // 使用正则表达式查找包含数字的文本
  115.         var targets = ocrResult.findTextWithRegex("\\d+", [0, 0, 1, 1]);
  116.         
  117.         if (targets != null && targets.length > 0) {
  118.             printl("找到 " + targets.length + " 个包含数字的文本");
  119.             printl("第一个匹配的文本是: " + targets[0].text());
  120.             
  121.             // 点击第一个匹配项
  122.             targets[0].clickRandom();
  123.             printl("点击第一个匹配项成功");
  124.         } else {
  125.             printl("未找到包含数字的文本");
  126.         }
  127.     } catch (e) {
  128.         printl("OCR操作发生错误: " + e);
  129.     }
  130. }

  131. /**
  132. * 示例4: OCR识别后遍历所有文本并点击特定条件的文本
  133. */
  134. function ocrIterateAndClickExample() {
  135.     printl("\n==== 示例4: OCR识别后遍历所有文本并点击特定条件的文本 ====");
  136.    
  137.     try {
  138.         // 执行OCR识别
  139.         var ocrResult = screen.ocr(0, 0, 1, 1);
  140.         
  141.         // 获取所有识别到的文本
  142.         var allDetects = ocrResult.getAllDetect();
  143.         
  144.         printl("总共识别到 " + allDetects.length + " 个文本元素");
  145.         
  146.         // 遍历所有文本
  147.         for (var i = 0; i < allDetects.length; i++) {
  148.             var detect = allDetects[i];
  149.             var textContent = detect.text();
  150.             printl("文本 " + i + ": " + textContent);
  151.             
  152.             // 如果文本包含"取消",点击它
  153.             if (textContent.includes("取消")) {
  154.                 printl("找到包含 '取消' 的文本,准备点击");
  155.                 detect.clickRandom();
  156.                 printl("点击成功");
  157.                 break; // 点击后退出循环
  158.             }
  159.         }
  160.     } catch (e) {
  161.         printl("OCR操作发生错误: " + e);
  162.     }
  163. }

  164. /**
  165. * 示例5: 区域OCR识别并点击
  166. * 只在屏幕的某个特定区域进行OCR识别
  167. */
  168. function regionOcrClickExample() {
  169.     printl("\n==== 示例5: 区域OCR识别并点击 ====");
  170.    
  171.     try {
  172.         // 定义一个区域: 屏幕的中间部分 (宽度: 60%, 高度: 40%, 居中)
  173.         var region = [0.2, 0.3, 0.8, 0.7];
  174.         
  175.         printl("在区域 [" + region[0] + ", " + region[1] + ", " + region[2] + ", " + region[3] + "] 内进行OCR识别");
  176.         
  177.         // 在指定区域执行OCR识别
  178.         var ocrResult = screen.ocr(region[0], region[1], region[2], region[3]);
  179.         
  180.         // 查找文本
  181.         var target = ocrResult.findText("下一步", region);
  182.         
  183.         if (target != null) {
  184.             printl("在指定区域找到文本 '下一步',准备点击");
  185.             target.clickRandom();
  186.             printl("点击成功");
  187.         } else {
  188.             printl("在指定区域未找到文本 '下一步'");
  189.         }
  190.     } catch (e) {
  191.         printl("OCR操作发生错误: " + e);
  192.     }
  193. }

  194. /**
  195. * 示例6: 综合示例 - 循环点击底部三个按钮
  196. * 在"软件"、"日志"、"设置"之间来回点击演示
  197. */
  198. function comprehensiveOcrExample() {
  199.     printl("\n==== 示例6: 循环点击底部三个按钮 ====");
  200.    
  201.     try {
  202.         // 定义要点击的按钮顺序
  203.         var buttons = ["软件", "日志", "设置"];
  204.         var rounds = 3; // 循环3轮
  205.         
  206.         printl("开始循环点击演示,共 " + rounds + " 轮");
  207.         printl("点击顺序: " + buttons.join(" -> ") + " -> " + buttons.join(" -> ") + "...");
  208.         printl("========================================");
  209.         
  210.         for (var round = 1; round <= rounds; round++) {
  211.             printl("\n--- 第 " + round + " 轮 ---");
  212.             
  213.             // 按顺序点击每个按钮
  214.             for (var i = 0; i < buttons.length; i++) {
  215.                 var buttonText = buttons[i];
  216.                 printl("\n[" + round + "." + (i+1) + "] 查找并点击: '" + buttonText + "'");
  217.                
  218.                 // 执行OCR识别
  219.                 var ocrResult = screen.ocr(0, 0, 1, 1);
  220.                 var target = ocrResult.findIncludeText(buttonText, [0, 0, 1, 1]);
  221.                
  222.                 if (target != null) {
  223.                     printl("  ✓ 找到 '" + buttonText + "',准备点击");
  224.                     target.clickRandom();
  225.                     printl("  ✓ 点击 '" + buttonText + "' 成功");
  226.                     
  227.                     // 等待一下,让用户看到效果
  228.                     if (i < buttons.length - 1 || round < rounds) {
  229.                         sleep.millisecond(1500);
  230.                     }
  231.                 } else {
  232.                     printl("  ✗ 未找到文本 '" + buttonText + "'");
  233.                 }
  234.             }
  235.             
  236.             printl("\n✓ 第 " + round + " 轮完成!");
  237.             
  238.             // 轮次之间稍作停顿
  239.             if (round < rounds) {
  240.                 printl("--- 休息2秒,准备下一轮 ---");
  241.                 sleep.millisecond(2000);
  242.             }
  243.         }
  244.         
  245.         printl("\n========================================");
  246.         printl("✅ 所有轮次完成!共点击 " + (rounds * buttons.length) + " 次");
  247.         
  248.     } catch (e) {
  249.         printl("综合示例发生错误: " + e);
  250.     }
  251. }

  252. /**
  253. * 示例7: 使用OCR锁定提高效率
  254. */
  255. function lockedOcrExample() {
  256.     printl("\n==== 示例7: 使用OCR锁定提高效率 ====");
  257.    
  258.     try {
  259.         // 锁定OCR识别结果
  260.         OCR.lockOCR();
  261.         printl("OCR结果已锁定");
  262.         
  263.         // 执行截图
  264.         var image = screen.screenShotFull();
  265.         
  266.         // 在锁定状态下进行多次识别操作
  267.         printl("执行第一次OCR识别");
  268.         var result1 = image.ocr(0, 0, 1, 1);
  269.         var text1 = result1.getAllString();
  270.         printl("第一次识别到的文本数量: " + text1.length);
  271.         
  272.         printl("执行第二次OCR识别");
  273.         var result2 = image.ocr(0, 0, 1, 1);
  274.         var settingTarget = result2.findIncludeText("设置", [0, 0, 1, 1]);
  275.         
  276.         if (settingTarget != null) {
  277.             printl("找到包含 '设置' 的文本");
  278.         }
  279.         
  280.         // 关闭图片
  281.         image.close();
  282.         
  283.         // 释放OCR锁
  284.         OCR.unLock();
  285.         printl("OCR结果已解锁");
  286.     } catch (e) {
  287.         printl("锁定OCR示例发生错误: " + e);
  288.         // 确保在错误情况下也能释放锁
  289.         try {
  290.             OCR.unLock();
  291.         } catch (unlockError) {
  292.             printl("释放锁时发生错误: " + unlockError);
  293.         }
  294.     }
  295. }

  296. /**
  297. * 主函数 - 运行所有示例
  298. */
  299. function main() {
  300.     printl("苹果OCR高级综合示例集合\n");
  301.    
  302.     // 运行各个示例
  303.     ocrClickExample();
  304.     ocrClickRandomExample();
  305.     ocrRegexClickExample();
  306.     ocrIterateAndClickExample();
  307.     regionOcrClickExample();
  308.     comprehensiveOcrExample();
  309.     lockedOcrExample();
  310.    
  311.     printl("\n所有示例执行完毕!");
  312. }

  313. // 调用主函数运行示例
  314. main();

  315. /**
  316. * 使用说明:
  317. * 1. 这个示例文件包含了7种不同的OCR识别和点击方式
  318. * 2. 你可以根据实际需求选择适合的方法
  319. * 3. 在实际使用时,可能需要根据具体应用的界面调整代码
  320. * 4. 对于连续操作,适当添加sleep等待时间以确保操作的稳定性
  321. * 5. 错误处理是必要的,可以根据需要扩展异常处理逻辑
  322. */
复制代码







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