第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 小程序识别身份证 银行卡 营业执照 驾照 小程序OCR图片识别

小程序识别身份证 银行卡 营业执照 驾照 小程序OCR图片识别

时间:2021-05-28 17:06:49

相关推荐

小程序识别身份证 银行卡 营业执照 驾照 小程序OCR图片识别

最近老是有同学问我小程序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 = thiswx.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 = thiswx.cloud.uploadFile({cloudPath: 'ocr/' + type + '.png',filePath: imgUrl, // 文件路径success: res => {console.log("上传成功", res.fileID)that.getImgUrl(type, res.fileID)},fail: err => {console.log("上传失败", err)}})},//获取云存储里的图片urlgetImgUrl(type, imgUrl) {let that = thiswx.cloud.getTempFileURL({fileList: [imgUrl],success: res => {let imgUrl = res.fileList[0].tempFileURLconsole.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)}})}})

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

三,要记得申请小程序官方免费识别额度

现在如果直接调用,会出现下面这个问题

因为小程序官方更改了免费使用额度,OCR能力已全面接入服务平台计费系统。除服务平台接入方式外,原内测API,插件接入方式也均已接入计费系统。.4.1起,已接入内测的开发者,免费额度会统一调整为100次/天。

所以我们要去申请100次每天的免费额度。

https://fuwu./service/detail/000ce4cec24ca026d37900ed551415

我们学习使用, 基本上100次每天的免费额度就够我们用的了。但是这一步一定要申请,不然用不了识别功能。

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

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

// 云函数入口文件const cloud = require('wx-server-sdk')cloud.init()// 云函数入口函数exports.main = async(event, context) => {let {type,imgUrl} = eventswitch (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识别,可以去看小程序官方文档,结合着我的这篇文章,相信你也可以轻松实现更多的图片识别。

源码其实在上面都已经贴给大家了,如果你觉得不完整,想要完整的源码可以在文章底部留言或者私信我。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。