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


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 相关文章推荐
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
Jul 19 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
May 20 Javascript
js中函数调用的两种常用方法使用介绍
Jul 17 Javascript
浅谈JS运算符&&和|| 及其优先级
Aug 10 Javascript
JS命令模式例子之菜单程序
Oct 10 Javascript
Node.js  REPL (交互式解释器)实例详解
Aug 06 Javascript
基于Vue2.X的路由和钩子函数详解
Feb 09 Javascript
前端防止用户重复提交js实现代码示例
Sep 07 Javascript
vue设置一开始进入的页面教程
Oct 28 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
Feb 12 Javascript
JS实现炫酷轮播图
Nov 15 Javascript
如何利用js在两个html窗口间通信
Apr 27 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中路径问题的解决方案
2006/10/09 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
JSON 入门指南 想了解json的朋友可以看下
2009/08/26 Javascript
jquery select选中的一个小问题
2009/10/11 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
微信中一些常用的js方法汇总
2015/03/12 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
跟老齐学Python之list和str比较
2014/09/20 Python
wxPython窗口中文乱码解决方法
2014/10/11 Python
linux 下实现python多版本安装实践
2014/11/18 Python
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
python中安装模块包版本冲突问题的解决
2017/05/02 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
python图片合成的示例
2020/11/09 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
青年创业培训欢迎词
2014/01/08 职场文书
教师业务培训方案
2014/05/01 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技