微信小程序编程(微信小程序编程(1))——使用百度使用百度API编写文字识别小程序编写文字识别小程序
编写思路编写思路
要使用百度等第三方API,我们得使用微信小程序提供的wx.request来向第三方平台发起请求,我们看到wx.request的参数属
性里面url是必填项,接着我们打开和百度AI平台里面的通用文字识别技术文档https://ai.baidu.com/ai-doc/OCR/zk3h7xz52,
里面提供一个url:https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic,而文档里要求有一个叫access-token的参数,接着
我们点开如何获取这个参数的网址https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu,接着可以向
https://aip.baidubce.com/oauth/2.0/token发送请求来获取access-token。
因而现在把文字识别API调用分成两个部分,首先是首先是access-token的获取接着是向百度平台发送照片进行识别的获取接着是向百度平台发送照片进行识别。在获取
access-token的时候需要在https://aip.baidubce.com/oauth/2.0/token这个链接里添加两个参数client_id和client_secret,这两
个参数要在API控制台里面创建文字识别应用后获取。填入参数后向其发起请求,我们就可以成功获取access-token进行第二
步了。
在填写完成请求接口的网址后,我们需要根据百度的技术文档在小程序request里面添加一个header属性,其参数及值为
Content-Type和application/x-www-form-urlencoded;接着把请求方法(method)改成POST(因为默认请求方法为GET,而
GET的url长度有限制),会导致请求失败);而在请求参数里面(也就是request里面的data)需要添加一个image或者url参
数,我们选择image参数,因为这个便于在微信小程序里面进行处理,我们详细看一下image的说明(
图像数据,
base64
编码
后进行
urlencode
,要求
base64
编码和
urlencode
后大小不超过
4M
,最短边至少
15px
,最长边最大
4096px,
支持
jjpg/jpeg/png/bmp
格式,当
image
字段存在时
url
字段失效
),我们发现微信小程序提供一个叫wx.getFileSystemManager()的
功能可以直接将照片进行base64编码使用,这样编写一个文字识别小程序的所需参数就都找到了,接着就是进行实践编码和
处理返回的参数(也就是识别之后的文字)。
两个重要的链接两个重要的链接
1.access-token获取:https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【百度云应用的
AK】&client_secret=【百度云应用的SK】
2.文字识别接口调用:https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=【调用鉴权接口获取的token】
参考的技术文档参考的技术文档
微信小程序wx.request:https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html
百度API通用文字识别:https://ai.baidu.com/ai-doc/OCR/zk3h7xz52
百度APIaccess-token:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu
编写代码编写代码
Wxml:
我们需要一个放图像的框、一个放文字的框和来实现以上功能的三个按钮(一个添加照片按钮,一个获取access-token的按
钮,一个发起请求完成识别的按钮)
{{item.words}}
Js:
我们可以在添加图像的时候把图像进行base64编码,因而把编码代码添加在添加图片按钮里面
putimg: function(){
// 添加照片
let that=this;
let img=that.data.img;
let word=that.data.word;
let word1=that.data.word1;
wx.chooseImage({
success: function(res) {
that.setData({
img:res.tempFilePaths[0], //赋予img图片地址(img)
word: wx.getFileSystemManager().readFileSync(res.tempFilePaths[0], "base64"), //将图片转为base64(word)
word1: encodeURIComponent(wx.getFileSystemManager().readFileSync(res.tempFilePaths[0], "base64"))
//将base46转为urlencode
})
},
count: 1,
});
},
在test按钮里面获取access-token
评论0