阅读 579

PHP 身份证识别

实现步骤: 

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

  2. php接收,进行验证

  3. 调用百度api进行识别

  4. 封装返回数据

 

index.html

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
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 +=  
  • +v++datas[v].words+
  • } $(#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‘];
    }

     

    原文:https://www.cnblogs.com/quan846951943/p/15235092.html

    文章分类
    代码人生
    文章标签
    版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
    相关推荐