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