小程序实现百度AI 银行卡识别功能

简介: 1.最近突然就想玩玩AI,资料也不多,干脆就找了简单的百度免费AI玩玩2.百度文档看的头疼,眼花,还是不如直接上手干3其实所有接口用法差不多,除了人脸识别需要但的sdk4.最终发现 最后使用的时候 用了不少 Promise

1. 前言


1.最近突然就想玩玩AI,资料也不多,干脆就找了简单的百度免费AI玩玩

2.百度文档看的头疼,眼花,还是不如直接上手干

3其实所有接口用法差不多,除了人脸识别需要但的sdk

4.最终发现 最后使用的时候 用了不少 Promise


2. 准备工作


1.注册百度AI账号 ,按步骤操作

2.创建应用

3.access_token 获取 主要熟练 api用法


3. 大概的界面


1.

`O91]9X5%G]4OQPLZJ38HNG.png


2.当然不会上传我的银行卡了哈哈


4. 布局代码



<view>
  <button type="primary" bindtap="showCamera">拍照识别</button>
  <button type="primary" bindtap="openLocalImage">图片识别</button>
  <!-- 相机标签 -->
  <camera wx:if="{{showCamera}}" device-position="{{pos}}">
    <cover-view hover-class="opa" bindtap="getPhoto"></cover-view>
    <cover-image bindtap="changePos" src="/public/changeCamera.png"></cover-image>
  </camera>
  <image src="{{imgUrl}}" mode="widthFix" bindlongpress="savePhoto"></image>
  <view class="hint" wx:if="{{imgUrl}}">长按保存图片</view>
</view>



5. 打开本地相册



// 打开本地相册
  async openLocalImage() {
    console.log("打开相册")
    let res = await wx.chooseImage({
      count: 1,
      sourceType: ['album'],
    })
    this.setData({
      imgUrl: res.tempFilePaths[0]
    })
    let res2 = await this.base64toUrlencode(res.tempFilePaths[0])
    let res3 = await this.recognition(res2)
    console.log('------识别------res3', res3)
  },



6.  百度AI 接口参数 要求


1.

1(6~]3P70NU@J2MVP$CW1H2.png




7. 图片转为base64再进行urlencode编码



base64toUrlencode(imgPath) {
    return new Promise((resolve, reject) => {
      wx.getFileSystemManager().readFile({
        filePath: imgPath,
        encoding: 'base64',
        success: (res2) => {
          resolve(decodeURI(res2.data))
        },
        fail(error) {
          reject(error)
        }
      })
    })
  },



8. 调用识别接口



recognition(imgPath) {
    return new Promise((resolve, reject) => {
      wx.request({
        url: 'https://aip.baidubce.com/rest/2.0/ocr/v1/bankcard?access_token=' + this.data.access_token,
        method: 'POST',
        header: {
          'Content-Type': 'application/x-www-form-urlencoded'
        },
        data: {
          image: imgPath
        },
        success(res) {
          wx.showToast({
            title: '识别成功',
          })
          resolve(res)
        },
        fail(error) {
          wx.showToast({
            icon: 'error',
            title: '识别失败',
          })
          reject(error)
        },
      })
    })
  },

1.现在这个只是简写 大概的逻辑,具体的接口返回参数

2.

`3TF01)AZ@Y0OUQ`LJ9$(JP.png



9. 当然这个access_token 我在 onLoad的时候获取了


1.client_id

2.client_secret

3.这2个都需要创建应用的时候 生成


getToken() {
    wx.request({
      url: 'https://aip.baidubce.com/oauth/2.0/token',
      data: {
                 grant_type: 'client_credentials',
                 client_id: 'xxxxxxxxxxxxxxxxxxxxx',//用你创建的应用的API Key
                 client_secret: 'xxxxxxxxxxxxxxxxxxxxx'//用你创建的应用的Secret Key
               },
       header: {
                 'Content-Type': 'application/json' // 默认值
               },
      success: (res) => {
        console.log('res-----------', res)
        this.setData({
          access_token: res.data.access_token
        })
      },
      fail(error) {
        console.log('失败', error)
      }
    })
  },



10.打开相机



// 显示相机的函数 (默认在wxml中添加camera组件, 通过变量控制它的显示和隐藏)
  showCamera() {
    console.log("显示相机")
    this.setData({
      showCamera: true
    })
  },



11. 点击拍照



// 点击拍照的函数
  async getPhoto() {
    //创建 camera 上下文 CameraContext 对象。
    let context = wx.createCameraContext(this)
    // 拍摄照片
    try {
      let res = await context.takePhoto({
        quality: "low",
      })
      // res.tempImagePath 字段是照片的本地缓存路径
      this.setData({
        showCamera: false, // 隐藏相机
        imgUrl: res.tempImagePath
      })
      this.base64toUrlencode(res.tempImagePath)
      let res2 = await this.base64toUrlencode(res.tempImagePath)
      let res3 = await this.recognition(res2)
      console.log('------识别------res3', res3)
    } catch (error) {
      console.log("内存不足,拍照失败", err)
    }
  },



12. 长按保存



savePhoto() {
    if (!this.data.imgUrl) return;
    // 把图片保存到系统相册
    wx.saveImageToPhotosAlbum({
      filePath: this.data.imgUrl,
      success() {
        wx.showToast({
          title: '图片已保存',
        })
      }
    })
  },



13.切换摄像头



changePos() {
    this.setData({
      pos: this.data.pos == "back" ? "front" : "back"
    })
  },




相关文章
|
1月前
|
小程序
微信小程序如何实现进入小程序自动连WiFi功能
微信小程序如何实现进入小程序自动连WiFi功能
|
8天前
|
人工智能 自然语言处理 搜索推荐
优化AI对话体验并全面兼容GPT功能平台
优化AI对话体验并全面兼容GPT功能平台
15 1
|
1天前
ueditor1.5 百度富文本 编辑器增加字间距功能及按钮
ueditor1.5 百度富文本 编辑器增加字间距功能及按钮
5 0
|
12天前
|
SQL 存储 关系型数据库
AI代码提示工具可用于教学功能示例——MySQL
AI代码提示工具可用于教学功能示例——MySQL
15 0
|
19天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的多功能智能手机阅读APP附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的多功能智能手机阅读APP附带文章和源代码部署视频讲解等
15 0
|
20天前
|
小程序
微信小程序实现上传视频 / 上传图片功能以及整合上传视频 / 上传图片功能(超详细)
微信小程序实现上传视频 / 上传图片功能以及整合上传视频 / 上传图片功能(超详细)
|
20天前
|
小程序
微信小程序实现上传视频 / 上传图片功能以及整合上传视频 / 上传图片功能(超详细)
微信小程序实现上传视频 / 上传图片功能以及整合上传视频 / 上传图片功能(超详细)
|
22天前
|
人工智能 搜索推荐 机器人
AI发展已经一段时间了,当前社会身边哪些功能已经在运用了AI技术?未来AI技术还将有哪些地方会运用?
AI技术现已被广泛应用在智能家居(如自动化控制与安全)、个性化教育(定制化学习与辅助教学)、精准医疗(疾病诊断与药物研发)、智能服务(如智能客服)和金融服务(风险评估)等领域。未来,预计AI将在AI PC、人机协创、超级视野、机器人和零搜索等领域发挥更大作用,实现信息主动推送、无缝沟通和创新服务。随着技术进步,AI将持续影响并改变我们的生活。【6月更文挑战第2天】
36 0
|
1月前
|
人工智能 自动驾驶 安全
破壁人AI百度:科技公司反内卷的典型样本
互联网整个行业都在陷入被动且尴尬的局面。去年开始流行的“内卷”一词,恰如其分的描述了互联网的现状,比如抖音开始做外卖,微信强推视频号,一直硝烟弥漫的电商市场,更是激战在社区团购上。
30 3
|
30天前
|
人工智能 自动驾驶 安全
破壁人AI百度:科技公司反内卷的典型样本
互联网整个行业都在陷入被动且尴尬的局面。去年开始流行的“内卷”一词,恰如其分的描述了互联网的现状,比如抖音开始做外卖,微信强推视频号,一直硝烟弥漫的电商市场,更是激战在社区团购上。 内卷背后也有人感慨,互联网到了尽头。支撑这一论述的是,移动互联网的人口红利已经消失,几款国民型APP用户增长都固定在了10亿这个级别,只能依靠自然人口的增长和迁移。
29 0