最近總是有同窗問我小程序ocr識別的問題,就趁機研究了下,實現了小程序識別身份證,銀行卡,駕照,營業執照,圖片文字的功能。今天來給你們講講詳細的實現流程。小程序
這裏我前面文章有講解過,就再也不細說了,不會的同窗去翻看下我以前的文章。或者看下我錄製的 講解視頻 這裏有一點須要注意的給你們說下 api
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)
}
})
}
})
複製代碼
上面代碼註釋講解的很清楚了,再結合咱們的流程圖,相信你能夠看明白。 bash
// 雲函數入口文件
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’,咱們就調用銀行卡識別async
try {
const result = await cloud.openapi.ocr.bankcard({
type: 'photo',
imgUrl: imgUrl
})
return result
} catch (err) {
console.log(err)
return err
}
複製代碼
進而把識別的結果返回給小程序端,以下圖 函數
到這裏咱們就完整的實現了,小程序識別身份證,銀行卡,行駛證的功能。至於別的更多的ocr識別,能夠去看小程序官方文檔,結合着個人這篇文章,相信你也能夠輕鬆實現更多的圖片識別。 ui
源碼其實在上面都已經貼給你們了,若是你以爲不完整,想要完整的源碼能夠在文章底部留言或者私信我。this