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("\n设备宽:" + width + "\n" + "设备高:" + height + "\n" + "手机型号:" + device.model + "\n安卓版本:" + 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('\n');
    return str;
}

imgFile = "/storage/emulated/0/tencent/Tim_Images/-2c197ea407301935.jpg";
log(Baidu_OCR(imgFile));

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

posted @ 2019-12-07 11:24  任督二脉  阅读(9387)  评论(0编辑  收藏  举报