阿里通过图片读取身份证或者营业执照信息

发布时间 2023-05-08 16:16:13作者: 知冷知热

注意身份证要传正反面

参考网址:

https://market.aliyun.com/products/57124001/cmapi010401.html?spm=5176.730005.0.0.69693524BDSWkc#sku=yuncode440100000
https://market.aliyun.com/products/57124001/cmapi013592.html?spm=5176.730005.productlist.d_cmapi013592.76123524PGpCCH&innerSource=search_%E8%90%A5%E4%B8%9A%E6%89%A7%E7%85%A7%E8%AF%86%E5%88%AB#sku=yuncode759200000
/**
* 读取营业执照文字
* @param $file
* @param int $type 0身份证正面 1身份证背面 2营业执照
* @return bool|mixed
*/
public static function getLicenseInfo($file,$type = 0) {
if ($type == 2){
//营业执照
$url = "https://dm-58.data.aliyun.com/rest/160601/ocr/ocr_business_license.json";
}else{
//身份证
$url = "http://dm-51.data.aliyun.com/rest/160601/ocr/ocr_idcard.json";
}
$appcode = env("ALIPAY_APPCODE");

// if($fp = fopen($file, "rb", 0)) {
// $binary = fread($fp, filesize($file)); // 文件读取
// fclose($fp);
// $base64 = base64_encode($binary); // 转码
// }else{
// $base64 = $file;
// }
$base64 = $file;
$headers = array();
array_push($headers, "Authorization:APPCODE " . $appcode);
//根据API的要求,定义相对应的Content-Type
array_push($headers, "Content-Type".":"."application/json; charset=UTF-8");
$querys = "";
$request = array(
"image" => "$base64"
);

if ($type == 0){
$configure = array(
"side" => "face"
);
$request["configure"] = json_encode($configure);
}else if ($type == 1){
$configure = array(
"side" => "back"
);
$request["configure"] = json_encode($configure);
}
$body = json_encode($request);
$method = "POST";
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
if (1 == strpos("$".$url, "https://"))
{
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
$result = curl_exec($curl);
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$rheader = substr($result, 0, $header_size);
$rbody = substr($result, $header_size);

$httpCode = curl_getinfo($curl,CURLINFO_HTTP_CODE);
if($httpCode == 200){
// printf("result is :\n %s\n", $rbody);
return json_decode($rbody,true);
}else{
// printf("Http error code: %d\n", $httpCode);
// printf("Error msg in body: %s\n", $rbody);
// printf("header: %s\n", $rheader);
return false;
}
}