<!-- 识别按钮 -->
<view class="btnBox">
<button @tap="doUpload">点击图文识字</button>
</view>
<!-- 识别的图片 -->
<view class="imgBox">
<image :src="imageUrl" id="imgtest" mode="aspectFit" />
</view>
<!-- 识别出来的内容 -->
<view class="contantBox">
{{ imageUrl }}
识别出来的内容:<text>{{ contant }}</text>
</view>
contant = ""; //识别内容
imageUrl = ""; //识别的图片
baiduToken = "";
getBaiduToken() {
var apiKey = ""; //百度云上的apiKey
var secKey = ""; //百度云上的secKey
var tokenUrl = `https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=${apiKey}&client_secret=${secKey}`; //调用百度云api接口
var that = this; //防止this指向问题
// 发送请求
wx.request({
url: tokenUrl,
method: "POST",
dataType: "json",
header: {
"content-type": "application/json; charset-UTF-8",
},
// 返回数据
success: function (res: any) {
// that.setData({
// baiduToken: res.data.access_token
// })
console.log(res.data.access_token, "获取touken");
that.baiduToken = res.data.access_token;
},
// 错误信息
fail: function (res: any) {
console.log("[BaiduToken获取失败]", res);
},
});
}
// 上传图片
doUpload() {
var that = this;
this.getBaiduToken(); // 提前获取access_Token
// 选择图片,拍照或从相册中获取
wx.chooseImage({
count: 1,
sizeType: ["compressed"],
sourceType: ["album", "camera"],
success: function (res: any) {
wx.showLoading({
title: "上传中",
});
const filePath = res.tempFilePaths[0];
console.info("filePath:" + filePath);
// 上传图片
wx.getFileSystemManager().readFile({
filePath: filePath,
encoding: "base64",
// 返回数据
success: function (res: any) {
console.info("baidutoken" + that.baiduToken);
console.log("图片数据", res);
// 识别的图片复赋值
// that.setData({
// imageUrl: res.data
// })
that.scanImageInfo(res.data); // 调用百度API解析图片获取文字
},
// 错误信息
fail: function (res: any) {
console.log("[读取图片数据fail]", res);
},
complete: function (res: any) {
wx.hideLoading();
},
});
},
});
}
// 百度ORC接口调用
scanImageInfo(imageData: any) {
console.info("调佣baiduToken");
// 将图片转换成base64格式
this.imageUrl = "data:image/png;base64," + imageData;
var that = this; //防止this指向问题
const detectUrl = `https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=${that.baiduToken}`; // 调用百度云api接口并传递baiduToken
console.info("tokeken" + detectUrl);
return new Promise(function (resolve, reject) {
// 发送请求
wx.request({
url: detectUrl,
data: {
image: "data:image/png;base64," + imageData,
},
method: "POST",
dataType: "json",
header: {
// "content-type": "application/x-www-form-urlencoded",
"Content-Type": "application/x-www-form-urlencoded",
Accept: "application/json",
},
// 返回数据
success: function (res: any, resolve: any) {
console.info("成功res" + JSON.stringify(res));
var dataList = res.data.words_result[0].words;
console.log(res.data.words_result[0].words, "识别内容");
// 赋值给data中定义的变量
// that.setData({
// contant: dataList
// })
that.contant = dataList;
},
// 错误信息
fail(res: any, reject: any) {
// console.log("get dataList fail:", res.data);
console.info("丰富的失败res" + res);
},
});
});
}
07-24
333
06-07
1万+