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


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 事件参考手册
Dec 24 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
Dec 27 Javascript
js实现文本框选中的方法
May 26 Javascript
JavaScript检测并限制复选框选中个数的方法
Aug 12 Javascript
javascript实现3D切换焦点图
Oct 16 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
May 20 Javascript
关于js原型的面试题讲解
Sep 25 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
Nov 24 Javascript
js仿拉勾网首页穿墙广告效果
Mar 08 Javascript
jQuery实现的回车触发按钮事件功能示例
Mar 25 jQuery
解决vue2 在mounted函数无法获取prop中的变量问题
Nov 15 Javascript
JS拖拽排序插件Sortable.js用法实例分析
Feb 20 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实现长连接的方法与注意事项的问题
2013/05/10 PHP
Linux中用PHP判断程序运行状态的2个方法
2014/05/04 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
JavaScript实现找质数代码分享
2015/03/24 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
详解vue-property-decorator使用手册
2019/07/29 Javascript
js调用网络摄像头的方法
2020/12/05 Javascript
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
python ip正则式
2009/05/07 Python
Python调用命令行进度条的方法
2015/05/05 Python
python实现RSA加密(解密)算法
2016/02/17 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
Python 关于反射和类的特殊成员方法
2017/09/14 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
python 爬虫爬取京东ps4售卖情况
2020/12/18 Python
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
总裁岗位职责
2013/12/04 职场文书
护士自我介绍信
2014/01/13 职场文书
工程专业求职自荐书范文
2014/02/18 职场文书
励志演讲稿大全
2014/08/21 职场文书
科技活动周标语
2014/10/08 职场文书
扬州个园导游词
2015/02/06 职场文书
学校计划生育责任书
2015/05/09 职场文书
离婚案件答辩状
2015/05/22 职场文书
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL
Nginx反向代理、重定向
2022/04/13 Servers