Maison > Article > développement back-end > Implémentation de la méthode d'identification de la carte d'identité php ORC
Cet article présente principalement l'implémentation de la méthode ORC pour la reconnaissance des cartes d'identité php. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
Créez d'abord un code HTML. et utilisez Transférer le format json vers un fichier 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>
Créer un upload.php
<?php header("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; }
De cette façon, vous pourrez identifier les informations sur la carte d'identité
Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !
Recommandations associées :
php implémente la fonction de téléchargement Excel via un formulaire de table HTML
Mécanisme de réflexion Reflection de PHP Introduction
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!