• auto.js调用百度ocr实现图片上的文字识别


    auto.waitFor();
    //console.show();
    var height = device.height;
    var width = device.width;
    var curr_time = new Date();
    var now_D = curr_time.getDay();
    log("
    设备宽:" + width + "
    " + "设备高:" + height + "
    " + "手机型号:" + device.model + "
    安卓版本:" + device.release);
    //设置脚本坐标点击所适合的屏幕宽高。
    setScreenMetrics(width, height);
    //请求截图权限
    if (!requestScreenCapture()) {
        toast("请求截图失败");
        exit();
    }
    var imgScreen = captureScreen();//请求截取当前屏幕
    var logOcr= Baidu_ocr(imgScreen);
    log(logOcr);
    var wordResult=logOcr.words_result;
    var count=0;
    wordResult.forEach(element => {
        count++;
        log(count+":"+element.words);
    });
    //调用百度文字识别ocr得到当前手机截屏文字
    function Baidu_ocr(imgFile){
        log("调用百度ocr开始识图");
        //var imag64 = images.toBase64(imgFile);//转换截屏图片
        var imag64 = images.toBase64(imgFile, "png", 100);//转换截屏图片
        //log(imag64.string());
        //该APIKey和Secret为"这是谁的爽歪歪"所有
        var API_Key="xXLSyVarLbQZarIgPZLyAgMa";
        var Secret_Key="bw1KWXr8TVuLmfwg4qsBhzkrqAnkffXQ";
        //access_token获取地址。
        var getTokenUrl="https://aip.baidubce.com/oauth/2.0/token";
        var token_Res = http.post(getTokenUrl, {
            grant_type: "client_credentials",
            client_id: API_Key,
            client_secret: Secret_Key,
        });
        var access_token=token_Res.body.json().access_token;
        //通用文字识别,50000次/天免费
        var ocrUrl = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic";
        var ocr_Res = http.post(ocrUrl, {
            headers: {
                "Content - Type": "application/x-www-form-urlencoded"
            },
            access_token: access_token,
            image: imag64,
            language_type:"CHN_ENG"
        });
        var json = ocr_Res.body.json();
        //log(json);
        return json;
    }

    用百度智能云提供的文字识别返回json格式内容,非常好用。

    还有另外一种写法,由飞云脚本圈整理提供(www.feiyunjs.com)

    function Baidu_OCR(imgFile) {
        access_token = http.get("https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=YIKKfQbdpYRRYtqqTPnZ5bCE&client_secret=hBxFiPhOCn6G9GH0sHoL0kTwfrCtndDj").body.json().access_token;
        url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic" + "?access_token=" + access_token;
        imag64 = images.toBase64(images.read(imgFile));
        res = http.post(url, {headers: {'Content-Type': 'application/x-www-form-urlencoded'},image: imag64,image_type: "BASE64",language_type:"JAP"});
        str = JSON.parse(res.body.string()).words_result.map(val => val.words).join('
    ');
        return str;
    }
    
    imgFile = "/storage/emulated/0/tencent/Tim_Images/-2c197ea407301935.jpg";
    log(Baidu_OCR(imgFile));

    这个代码看起来非常简洁,但是有些不容易看懂,还是推荐我写的第一种

  • 相关阅读:
    asp.net中session的原理及应用
    通过SessionID和用户名来保证同一个用户不能同时登录(单点登录)
    ASP.NET中application对象的用法
    Tornado Web 框架
    LinkCode 下一个排列、上一个排列
    python版本与编码的区别
    python基本数据类型——set
    python基本数据类型——int
    python基本数据类型——str
    python基本数据类型——list
  • 原文地址:https://www.cnblogs.com/Dumb-dog/p/12001085.html
Copyright © 2020-2023  润新知