JS调用阿里云OCR身份证识别

  因为工作原因,需要调取阿里云OCR身份证识别,但是阿里云给的请求示例都是后台调用的代码,由于特殊原因,我需要的是前台JS调用,所以决定自己尝试一下,最后成功调用了,废话不多说,直接上代码。

var json = {
    "image":imp,    
    "configure": "{\"side\":\"face\"}"
};

$.ajax({
    crossDomain: true,
    beforeSend: function(req) {
        req.setRequestHeader("Content-Type", "application/octet-stream; charset=utf-8");
        req.setRequestHeader("Authorization", "APPCODE AppCode值");
    },
    type: "POST",
    url:"http://dm-51.data.aliyun.com/rest/160601/ocr/ocr_idcard.json",
    dateType:"JSON",
    data: JSON.stringify(json),
    error: function(request) {
        alert("识别失败,请重新上传照片或手动输入");
    },
    success: function(data) {
        var obj = JSON.parse(data);

        document.getElementById('Name').value = obj.name;
        document.getElementById('sex').value = obj.sex;
        document.getElementById('national').value = obj.nationality;
        document.getElementById('IdCard').value = obj.num;
        document.getElementById('address').value = obj.address;
    }
});

  通过查看阿里云的API接口说明,发现其调用地址:http://ai-market-ocr-person-id.icredit.link/ai-market/ocr/personid,请求方式为POST,返回类型为JSON,且请求数据为:

{
    "image":  "图片二进制数据的base64编码",
    "configure": "{\"side\":\"face\"}"  #正面/反面:face/back
}

  这些说明了Ajax的type,url 及 dateType,由于存在跨域问题,于是在Ajax中添加了crossDomain: true,但是发现还存在appcode认证问题,还好阿里云提供了一个调试工具,在调试工具中调试后发现,appcode是写在headers中的,且它的Content-Type为application/octet-stream; charset=utf-8,于是在Ajax中添加了:

beforeSend: function(req) {
        req.setRequestHeader("Content-Type", "application/octet-stream; charset=utf-8");
        req.setRequestHeader("Authorization", "APPCODE AppCode值");
    }

  这样就可以正常的传值了,最后再对传回的值做处理就可以了。

你可能感兴趣的:(JS调用阿里云OCR身份证识别)