 | |  |  |
苹果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[i].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("确定", [0, 0, 1, 1]);
- 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("设置", [0, 0, 1, 1]);
- 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("按钮", [0, 0, 1, 1]);
- printl("找到包含 '按钮' 的文本数量: " + targets.length);
- for (var i = 0; i < Math.min(3, targets.length); i++) {
- printl("目标" + i + ": " + targets[i].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+", [0, 0, 1, 1]);
- printl("找到包含数字的文本数量: " + targets.length);
- for (var i = 0; i < Math.min(3, targets.length); i++) {
- printl("数字文本" + i + ": " + targets[i].text);
- }
- var diamondTargets = ocrResult.findTextWithRegex("领.*?钻石", [0, 0, 1, 1]);
- if (diamondTargets != null && diamondTargets.length > 0) {
- printl("找到匹配 '领.*?钻石' 的文本: " + diamondTargets[0].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("设置", [0, 0, 1, 1]);
- 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("确定", [0, 0, 1, 1]);
- 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 = [0.2, 0.3, 0.8, 0.7];
- printl("识别区域: [" + region.join(", ") + "]");
- var ocrResult = screen.ocr(region[0], region[1], region[2], region[3]);
- 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[i];
- 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(/[a-z]/g): " + text.match(/[a-z]/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[0], region[1], region[2], region[3]);
- 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("设置", [0, 0, 1, 1], 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("设置", [0, 0, 1, 1]);
-
- if (settingTarget != null) {
- settingTarget.clickRandom();
- printl("点击设置成功");
- sleep(2000);
- printl("步骤2: 查找并点击 '通用'");
- var ocrResult2 = screen.ocr(0, 0, 1, 1);
- var generalTarget = ocrResult2.findText("通用", [0, 0, 1, 1]);
-
- if (generalTarget != null) {
- generalTarget.clickRandom();
- printl("点击通用成功");
- sleep(2000);
- printl("步骤3: 查找数字");
- var ocrResult3 = screen.ocr(0, 0, 1, 1);
- var numberTargets = ocrResult3.findTextWithRegex("\\d+", [0, 0, 1, 1]);
-
- if (numberTargets != null && numberTargets.length > 0) {
- printl("找到 " + numberTargets.length + " 个数字");
- printl("第一个数字: " + numberTargets[0].text);
- }
- } else {
- printl("未找到文本 '通用'");
- }
- } else {
- printl("未找到包含 '设置' 的文本");
- }
- } catch (e) {
- printl("综合流程错误: " + e);
- }
- printl("");
- }
- main();
复制代码
| |  | |  |
|