php身份證識別ORC的方法實現

來源:互聯網
上載者:User
這篇文章主要介紹了關於php身份證識別ORC的方法實現,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

先建立一個html,並以json格式傳輸到php檔案

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>身份證識別</title> <style> </style> <script>     window.onload = function(){         var input = document.getElementById("demo_input");         var result= document.getElementById("result");         var img_area = document.getElementById("img_area");         if ( typeof(FileReader) === 'undefined' ){            result.innerHTML = "抱歉,你的瀏覽器不支援 FileReader,請使用現代瀏覽器操作!";             input.setAttribute('disabled','disabled');         }else{            input.addEventListener('change',readFile,false);        }     }    function readFile(){        var file = this.files[0];         //這裡我們判斷下類型如果不是圖片就返回 去掉就可以上傳任意檔案           if(!/image\/\w+/.test(file.type)){            alert("請確保檔案為映像類型");             return false;         }        var reader = new FileReader();         reader.readAsDataURL(file);         console.log();        reader.onload = function(e){                 result.innerHTML = this.result;                 img_area.innerHTML = '<p class="sitetip">圖片img標籤展示:</p><img src="'+this.result+'" alt=""/>';         }    } </script> </head><body>     <form action="upload.php" method="post">    <input type="file" value="sdgsdg" id="demo_input" />     <textarea style='display: none;' name="img" id="result" rows=30 cols=300></textarea>     <p id="img_area"></p>     <input type="submit" value="提交"></form></body> </html>

再建立個upload.php

<?phpheader("Content-Type: text/html; charset=UTF-8");/** * base64圖片上傳 * @param $base64_img * @return array */$base64_img = trim($_POST['img']);$up_dir = 'upload/';//存放在目前的目錄的upload檔案夾下$fi_dir = 'ok_upload/';//存放在目前的目錄的upload檔案夾下if(!file_exists($up_dir)){    mkdir($up_dir,0777);}if(preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_img, $result)){    $type = $result[2];    if(in_array($type,array('pjpeg','jpeg','jpg','gif','bmp','png'))){        $new_file = $up_dir.date('YmdHis_').'.'.$type;        if(file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_img)))){ $img_path = str_replace('../../..', '', $new_file);$path   = 'upload/';$data   = file_get_contents($img_path);$base64 = base64_encode($data);$appkey = 'LzJu1grfwH6UaDX2';$params = array(    'app_id'     => '1106920947',                'image'      => $base64,                'card_type'  => '0',                'time_stamp' => strval(time()),                'nonce_str'  => strval(rand()),                'sign'       => '',);$params['sign'] = getReqSign($params, $appkey);// 執行API調用$url = 'https://api.ai.qq.com/fcgi-bin/ocr/ocr_idcardocr';//身份證識別OCR$response = doHttpPost($url, $params);            echo $response;die;$arr = json_decode($response,true);$photo = base64_decode($arr['data']['image']);if(!file_exists($fi_dir)){    mkdir($fi_dir,0777);}$type = 'jpg';    if(in_array($type,array('pjpeg','jpeg','jpg','gif','bmp','png'))){        $new_file = $fi_dir.date('YmdHis_').'.'.$type;        if(file_put_contents($new_file, str_replace($result[1], '', $photo))){            $img_paths = str_replace('../../..', '', $new_file);            echo '圖片處理成功</br><img src="' .$img_paths. '">';        }else{            echo '圖片處理失敗</br>';        }    }        }else{                    echo '圖片上傳失敗</br>';        }    }else{        //檔案類型錯誤    echo '圖片上傳類型錯誤';    }}else{    //檔案錯誤    echo '檔案錯誤';}
// getReqSign :根據 介面請求參數 和 應用密鑰 計算 請求籤名// 參數說明//   - $params:介面請求參數(特別注意:不同的介面,參數對一般不一樣,請以具體介面要求為準)//   - $appkey:應用密鑰// 返回資料//   - 簽名結果function getReqSign($params /* 關聯陣列 */, $appkey /* 字串*/){    // 1. 字典升序排序    ksort($params);    // 2. 拼按URL索引值對    $str = '';    foreach ($params as $key => $value)    {        if ($value !== '')        {            $str .= $key . '=' . urlencode($value) . '&';        }    }    // 3. 拼接app_key    $str .= 'app_key=' . $appkey;    // 4. MD5運算+轉換大寫,得到請求籤名    $sign = strtoupper(md5($str));    return $sign;}
// doHttpPost :執行POST請求,並取迴響應結果// 參數說明//   - $url   :介面請求地址//   - $params:完整介面請求參數(特別注意:不同的介面,參數對一般不一樣,請以具體介面要求為準)// 返回資料//   - 返回false表示失敗,否則表示API成功返回的HTTP BODY部分function doHttpPost($url, $params){    $curl = curl_init();    $response = false;    do    {        // 1. 設定HTTP URL (API地址)        curl_setopt($curl, CURLOPT_URL, $url);        // 2. 設定HTTP HEADER (表單POST)        $head = array(            'Content-Type: application/x-www-form-urlencoded'        );        curl_setopt($curl, CURLOPT_HTTPHEADER, $head);        // 3. 設定HTTP BODY (URL索引值對)        $body = http_build_query($params);        curl_setopt($curl, CURLOPT_POST, true);        curl_setopt($curl, CURLOPT_POSTFIELDS, $body);        // 4. 調用API,擷取響應結果        curl_setopt($curl, CURLOPT_HEADER, false);        curl_setopt($curl, CURLOPT_NOBODY, false);        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);        $response = curl_exec($curl);        if ($response === false)        {            $response = false;            break;        }        $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);        if ($code != 200)        {            $response = false;            break;        }    } while (0);    curl_close($curl);    return $response;}

這樣就能識別身份證上的資訊了

以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.