小程序实现百度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"
    })
  },




相关文章
|
4月前
|
存储 人工智能
|
29天前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
2月前
|
人工智能 自动驾驶 搜索推荐
【通义】AI视界|苹果AI本周正式上线,将引入四大功能
本文由【通义】自动生成,涵盖苹果AI上线、特斯拉被华尔街重新评估、谷歌开发控制计算机的AI、Meta与路透社合作及Waymo获56亿美元融资等科技动态。点击链接或扫描二维码获取更多信息。
|
2月前
|
存储 自然语言处理 小程序
微信小程序多语言切换神器:简繁体切换功能完全指南
随着全球化的发展,支持多种语言的应用程序愈发重要。本文介绍了如何在微信小程序中实现简体与繁体字体之间的切换功能,以满足不同地区用户的需求。通过创建utils文件夹并编写相应的转换函数,开发者可以方便地实现语言切换,从而提升用户体验。文章中还附带了示例代码和效果图,帮助读者更好地理解和应用这一功能。
96 0
微信小程序多语言切换神器:简繁体切换功能完全指南
|
2月前
|
机器学习/深度学习 人工智能 JSON
微信小程序原生AI运动(动作)检测识别解决方案
近年来,疫情限制了人们的出行,却推动了“AI运动”概念的兴起。AI运动已在运动锻炼、体育教学、线上主题活动等多个场景中广泛应用,受到互联网用户的欢迎。通过AI技术,用户可以在家中进行有效锻炼,学校也能远程监督学生的体育活动,同时,云上健身活动形式多样,适合单位组织。该方案成本低、易于集成和扩展,已成功应用于微信小程序。
|
2月前
|
人工智能 IDE 开发工具
给IntelliJ IDEA添加AI功能
这篇文章讲解了如何在IntelliJ IDEA中安装和使用阿里云开发的通义灵码插件,以增强IDE的人工智能辅助编程功能。
407 0
给IntelliJ IDEA添加AI功能
|
2月前
|
小程序 Linux Python
查找首字母与Python相关的的英文词汇小程序的续篇---进一步功能完善
查找首字母与Python相关的的英文词汇小程序的续篇---进一步功能完善
22 1
|
2月前
|
JSON 文字识别 小程序
微信小程序OCR插件,实现身份证、行驶证、银行卡、营业执照和驾驶证等识别
微信小程序OCR插件,实现身份证、行驶证、银行卡、营业执照和驾驶证等识别
242 0
|
3月前
|
人工智能 监控 数据可视化
如何利用 DataV 的 AI 功能进行数据可视化?
如何利用 DataV 的 AI 功能进行数据可视化?
153 1