getAccessToken(); } /** * *护照识别 * @param string $fileData 图片的二进制数据 * @return array */ function passport($fileData) { if ($fileData === false) { return [ 'code' => 0, 'msg' => '无法读取上传的文件', ]; } if (empty($this->access_token)){ return [ 'code' => 0, 'msg' => '无法识别', ]; } $curl = new Curl(); $curl->setOpt(CURLOPT_SSL_VERIFYPEER, false); $curl->setOpt(CURLOPT_SSL_VERIFYHOST, 0); $curl->post($this->ocr_url.'passport'.'?access_token='.$this->access_token, [ 'image' => base64_encode($fileData), ]); if ($curl->error) { return [ 'code' => 0, 'msg' => $curl->errorMessage, ]; } else { if (isset($curl->response->error_code)){ return [ 'code' => 0, 'msg' => '解析失败', ]; } $datas = json_decode(json_encode($curl->response), true); return [ 'code' => 1, 'data' => parsePassport($datas) ]; } } public function getAccessToken() { if (file_exists(BAIDUACCESSTOKENDIR.'baidu_access_token')){ $access_token = file_get_contents(BAIDUACCESSTOKENDIR.'baidu_access_token'); $access_token = json_decode($access_token,true); if ($access_token['expires_time'] > time()){ $this->access_token = $access_token['access_token']; return [ 'code' => 1, 'msg' => "获取成功", ]; } } $this->access_token_url = $this->access_token_url.'&client_id='.config('app.baidu_ocr.appkey').'&client_secret='.config('app.baidu_ocr.appsecket'); $curl = new Curl(); $curl->setHeader('Content-Type', 'application/json'); $curl->post($this->access_token_url); if ($curl->error) { return [ 'code' => 0, 'msg' => $curl->errorMessage, ]; } //进行存储access_token $access_token = $curl->response->access_token; $this->access_token = $access_token; file_put_contents(BAIDUACCESSTOKENDIR.'baidu_access_token',json_encode( [ 'access_token' => $access_token, 'expires_time' => time() + $curl->response->expires_in - 600, ] )); return [ 'code' => 1, 'msg' => "获取成功", ]; } /** * *身份证识别 * @param string $fileData 图片的二进制数据 * @return array */ function identification($fileData) { if ($fileData === false) { return [ 'code' => 0, 'msg' => '无法读取上传的文件', ]; } if (empty($this->access_token)){ return [ 'code' => 0, 'msg' => '无法识别', ]; } $curl = new Curl(); $curl->post($this->ocr_url.'idcard'.'?access_token='.$this->access_token, [ 'id_card_side' => "front", 'image' => base64_encode($fileData), ]); if ($curl->error) { return [ 'code' => 0, 'msg' => $curl->errorMessage, ]; } else { if (isset($curl->response->error_code)){ return [ 'code' => 0, 'msg' => '解析失败', ]; } $datas = json_decode(json_encode($curl->response), true); return [ 'code' => 1, 'data' => parseIdentification($datas) ]; } } /** * *护照识别 * @param string $fileData 图片的二进制数据 * @return array 包含压缩后图片信息的数组 */ function visa($fileData) { if ($fileData === false) { return [ 'code' => 0, 'msg' => '无法读取上传的文件', ]; } if (empty($this->access_token)){ return [ 'code' => 0, 'msg' => '无法识别', ]; } $curl = new Curl(); $curl->post($this->ocr_url.'accurate_basic'.'?access_token='.$this->access_token, [ 'image' => base64_encode($fileData), 'language_type'=>'ENG' ]); if ($curl->error) { return [ 'code' => 0, 'msg' => $curl->errorMessage, ]; } else { if (isset($curl->response->error_code)){ return [ 'code' => 0, 'msg' => '解析失败', ]; } $datas = json_decode(json_encode($curl->response), true); return [ 'code' => 1, 'data' => parseVisa($datas) ]; } } }