信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 1|回复: 0
打印 上一主题 下一主题

[宣传软件网站动态] AIWROK软件找字与OCR方法汇总示例

[复制链接]

776

主题

860

帖子

5512

积分

积分
5512

资讯缩略图:

资讯发布日期:2026-02-06

资讯发布简介:AIWROK软件找字与OCR方法汇总示例

资讯关键词:AIWROK软件找字与OCR方法汇总示例

资讯所属分类:IT资讯 

联系:

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件网站分类目录 网址:http://www.postbbs.com/

资讯详细描述
AIWROK软件找字与OCR方法汇总示例

AIWROK软件找字与OCR方法汇总示例 b2b软件

AIWROK软件找字与OCR方法汇总示例 b2b软件

  1. // 找字与OCR方法汇总示例
  2. // 兼容ES5和Rhino引擎
  3. // 适用于安卓AIWROK环境
  4. // 技术交流QQ群711841924群一,苹果内测群,528816639

  5. /**
  6. * 模块:基础找字方法
  7. * 功能:提供多种文字查找方法
  8. */
  9. var FindTextMethods = {
  10.     /**
  11.      * 方法1:基础找字方法
  12.      * @param {string} text - 要查找的文字
  13.      * @param {number} timeout - 超时时间(毫秒)
  14.      * @returns {Object} 找到的文字位置信息
  15.      */
  16.     findTextBasic: function(text, timeout) {
  17.         timeout = timeout || 5000;
  18.         var start = new Date().getTime();
  19.         var result;
  20.         
  21.         while (new Date().getTime() - start < timeout) {
  22.             try {
  23.                 if (typeof auto !== 'undefined' && typeof auto.findText === 'function') {
  24.                     result = auto.findText(text, 0.8);
  25.                     if (result) {
  26.                         return result;
  27.                     }
  28.                 }
  29.             } catch (e) {
  30.                 // 忽略错误,继续尝试
  31.             }
  32.             sleep.millisecond(100);
  33.         }
  34.         
  35.         return null;
  36.     },
  37.    
  38.     /**
  39.      * 方法2:区域找字方法
  40.      * @param {string} text - 要查找的文字
  41.      * @param {number} x1 - 区域左上角X坐标
  42.      * @param {number} y1 - 区域左上角Y坐标
  43.      * @param {number} x2 - 区域右下角X坐标
  44.      * @param {number} y2 - 区域右下角Y坐标
  45.      * @returns {Object} 找到的文字位置信息
  46.      */
  47.     findTextInRegion: function(text, x1, y1, x2, y2) {
  48.         try {
  49.             if (typeof auto !== 'undefined' && typeof auto.findText === 'function') {
  50.                 var region = [x1, y1, x2, y2];
  51.                 var result = auto.findText(text, 0.8, region);
  52.                 return result;
  53.             }
  54.         } catch (e) {
  55.             // 忽略错误
  56.         }
  57.         return null;
  58.     },
  59.    
  60.     /**
  61.      * 方法3:模糊找字方法
  62.      * @param {string} text - 要查找的文字
  63.      * @param {number} similarity - 相似度(0-1)
  64.      * @returns {Object} 找到的文字位置信息
  65.      */
  66.     findTextFuzzy: function(text, similarity) {
  67.         similarity = similarity || 0.8;
  68.         try {
  69.             if (typeof auto !== 'undefined' && typeof auto.findText === 'function') {
  70.                 var result = auto.findText(text, similarity);
  71.                 return result;
  72.             }
  73.         } catch (e) {
  74.             // 忽略错误
  75.         }
  76.         return null;
  77.     },
  78.    
  79.     /**
  80.      * 方法4:多次尝试找字方法
  81.      * @param {string} text - 要查找的文字
  82.      * @param {number} maxAttempts - 最大尝试次数
  83.      * @param {number} interval - 尝试间隔(毫秒)
  84.      * @returns {Object} 找到的文字位置信息
  85.      */
  86.     findTextWithRetry: function(text, maxAttempts, interval) {
  87.         maxAttempts = maxAttempts || 5;
  88.         interval = interval || 1000;
  89.         
  90.         for (var i = 0; i < maxAttempts; i++) {
  91.             try {
  92.                 if (typeof auto !== 'undefined' && typeof auto.findText === 'function') {
  93.                     var result = auto.findText(text, 0.8);
  94.                     if (result) {
  95.                         return result;
  96.                     }
  97.                 }
  98.             } catch (e) {
  99.                 // 忽略错误,继续尝试
  100.             }
  101.             sleep.millisecond(interval);
  102.         }
  103.         
  104.         return null;
  105.     },
  106.    
  107.     /**
  108.      * 方法5:批量找字方法
  109.      * @param {Array} texts - 要查找的文字数组
  110.      * @returns {Object} 找到的第一个文字位置信息
  111.      */
  112.     findTextBatch: function(texts) {
  113.         for (var i = 0; i < texts.length; i++) {
  114.             try {
  115.                 if (typeof auto !== 'undefined' && typeof auto.findText === 'function') {
  116.                     var result = auto.findText(texts[i], 0.8);
  117.                     if (result) {
  118.                         return {
  119.                             text: texts[i],
  120.                             position: result
  121.                         };
  122.                     }
  123.                 }
  124.             } catch (e) {
  125.                 // 忽略错误,继续尝试下一个文字
  126.             }
  127.         }
  128.         
  129.         return null;
  130.     },
  131.    
  132.     /**
  133.      * 方法6:找字并点击方法
  134.      * @param {string} text - 要查找并点击的文字
  135.      * @param {number} timeout - 超时时间(毫秒)
  136.      * @returns {boolean} 是否成功点击
  137.      */
  138.     findTextAndClick: function(text, timeout) {
  139.         var result = this.findTextBasic(text, timeout);
  140.         if (result) {
  141.             var x = result.x + result.width / 2;
  142.             var y = result.y + result.height / 2;
  143.             // 添加随机偏移模拟真实点击
  144.             var randomX = x + (Math.random() - 0.5) * 10;
  145.             var randomY = y + (Math.random() - 0.5) * 10;
  146.             try {
  147.                 if (typeof touch !== 'undefined' && typeof touch.tap === 'function') {
  148.                     touch.tap(randomX, randomY);
  149.                     return true;
  150.                 }
  151.             } catch (e) {
  152.                 // 忽略错误
  153.             }
  154.         }
  155.         return false;
  156.     },
  157.    
  158.     /**
  159.      * 方法7:等待文字出现方法
  160.      * @param {string} text - 要等待的文字
  161.      * @param {number} timeout - 超时时间(秒)
  162.      * @returns {boolean} 是否在超时前找到文字
  163.      */
  164.     waitForText: function(text, timeout) {
  165.         timeout = timeout || 30;
  166.         var startTime = Date.now();
  167.         var timeoutMs = timeout * 1000;
  168.         
  169.         while (Date.now() - startTime < timeoutMs) {
  170.             try {
  171.                 if (typeof auto !== 'undefined' && typeof auto.findText === 'function') {
  172.                     var result = auto.findText(text, 0.8);
  173.                     if (result) {
  174.                         return true;
  175.                     }
  176.                 }
  177.             } catch (e) {
  178.                 // 忽略错误,继续尝试
  179.             }
  180.             sleep.millisecond(1000);
  181.         }
  182.         
  183.         return false;
  184.     }
  185. };

  186. /**
  187. * 模块:OCR方法
  188. * 功能:提供多种OCR文字识别方法
  189. */
  190. var OCRMethods = {
  191.     /**
  192.      * 方法1:基础OCR识别
  193.      * @param {number} x1 - 区域左上角X坐标
  194.      * @param {number} y1 - 区域左上角Y坐标
  195.      * @param {number} x2 - 区域右下角X坐标
  196.      * @param {number} y2 - 区域右下角Y坐标
  197.      * @returns {string} 识别到的文字
  198.      */
  199.     ocrBasic: function(x1, y1, x2, y2) {
  200.         try {
  201.             if (typeof ocr === 'function') {
  202.                 var result = ocr(x1, y1, x2, y2);
  203.                 return result;
  204.             }
  205.         } catch (e) {
  206.             // 忽略错误,返回空字符串
  207.         }
  208.         return "";
  209.     },
  210.    
  211.     /**
  212.      * 方法2:带语言设置的OCR识别
  213.      * @param {number} x1 - 区域左上角X坐标
  214.      * @param {number} y1 - 区域左上角Y坐标
  215.      * @param {number} x2 - 区域右下角X坐标
  216.      * @param {number} y2 - 区域右下角Y坐标
  217.      * @param {string} lang - 语言设置
  218.      * @returns {string} 识别到的文字
  219.      */
  220.     ocrWithLanguage: function(x1, y1, x2, y2, lang) {
  221.         try {
  222.             if (typeof ocr === 'function') {
  223.                 lang = lang || "chi_sim";
  224.                 var result = ocr(x1, y1, x2, y2, lang);
  225.                 return result;
  226.             }
  227.         } catch (e) {
  228.             // 忽略错误,返回空字符串
  229.         }
  230.         return "";
  231.     },
  232.    
  233.     /**
  234.      * 方法3:全屏OCR识别
  235.      * @returns {string} 识别到的文字
  236.      */
  237.     ocrFullScreen: function() {
  238.         try {
  239.             if (typeof ocr === 'function') {
  240.                 var screenWidth = 0;
  241.                 var screenHeight = 0;
  242.                 try {
  243.                     if (typeof screen !== 'undefined' && typeof screen.getScreenWidth === 'function') {
  244.                         screenWidth = screen.getScreenWidth();
  245.                         screenHeight = screen.getScreenHeight();
  246.                     }
  247.                 } catch (e) {
  248.                     // 忽略错误,使用默认值
  249.                 }
  250.                 var result = ocr(0, 0, screenWidth, screenHeight);
  251.                 return result;
  252.             }
  253.         } catch (e) {
  254.             // 忽略错误,返回空字符串
  255.         }
  256.         return "";
  257.     },
  258.    
  259.     /**
  260.      * 方法4:OCR识别并查找特定文字
  261.      * @param {number} x1 - 区域左上角X坐标
  262.      * @param {number} y1 - 区域左上角Y坐标
  263.      * @param {number} x2 - 区域右下角X坐标
  264.      * @param {number} y2 - 区域右下角Y坐标
  265.      * @param {string} keyword - 要查找的关键字
  266.      * @returns {boolean} 是否找到关键字
  267.      */
  268.     ocrAndFindKeyword: function(x1, y1, x2, y2, keyword) {
  269.         try {
  270.             var text = this.ocrBasic(x1, y1, x2, y2);
  271.             return text.indexOf(keyword) !== -1;
  272.         } catch (e) {
  273.             // 忽略错误,返回false
  274.         }
  275.         return false;
  276.     },
  277.    
  278.     /**
  279.      * 方法5:OCR识别并提取数字
  280.      * @param {number} x1 - 区域左上角X坐标
  281.      * @param {number} y1 - 区域左上角Y坐标
  282.      * @param {number} x2 - 区域右下角X坐标
  283.      * @param {number} y2 - 区域右下角Y坐标
  284.      * @returns {Array} 提取到的数字数组
  285.      */
  286.     ocrExtractNumbers: function(x1, y1, x2, y2) {
  287.         try {
  288.             var text = this.ocrBasic(x1, y1, x2, y2);
  289.             var numbers = text.match(/\d+/g) || [];
  290.             return numbers;
  291.         } catch (e) {
  292.             // 忽略错误,返回空数组
  293.         }
  294.         return [];
  295.     },
  296.    
  297.     /**
  298.      * 方法6:OCR识别并解析坐标
  299.      * @param {number} x1 - 区域左上角X坐标
  300.      * @param {number} y1 - 区域左上角Y坐标
  301.      * @param {number} x2 - 区域右下角X坐标
  302.      * @param {number} y2 - 区域右下角Y坐标
  303.      * @returns {Array} 解析到的坐标数组
  304.      */
  305.     ocrExtractCoordinates: function(x1, y1, x2, y2) {
  306.         try {
  307.             var text = this.ocrBasic(x1, y1, x2, y2);
  308.             var coords = [];
  309.             var regex = /(\d+),(\d+)/g;
  310.             var match;
  311.             
  312.             while ((match = regex.exec(text)) !== null) {
  313.                 coords.push({
  314.                     x: parseInt(match[1], 10),
  315.                     y: parseInt(match[2], 10)
  316.                 });
  317.             }
  318.             
  319.             return coords;
  320.         } catch (e) {
  321.             // 忽略错误,返回空数组
  322.         }
  323.         return [];
  324.     },
  325.    
  326.     /**
  327.      * 方法7:OCR识别并提取邮箱
  328.      * @param {number} x1 - 区域左上角X坐标
  329.      * @param {number} y1 - 区域左上角Y坐标
  330.      * @param {number} x2 - 区域右下角X坐标
  331.      * @param {number} y2 - 区域右下角Y坐标
  332.      * @returns {Array} 提取到的邮箱数组
  333.      */
  334.     ocrExtractEmails: function(x1, y1, x2, y2) {
  335.         try {
  336.             var text = this.ocrBasic(x1, y1, x2, y2);
  337.             var emails = text.match(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g) || [];
  338.             return emails;
  339.         } catch (e) {
  340.             // 忽略错误,返回空数组
  341.         }
  342.         return [];
  343.     },
  344.    
  345.     /**
  346.      * 方法8:OCR识别并提取URL
  347.      * @param {number} x1 - 区域左上角X坐标
  348.      * @param {number} y1 - 区域左上角Y坐标
  349.      * @param {number} x2 - 区域右下角X坐标
  350.      * @param {number} y2 - 区域右下角Y坐标
  351.      * @returns {Array} 提取到的URL数组
  352.      */
  353.     ocrExtractURLs: function(x1, y1, x2, y2) {
  354.         try {
  355.             var text = this.ocrBasic(x1, y1, x2, y2);
  356.             var urls = text.match(/https?:\/\/[\w\-]+(\.[\w\-]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/g) || [];
  357.             return urls;
  358.         } catch (e) {
  359.             // 忽略错误,返回空数组
  360.         }
  361.         return [];
  362.     },
  363.    
  364.     /**
  365.      * 方法9:基础文字查询方法 - 查询包含文字
  366.      * @param {string} text - 要查询的文字
  367.      * @returns {object|null} 识别到的目标对象或null
  368.      */
  369.     findIncludeText: function(text) {
  370.         try {
  371.             var result = new ocrResult().findIncludeText(text);
  372.             return result;
  373.         } catch (e) {
  374.             // 忽略错误,返回null
  375.         }
  376.         return null;
  377.     },
  378.    
  379.     /**
  380.      * 方法10:基础文字查询方法 - 查询包含文字(多目标)
  381.      * @param {string} text - 要查询的文字
  382.      * @returns {Array} 识别到的目标对象数组
  383.      */
  384.     findIncludeTexts: function(text) {
  385.         try {
  386.             var result = new ocrResult().findIncludeTexts(text);
  387.             return result;
  388.         } catch (e) {
  389.             // 忽略错误,返回空数组
  390.         }
  391.         return [];
  392.     },
  393.    
  394.     /**
  395.      * 方法11:基础文字查询方法 - 模糊查询(近似匹配)
  396.      * @param {string} text - 要查询的文字
  397.      * @returns {object|null} 识别到的模糊匹配目标或null
  398.      */
  399.     findSimText: function(text) {
  400.         try {
  401.             var img = screen.screenShotFull();
  402.             var ocrres = img.MLKitOcr('zh');
  403.             var result = ocrres.findSimText(text);
  404.             img.recycle();
  405.             return result;
  406.         } catch (e) {
  407.             // 忽略错误,返回null
  408.         }
  409.         return null;
  410.     },
  411.    
  412.     /**
  413.      * 方法12:基础文字查询方法 - 精确查询文字
  414.      * @param {string} text - 要查询的文字
  415.      * @returns {object|null} 识别到的精确目标或null
  416.      */
  417.     findText: function(text) {
  418.         try {
  419.             var img = screen.screenShotFull();
  420.             var ocrres = img.MLKitOcr('zh');
  421.             var result = ocrres.findText(text);
  422.             img.recycle();
  423.             return result;
  424.         } catch (e) {
  425.             // 忽略错误,返回null
  426.         }
  427.         return null;
  428.     },
  429.    
  430.     /**
  431.      * 方法13:基础文字查询方法 - 获取所有识别目标
  432.      * @returns {Array} 所有识别目标的数组
  433.      */
  434.     getAllDetect: function() {
  435.         try {
  436.             var result = new ocrResult().getAllDetect();
  437.             return result;
  438.         } catch (e) {
  439.             // 忽略错误,返回空数组
  440.         }
  441.         return [];
  442.     },
  443.    
  444.     /**
  445.      * 方法14:基础文字查询方法 - 获取所有识别文字
  446.      * @returns {string} 所有识别文字的拼接结果
  447.      */
  448.     getAllString: function() {
  449.         try {
  450.             var result = new ocrResult().getAllString();
  451.             return result;
  452.         } catch (e) {
  453.             // 忽略错误,返回空字符串
  454.         }
  455.         return "";
  456.     },
  457.    
  458.     /**
  459.      * 方法15:基础文字查询方法 - 获取JSON格式结果
  460.      * @returns {string} OCR识别结果的JSON字符串
  461.      */
  462.     getJson: function() {
  463.         try {
  464.             var result = new ocrResult().getJson();
  465.             return result;
  466.         } catch (e) {
  467.             // 忽略错误,返回空字符串
  468.         }
  469.         return "";
  470.     },
  471.    
  472.     /**
  473.      * 方法16:基础文字查询方法 - 获取JSON字符串
  474.      * @returns {string} OCR识别结果的JSON字符串
  475.      */
  476.     getJsonString: function() {
  477.         try {
  478.             var result = new ocrResult().getJsonString();
  479.             return result;
  480.         } catch (e) {
  481.             // 忽略错误,返回空字符串
  482.         }
  483.         return "";
  484.     },
  485.    
  486.     /**
  487.      * 方法17:核心识别方法 - MLKitOcr文字识别(Google MLKit引擎)
  488.      * @param {string} lang - 识别语言,默认"zh"
  489.      * @returns {object|null} OCR识别结果对象或null
  490.      */
  491.     MLKitOcr: function(lang) {
  492.         try {
  493.             lang = lang || "zh";
  494.             var img = screen.screenShotFull();
  495.             var result = img.MLKitOcr(lang);
  496.             img.recycle();
  497.             return result;
  498.         } catch (e) {
  499.             console.log("MLKitOcr error:", e.message);
  500.             return null;
  501.         }
  502.     },
  503.    
  504.     /**
  505.      * 方法18:核心识别方法 - MLKitOcrRect文字区域识别
  506.      * @param {string} lang - 识别语言,默认"zh"
  507.      * @param {Array} region - 识别区域的百分比坐标 [x1, y1, x2, y2]
  508.      * @returns {object|null} OCR识别结果对象或null
  509.      */
  510.     MLKitOcrRect: function(lang, region) {
  511.         try {
  512.             lang = lang || "zh";
  513.             region = region || [0, 0, 1, 1];
  514.             var img = screen.screenShotFull();
  515.             var result = img.MLKitOcrRect(lang, region);
  516.             img.recycle();
  517.             return result;
  518.         } catch (e) {
  519.             console.log("MLKitOcrRect error:", e.message);
  520.             return null;
  521.         }
  522.     },
  523.    
  524.     /**
  525.      * 方法19:核心识别方法 - aiworkOCR文字识别
  526.      * @param {number} size - 识别尺寸,推荐值:640、320
  527.      * @param {Array} region - 识别区域的百分比坐标 [x1, y1, x2, y2]
  528.      * @returns {object|null} OCR识别结果对象或null
  529.      */
  530.     aiworkOCR: function(size, region) {
  531.         try {
  532.             size = size || 640;
  533.             region = region || [0, 0, 1, 1];
  534.             var img = screen.screenShotFull();
  535.             var result = img.aiworkOCR(size, region);
  536.             img.recycle();
  537.             return result;
  538.         } catch (e) {
  539.             console.log("aiworkOCR error:", e.message);
  540.             return null;
  541.         }
  542.     },
  543.    
  544.     /**
  545.      * 方法20:核心识别方法 - paddleOCR文字识别
  546.      * @param {number} size - 识别尺寸,推荐值:640、320
  547.      * @param {Array} region - 识别区域的百分比坐标 [x1, y1, x2, y2]
  548.      * @returns {object|null} OCR识别结果对象或null
  549.      */
  550.     paddleOCR: function(size, region) {
  551.         try {
  552.             size = size || 640;
  553.             region = region || [0, 0, 1, 1];
  554.             var img = screen.screenShotFull();
  555.             var result = img.paddleOCR(size, region);
  556.             img.recycle();
  557.             return result;
  558.         } catch (e) {
  559.             console.log("paddleOCR error:", e.message);
  560.             return null;
  561.         }
  562.     },
  563.    
  564.     /**
  565.      * 方法21:OpenCV相关方法 - 通过训练字库识别
  566.      * @param {object} matImg - 输入的图片对象(Mat类型)
  567.      * @param {string} dictPath - 字库文件路径/名称
  568.      * @param {number} threshold - 相似度阈值(0~1)
  569.      * @param {number} expectedCount - 预期识别的文字数量
  570.      * @param {Array} region - 识别区域的百分比坐标 [x1,y1,x2,y2]
  571.      * @returns {object|null} OCR识别结果对象或null
  572.      */
  573.     opencvOCR: function(matImg, dictPath, threshold, expectedCount, region) {
  574.         try {
  575.             if (typeof opencv !== 'undefined' && typeof opencv.OCR === 'function') {
  576.                 dictPath = dictPath || "";
  577.                 threshold = threshold || 0;
  578.                 expectedCount = expectedCount || 0;
  579.                 region = region || [];
  580.                 var result = opencv.OCR(matImg, dictPath, threshold, expectedCount, region);
  581.                 return result;
  582.             }
  583.         } catch (e) {
  584.             // 忽略错误,返回null
  585.         }
  586.         return null;
  587.     },
  588.    
  589.     /**
  590.      * 方法22:OpenCV相关方法 - 基于CV文件的OCR识别
  591.      * @param {string} cvFileName - CV文件名
  592.      * @returns {object|null} OCR识别结果对象或null
  593.      */
  594.     opencvOCREx: function(cvFileName) {
  595.         try {
  596.             if (typeof opencv !== 'undefined' && typeof opencv.OCREx === 'function') {
  597.                 cvFileName = cvFileName || "";
  598.                 var result = opencv.OCREx(cvFileName);
  599.                 return result;
  600.             }
  601.         } catch (e) {
  602.             console.log("opencvOCREx error:", e.message);
  603.             return null;
  604.         }
  605.         return null;
  606.     }
  607. };



  608. /**
  609. * 模块:OCR引擎管理
  610. * 功能:管理OCR引擎的加载和卸载
  611. */
  612. var OCREngineManager = {
  613.     /**
  614.      * 加载OCR引擎
  615.      * @param {string} lang - 语言模型
  616.      * @returns {boolean} 是否加载成功
  617.      */
  618.     loadOCREngine: function(lang) {
  619.         lang = lang || "chi_sim";
  620.         try {
  621.             if (typeof loadOCR === 'function') {
  622.                 var result = loadOCR(lang);
  623.                 return result;
  624.             } else {
  625.                 console.log("loadOCR function not available");
  626.                 return false;
  627.             }
  628.         } catch (e) {
  629.             console.log("Error loading OCR engine:", e.message);
  630.             return false;
  631.         }
  632.     },
  633.    
  634.     /**
  635.      * 卸载OCR引擎
  636.      * @returns {boolean} 是否卸载成功
  637.      */
  638.     unloadOCREngine: function() {
  639.         try {
  640.             if (typeof unloadOCR === 'function') {
  641.                 var result = unloadOCR();
  642.                 return result;
  643.             } else {
  644.                 console.log("unloadOCR function not available");
  645.                 return false;
  646.             }
  647.         } catch (e) {
  648.             console.log("Error unloading OCR engine:", e.message);
  649.             return false;
  650.         }
  651.     },
  652.    
  653.     /**
  654.      * 检查OCR引擎状态
  655.      * @returns {boolean} OCR引擎是否已加载
  656.      */
  657.     isOCREngineLoaded: function() {
  658.         try {
  659.             if (typeof isOCRLoaded === 'function') {
  660.                 var result = isOCRLoaded();
  661.                 return result;
  662.             } else {
  663.                 console.log("isOCRLoaded function not available");
  664.                 return false;
  665.             }
  666.         } catch (e) {
  667.             console.log("Error checking OCR engine status:", e.message);
  668.             return false;
  669.         }
  670.     }
  671. };

  672. /**
  673. * 模块:工具函数
  674. * 功能:提供各种工具函数
  675. */
  676. var Utils = {
  677.     /**
  678.      * 延迟执行
  679.      * @param {number} ms - 延迟毫秒数
  680.      */
  681.     sleep: function(ms) {
  682.         java.lang.Thread.sleep(ms);
  683.     },
  684.    
  685.     /**
  686.      * 获取设备信息
  687.      * @returns {Object} 设备信息
  688.      */
  689.     getDeviceInfo: function() {
  690.         var screenWidth = 0;
  691.         var screenHeight = 0;
  692.         
  693.         try {
  694.             if (typeof screen !== 'undefined' && typeof screen.getScreenWidth === 'function') {
  695.                 screenWidth = screen.getScreenWidth();
  696.                 screenHeight = screen.getScreenHeight();
  697.             }
  698.         } catch (e) {
  699.             // 忽略错误,使用默认值
  700.         }
  701.         
  702.         return {
  703.             width: screenWidth,
  704.             height: screenHeight,
  705.             model: "未知",
  706.             brand: "未知",
  707.             sdk: "未知",
  708.             androidVersion: "未知"
  709.         };
  710.     },
  711.    
  712.     /**
  713.      * 创建图像对象
  714.      * @param {string} path - 图像路径
  715.      * @returns {Object} 图像对象
  716.      */
  717.     createImage: function(path) {
  718.         try {
  719.             var img = new image();
  720.             img.read(path);
  721.             return img;
  722.         } catch (e) {
  723.             console.log("Error creating image object:", e.message);
  724.             return null;
  725.         }
  726.     },
  727.    
  728.     /**
  729.      * 打印日志
  730.      * @param {string} message - 日志消息
  731.      */
  732.     log: function(message) {
  733.         console.log(message);
  734.     },
  735.    
  736.     /**
  737.      * 随机数生成
  738.      * @param {number} min - 最小值
  739.      * @param {number} max - 最大值
  740.      * @returns {number} 随机数
  741.      */
  742.     random: function(min, max) {
  743.         return Math.floor(Math.random() * (max - min + 1)) + min;
  744.     }
  745. };

  746. /**
  747. * 综合示例:使用找字和OCR方法
  748. */
  749. function runComprehensiveDemo() {
  750.     console.log("=== AIWROK 找字与OCR方法终极汇总示例 ===");
  751.    
  752.     // 1. 打印设备信息
  753.     console.log("\n1. 设备信息:");
  754.     var deviceInfo = Utils.getDeviceInfo();
  755.     console.log("设备型号: " + deviceInfo.model);
  756.     console.log("屏幕尺寸: " + deviceInfo.width + "x" + deviceInfo.height);
  757.     console.log("Android版本: " + deviceInfo.androidVersion);
  758.    
  759.     // 2. 尝试使用基础找字方法
  760.     console.log("\n2. 基础找字示例:");
  761.     var textResult = FindTextMethods.findTextBasic("确定", 3000);
  762.     if (textResult) {
  763.         console.log("找到文字'确定',位置: x=" + textResult.x + ", y=" + textResult.y);
  764.     } else {
  765.         console.log("未找到文字'确定'");
  766.     }
  767.    
  768.     // 3. 尝试使用OCR识别并点击
  769.     console.log("\n3. OCR识别与点击示例:");
  770.     var targetText = "雷电"; // 要查找并点击的文字
  771.     var clicked = false;
  772.    
  773.     // 尝试使用内置的MLKitOcr进行识别
  774.     console.log("\n1. 尝试使用MLKitOcr进行识别:");
  775.     var mlkitResult = OCRMethods.MLKitOcr('zh');
  776.     if (mlkitResult) {
  777.         console.log("MLKitOcr识别成功");
  778.         console.log("MLKitOcr识别结果:");
  779.         console.log(mlkitResult);
  780.         
  781.         // 尝试查找并点击目标文字
  782.         try {
  783.             var target = mlkitResult.findIncludeText(targetText);
  784.             if (target) {
  785.                 console.log("使用MLKitOcr找到文字'" + targetText + "',正在点击...");
  786.                 target.hidClick();
  787.                 clicked = true;
  788.                 console.log("点击成功!");
  789.             } else {
  790.                 console.log("MLKitOcr未找到文字'" + targetText + "'");
  791.             }
  792.         } catch (e) {
  793.             console.log("MLKitOcr点击失败:", e.message);
  794.         }
  795.     } else {
  796.         console.log("MLKitOcr识别失败");
  797.     }
  798.    
  799.     // 尝试使用MLKitOcrRect进行识别
  800.     console.log("\n2. 尝试使用MLKitOcrRect进行识别:");
  801.     var mlkitRectResult = OCRMethods.MLKitOcrRect('zh', [0, 0, 1, 1]);
  802.     if (mlkitRectResult) {
  803.         console.log("MLKitOcrRect识别成功");
  804.         console.log("MLKitOcrRect识别结果:");
  805.         console.log(mlkitRectResult);
  806.         
  807.         // 尝试查找并点击目标文字
  808.         try {
  809.             var target = mlkitRectResult.findIncludeText(targetText);
  810.             if (target) {
  811.                 console.log("使用MLKitOcrRect找到文字'" + targetText + "',正在点击...");
  812.                 target.hidClick();
  813.                 clicked = true;
  814.                 console.log("点击成功!");
  815.             } else {
  816.                 console.log("MLKitOcrRect未找到文字'" + targetText + "'");
  817.             }
  818.         } catch (e) {
  819.             console.log("MLKitOcrRect点击失败:", e.message);
  820.         }
  821.     } else {
  822.         console.log("MLKitOcrRect识别失败");
  823.     }
  824.    
  825.     // 尝试使用aiworkOCR进行识别
  826.     console.log("\n3. 尝试使用aiworkOCR进行识别:");
  827.     var aiworkResult = OCRMethods.aiworkOCR(640, [0, 0, 1, 1]);
  828.     if (aiworkResult) {
  829.         console.log("aiworkOCR识别成功");
  830.         console.log("aiworkOCR识别结果:");
  831.         console.log(aiworkResult);
  832.         
  833.         // 尝试查找并点击目标文字
  834.         try {
  835.             var target = aiworkResult.findIncludeText(targetText);
  836.             if (target) {
  837.                 console.log("使用aiworkOCR找到文字'" + targetText + "',正在点击...");
  838.                 target.hidClick();
  839.                 clicked = true;
  840.                 console.log("点击成功!");
  841.             } else {
  842.                 console.log("aiworkOCR未找到文字'" + targetText + "'");
  843.             }
  844.         } catch (e) {
  845.             console.log("aiworkOCR点击失败:", e.message);
  846.         }
  847.     } else {
  848.         console.log("aiworkOCR识别失败");
  849.     }
  850.    
  851.     // 尝试使用paddleOCR进行识别
  852.     console.log("\n4. 尝试使用paddleOCR进行识别:");
  853.     var paddleResult = OCRMethods.paddleOCR(640, [0, 0, 1, 1]);
  854.     if (paddleResult) {
  855.         console.log("paddleOCR识别成功");
  856.         console.log("paddleOCR识别结果:");
  857.         console.log(paddleResult);
  858.         
  859.         // 尝试查找并点击目标文字
  860.         try {
  861.             var target = paddleResult.findIncludeText(targetText);
  862.             if (target) {
  863.                 console.log("使用paddleOCR找到文字'" + targetText + "',正在点击...");
  864.                 target.hidClick();
  865.                 clicked = true;
  866.                 console.log("点击成功!");
  867.             } else {
  868.                 console.log("paddleOCR未找到文字'" + targetText + "'");
  869.             }
  870.         } catch (e) {
  871.             console.log("paddleOCR点击失败:", e.message);
  872.         }
  873.     } else {
  874.         console.log("paddleOCR识别失败");
  875.     }
  876.    
  877.     // 尝试使用opencv.OCREx进行识别
  878.     console.log("\n5. 尝试使用opencv.OCREx进行识别:");
  879.     var opencvResult = OCRMethods.opencvOCREx('图色473670.cv');
  880.     if (opencvResult) {
  881.         console.log("opencv.OCREx识别成功");
  882.         try {
  883.             console.log("opencv.OCREx识别结果:");
  884.             console.log(opencvResult.getAllString());
  885.             
  886.             // 尝试查找并点击目标文字
  887.             var target = opencvResult.findIncludeText(targetText);
  888.             if (target) {
  889.                 console.log("使用opencv.OCREx找到文字'" + targetText + "',正在点击...");
  890.                 target.hidClick();
  891.                 clicked = true;
  892.                 console.log("点击成功!");
  893.             } else {
  894.                 console.log("opencv.OCREx未找到文字'" + targetText + "'");
  895.             }
  896.         } catch (e) {
  897.             console.log("opencv.OCREx操作失败:", e.message);
  898.         }
  899.     } else {
  900.         console.log("opencv.OCREx识别失败");
  901.     }
  902.    
  903.     // 所有OCR方法都尝试完毕
  904.     if (!clicked) {
  905.         console.log("\n所有OCR方法都未找到文字'" + targetText + "'");
  906.     }
  907.    
  908.     // 7. 批量找字示例
  909.     console.log("\n4. 批量找字示例:");
  910.     var texts = ["确定", "取消", "设置", "开始"];
  911.     var batchResult = FindTextMethods.findTextBatch(texts);
  912.     if (batchResult) {
  913.         console.log("找到文字: " + batchResult.text + ",位置: x=" + batchResult.position.x + ", y=" + batchResult.position.y);
  914.     } else {
  915.         console.log("未找到任何文字");
  916.     }
  917.    
  918.     console.log("\n=== 示例执行完成 ===");
  919. }

  920. /**
  921. * 高级示例:自动化任务流程
  922. */
  923. function runAutomationTask() {
  924.     console.log("=== AIWROK 自动化任务流程示例 ===");
  925.    
  926.     console.log("✅ 开始执行自动化任务");
  927.    
  928.     // 1. 等待应用启动
  929.     console.log("\n1. 等待应用启动...");
  930.     // 这里可以使用基础找字方法等待应用启动
  931.     var appStarted = false;
  932.     var startTime = Date.now();
  933.     var timeoutMs = 30 * 1000;
  934.    
  935.     while (Date.now() - startTime < timeoutMs) {
  936.         var result = FindTextMethods.findTextBasic("首页", 1000);
  937.         if (result) {
  938.             appStarted = true;
  939.             break;
  940.         }
  941.         sleep.millisecond(1000);
  942.     }
  943.    
  944.     if (!appStarted) {
  945.         console.log("❌ 应用启动超时");
  946.         return;
  947.     }
  948.     console.log("✅ 应用启动成功");
  949.    
  950.     // 2. 点击登录按钮
  951.     console.log("\n2. 点击登录按钮...");
  952.     var loginResult = FindTextMethods.findTextBasic("登录", 3000);
  953.     if (loginResult) {
  954.         auto.clickPoint(loginResult.x, loginResult.y);
  955.         sleep.millisecond(1000);
  956.         console.log("✅ 登录按钮点击成功");
  957.     } else {
  958.         console.log("❌ 未找到登录按钮");
  959.         return;
  960.     }
  961.    
  962.     // 3. 等待登录页面
  963.     console.log("\n3. 等待登录页面...");
  964.     var loginPageLoaded = false;
  965.     startTime = Date.now();
  966.     timeoutMs = 10 * 1000;
  967.    
  968.     while (Date.now() - startTime < timeoutMs) {
  969.         var result = FindTextMethods.findTextBasic("用户名", 1000);
  970.         if (result) {
  971.             loginPageLoaded = true;
  972.             break;
  973.         }
  974.         sleep.millisecond(1000);
  975.     }
  976.    
  977.     if (!loginPageLoaded) {
  978.         console.log("❌ 登录页面加载超时");
  979.         return;
  980.     }
  981.     console.log("✅ 登录页面加载成功");
  982.    
  983.     // 4. 执行登录操作(这里只是示例,实际需要输入用户名密码)
  984.     console.log("\n4. 执行登录操作...");
  985.     // 模拟输入用户名密码
  986.     // input.setText("username", "test");
  987.     // input.setText("password", "123456");
  988.    
  989.     // 5. 点击登录按钮
  990.     var loginSubmitResult = FindTextMethods.findTextBasic("登录", 3000);
  991.     if (loginSubmitResult) {
  992.         auto.clickPoint(loginSubmitResult.x, loginSubmitResult.y);
  993.         sleep.millisecond(1000);
  994.         console.log("✅ 登录操作提交成功");
  995.     } else {
  996.         console.log("❌ 未找到登录提交按钮");
  997.         return;
  998.     }
  999.    
  1000.     // 6. 等待登录成功
  1001.     console.log("\n5. 等待登录成功...");
  1002.     var loginSuccess = false;
  1003.     startTime = Date.now();
  1004.     timeoutMs = 15 * 1000;
  1005.    
  1006.     while (Date.now() - startTime < timeoutMs) {
  1007.         var result = FindTextMethods.findTextBasic("欢迎", 1000);
  1008.         if (result) {
  1009.             loginSuccess = true;
  1010.             break;
  1011.         }
  1012.         sleep.millisecond(1000);
  1013.     }
  1014.    
  1015.     if (!loginSuccess) {
  1016.         console.log("❌ 登录失败或超时");
  1017.         return;
  1018.     }
  1019.     console.log("✅ 登录成功");
  1020.    
  1021.     console.log("\n=== 自动化任务执行完成 ===");
  1022. }



  1023. // 运行示例(如果直接执行此文件)
  1024. if (typeof console !== 'undefined' && console.log) {
  1025.     // 延迟1秒后运行示例,以便有时间准备测试环境
  1026.     setTimeout(function() {
  1027.         runComprehensiveDemo();
  1028.         // 可以选择运行自动化任务示例
  1029.         // runAutomationTask();
  1030.     }, 1000);
  1031. }



复制代码



untoAIWROK软件找图方法汇总示例nextnocontent
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
信息发布软件AIWROK软件找字与OCR方法汇总示例
AIWROK软件找字与OCR方法汇总示例
信息发布软件AIWROK软件找图方法汇总示例
AIWROK软件找图方法汇总示例
信息发布软件AIWROK软件滑动方法集合示例
AIWROK软件滑动方法集合示例
信息发布软件AIWROK软件安卓AIWROK汇集软件点击
AIWROK软件安卓AIWROK汇集软件点击
信息发布软件苹果系统点击方法综合示例
苹果系统点击方法综合示例
信息发布软件AIWROK苹果系统找图方法完整示例集合
AIWROK苹果系统找图方法完整示例集合
信息发布软件苹果系统找图方法完整示例集合
苹果系统找图方法完整示例集合
信息发布软件苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子
信息发布软件AIWORK软件数组高级示例
AIWORK软件数组高级示例
信息发布软件AIWROK软件运算符封装库示例
AIWROK软件运算符封装库示例
信息发布软件AIWROK软件语法运行小示例
AIWROK软件语法运行小示例
信息发布软件AIWROK软件JS循环小示例
AIWROK软件JS循环小示例
信息发布软件AIWROK软件H5网页被主脚本获取值用法
AIWROK软件H5网页被主脚本获取值用法
信息发布软件AIWROK软件创建可暂停恢复的多线程任务
AIWROK软件创建可暂停恢复的多线程任务
信息发布软件AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
信息发布软件AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 .
信息发布软件AIWROK软件根据时间段执行异步任务支持多线程并行处理
AIWROK软件根据时间段执行异步任务支持多线程并行处理
信息发布软件H5自动开关执行脚本功能演示
H5自动开关执行脚本功能演示
信息发布软件AIWROK软件H5单选脚本运行示例
AIWROK软件H5单选脚本运行示例
信息发布软件H5任务脚本选择与执行中心
H5任务脚本选择与执行中心
信息发布软件H5里CheckBox控件演示
H5里CheckBox控件演示
信息发布软件AIWROK软件正则用法实际例子
AIWROK软件正则用法实际例子
信息发布软件AIWROK软件权限管理器实现
AIWROK软件权限管理器实现
信息发布软件AIWORK软件节点方法无碍示例子
AIWORK软件节点方法无碍示例子
信息发布软件JSON.stringify 和 JSON.parse 完整示例
JSON.stringify 和 JSON.parse 完整示例
信息发布软件AIWROK软件展示JavaScript各种语句标识符的用法
AIWROK软件展示JavaScript各种语句标识符的用法
信息发布软件JS巧妙地组合使用各种条件语句
JS巧妙地组合使用各种条件语句
信息发布软件AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
信息发布软件HID中文输入智能打字功能
HID中文输入智能打字功能
信息发布软件AIWROK软件对象工具函数库例子
AIWROK软件对象工具函数库例子
信息发布软件AIWROK软件H5交互演示黄色主题
AIWROK软件H5交互演示黄色主题
信息发布软件H5单按钮执行脚本示例
H5单按钮执行脚本示例
信息发布软件苹果H5界面完整调用脚本示例
苹果H5界面完整调用脚本示例
信息发布软件AIWROK软件平台设备信息全面检测工具例子
AIWROK软件平台设备信息全面检测工具例子
信息发布软件AIWROK创建和放大日志窗口并展示动态内容
AIWROK创建和放大日志窗口并展示动态内容
信息发布软件AIWROK软件device相关方法获取设备信息例子
AIWROK软件device相关方法获取设备信息例子[/backcolor]
信息发布软件数据库MySQL实时内容随机调用
数据库MySQL实时内容随机调用
信息发布软件AIWROK软件分享一个特效苹果H5页面
AIWROK软件分享一个特效苹果H5页面
信息发布软件数据库MYQ业务流程心跳程序启动
数据库MYQ业务流程心跳程序启动
信息发布软件数据库MySQL功能支持创建表插入中文数据查询删除功能例子
数据库MySQL功能支持创建表插入中文数据查询删除功能例子
信息发布软件AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例
信息发布软件AIWROK软件txt_文件读写方法小结
AIWROK软件txt_文件读写方法小结
信息发布软件AIWROK软件file文件操作方法小结
AIWROK软件file文件操作方法小结
信息发布软件AIWORK软件配置读写H5演示配套脚本
AIWORK软件配置读写H5演示配套脚本
信息发布软件AIWROK配置读写功能演示示例
AIWROK配置读写功能演示示例
信息发布软件AIWROK截图缓存工具
AIWROK截图缓存工具
信息发布软件AIWROK线程许可证工具
AIWROK线程许可证工具
信息发布软件整理了AIWROK环境下常用的Date对象和sleep对象方法
整理了AIWROK环境下常用的Date对象和sleep对象方法
信息发布软件FastUI界面普通用法
FastUI界面普通用法
信息发布软件FastUI界面类[window]方法小结
FastUI界面类[window]方法小结 方法 1:close(关闭指定窗口)方法 2:closeAll(关闭所有窗口)方法 3:loadUI(加载 UI 界面)方法 4:onClose(监听窗口关闭事件)方法 5:onLoad(监听窗口加载事件)方法 6:setFull(设置窗口全屏)方法 7:setHeight(设置窗口高度)方法 8:setHidden(隐藏窗口)方法 9:setLeft(设置窗口 X 轴坐标)方法 10:setTop(设置窗口 Y 轴坐标)方法 11:setVisable(显示隐藏的窗口)方
信息发布软件AIWROK软件按钮监听UI界面与事件监听功能演示
AIWROK软件按钮监听UI界面与事件监听功能演示.
信息发布软件AWIROK软件多选[uiCheckBox]方法小结
AWIROK软件多选方法小结 方法一:findByID 加载多选控件方法二:getAllChecked 获取所有选中项方法三:getAllSelect 获取所有选项方法四:getChecked 获取某个选项是否选中方法五:setChecked 设置某个选项是否选中方法六:setCheckeds 设置多个选项是否选中方法七:setHeight 设置高度
信息发布软件AIWROK日志演示开启日志显示 → 放大 → 关闭代码
AIWROK日志演示开启日志显示 → 放大 → 关闭代码
信息发布软件&#127983;AIWROK数组方法高级应用案例
🏯AIWROK数组方法高级应用案例
信息发布软件AIWROK软件日志悬浮窗简化版自动切换位置
AIWROK软件日志悬浮窗简化版自动切换位置
信息发布软件AIWROK软件String实例演示
AIWROK软件String实例演示
信息发布软件AIWROK软件S内置String类[String]方法小结
AIWROK软件S内置String类[String]方法小结 方法 1:charAt[/backcolor]方法 2:charCodeAt[/backcolor]方法 3:indexOf[/backcolor]方法 4:lastIndexOf[/backcolor]方法 5:length[/backcolor]方法 6:match[/backcolor]方法 7:replace[/backcolor]方法 8:replaceAll[/backcolor]方法 9:split[/backcolor]方法 10:startsWith[/backcolor]方法 11:substr[/backcolor]方法 12:substring[/backcolor]方法 13:trim[/backcol
信息发布软件AIWROK软件完整的WebSocket客户端示例
这段代码是一个完整的WebSocket客户端示例,用于连接到指定的WebSocket服务器并处理各种事件。具体来说,代码的作用如下: 定义服务器地址:首先定义了一个服务器的IP地址和端口号 var ip = "154.37.221.104:8886";。 创建WebSocket对象:尝试创建一个新的WebSocket对象 var ws = new WebSocket();。注意,这里的 new ws() 应该是 new WebSocket()。 添加事件监听器:代码中尝试为WebSocket对象添加事件监听器,但这里有一个错误。
信息发布软件AIWROK软件苹果系统中实现四种基本滑动操作
AIWROK软件苹果系统中实现四种基本滑动操作
信息发布软件hid的滑动没有百分比坐标滑动吗
hid的滑动没有百分比坐标滑动吗
信息发布软件单选控件[uiRadioButton]方法小结
单选控件方法小结 方法 1:加载单选控件[/backcolor]方法 2:获取选中项[/backcolor]方法 3:设置高度[/backcolor]方法 4:设置选中项[/backcolor]
信息发布软件AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
信息发布软件AIWROK软件安卓随机工具应用函数生成
AIWROK软件安卓随机工具应用函数生成
信息发布软件用在AIWORK软件代码中的实用符号分类整理2
用在AIWORK软件代码中的实用符号分类整理2 软件IDE用Emoji符号分类整理(含用途说明)一、表情与情感1. 微笑 [*]😀 笑脸(基础开心反馈,用于操作成功后的友好提示) [*]😃 笑脸大眼睛(强化开心情绪,用于重要任务完成后的积极反馈) [*]😄 笑脸和微笑的眼睛(温和友好的状态,用于日常交互中的正向回应) [*]😁 带着微笑的眼睛(轻松愉悦的反馈,用于轻度成功或趣味操作) [*]
信息发布软件AIWROK软件图像二值化的各种方法和应用场景
AIWROK软件图像二值化的各种方法和应用场景

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-2-6 10:47 , Processed in 0.328475 second(s), 51 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表