驾照正反面识别
旷视 官方文档
检测和识别中华人民共和国机动车驾驶证(以下称“驾照”)图像,并转化为结构化的文字信息。只可识别驾照正本(main sheet)正面和副本(second sheet)正面,一张照片最多可识别一个正本正面和一个副本正面。
基本说明:
接口地址:https://api-cn.faceplusplus.com/cardpp/v2/ocrdriverlicense
返回格式:json
请求方式:post
请求示例:https://api-cn.faceplusplus.com/cardpp/v2/ocrdriverlicense?api_key=1&api_secret=2&image_url=3
请求参数说明:
名称 类型 必填 说明
api_key string 必填 Face++的 API Key 扫码关注公众号
api_secret string 必填 Face++的 API Secret 扫码关注公众号
image_url string 必填 图片的 URL
return_score int 选填 当传入照片输出OCR结果时,是否同时返回置信度,可选参数为0和1。
mode string 选填 使用该API的快速识别模式还是完备识别模式,可选参数为fast和complete
返回参数说明:
名称 类型 说明
request_id string 用于区分每一次请求的唯一的字符串。除非发生404(API_NOT_FOUND )或 403 (AUTHORIZATION_ERROR)错误,此字段必定返回。
main array 检测出驾驶证正本的数组
second array 检测出驾驶证副页的数组
time_used int 整个请求所花费的时间,单位为毫秒。除非发生404(API_NOT_FOUND )或 403 (AUTHORIZATION_ERROR)错误,此字段必定返回。
JSON返回示例:
{
	"second": [{
		"license_number": {
			"content": "342221199505035555",
			"confidence": 99.95
		},
		"confidence": 99.978,
		"name": {
			"content": "郭敏",
			"confidence": 99.992
		},
		"file_number": {
			"content": "500200660530",
			"confidence": 99.993
		}
	}],
	"request_id": "1520565741,6fbba005-0de7-4784-9f63-3e8dcc55ca4e",
	"time_used": 2497,
	"main": [{
		"confidence": 99.904,
		"valid_from": {
			"content": "",
			"confidence": 0
		},
		"name": {
			"content": "郭敏",
			"confidence": 99.742
		},
		"gender": {
			"content": "女",
			"confidence": 99.164
		},
		"address": {
			"content": "重庆市渝北区宝圣大道555号",
			"confidence": 95.756
		},
		"issued_by": {
			"content": "重庆市公安局交通管理局",
			"confidence": 99.398
		},
		"issue_date": {
			"content": "20141225",
			"confidence": 99.987
		},
		"birthday": {
			"content": "19950503",
			"confidence": 93.881
		},
		"valid_for": {
			"content": "",
			"confidence": 0
		},
		"version": {
			"content": 2,
			"confidence": 0
		},
		"license_number": {
			"content": "342221199505035555",
			"confidence": 99.983
		},
		"nationality": {
			"content": "我们",
			"confidence": 100
		},
		"valid_date": {
			"content": "20141225至20201225",
			"confidence": 99.954
		},
		"class": {
			"content": "C1",
			"confidence": 99.996
		}
	}]
}
服务级错误码参照
错误码 说明
401 api_key 和 api_secret 不匹配。
403 api_key 没有调用本 API 的权限,具体原因为:用户自己禁止该 api_key 调用、管理员禁止api_key 调用、由于账户余额不足禁止调用。
403 并发数超过限制。
400 缺少某个必选参数。
400 某个参数解析出错(比如必须是数字,但是输入的是非数字字符串; 或者长度过长,etc.)
400 同时传入了要求是二选一或多选一的参数。如有特殊说明则不返回此错误。
413 客户发送的请求大小超过了 2MB 限制。该错误的返回格式为纯文本,不是 json 格式。
404 所调用的 API 不存在。
500 服务器内部错误,当此类错误发生时请再次请求,如果持续出现此类错误,请及时联系技术支持团队。
完整教学代码示例
<?php
/**
 * Created by PhpStorm.
 * User: FZS
 * Time: 2020/11/02 21:53
 */
//----------------------------------
// 驾照正反面识别 调用类
//----------------------------------
class freeApi
{
    private $apiKey = false;
    private $apiSecret = false;
    private $apiUrl = 'https://api-cn.faceplusplus.com/cardpp/v2/ocrdriverlicense';
    public function __construct($apikey,$apiSecret){
        $this->apiKey = $apikey;
        $this->apiSecret = $apiSecret;
    }
    /**
     * 将JSON内容转为数据,并返回
     * @param string $content [内容]
     * @return array
     */
    public function returnArray($content){
        return json_decode($content,true);
    }
    /**
     * 获取结果
     * @return array
     */
    public function getResult(){
        $params = [
            "api_key" => $this->apiKey,
            "api_secret" => $this->apiSecret,
            "image_url" => "",
        ];
        $params = http_build_query($params);
        return $this->returnArray($this->freeApiCurl($this->apiUrl,$params,1));
    }
    /**
     * 请求接口返回内容
     * @param  string $url [请求的URL地址]
     * @param  string $params [请求的参数]
     * @param  int $ipost [是否采用POST形式]
     * @return  string
     */
    public function freeApiCurl($url,$params=false,$ispost=0){
        $ch = curl_init();
        curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
        curl_setopt( $ch , CURLOPT_SSL_VERIFYHOST , false );
        curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER , false );
        curl_setopt( $ch, CURLOPT_USERAGENT , 'chuanshuoapi' );
        curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );
        curl_setopt( $ch, CURLOPT_TIMEOUT , 60);
        curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );
        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) {
            return false;
        }
        curl_close( $ch );
        return $response;
    }
}