小程序识别身份证,银行卡,营业执照,驾照的实现


Posted in Javascript onNovember 05, 2019

最近老是有同学问我小程序ocr识别的问题,就趁机研究了下,实现了小程序识别身份证,银行卡,驾照,营业执照,图片文字的功能。今天来给大家讲讲详细的实现流程。

先画一张流程图出来

小程序识别身份证,银行卡,营业执照,驾照的实现

第一次看到这个流程图,可能有点萌,什么云开发,云函数。。。。

不要着急,我们接下来会一步步带大家实现。

先看下我们的页面和效果图。

小程序识别身份证,银行卡,营业执照,驾照的实现

功能其实很简单,就是我们点对应的按钮后,去拍照或者去相册选择对应的图片。然后把图片上传到云存储,会有一个对应的图片url,然后把这个图片url传递到云函数,然后云函数里使用小程序的开发ocr能力,来识别图片,返回对应的信息回来。如下图所示,我们识别银行卡(身份证什么的就不演示了,涉及到石头哥个人隐私)

小程序识别身份证,银行卡,营业执照,驾照的实现

接下来就是代码的实现了。

一,首先要创建一个云开发的小程序项目

这里我前面文章有讲解过,就不再细说了,不会的同学去翻看下我之前的文章。或者看下我录制的讲解视频

这里有一点需要注意的给大家说下

小程序识别身份证,银行卡,营业执照,驾照的实现 

二,创建一个简单的小程序页面

1,index.wxml如下

小程序识别身份证,银行卡,营业执照,驾照的实现 

2,index.js完整代码如下

Page({

 //身份证
 shenfenzheng() {
  this.photo("shenfenzheng")
 },
 //银行卡
 yinhangka() {
  this.photo("yinhangka")
 },
 //行驶证
 xingshizheng() {
  this.photo("xingshizheng")
 },

 //拍照或者从相册选择要识别的照片
 photo(type) {
  let that = this
  wx.chooseImage({
   count: 1,
   sizeType: ['original', 'compressed'],
   sourceType: ['album', 'camera'],
   success(res) {
    // tempFilePath可以作为img标签的src属性显示图片
    let imgUrl = res.tempFilePaths[0];
    that.uploadImg(type, imgUrl)
   }
  })
 },

 // 上传图片到云存储
 uploadImg(type, imgUrl) {
  let that = this
  wx.cloud.uploadFile({
   cloudPath: 'ocr/' + type + '.png',
   filePath: imgUrl, // 文件路径
   success: res => {
    console.log("上传成功", res.fileID)
    that.getImgUrl(type, res.fileID)
   },
   fail: err => {
    console.log("上传失败", err)
   }
  })
 },

 //获取云存储里的图片url
 getImgUrl(type, imgUrl) {
  let that = this
  wx.cloud.getTempFileURL({
   fileList: [imgUrl],
   success: res => {
    let imgUrl = res.fileList[0].tempFileURL
    console.log("获取图片url成功", imgUrl)
    that.shibie(type, imgUrl)
   },
   fail: err => {
    console.log("获取图片url失败", err)
   }
  })
 },

 //调用云函数,实现OCR识别
 shibie(type, imgUrl) {
  wx.cloud.callFunction({
   name: "ocr",
   data: {
    type: type,
    imgUrl: imgUrl
   },
   success(res) {
    console.log("识别成功", res)
   },
   fail(res) {
    console.log("识别失败", res)
   }
  })
 }
})

上面代码注释讲解的很清楚了,再结合我们的流程图,相信你可以看明白。

小程序识别身份证,银行卡,营业执照,驾照的实现 

三,重头戏来了,识别的核心代码是下面这个云函数

小程序识别身份证,银行卡,营业执照,驾照的实现

云函数的完整代码也给大家贴出来

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()

// 云函数入口函数
exports.main = async(event, context) => {
 let {
  type,
  imgUrl
 } = event
 switch (type) {
  case 'shenfenzheng':
   {
    // 识别身份证
    return shenfenzheng(imgUrl)
   }
  case 'yinhangka':
   {
    // 识别银行卡
    return yinhangka(imgUrl)
   }
  case 'xingshizheng':
   {
    // 识别行驶证
    return xingshizheng(imgUrl)
   }
  default:
   {
    return
   }
 }
}

//识别身份证
async function shenfenzheng(imgUrl) {
 try {
  const result = await cloud.openapi.ocr.idcard({
   type: 'photo',
   imgUrl: imgUrl
  })
  return result
 } catch (err) {
  console.log(err)
  return err
 }
}
//识别银行卡
async function yinhangka(imgUrl) {
 try {
  const result = await cloud.openapi.ocr.bankcard({
   type: 'photo',
   imgUrl: imgUrl
  })
  return result
 } catch (err) {
  console.log(err)
  return err
 }
}
//识别行驶证
async function xingshizheng(imgUrl) {
 try {
  const result = await cloud.openapi.ocr.vehicleLicense({
   type: 'photo',
   imgUrl: imgUrl
  })
  return result
 } catch (err) {
  console.log(err)
  return err
 }
}

其实没什么特别的,就是用一个switch方法,根据用户传入的不同的type值,来实现不同的识别效果。

如用传入的type是‘ yinhangka',我们就调用银行卡识别

try {
  const result = await cloud.openapi.ocr.bankcard({
   type: 'photo',
   imgUrl: imgUrl
  })
  return result
 } catch (err) {
  console.log(err)
  return err
 }

进而把识别的结果返回给小程序端,如下图

小程序识别身份证,银行卡,营业执照,驾照的实现

到这里我们就完整的实现了,小程序识别身份证,银行卡,行驶证的功能。至于别的更多的ocr识别,可以去看小程序官方文档,结合着我的这篇文章,相信你也可以轻松实现更多的图片识别。

小程序识别身份证,银行卡,营业执照,驾照的实现

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript中使用css需要注意的地方小结
Sep 01 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
Mar 13 Javascript
javascript背景时钟实现方法
Jun 18 Javascript
jQuery进行组件开发完整实例
Dec 15 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
Jul 27 Javascript
原生js实现无限循环轮播图效果
Jan 20 Javascript
js仿QQ邮箱收件人选择与搜索功能
Feb 10 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
Aug 17 jQuery
vue路由懒加载的实现方法
Mar 12 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
May 04 jQuery
微信小程序图片左右摆动效果详解
Jul 13 Javascript
Vue数组响应式操作及高阶函数使用代码详解
Aug 01 Javascript
node.js域名解析实现方法详解
Nov 05 #Javascript
node.js文件操作系统实例详解
Nov 05 #Javascript
Vue中使用matomo进行访问流量统计的实现
Nov 05 #Javascript
node.js实现简单的压缩/解压缩功能示例
Nov 05 #Javascript
js实现随机点名程序
Sep 17 #Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
Nov 05 #Javascript
Vue通过WebSocket建立长连接的实现代码
Nov 05 #Javascript
You might like
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
php给图片加文字水印
2015/07/31 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
php7 参数、整形及字符串处理机制修改实例分析
2020/05/25 PHP
jQuery Ajax 实例全解析
2011/04/20 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
jQuery实现数字加减效果汇总
2014/12/16 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
js对象基础实例分析
2015/01/13 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
Python的Django框架中settings文件的部署建议
2015/05/30 Python
深入讲解Python编程中的字符串
2015/10/14 Python
Python单链表简单实现代码
2016/04/27 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
python下载微信公众号相关文章
2019/02/26 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
介绍一下linux的文件系统
2015/10/06 面试题
户籍证明的格式
2014/01/13 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
观后感开头
2015/06/19 职场文书
python中的装饰器该如何使用
2021/06/18 Python
React如何创建组件
2021/06/27 Javascript
keepalived + nginx 实现高可用方案
2022/12/24 Servers