微信小程序云开发-云存储的应用-识别驾驶证

一、准备工作

1、创建云函数identify

 

 

 2、云函数identify中index.js代码

 1 // 云函数入口文件
 2 const cloud = require('wx-server-sdk')
 3 
 4 //cloud.init()
 5 //环境变量初始化
 6 cloud.init({
 7   evn:cloud.DYNAMIC_CURRENT_ENV   //标志当前所在环境
 8 })
 9 
10 // 云函数入口函数
11 exports.main = async (event,context) => {
12   const wxContext = cloud.getWXContext()
13   if(event.action=="1"){    //action为1 返回身份证的信息
14   try {
15     const result = await cloud.openapi.ocr.idcard({
16         "type": 'photo',
17         "imgUrl": event.imgUrl
18       })
19     return result
20   } catch (err) {
21     return err
22   }
23 }else if(event.action=="2"){  //action为2 返回银行卡的信息
24   try {
25     const result = await cloud.openapi.ocr.bankcard({
26         "type": 'photo',
27         "imgUrl": event.imgUrl
28       })
29     return result
30   } catch (err) {
31     return err
32   }
33 }else if(event.action=="3"){  //action为3 返回驾驶证的信息
34   try {
35     const result = await cloud.openapi.ocr.driverLicense({
36         "type": 'photo',
37         "imgUrl": event.imgUrl
38       })
39     return result
40   } catch (err) {
41     return err
42   }
43 }else if(event.action=="4"){        //action为4 返回行驶证的信息
44   try {
45     const result = await cloud.openapi.ocr.vehicleLicense({
46         "type": 'photo',
47         "imgUrl": event.imgUrl
48       })
49     return result
50   } catch (err) {
51     return err
52   }
53 }else if(event.action=="5"){        //action为5 返回营业执照的信息
54   try {
55     const result = await cloud.openapi.ocr.businessLicense({
56         "imgUrl": event.imgUrl
57       })
58     return result
59   } catch (err) {
60     return err
61   }
62 }else if(event.action=="6"){        //action为6 返回通用印刷体的信息
63   try {
64     const result = await cloud.openapi.ocr.businessLicense({
65         "imgUrl": event.imgUrl
66       })
67     return result
68   } catch (err) {
69     return err
70   }
71 }
72 }

二、创建页面并写相应代码

创建页面IdentifyDriverLicense,用于OCR识别驾驶证信息

1、IdentifyDriverLicense.wxml

 1 <!-- 识别驾驶证信息 -->
 2 <button bindtap="identifyDriverLicense" type="primary">识别驾驶证</button>
 3 <!-- 把识别到的驾驶证图片显示到页面上 -->
 4 <view class="idcard">
 5 <image src="{{driverLicenseURL}}" ></image>
 6 </view>
 7 <!-- 把识别到的驾驶证信息显示到页面上 -->
 8 <view class="front" wx:if="{{showdriverLicense}}">
 9   <view>身份证号:{{driverLicenseMsg.idNum}}</view>
10 <view>姓名:{{driverLicenseMsg.name}}</view>
11 <view>性别:{{driverLicenseMsg.sex}}</view>
12 <view>国籍:{{driverLicenseMsg.nationality}}</view>
13 <view>住址:{{driverLicenseMsg.address}}</view>
14 <view>出生日期:{{driverLicenseMsg.birthDate}}</view>
15 <view>初次领证日期:{{driverLicenseMsg.issueDate}}</view>
16 <view>准驾车型:{{driverLicenseMsg.carClass}}</view>
17 <view>有效期开始:{{driverLicenseMsg.validFrom}}</view>
18 <view>有效期结束:{{driverLicenseMsg.validTo}}</view>
19 <view>发证机关:{{driverLicenseMsg.officialSeal}}</view>
20 </view>

2、IdentifyDriverLicense.wxss

 1 button{
 2   margin: 20rpx;
 3 }
 4 .front{
 5   margin: 20rpx;
 6 }
 7 
 8 .idcard{
 9   text-align: center;
10 }
11 .idcard image{
12   width: 95%rpx;
13   height: 300rpx;
14 }

3、IdentifyDriverLicense.js

 1 // pages/IdentifyDriverLicense/IdentifyDriverLicense.js
 2 Page({
 3 //初始化数据
 4   data:{
 5     showdriverLicense:false,
 6     driverLicenseMsg:{}
 7   },
 8 
 9 //识别驾驶证信息
10   identifyDriverLicense(){
11     //选择图片
12     wx.chooseImage({
13     count: 1,
14     sizeType: ['original', 'compressed'],
15     sourceType: ['album', 'camera'],
16   }).then(res=>{
17     console.log("图片选择成功",res);
18     console.log("所选图片的临时链接",res.tempFilePaths[0]);
19     //上传图片
20     wx.cloud.uploadFile({
21       cloudPath: (new Date()).valueOf()+'.png',
22       filePath: res.tempFilePaths[0], 
23     }).then(res=>{
24       console.log("图片上传到云存储成功",res);
25       console.log("图片在云存储里的fileID",res.fileID);
26       //将上传成功的图片显示到页面上
27       this.setData({
28         driverLicenseURL:res.fileID,
29       })
30       //获取图片真实URL
31       wx.cloud.getTempFileURL({
32         fileList:[res.fileID]
33       }).then(res=>{
34         console.log("获取图片真实链接成功",res);
35         //识别身份证背面信息
36         wx.cloud.callFunction({
37           name:"identify",
38           data:{
39             imgUrl:res.fileList[0].tempFileURL,   //传递参数给云函数
40             action:"3"       //action为1表示身份证,2表示银行卡,3表示驾驶证(在云函数中自定义的)
41           }
42         }).then(res=>{
43           console.log("图片识别成功",res);
44           this.setData({
45             driverLicenseMsg:res.result,
46             showdriverLicense:true
47           })  
48         }).catch(err=>{
49           console.log("图片识别失败",err);
50         })
51       }).catch(err=>{
52         console.log("获取图片真实链接失败",err);
53       })   
54     }).catch(err=>{
55       console.log("图片上传到云存储失败",err);
56     })
57 
58   }).catch(err=>{
59     console.log("图片选择失败",err);
60   }) 
61   }
62 })

三、效果展示

 

 

posted @ 2021-07-26 09:35  AnnLing  阅读(333)  评论(0)    收藏  举报