本文提供的代码仅供参考。不建议用于生产环境。
可能有些地方在最新版本的Auto.js上面需要做修改,才能运行。
//此代码由飞云脚本圈整理提供(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));
AUTOJS利用百度OCR识别找字点击 详细代码
//此段代码要先在百度智能云上注册并开通百度OCR文字识别,开通方法请自行百度
//https://login.bce.baidu.com/?account=&redirect=http%3A%2F%2Fconsole.bce.baidu.com%2F#/index/overview
//首先获取百度的token
var token = baidu_access_Token()
/**
* @function baidu_access_Token 获取百度Access_Token的函数
*/
function baidu_access_Token() {
//注册百度云识别时给的,可以登录百度智能云在创建应用里面查看到。
var API_Key = "zcftgkhLUernYU3upuSgxG"
//注册百度云识别时给的,可以登录百度智能云在创建应用里面查看到。
var Secret_Key = "poexZNpZWNUNFcVpocBNPk8vWBidET";
//access_token获取地址,向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:
//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;
var 提交地址 = "https://aip.baidubce.com/oauth/2.0/token"
var token_Res = http.post(提交地址, {
grant_type: "client_credentials",
client_id: API_Key,
client_secret: Secret_Key,
});
var token = token_Res.body.json().access_token
// log(token_Res)
// log(token)
return token
}
//找字点击
//log(BaiDu_Ocr_Click("中"))
/**
* @function BaiDu_Ocr_Click 点击百度识别的文字,点击成功返回true,失败返回false.
* @param str 要点击的文字。
*/
function BaiDu_Ocr_Click(str){
var isClick=false
//我这个利用模拟器在测试,因为AUTOJS的截图在模拟器上老出错所有改用Shell截图
var a = shell("screencap -p /sdcard/Download/screen.png", true);
//读取图片
var img = images.read("/sdcard/Download/screen.png")
//转化成基于64的图片
var imag64 = images.toBase64(img, "png", 100);
var SiteInfo_ocr_Url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general"; //含位置信息,每天可用500次。
var ocr_Res = http.post(SiteInfo_ocr_Url, {
headers: {
"Content - Type": "application/x-www-form-urlencoded" //连接的请求方式,一般是'content-type': 'application/json',
},
access_token: token,
image: imag64,
})
var json = ocr_Res.body.json().words_result;
json.forEach(function(w){
//log(w.words)
if (w.words.indexOf(str) != -1) {
// if (w.words==str){
log(w.words)
isClick = click(w.location.left, w.location.top); //点击指定的文字
return
}
})
return isClick
}
//查找文字
log(BaiDu_Ocr_FindWord("基本"))
/**
* @function BaiDu_Ocr_FindWord 百度识别查找文字,找到返回true,失败返回false.
* @param str 要查找的文字。
*/
function BaiDu_Ocr_FindWord(str){
var isClick=false
//我这个利用模拟器在测试,因为AUTOJS的截图在模拟器上老出错所有改用Shell截图
var a = shell("screencap -p /sdcard/Download/screen.png", true);
//读取图片
var img = images.read("/sdcard/Download/screen.png")
//转化成基于64的图片
var imag64 = images.toBase64(img, "png", 100);
var Common_Ocr_Url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"; //普通文字识别,每天可用5000次。
var ocr_Res = http.post(Common_Ocr_Url, {
headers: {
"Content - Type": "application/x-www-form-urlencoded" //连接的请求方式,一般是'content-type': 'application/json',
},
access_token: token,
image: imag64,
})
var json = ocr_Res.body.json().words_result;
json.forEach(function(w){
//log(w.words)
if (w.words.indexOf(str) != -1) {
log(w.words)
//如果找到了就返回
isClick=true
return
}
})
return isClick
}
一个现成的例子:
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;
}