AIWROKϵͳ°²×¿ÕÒ×ÖOCR___·½·¨Ð¡½á×ܻ㼯ºÏ
- /*
- 🍎½»Á÷QQȺ711841924Ⱥһ£¬Æ»¹ûÄÚ²âȺ£º528816639
- 🍎🔍ÕÒ×ÖOCR___·½·¨Ð¡½á×ܻ㼯ºÏ
- */
- //======================== 1. »ù´¡ÎÄ×Ö²éѯ·½·¨ ========================//
- // ·½·¨1£º🔍findIncludeText ²éѯ°üº¬ÎÄ×Ö
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ ²éѯ°üº¬Ö¸¶¨ÎÄ×ÖµÄÄÚÈÝ£¨µ¥Ä¿±êÆ¥Å䣩
- ·½·¨Ç©Ãû detect findIncludeText(String arg0)
- ·µ»ØÖµ detect£¨Ê¶±ðµ½µÄÄ¿±ê¶ÔÏó£©
- ²ÎÊý - String arg0£ºÐè²éѯµÄÎÄ×ÖÄÚÈÝ
- */
- // ʾÀý£º²éѯ°üº¬¡°È·ÈÏ¡±µÄÎÄ×Ö
- let detectObj = new ocrResult().findIncludeText("È·ÈÏ");
- // ·½·¨2£º🔍findIncludeTexts ²éѯ°üº¬ÎÄ×Ö£¨¶àÄ¿±ê£©
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ ²éѯ°üº¬Ö¸¶¨ÎÄ×ֵĶà¸ö½á¹û£¨·µ»Ø detect Êý×飩
- ·½·¨Ç©Ãû detect[] findIncludeTexts(String arg0)
- ·µ»ØÖµ detect[]£¨Ê¶±ðµ½µÄÄ¿±ê¶ÔÏóÊý×飩
- ²ÎÊý - String arg0£ºÐè²éѯµÄÎÄ×ÖÄÚÈÝ
- */
- // ʾÀý£º²éѯËùÓаüº¬¡°°´Å¥¡±µÄÎÄ×Ö
- let detectArray = new ocrResult().findIncludeTexts("°´Å¥");
- // ·½·¨3£º🔍findSimText Ä£ºý²éѯ£¨½üËÆÆ¥Å䣩
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ Ä£ºýÆ¥ÅäÖ¸¶¨ÎÄ×Ö£¨Ö§³Ö½üËÆÎı¾Ê¶±ð£©
- ·½·¨Ç©Ãû detect findSimText(String arg0)
- ·µ»ØÖµ detect£¨Ê¶±ðµ½µÄÄ£ºýÆ¥ÅäÄ¿±ê£©
- ²ÎÊý - String arg0£ºÐèÄ£ºý²éѯµÄÎÄ×ÖÄÚÈÝ
- */
- // ʾÀý£ºÈ«ÆÁʶ±ðºóÄ£ºý²éÕÒ¡°¿ªÐÄÊÕÏ¡±
- let img = screen.screenShotFull();
- let ocrres = img.MLKitOcr('zh');
- let detectObj = ocrres.findSimText("¿ªÐÄÊÕÏÂ");
- detectObj.click();
- // ·½·¨4£º🔍findText ¾«È·²éѯÎÄ×Ö
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ ¾«È·²éѯָ¶¨ÎÄ×Ö£¨ÑϸñÆ¥Å䣩
- ·½·¨Ç©Ãû detect findText(String arg0)
- ·µ»ØÖµ detect£¨Ê¶±ðµ½µÄ¾«È·Ä¿±ê£©
- ²ÎÊý - String arg0£ºÐ辫ȷ²éѯµÄÎÄ×ÖÄÚÈÝ
- */
- // ʾÀý£ºÈ«ÆÁʶ±ðºó¾«È·²éÕÒ¡°¿ªÐÄÊÕÏ¡±
- let img = screen.screenShotFull();
- let ocrres = img.MLKitOcr('zh');
- let detectObj = ocrres.findText("¿ªÐÄÊÕÏÂ");
- detectObj.click();
- // ·½·¨5£º🔍getAllDetect »ñÈ¡ËùÓÐʶ±ðÄ¿±ê
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ »ñÈ¡ OCR ʶ±ðµ½µÄËùÓÐÄ¿±ê£¨·µ»Ø detect Êý×飩
- ·½·¨Ç©Ãû detect[] getAllDetect()
- ·µ»ØÖµ detect[]£¨ËùÓÐʶ±ðÄ¿±êµÄÊý×飩
- ²ÎÊý ÎÞ
- */
- // ʾÀý£º»ñÈ¡µ±Ç° OCR ½á¹ûµÄËùÓÐÄ¿±ê
- let allDetects = new ocrResult().getAllDetect();
- // ·½·¨6£º🔍getAllString »ñÈ¡ËùÓÐʶ±ðÎÄ×Ö
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ »ñÈ¡ OCR ʶ±ðµ½µÄËùÓÐÎÄ×Ö£¨Æ´½ÓΪ×Ö·û´®·µ»Ø£©
- ·½·¨Ç©Ãû String getAllString()
- ·µ»ØÖµ String£¨ËùÓÐʶ±ðÎÄ×ֵį´½Ó½á¹û£©
- ²ÎÊý ÎÞ
- */
- // ʾÀý£º»ñÈ¡µ±Ç° OCR ½á¹ûµÄËùÓÐÎÄ×Ö
- let allText = new ocrResult().getAllString();
- print.log(allText);
- // ·½·¨7£º🔍getJson »ñÈ¡ JSON ¸ñʽ½á¹û£¨ocrResult ʵÀý·½·¨£©
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ »ñÈ¡ OCR ʶ±ð½á¹ûµÄ JSON ¸ñʽÊý¾Ý£¨×Ö·û´®ÐÎʽ£©
- ·½·¨Ç©Ãû String getJson()
- ·µ»ØÖµ String£¨OCR ʶ±ð½á¹ûµÄ JSON ×Ö·û´®£©
- ²ÎÊý ÎÞ
- */
- // ʾÀý£º»ñÈ¡²¢´òÓ¡ OCR ½á¹ûµÄ JSON Êý¾Ý
- let ocrResult = new ocrResult();
- let jsonResult = ocrResult.getJson();
- print.log(jsonResult);
- // ·½·¨8£º🔍getJsonString »ñÈ¡ JSON ×Ö·û´®£¨ÈßÓà·½·¨£¬°´ÐèʹÓã©
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ »ñÈ¡ OCR ʶ±ð½á¹ûµÄ JSON ×Ö·û´®£¨Óë getJson ¹¦ÄÜÒ»Ö£¬¿ÉÄÜΪ±ðÃû£©
- ·½·¨Ç©Ãû String getJsonString()
- ·µ»ØÖµ String£¨OCR ʶ±ð½á¹ûµÄ JSON ×Ö·û´®£©
- ²ÎÊý ÎÞ
- */
- // ʾÀý£º»ñÈ¡ JSON ×Ö·û´®
- let jsonStr = new ocrResult().getJsonString();
- //======================== 2. ºËÐÄʶ±ð·½·¨ ========================//
- // ·½·¨9£º🔍MLKitOcr ÎÄ×Öʶ±ð£¨Google MLKit ÒýÇæ£©
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ µ÷Óà Google MLKit ½øÐÐÎÄ×Öʶ±ð
- ·½·¨Ç©Ãû ocrResult MLKitOcr(String arg0, int arg1)
- ·µ»ØÖµ ocrResult£¨OCR ʶ±ð½á¹û¶ÔÏó£©
- ²ÎÊý - String arg0£ºÊ¶±ðÓïÑÔ£¨Ä¬ÈÏÖµ£º"zh"£¬ÖÐÎÄ£©
- - int arg1£ºËõС±¶Êý£¨Ä¬ÈÏÖµ£º2£¬¼´Í¼ÏñËõСΪÔÀ´µÄ 1/2£©
- */
- // ʾÀý£ºÈ«ÆÁʶ±ðÖÐÎÄ£¬ËõС±¶ÊýΪ 2
- let ocrres = screen.MLKitOcr('zh', 2);
- // ·½·¨10£º🔍MLKitOcrRect ÎÄ×ÖÇøÓòʶ±ð£¨MLKit + ÇøÓò²Ã¼ô£©
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ µ÷Óà Google MLKit ʶ±ðÖ¸¶¨ÇøÓòµÄÎÄ×Ö£¨°´°Ù·Ö±È×ø±ê£©
- ·½·¨Ç©Ãû ocrResult MLKitOcrRect(String arg0, double[] arg1)
- ·µ»ØÖµ ocrResult£¨OCR ʶ±ð½á¹û¶ÔÏó£©
- ²ÎÊý - String arg0£ºÊ¶±ðÓïÑÔ£¨Ä¬ÈÏÖµ£º"zh"£¬ÖÐÎÄ£©
- - double[] arg1£ºÊ¶±ðÇøÓòµÄ°Ù·Ö±È×ø±ê£¨¸ñʽ£º[x1, y1, x2, y2]£¬Ê¾Àý [0,0,1,1] ´ú±íÈ«ÇøÓò£©
- */
- // ʾÀý£ºÊ¶±ðÆÁÄ»ÉϰëÇøÓòµÄÎÄ×Ö£¨°Ù·Ö±È×ø±ê [0,0,1,0.5]£©
- let img = screen.screenShotFull();
- let ocrres = img.MLKitOcrRect('zh', [0,0,1,0.5]);
- // ·½·¨11£º🔍aiworkOCR awork ÎÄ×Öʶ±ð
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ µ÷Óà awork ÒýÇæ½øÐÐÎÄ×Öʶ±ð£¨Ö§³ÖÇøÓò²Ã¼ô£©
- ·½·¨Ç©Ãû ocrResult aiworkOCR(int arg0, double[] arg1)
- ·µ»ØÖµ ocrResult£¨OCR ʶ±ð½á¹û¶ÔÏó£©
- ²ÎÊý - int arg0£ºÊ¶±ð³ß´ç£¨ÍƼöÖµ£º640¡¢320£©
- - double[] arg1£ºÊ¶±ðÇøÓòµÄ°Ù·Ö±È×ø±ê£¨¸ñʽ£º[x1, y1, x2, y2]£¬Ê¾Àý [0,0,1,1] ´ú±íÈ«ÇøÓò£©
- */
- // ʾÀý£ºÈ«ÆÁʶ±ð£¬³ß´ç 640£¬²éÕÒ²¢µã»÷º¬¡°À׵硱µÄÄ¿±ê
- let img = screen.screenShotFull();
- let ocrres = img.aiworkOCR(640, [0,0,1,1]);
- ocrres.findIncludeText("À×µç").hidClick();
- // ·½·¨12£º🔍paddleOCR PaddleOCR ÎÄ×Öʶ±ð
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ µ÷Óà PaddleOCR ÒýÇæ½øÐÐÎÄ×Öʶ±ð£¨Ö§³ÖÇøÓò²Ã¼ô£©
- ·½·¨Ç©Ãû ocrResult paddleOCR(int arg0, double[] arg1)
- ·µ»ØÖµ ocrResult£¨OCR ʶ±ð½á¹û¶ÔÏó£©
- ²ÎÊý - int arg0£ºÊ¶±ð³ß´ç£¨ÍƼöÖµ£º640¡¢320£©
- - double[] arg1£ºÊ¶±ðÇøÓòµÄ°Ù·Ö±È×ø±ê£¨¸ñʽ£º[x1, y1, x2, y2]£¬Ê¾Àý [0,0,1,1] ´ú±íÈ«ÇøÓò£©
- */
- // ʾÀý£ºÈ«ÆÁʶ±ð£¬³ß´ç 640£¬²éÕÒ²¢µã»÷º¬¡°À׵硱µÄÄ¿±ê
- let img = screen.screenShotFull();
- let ocrres = img.paddleOCR(640, [0,0,1,1]);
- ocrres.findIncludeText("À×µç").hidClick();
- //======================== 3. OpenCV Ïà¹Ø·½·¨ ========================//
- // ·½·¨13£º🔍opencv.OCR ͨ¹ýѵÁ·×Ö¿âʶ±ð
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ Ê¹Óà OpenCV ѵÁ·µÄ×Ö¿â½øÐÐÎÄ×Öʶ±ð£¨ÐèÌáǰ׼±¸×Ö¿âÎļþ£©
- ·½·¨Ç©Ãû ocrResult OCR(Mat arg0, String arg1, double arg2, int arg3, double[] arg4)
- ·µ»ØÖµ ocrResult£¨OCR ʶ±ð½á¹û¶ÔÏó£©
- ²ÎÊý - Mat arg0£ºÊäÈëµÄͼƬ¶ÔÏó£¨Mat ÀàÐÍ£©
- - String arg1£º×Ö¿âÎļþ·¾¶/Ãû³Æ£¨°¸ÀýÖд«¿Õ×Ö·û´® ""£©
- - double arg2£ºÏàËÆ¶ÈãÐÖµ£¨°¸ÀýÖÐΪ 0£¬·¶Î§£º0~1£©
- - int arg3£ºÔ¤ÆÚʶ±ðµÄÎÄ×ÖÊýÁ¿£¨°¸ÀýÖÐΪ 0£¬¼´²»ÏÞÊýÁ¿£©
- - double[] arg4£ºÊ¶±ðÇøÓòµÄ°Ù·Ö±È×ø±ê£¨¸ñʽ£º[x1,y1,x2,y2]£¬°¸ÀýÖд«¿ÕÊý×é double[]£©
- */
- // ʾÀý£ºÊ¹ÓÃĬÈÏ×Ö¿âʶ±ðÈ«ÇøÓòÎÄ×Ö
- let matImg = ...; // ¼ÙÉèÒÑ»ñÈ¡ Mat ÀàÐÍͼƬ
- opencv.OCR(matImg, "", 0, 0, []);
- // ·½·¨14£º🔍opencv.OCREx »ùÓÚ CV ÎļþµÄ OCR ʶ±ð
- /*
- Àà±ð ÏêÇé˵Ã÷
- ·½·¨¹¦ÄÜ Í¨¹ýÖ¸¶¨ CV ÎļþÃû½øÐÐÎÄ×Öʶ±ð£¨ÐèÌáǰ׼±¸ CV ÅäÖÃÎļþ£©
- ·½·¨Ç©Ãû ocrResult OCREx(String arg0)
- ·µ»ØÖµ ocrResult£¨OCR ʶ±ð½á¹û¶ÔÏó£©
- ²ÎÊý - String arg0£ºCV ÎļþÃû£¨°¸ÀýÖд«Èë¿Õ×Ö·û´® ""£©
- */
- // ʾÀý£ºÊ¹ÓÃ¿Õ CV ÎļþÃûʶ±ð£¨ÐèÈ·±£ÅäÖÃÕýÈ·£©
- opencv.OCREx("");
- //======================== 4. TomatoOCR ÍêÕûʵÀýÑÝʾ ========================//
- /*
- 🍅 ¹¦ÄÜ£ºTomatoOCR ÒýÇæµÄÍêÕûµ÷ÓÃʾÀý£¨º¬³õʼ»¯¡¢Ê¶±ð¡¢·â×°·½·¨£©
- ²½Ö裺
- 1. ¼ÓÔØ²å¼þ ¡ú 2. µ¼ÈëÀà ¡ú 3. ³õʼ»¯ OCR ¡ú 4. ·âװʶ±ð·½·¨ ¡ú 5. µ÷ÓÃʶ±ð
- ×¢Ò⣺Ðè×ÔÐлñÈ¡ license£¬µ÷ÕûÄ£ÐͲÎÊý£¨Èç rec_type¡¢¼ì²âÄ£Ð͵ȣ©¡£
- */
- var TM = {};
- // 1. ¼ÓÔØ²å¼þ£¨¸ù¾ÝÉ豸¼Ü¹¹µ÷Õû£¬Èç armeabi-v7a£©
- rhino.loadDex('TomatoOCR.apk');
- // 2. µ¼ÈëÀࣨ¶à²å¼þµ÷ÓÃÐèÈ·±£Àà¼ÓÔØ£©
- try {
- rhino.loadClass('com.tomato.ocr.aw.OCRApi');
- importClass(com.tomato.ocr.aw.OCRApi);
- } catch (error) {
- FZ.printll(error);
- }
- // 3. ³õʼ»¯ OCR
- var ocr = new OCRApi();
- let rec_type = "ch-3.0"; // Ä£ÐÍÀàÐÍ£ºch/cht/japan/korean µÈ£¨3.0°æÎªÄ¬ÈÏÍÆ¼ö£©
- ocr.setContext(context, rec_type);
- // 4. ÉèÖà license£¨Ðè×ÔÐлñÈ¡£¬ÊÔÓðæ´ÓȺ/ÍøÅÌ»ñÈ¡£©
- let license = "×Ô¼ºÕÒ×÷Õß»ñÈ¡";
- let flag = ocr.setLicense(license);
- // flag º¬Ò壺-1£¨ÎÞЧ£©¡¢0£¨¹ýÆÚ£©¡¢1/µ½ÆÚÈÕÆÚ£¨ÓÐЧ£©
- print.log("License ״̬£º" + flag);
- // 5. µ÷Õûʶ±ð²ÎÊý£¨¿ÉÑ¡£¬°´ÐèÐ޸ģ©
- ocr.setDetBoxType("rect"); // ¼ì²âÄ£ÐÍ£ºrect£¨¾ØÐÎÎı¾£¬Ä¬ÈÏ£©/ quad£¨ÇãбÎı¾£©
- ocr.setDetUnclipRatio(1.9); // ¼ì²âÀ©Õ¹ÏµÊý£¨1.6~2.5 Ö®¼ä£¬Ä¬ÈÏ1.9£©
- ocr.setRecScoreThreshold(0.3); // ʶ±ðµÃ·Ö¹ýÂË£¨0.1~0.9 Ö®¼ä£¬Ä¬ÈÏ0.3£©
- ocr.setReturnType("json"); // ·µ»Ø¸ñʽ£ºjson£¨Ä¬ÈÏ£¬º¬×ø±ê+ÎÄ×Ö+µÃ·Ö£©/ text£¨´¿ÎÄ×Ö£©/ num£¨´¿Êý×Ö£©
- var type = 3; // ʶ±ðģʽ£º0£¨Ö»¼ì²â£©¡¢1£¨·½Ïò·ÖÀà+ʶ±ð£©¡¢2£¨Ö»Ê¶±ð£©¡¢3£¨¼ì²â+ʶ±ð£¬Ä¬ÈÏ£©
- // 6. ·âװʶ±ð·½·¨£¨´øµã»÷¡¢×ø±ê·µ»Ø¹¦ÄÜ£©
- /**
- * TM.tmocrʶ±ð£ºOCR ʶ±ð²¢¿ÉÑ¡µã»÷Ä¿±ê
- * @param {String} tmstr - Ä¿±êÎÄ×Ö
- * @param {Array} tmsize - ʶ±ðÇøÓò£¨°Ù·Ö±È×ø±ê [x1,y1,x2,y2]£©
- * @param {Boolean} tmclick - ÊÇ·ñµã»÷Ä¿±ê
- * @param {Number} tmcoor1 - µã»÷Æ«ÒÆ×îСֵ
- * @param {Number} tmcoor2 - µã»÷Æ«ÒÆ×î´óÖµ
- * @param {Number} tmslee - µã»÷ºóÐÝÃßʱ¼ä£¨ºÁÃ룩
- * @return {Boolean} ÊÇ·ñʶ±ðµ½Ä¿±ê
- */
- TM.tmocrʶ±ð = function (tmstr, tmsize, tmclick, tmcoor1, tmcoor2, tmslee) {
- // °Ù·Ö±È×ø±ê×ªÕæÊµÆÁÄ»×ø±ê£¨wdh/hgt ÐèÌáǰ¶¨ÒåΪÆÁÄ»¿í¸ß£©
- var tma = Math.round(tmsize[0] * wdh);
- var tmb = Math.round(tmsize[1] * hgt);
- var img0 = screen.screenShotFull(); // È«ÆÁ½ØÍ¼
- sleep.millisecond(10); // ÐÝÃß±ÜÃâ×ÊÔ´³åÍ»
- var img = img0.cutImagePercent(tmsize[0], tmsize[1], tmsize[2], tmsize[3]); // ²Ã¼ôʶ±ðÇøÓò
- sleep.millisecond(10);
- var result3 = ocr.ocrBase64(img.toBase64(), type); // µ÷Óà TomatoOCR ʶ±ð
- try {
- if (result3) {
- var result3 = JSON.parse(result3); // ½âÎö JSON ½á¹û
- var point = this.findStrCenter(result3, tmstr); // ²éÕÒÎÄ×ÖÖÐÐÄ×ø±ê
- if (point[0] >= 0) { // ʶ±ðµ½Ä¿±ê
- FZ.printll(`ÕÒµ½Ä¿±êÎÄ×Ö£º${tmstr}`);
- var tme = point[0] + tma; // ¼ÆËãÕæÊµ×ø±ê
- var tmf = point[1] + tmb;
- if (tmclick) { // ÈôÐèµã»÷
- hid.click(
- tme + rand.randNumber(tmcoor1, tmcoor2), // ºáÏòÆ«ÒÆ
- tmf + rand.randNumber(tmcoor1, tmcoor2) // ×ÝÏòÆ«ÒÆ
- );
- sleep.millisecond(tmslee); // µã»÷ºóÐÝÃß
- }
- img0.recycle(); // ÊÍ·ÅͼƬ×ÊÔ´
- img.recycle();
- return true;
- }
- }
- } catch (err) {
- printl(`ʶ±ðÒì³££º${err}`);
- }
- img0.recycle();
- img.recycle();
- return false;
- };
- /**
- * TM.tmocrʶ±ð×ø±ê£ºOCR ʶ±ð²¢·µ»ØÄ¿±ê×ø±ê
- * @param {String} tmstr - Ä¿±êÎÄ×Ö
- * @param {Array} tmsize - ʶ±ðÇøÓò£¨°Ù·Ö±È×ø±ê [x1,y1,x2,y2]£©
- * @return {Array|null} Ä¿±ê×ø±ê [x,y]£¬Î´ÕÒµ½Ôò·µ»Ø null
- */
- TM.tmocrʶ±ð×ø±ê = function (tmstr, tmsize) {
- var tma = Math.round(tmsize[0] * wdh);
- var tmb = Math.round(tmsize[1] * hgt);
- var img0 = screen.screenShotFull();
- sleep.millisecond(10);
- var img = img0.cutImagePercent(tmsize[0], tmsize[1], tmsize[2], tmsize[3]);
- sleep.millisecond(10);
- var result3 = ocr.ocrBase64(img.toBase64(), type);
- try {
- if (result3) {
- var result3 = JSON.parse(result3);
- var point = this.findStrCenter(result3, tmstr);
- if (point[0] >= 0) {
- FZ.printll(`ÕÒµ½Ä¿±êÎÄ×Ö£º${tmstr}`);
- var tme = point[0] + tma;
- var tmf = point[1] + tmb;
- img0.recycle();
- img.recycle();
- return [tme, tmf];
- }
- }
- } catch (err) {
- printl(`ʶ±ðÒì³££º${err}`);
- }
- img0.recycle();
- img.recycle();
- return null;
- };
- /**
- * TM.findStrCenter£º´Ó OCR ½á¹ûÖвéÕÒÎÄ×ÖÖÐÐÄ×ø±ê
- * @param {Array} result_list - OCR ʶ±ð½á¹û£¨JSON ½âÎöºóµÄÊý×飬¸ñʽ£º[{words: "Îı¾", location: [[x1,y1],[x2,y2],...]}]£©
- * @param {String} data - Ä¿±êÎÄ×Ö
- * @return {Array} ÖÐÐÄ×ø±ê [x,y]£¬Î´ÕÒµ½Ôò·µ»Ø [-1,-1]
- */
- TM.findStrCenter = function (result_list, data) {
- for (let i = 0; i < result_list.length; i++) {
- var words = result_list[i]["words"];
- var location = result_list[i]["location"];
- if (words.includes(data)) { // ¼ì²éÎÄ×ÖÊÇ·ñ°üº¬Ä¿±ê
- let x1 = location[0][0];
- let y1 = location[0][1];
- let x2 = location[2][0];
- let y2 = location[2][1];
- // ¼ÆËãÎÄ×ÖÖÐÐÄ×ø±ê£¨ÊÊÅä¶à×Ö·ûÆ¥Å䣩
- let charIndex = words.indexOf(data);
- let x = Math.floor(
- (x2 - x1) / words.length * (data.length + 2 * charIndex) / 2 + x1
- );
- let y = Math.floor((y2 - y1) / 2 + y1);
- return [x, y];
- }
- }
- return [-1, -1];
- };
- // 7. µ÷ÓÃʾÀý£¨Ðè½áºÏʵ¼Ê³¡¾°£¬ÒÔÏÂΪα´úÂ룩
- // TM.tmocrʶ±ð("È·ÈÏ", [0,0,1,1], true, 5, 10, 1000); // È«ÆÁʶ±ð¡°È·ÈÏ¡±²¢µã»÷£¨´øÆ«ÒÆ£©
- // 8. ÄÚ´æÊÍ·Å£¨¿ÉÑ¡£¬½áÊøÊ±µ÷Óã©
- // ocr.end();
- /*
- 📌 ¹Ø¼ü˵Ã÷£º
- 1. **»·¾³ÒÀÀµ**£ºÐèÌáǰ¶¨Òå `wdh`£¨ÆÁÄ»¿í¶È£©¡¢`hgt`£¨ÆÁÄ»¸ß¶È£©¡¢`rand`£¨Ëæ»úÊý¹¤¾ß£©¡¢`hid`£¨µã»÷¹¤¾ß£©¡£
- 2. **Ä£ÐÍÇл»**£º`rec_type` Ö§³Ö `ch`£¨v1.0£©¡¢`ch-2.0`¡¢`ch-3.0`£¨ÍƼö£©¡¢`cht`£¨·±Ì壩¡¢`japan`£¨ÈÕÓµÈ¡£
- 3. **²ÎÊýÓÅ»¯**£º
- - `setDetUnclipRatio`£ºÖµÔ½´ó£¬¼ì²âÇøÓòÔ½¿íËÉ£¨Êʺϸ´ÔÓÅŰ棩¡£
- - `setRecScoreThreshold`£ºÖµÔ½¸ß£¬Ê¶±ð¾«¶ÈÒªÇóÔ½Ñϸñ£¨ÐèÆ½ºâÕÙ»ØÂÊ£©¡£
- 4. **×ÊÔ´ÊÍ·Å**£º³¤Ê±¼äÔËÐÐÐèµ÷Óà `ocr.end()` ÊÍ·ÅÄڴ棬±ÜÃâй©¡£
- */
¸´ÖÆ´úÂë
findIncludeText²éѯ°üº¬ÎÄ×Ö ÏîÄ¿ | ÏêÇé | ¹¦ÄÜÃèÊö | ²éѯ°üº¬ÎÄ×Ö | ·½·¨¶¨Òå | detect findIncludeText(String arg0) | ·µ»ØÖµ | detect | ²ÎÊý | String arg0 £ºÐè²éѯµÄÎÄ×ÖÄÚÈÝ | °¸Àý | new ocrResult().findIncludeText('') |
🔍🔢findIncludeTexts²éѯ°üº¬ÎÄ×Ö¶àÄ¿±ê ÏîÄ¿ | ÏêÇé | ¹¦ÄÜÃèÊö | ²éѯ°üº¬ÎÄ×Ö¶àÄ¿±ê£¬²éѯ°üº¬Ä³¸öÎÄ×ֵĶà¸ö½á¹û£¬·µ»ØÖµÎª detect Êý×飬Êý×éÔªËØÀàÐÍÊÇ detect ÀàÐÍ | ·½·¨¶¨Òå | detect[] findIncludeTexts(String arg0) | ·µ»ØÖµ | detect[] | ²ÎÊý | String arg0 £ºÐè²éѯµÄÎÄ×ÖÄÚÈÝ | °¸Àý | new ocrResult().findIncludeTexts('') |
🔍🔢findSimilarTextÄ£ºý²éѯ ÏîÄ¿ | ÏêÇé | ¹¦ÄÜÃèÊö | Ä£ºý²éѯ | ·½·¨¶¨Òå | detect findSimilarText(String arg0) | ·µ»ØÖµ | detect | ²ÎÊý | String arg0 £ºÐè½øÐÐÄ£ºý²éѯµÄÎÄ×ÖÄÚÈÝ | °¸Àý | // È«ÆÁ½ØÍ¼ let img = screen.screenShotFull()// ÖÐÎÄ£¨zh£©Ê¶±ð OCR let ocrres = img.MLKitOcr('zh');// ²éÕÒÄ¿±ê let d = ocrres.findSimText("¿ªÐÄÊÕÏÂ");// µã»÷Ä¿±ê d.click(); |
🔍🔢findText²éѯÎÄ×Ö ÏîÄ¿ | ÏêÇé | ¹¦ÄÜÃèÊö | ²éѯÎÄ×Ö | ·½·¨¶¨Òå | detect findText(String arg0) | ·µ»ØÖµ | detect | ²ÎÊý | String arg0 £ºÓïÑÔ£¨×¢£º°¸ÀýÖÐʵ¼Ê´«ÈëÎÄ×ÖÄÚÈÝ£¬ÍƲâÎĵµ²ÎÊýÃèÊö¿ÉÄÜ´æÔÚÎó²î£© | °¸Àý | // È«ÆÁ½ØÍ¼ let img = screen.screenShotFull() // ÖÐÎÄ£¨zh£©Ê¶±ð OCR let ocrres = img.MLKitOcr('zh'); // ²éÕÒÄ¿±ê let d = ocrres.findText("¿ªÐÄÊÕÏÂ"); // µã»÷Ä¿±ê d.click(); |
🔍🔢getAllDetect »ñÈ¡ËùÓÐÄ¿±ê ÏîÄ¿ | ÏêÇé | ¹¦ÄÜÃèÊö | »ñÈ¡ËùÓÐÄ¿±ê | ·½·¨¶¨Òå | detect[] getAllDetect() | ·µ»ØÖµ | detect[] | ²ÎÊý | ÎÞ | °¸Àý | new ocrResult().getAllDetect() |
🔍🔢getAllString »ñÈ¡ËùÓÐ×Ö·û´® ÏîÄ¿ | ÏêÇé | ¹¦ÄÜÃèÊö | »ñÈ¡ËùÓÐ×Ö·û´® | ·½·¨¶¨Òå | String getAllString() | ·µ»ØÖµ | String | ²ÎÊý | ÎÞ | °¸Àý | new ocrResult().getAllString() |
🔍🔢getJson »ñÈ¡json¶ÔÏó ÏîÄ¿ | ÏêÇé | ¹¦ÄÜÃèÊö | »ñÈ¡ OCR ʶ±ð½á¹ûµÄ JSON ¸ñʽÊý¾Ý | ·½·¨¶¨Òå | String getJson() £¨ocrResult ÀàµÄʵÀý·½·¨£© | ·µ»ØÖµ | String £ºOCR ʶ±ð½á¹ûµÄ JSON ×Ö·û´® | ²ÎÊý | ÎÞ | °¸Àý | // ¼ÙÉèÒÑ»ñÈ¡OCRʶ±ð½á¹û¶ÔÏó let ocrResult = new ocrResult();// »ñÈ¡JSON¸ñʽ½á¹û let jsonResult = ocrResult.getJson(); printl(jsonResult); |
🔍🔢getJsonString »ñÈ¡json×Ö·û´® ÏîÄ¿
| ÏêÇé
| ¹¦ÄÜÃèÊö
| »ñÈ¡ JSON ×Ö·û´®ÐÎʽµÄ OCR ʶ±ð½á¹û
| ·½·¨¶¨Òå
| String getJsonString()
£¨ocrResult
ÀàµÄʵÀý·½·¨£©
| ·µ»ØÖµ
| String
| ²ÎÊý
| ÎÞ
| °¸Àý
| let jsonStr = new ocrResult().getJsonString();
|
🔍🔢MLKitOcrÎÄ×Öʶ±ð ÏîÄ¿ | ˵Ã÷ | ¹¦ÄÜ | ÎÄ×Öʶ±ð | ·½·¨Ç©Ãû | ocrResult MLKitOcr(String arg0, int arg1) | ·µ»ØÖµ | ocrResult | ²ÎÊý 1 | String arg0 £¬ÓïÑÔ£¨Ä¬ÈÏÖµ£ºÖÐÎÄ£© | ²ÎÊý 2 | int arg1 £¬ËõС±¶Êý£¨Ä¬ÈÏÖµ£º2£¬¼´ËõСһ°ë£© | µ÷Óð¸Àý | screen.MLKitOcr('zh', 2) |
🔍🔢MLKitOcrRect ÎÄ×ÖÇøÓòʶ±ð ÏîÄ¿ | ÏêÇé | ¹¦ÄÜÃèÊö | ÎÄ×ÖÇøÓòʶ±ð | ·½·¨¶¨Òå | ocrResult MLKitOcrRect(String arg0, double[] arg1) | ·µ»ØÖµ | ocrResult | ²ÎÊý | - String arg0 £ºÊ¶±ðÓïÑÔ£¬Ä¬ÈÏֵΪ zh £¨ÖÐÎÄ£©
- double[] arg1 £ºÊ¶±ðÇøÓòµÄ°Ù·Ö±È×ø±ê£¬¸ñʽΪ [x1, y1, x2, y2] £¨Ê¾Àý£º[0,0,1,1] ´ú±íÈ«ÇøÓò£© | °¸Àý | let img = screen.screenShotFull(); // È«ÆÁ½ØÍ¼ let ocrres = img.MLKitOcrRect('zh', [0,0,1,1]); // ʶ±ðÖ¸¶¨ÇøÓòµÄÎÄ×Ö |
🔍🔢aiworkOCR aworkÎÄ×Öʶ±ð ÏîÄ¿ | ÏêÇé | ¹¦ÄÜÃèÊö | awork ÎÄ×Öʶ±ð | ·½·¨¶¨Òå | ocrResult aiworkOCR(int arg0, double[] arg1) | ·µ»ØÖµ | ocrResult | ²ÎÊý | - int arg0 £ºÊ¶±ð³ß´ç£¨ÍƼöÖµ£º640¡¢320£©
- double[] arg1 £ºÊ¶±ðÇøÓòµÄ°Ù·Ö±È×ø±ê£¨¸ñʽ£º[x1, y1, x2, y2] £¬Ê¾Àý [0,0,1,1] ´ú±íÈ«ÇøÓò£© | °¸Àý | let img = screen.screenShotFull(); // È«ÆÁ½ØÍ¼ let ocrres = img.aiworkOCR(640, [0,0,1,1]); // µ÷Óà awork ÎÄ×Öʶ±ð ocrres.findIncludeText("À×µç").hidClick(); // ²éÕÒ²¢µã»÷º¬"À×µç"µÄÄ¿±ê |
🔍🔢paddleOCR paddleÎÄ×Öʶ±ð ÏîÄ¿ | ÏêÇé | ¹¦ÄÜÃèÊö | paddle ÎÄ×Öʶ±ð | ·½·¨¶¨Òå | ocrResult paddleOCR(int arg0, double[] arg1) | ·µ»ØÖµ | ocrResult | ²ÎÊý | - int arg0 £ºÊ¶±ð³ß´ç£¨ÍƼöÖµ£º640¡¢320£©
- double[] arg1 £ºÊ¶±ðÇøÓòµÄ°Ù·Ö±È×ø±ê£¨¸ñʽΪ [x1, y1, x2, y2] £¬Ê¾Àý [0,0,1,1] ´ú±íÈ«ÇøÓò£© | °¸Àý | let img = screen.screenShotFull(); // È«ÆÁ½ØÍ¼ let ocrres = img.paddleOCR(640, [0,0,1,1]); // µ÷Óà paddle ÎÄ×Öʶ±ð ocrres.findIncludeText("À×µç").hidClick(); // ²éÕÒ²¢µã»÷º¬"À×µç"µÄÄ¿±ê |
🔍🔢opencv.OCRͨ¹ýѵÁ·×Ö¿âʶ±ð OCR ÎÄ×Ö ÏîÄ¿ | ÏêÇé | ¹¦ÄÜÃèÊö | ͨ¹ýѵÁ·×Ö¿âʶ±ð OCR ÎÄ×Ö | ·½·¨¶¨Òå | ocrResult OCR(Mat arg0, String arg1, double arg2, int arg3, double[] arg4) | ·µ»ØÖµ | ocrResult | ²ÎÊý | - Mat arg0 £ºÊäÈëµÄͼƬ¶ÔÏó£¨Mat ÀàÐÍ£©
- String arg1 £º×Ö¿âÎļþ£¨Â·¾¶ / Ãû³Æ£¬°¸ÀýÖд«¿Õ×Ö·û´® "" £©
- double arg2 £ºÏàËÆ¶ÈãÐÖµ£¨°¸ÀýÖÐΪ 0 £©
- int arg3 £ºÔ¤ÆÚʶ±ðµÄÎÄ×ÖÊýÁ¿£¨°¸ÀýÖÐΪ 0 £©
- double[] arg4 £ºÊ¶±ðÇøÓòµÄ°Ù·Ö±È×ø±ê£¨¸ñʽ [x1,y1,x2,y2] £¬°¸ÀýÖд«¿ÕÊý×é double[] £© | °¸Àý | opencv.OCR(Mat, "", 0, 0, double[]); // µ÷ÓÃʾÀý£¨×Ö¿â¡¢ÇøÓòµÈ²ÎÊý°´°¸ÀýĬÈÏÖµ´«È룩 |
opencv»ùÓÚ CV ÎļþµÄ OCR ʶ±ð£¨Í¨¹ýÖ¸¶¨ CV ÎļþÃû½øÐÐÎÄ×Öʶ±ð£© ÏîÄ¿ | ÏêÇé | ¹¦ÄÜÃèÊö | »ùÓÚ CV ÎļþµÄ OCR ʶ±ð£¨Í¨¹ýÖ¸¶¨ CV ÎļþÃû½øÐÐÎÄ×Öʶ±ð£© | ·½·¨¶¨Òå | ocrResult OCREx(String arg0) £¨opencv ÀàµÄ·½·¨£¬°¸ÀýÖе÷ÓÃÐÎʽ£ºopencv.OCREx("") £© | ·µ»ØÖµ | ocrResult | ²ÎÊý | String arg0 £ºCV ÎļþÃû£¨°¸ÀýÖд«Èë¿Õ×Ö·û´® "" £© | °¸Àý | opencv.OCREx(""); // µ÷ÓÃʾÀý£¨´«Èë¿Õ CV ÎļþÃû£© |
ÍêÕûʾÀý£º - /*
- 🍎½»Á÷QQȺ711841924Ⱥһ£¬Æ»¹ûÄÚ²âȺ£¬528816639
- 🍎🔨📌🔨OCR·½·¨Ð¡½á
- */
- // µÚÒ»¸öʾÀý£º»ñÈ¡ÆÁÄ»½ØÍ¼²¢½øÐÐ OCR ÎÄ×Öʶ±ð£¨¼òÌåÖÐÎÄ£©
- var img1 = screen.screenShotFull();
- var ocr1 = img1.MLKitOcr('zhs');
- var text1 = ocr1.getAllString();
- printl(text1);
- img1.recycle();
- /*
- ˵Ã÷£º
- - ÕâÊÇÒ»¸ö×î»ù±¾µÄ OCR ʾÀý¡£
- - ʹÓà MLKitOcr ·½·¨Í¨¹ý¼òÌåÖÐÎÄ´Ê¿âʶ±ð½ØÍ¼ÖеÄÎÄ×Ö¡£
- - ×îÖÕÊä³öʶ±ðµ½µÄÈ«Îı¾ÐÅÏ¢¡£
- */
- // µÚ¶þ¸öʾÀý£ºÖ¸¶¨ÇøÓòÄÚµÄ OCR ÎÄ×Öʶ±ð£¨ÖÐÎÄ£©
- var img2 = screen.screenShotFull();
- var ocrRegion2 = [0, 0.2, 1, 0.6];
- var ocrResult2 = img2.MLKitOcrRect('zh', ocrRegion2);
- var recognizedText2 = ocrResult2.getAllString();
- printl("OCRʶ±ð½á¹û: " + recognizedText2);
- img2.recycle();
- /*
- ˵Ã÷£º
- - ´ËʾÀýÖУ¬OCR ¶¨ÒåÁËÒ»¸öÌØ¶¨µÄÆÁÄ»ÇøÓòÀ´Ê¶±ðÎı¾£¬±ÜÃâÁËÈ«ÆÁʶ±ðµÄ¿ªÏú¡£
- - ʹÓà MLKitOcrRect ·½·¨ÓÅ»¯ÁËʶ±ðÇøÓò¡£
- */
- // µÚÈý¸öʾÀý£ºÊ¹Óà PaddleOCR ʶ±ð²¢²éÕÒÌØ¶¨Îı¾
- var img3 = screen.screenShotFull();
- var ocrResult3 = img3.paddleOCR(640, [0, 0, 1, 1]);
- var target3 = ocrResult3.findIncludeText("À×µç");
- if (target3) {
- target3.hidClick();
- printl("³É¹¦µã»÷Ä¿±êÇøÓò: À×µç");
- } else {
- printl("Ä¿±êÇøÓòδÕÒµ½: À×µç");
- }
- img3.recycle();
- /*
- ˵Ã÷£º
- - ʾÀýʹÓà PaddleOCR ¼¼Êõʶ±ðÎı¾¡£
- - ʶ±ðÍê³Éºó£¬²éÕÒÌØ¶¨Îı¾£¬²¢¶ÔÕÒµ½Ä¿±ê½øÐеã»÷²Ù×÷¡£
- */
- // µÚËĸöʾÀý£ºÈ«ÆÁ OCR ²éÕÒÎı¾ÄÚÈݲ¢µã»÷
- var img4 = screen.screenShotFull();
- var ocrResult4 = img4.paddleOCR(640, [0, 0, 1, 1]);
- var target4 = ocrResult4.findIncludeText("À×µç");
- if (target4) {
- target4.click();
- } else {
- printl("δÕÒµ½Ö¸¶¨Îı¾");
- }
- img4.recycle();
- /*
- ˵Ã÷£º
- - ¸ÃʾÀýÓëµÚÈý¸öÀàËÆ£¬µ«¸ü¸ßЧµØ´¦ÀíÁ˲éÕÒºÍÄ¿±ê¶¯×÷²Ù×÷¡£
- */
- // µÚÎå¸öʾÀý£º²éÕÒ°üº¬Ä¿±êÎÄ×ֵĶà¸öÇøÓò
- var img5 = screen.screenShotFull();
- var ocrResult5 = img5.MLKitOcr('zh');
- var targets5 = ocrResult5.findIncludeTexts("À×µç");
- if (targets5.length > 0) {
- targets5.forEach(target => {
- target.click();
- });
- } else {
- printl("δÕÒµ½Ö¸¶¨Îı¾");
- }
- img5.recycle();
- /*
- ˵Ã÷£º
- - ²éÕÒ°üº¬Ä¿±êÎÄ×ֵĶà¸öÇøÓò£¬·µ»ØËùÓÐÄ¿±êµÄÁÐ±í¡£
- - ±éÀúËùÓÐÄ¿±ê£¬ÖðÒ»¶ÔÆäÖ´Ðеã»÷²Ù×÷¡£
- */
- // µÚÁù¸öʾÀý£º»ñÈ¡ OCR ʶ±ðµ½µÄËùÓÐÎı¾²¢´òÓ¡
- var img6 = screen.screenShotFull();
- var ocrResult6 = img6.paddleOCR(640, [0, 0, 1, 1]);
- var allText6 = ocrResult6.getAllString();
- if (!allText6) {
- printl("δ¼ì²âµ½ÈκÎÎı¾");
- } else {
- printl("¼ì²âµ½µÄÎı¾ÄÚÈÝ: " + allText6);
- }
- img6.recycle();
- /*
- ˵Ã÷£º
- - ʾÀýչʾÈçºÎÌáÈ¡ OCR ʶ±ð½á¹ûÖеÄËùÓÐ×Ö·ûÐÅÏ¢¡£
- */
- // µÚÆß¸öʾÀý£ºÍ¨¹ý MLKitOcr ÍêÈ«¶Á³öÆÁÄ»ÎÄ×Ö
- var img7 = screen.screenShotFull();
- var ocrResult7 = img7.MLKitOcr('zh');
- printl(ocrResult7.getAllString());
- img7.recycle();
- /*
- ˵Ã÷£º
- - ʾÀýʹÓà MLKitOcr ÔÚÈ«ÆÁ·¶Î§ÄÚÌáÈ¡ËùÓÐÎı¾ÐÅÏ¢¡£
- */
- // µÚ°Ë¸öʾÀý£º»ñÈ¡ JSON ¸ñʽµÄ OCR ʶ±ð½á¹û
- var img8 = screen.screenShotFull();
- var ocrResult8 = img8.MLKitOcr('zh');
- var jsonResult8 = ocrResult8.getJson();
- printl(JSON.stringify(jsonResult8, null, 2));
- img8.recycle();
- /*
- ˵Ã÷£º
- - ´ËʾÀýչʾÁËÈçºÎ½« OCR ½á¹ûÒÔ JSON ¸ñʽ»ñÈ¡¡£
- */
- // µÚ¾Å¸öʾÀý£º»ñÈ¡ OCR µÄ JSON ±íʾ
- var img9 = screen.screenShotFull();
- var ocrResult9 = img9.MLKitOcr('zh');
- var ocrJson9 = ocrResult9.getJson();
- printl("OCR ½á¹û JSON: " + JSON.stringify(ocrJson9));
- img9.recycle();
- /*
- ˵Ã÷£º
- - ½« OCR Êä³ö½á¹ûÒÔ JSON ¸ñʽÏÔʾ£¬±ãÓÚ³ÌÐò½øÒ»²½´¦Àí¡£
- */
- // µÚÊ®¸öʾÀý£ºOpenCV OCR ʹÓÃ
- var mat10 = screen.screenShot(720, 1280, 100).getMat();
- var seek10 = opencv.OCR(mat10, 'µã»÷Í·ÌõÊäÈë¿ò.ocr', 0.95, 0);
- if (seek10) {
- printl(seek10.findIncludeText('µã»÷'));
- } else {
- printl("δÕÒµ½ÁË");
- }
- /*
- ˵Ã÷£º
- - ʹÓà OpenCV ¿âÖ´ÐÐ OCR£¬Æ¥ÅäµÄÖÃÐŶÈΪ 0.95¡£
- - ¸ù¾ÝÄÚÈݲéÕÒ°üº¬Ìض¨Îı¾µÄÇøÓò¡£
- */
- // µÚʮһ¸öʾÀý£ºOpenCV OCR À©Õ¹¹¦ÄÜʹÓÃ
- var seek11 = opencv.OCREx('¹Ø±Õºǫ́.cv');
- if (seek11) {
- printl(seek11.findIncludeText('¹Ø±Õºǫ́.cv'));
- } else {
- printl("δÕÒµ½ÁË");
- }
- /*
- ˵Ã÷£º
- - ʹÓà opencv.OCREx ¶ÔÖ¸¶¨µÄ cv Îļþ½øÐÐ OCR ʶ±ð¡£
- - À©Õ¹¹¦ÄÜ checkColorsEx ÓÃÓÚ½øÒ»²½´¦ÀíÑÕɫƥÅäºÍÎı¾Ê¶±ð½á¹û¡£
- */
¸´ÖÆ´úÂë
|