文章目录
1、背景
最近在做一个CRM微信小程序工具,用户提出需要增加名片拍照智能识别的需求。由于在前段时间特意对BAT AI开放平台的OCR能力做过了解(具体参见本文:百度、阿里、腾讯开放平台OCR功能解析),故设想使用腾讯开放平台名片OCR接口完成以上需求。
2、腾讯开放平台名片OCR接口
2.1 文档参考
注意:腾讯开放平台接口的接口鉴权的签名算法较为特殊。
. 接口描述
根据用户上传的名片图像,返回识别出的名片字段信息,目前已支持20多个字段识别(姓名、英文姓名、职位、英文职位、部门、英文部门、公司、英文公司、地址、英文地址、邮编、邮箱、网址、手机、电话、传真、QQ、MSN、微信、微博、公司账号、logo、其他)
2.2 小程序OCR功能主要JS代码实现
let md5 = require('../md5.js')
let app_id = '请录入您对应的app_id'
let app_key = '请录入您对应的app_key'
let url = 'https://api.ai.qq.com/fcgi-bin/ocr/ocr_bcocr'
let request = (base64Img, callback) => {
let params = {
app_id: app_id,
image: base64Img,
nonce_str: Math.random().toString(36).substr(2),
time_stamp: parseInt(new Date().getTime() / 1000).toString()
}
params['sign'] = _genRequestSign(params)
wx.request({
url: url,
data: params,
header: {
'content-type': 'application/x-www-form-urlencoded'
},
method: 'POST',
success: function (res) {
let formatRes = _formatResult(res.data)
if (formatRes) {
if (callback.success)
callback.success(formatRes)
} else {
if (callback.fail)
callback.fail()
}
},
fail: function (res) {
if (callback.fail)
callback.fail()
}
})
}
let _genRequestSign = (params) => {
// 1. 对请求参数按字典升序排序
params = _sortObject(params)
// 2. 拼接键值对,value部分进行URL编码
let paramStr = ''
let keys = Object.keys(params)
for (let idx in keys) {
let key = keys[idx]
paramStr += key + '=' + encodeURIComponent(params[key]) +