quan846951943

php + html + api  读取身份证

实现步骤: 

  1. 前端上传一张base64的图片

  2. php接收,进行验证 

  3. 调用百度api进行识别

    a. 登录百度智能云  点击前往

    b. 点击立即使用

                

    c. 如果没有引用那就创建一个应用   

              

 

    d. 填写信息 (根据你的个人信息进行选择,这里接口选择使用默认的,不需要进行修改)

               f. 申请完成,去领取免费使用额度 

              

                    这里我已经领取了,不能再接着领取,  你们领取身份证识别的额度就行  (注意: 根据提示这里领取后在30分钟内才有效)

                      

 

 

 

    g.  查看是否生效

    

                             

 

 

 

完成步骤后就可以使用了,不多说了,上代码了

 

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="file" id="file" onchange="imageChange(this)"><br>
<img id="img" src="" alt="" style="height: 100px;">
<ul id="datas"></ul>

<script src="https://cdn.staticfile.org/jquery/2.0.3/jquery.min.js"></script>
<script >
    function imageChange(obj){
        var image = obj.files[0];
        //将file 转为base64
        var reader = new FileReader();
        reader.readAsDataURL(image);
        reader.onload = function(ev) {
            var dataURL = ev.target.result;
            var src = \'\';
            $.post(\'cacheId.php\',{base:dataURL,type:1},function(data){  //ajax请求
                $(\'#img\').attr(\'src\',dataURL)
                var datas = data.words_result;
                for(v in datas){
                    src += \' <li><span>\'+v+\':</span><span>\'+datas[v].words+\'</span></li>\'
                }
                $(\'#datas\').append(src)
            },\'json\')
        }

    }
</script>
</body>
</html>
cacheId.php
<?php
$api_key = \'你的api_key\';
$secret_key = \'你的secret_key\';



//首先先获取access_token  ,因为请求身份证验证接口需要用到 ,请求access_token 有效期是30天 我这里没有保存, 如需要你们可以保存到session中
//获取access_token  返回参数请参考 https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu
$access_token = getAccessToken($api_key,$secret_key);

//请求身份证识别接口地址
//https://cloud.baidu.com/doc/OCR/s/rk3h7xzck  官网文档
$url = \'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=\'.$access_token;

//接收到前端传过来的base64图片  官网最大能接口4M 并且后缀为jpg/jpeg/png/bmp格式, 我这里也懒得进行操作了,你们获取base进行验证一下就行
$base = $_POST[\'base\'];

//发起请求
$body = [\'id_card_side\' => "front",\'image\' => $base];
//$body[\'detect_photo\'] = \'true\';  //这个是获取头像的, 有需要请解注释

//请求第三方并以json的格式返回
$res = request_post($url,$body);
//返回参数参考地址: https://cloud.baidu.com/doc/OCR/s/rk3h7xzck
//错误码请自行判断
//参考地址 https://cloud.baidu.com/doc/OCR/s/dk3h7y5vr
exit(json_encode($res));





/**
 * 创建一个curl请求,用来请求第三方
 * @param $url
 * @param array $data
 * @return array|bool|float|int|mixed|stdClass|string|null
 * User: wang
 * Date: 2021/9/6 18:13
 */
function request_post($url , $data=array()){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    $output = curl_exec($ch);
    curl_close($ch);

    return json_decode($output,true);
}

/**
 * 获取AccessToken
 * @param $api_key
 * @param $secret_key
 * @return mixed|string
 * User: wang
 * Date: 2021/9/6 18:30
 */
function getAccessToken($api_key,$secret_key){
    $url = \'https://aip.baidubce.com/oauth/2.0/token\';
    $post_data[\'grant_type\']    = \'client_credentials\';
    $post_data[\'client_id\']     = $api_key;
    $post_data[\'client_secret\'] = $secret_key;
    $o = "";
    foreach ( $post_data as $k => $v )
    {
        $o.= "$k=" . urlencode( $v ). "&" ;
    }
    $post_data = substr($o,0,-1);

    $res = request_post($url, $post_data);
    if(!isset($res[\'access_token\'])){
        exit($res[\'error\']);
    }
    return $res[\'access_token\'];
}

 如有不懂可留言,我看到会回的。 如果急需,那请加我QQ :  846951943

分类:

技术点:

相关文章: