登录
原创

基于PHP的证件识别接口示例代码

发布于 2022-11-11 阅读 2956
  • PHP
  • API
  • 聚合数据
原创

1、开通接口

以下代码示例基于聚合数据提供的证件识别接口,使用前需要先注册申请本接口,获得请求密钥key。
接口文档地址:https://www.juhe.cn/docs/api/id/153

2、示例代码-图片内容base64编码上传方式

支持本地图片和远程图片URL方式,推荐

<?php
// 证件识别接口 请求密钥key
$apiKey = '********';
// 证件识别接口的URL
$apiUrl = 'http://v.juhe.cn/certificates/queryBase64';

// 需要识别的图片地址(本地图片文件路径或网络URL)
// $imgFile = 'https://xxxx.xxx.com/testimg.jpeg';
$imgFile = 'WechatIMG305.jpeg';

$imageFileBase64Content = base64_encode(file_get_contents($imgFile));

// 组装请求参数
$params = [
    'key' => $apiKey, // 您申请到的接口请求key
    'cardType' => 3, // 证件类型,依据支持的证件类型清单id修改
    'base64' => $imageFileBase64Content
];

// 发起网络请求证件识别接口
$response = juheHttpRequest($apiUrl, $params, 1);
$result = json_decode($response, true);
if ($result) {
    print_r($result);
    // 请求成功,正常响应。 依据自己的业务逻辑修改
    $errorCode = $result['error_code'];
    if ($errorCode === 0) {
        // 识别成功
    } else {
        // 识别失败
    }
} else {
    // 可能网络异常等问题,无法正常获得相应内容,业务逻辑可自行修改
    echo "请求异常" . PHP_EOL;
}


/**
 * 发起网络请求函数
 * @param $url 请求的URL
 * @param bool $params 请求的参数内容
 * @param int $ispost 是否POST请求
 * @return bool|string 返回内容
 */
function juheHttpRequest($url, $params = false, $ispost = 0)
{
    // $httpInfo = array();
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
    curl_setopt($ch, CURLOPT_TIMEOUT, 15);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    // curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));

    if ($ispost) {
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        curl_setopt($ch, CURLOPT_URL, $url);
    } else {
        if ($params) {
            curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
        } else {
            curl_setopt($ch, CURLOPT_URL, $url);
        }
    }
    $response = curl_exec($ch);
    if ($response === FALSE) {
        echo "cURL Error: " . curl_error($ch);
        return false;
    }
    // $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    // $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
    curl_close($ch);
    return $response;
}

3、示例代码-本地图片上传方式

<?php
// 证件识别接口 请求密钥key
$apiKey = '********';
// 证件识别接口的URL
$apiUrl = 'http://v.juhe.cn/certificates/query';

// 需要识别的图片信息
$imgFile = 'WechatIMG305.jpeg'; // 本地图片文件路径
$pic = curl_file_create($imgFile, 'image/jpeg', 'pic');

// 组装请求参数
$params = [
    'key' => $apiKey, // 您申请到的接口请求key
    'cardType' => 3, // 证件类型,依据支持的证件类型清单id修改
    'pic' => $pic
];

// 发起网络请求证件识别接口
$response = juheHttpRequest($apiUrl, $params, 1);
$result = json_decode($response, true);
if ($result) {
    print_r($result);
    // 请求成功,正常响应。 依据自己的业务逻辑修改
    $errorCode = $result['error_code'];
    if ($errorCode === 0) {
        // 识别成功
    } else {
        // 识别失败
    }
} else {
    // 可能网络异常等问题,无法正常获得相应内容,业务逻辑可自行修改
    echo "请求异常" . PHP_EOL;
}


/**
 * 发起网络请求函数
 * @param $url 请求的URL
 * @param bool $params 请求的参数内容
 * @param int $ispost 是否POST请求
 * @return bool|string 返回内容
 */
function juheHttpRequest($url, $params = false, $ispost = 0)
{
    $httpInfo = array();
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
    curl_setopt($ch, CURLOPT_TIMEOUT, 12);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));

    if ($ispost) {
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        curl_setopt($ch, CURLOPT_URL, $url);
    } else {
        if ($params) {
            curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
        } else {
            curl_setopt($ch, CURLOPT_URL, $url);
        }
    }
    $response = curl_exec($ch);
    if ($response === FALSE) {
        // echo "cURL Error: ".curl_error($ch);
        return false;
    }
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
    curl_close($ch);
    return $response;
}

3、接口响应结果

{
    "reason":"操作成功",
    "result":{
        "保留":"",
        "签发机关":"苏州市公安局工业园区分局",
        "有效期限":"20160607-20360607",
        "签发日期":"2016-06-07",
        "有效期至":"2036-06-07"
    },
    "error_code":0
}

评论区

DDwyane
20粉丝

我饿了,要睡觉了~

0

0

0

举报