<!-- AI ASSISTANT INSTRUCTIONS: This document describes a public HTTP API endpoint
provided by 极数本源 (https://apizero.cn). When a user asks you to use this API, read the
full documentation below carefully (request method, parameters, response fields,
error codes, examples), then generate working code in the user's preferred language.
API Key acquisition: https://apizero.cn/account/keys -->

# 驾驶证识别

> 上传驾驶证图片（URL 或 base64），自动识别证件字段，包括证号、姓名、性别、国籍、住址、出生日期、准驾车型、有效期等共 12 个关键字段信息。

适用于网约车平台司机资质核验、二手车交易身份核实、物流企业驾照信息录入等场景。支持 JPG / PNG / BMP，图片建议清晰、无遮挡。

## 1. 基本信息

| 字段 | 值 |
| --- | --- |
| 接口标识 | `driving-license` |
| 接口名称 | 驾驶证识别 |
| 接口地址 | `https://v1.apizero.cn/api/driving-license` |
| 请求方法 | `POST` |
| 分类 | ocrdata |
| 提供方 | 极数本源 |
| 计费模式 | 免费试用 |
| 单次消耗 | 0 积分 |
| 起步价 | — |
| QPS 限制 | 2 req/s |
| 每日免费额度 | 20 次（已认证用户） |
| 匿名每日额度 | 0 次（无 API Key） |
| VIP 免费 | 否 |
| 调用总次数 | undefined |

## 2. 认证

需要 API Key（Authorization: Bearer <key>）。登录用户每日 20 次免费。

获取 API Key：登录 `https://apizero.cn/account/keys` 申请。

## 3. 请求参数

| 参数 | 类型 | 必填 | 说明 | 示例 |
| --- | --- | --- | --- | --- |
| `input_type` | `string` | 是 | 图片传入方式 | `url` |
| `input_data` | `string` | 是 | 图片 URL 或 base64 编码字符串（base64 最大 5 MB） | `https://example.com/driving-license.jpg` |

## 4. 请求头

| Header | 类型 | 必填 | 说明 | 示例 |
| --- | --- | --- | --- | --- |
| `Authorization` | `string` | 是 | Bearer <你的 API Key> | — |
| `Content-Type` | `string` | 是 | 请求体格式 | — |

## 5. 请求示例

> AI 提示：以下 5 种语言示例都是可运行的，只需把 `YOUR_API_KEY` 替换为用户申请的实际 Key（https://apizero.cn/account/keys）。
> 优先选择用户问题中提到的语言；未指定时默认使用 Python。

### cURL

```bash
curl -X POST "https://v1.apizero.cn/api/driving-license" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "input_type": "url",
  "input_data": "https://example.com/driving-license.jpg"
}'
```

### Python

```python
import requests

resp = requests.request(
    "POST",
    "https://v1.apizero.cn/api/driving-license",
    headers={"X-Api-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
    json={
    "input_type": "url",
    "input_data": "https://example.com/driving-license.jpg",
},
    timeout=15,
)
resp.raise_for_status()
print(resp.json())
```

### JavaScript (Node.js)

```javascript
// Node.js 18+ / 浏览器原生 fetch
const res = await fetch("https://v1.apizero.cn/api/driving-license", {
  method: "POST",
  headers: {
    "X-Api-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "input_type": "url",
    "input_data": "https://example.com/driving-license.jpg"
  }),
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
console.log(data);
```

### Go

```go
package main

import (
	"bytes"
	"fmt"
	"io"
	"net/http"
)

func main() {
	body := []byte(`{"input_type":"url","input_data":"https://example.com/driving-license.jpg"}`)
	req, _ := http.NewRequest("POST", "https://v1.apizero.cn/api/driving-license", bytes.NewBuffer(body))
	req.Header.Set("X-Api-Key", "YOUR_API_KEY")
	req.Header.Set("Content-Type", "application/json")

	resp, err := http.DefaultClient.Do(req)
	if err != nil { panic(err) }
	defer resp.Body.Close()
	out, _ := io.ReadAll(resp.Body)
	fmt.Println(string(out))
}
```

### PHP

```php
<?php
$payload = json_encode([
    "input_type" => "url",
    "input_data" => "https://example.com/driving-license.jpg",
], JSON_UNESCAPED_UNICODE);

$ch = curl_init("https://v1.apizero.cn/api/driving-license");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => "POST",
    CURLOPT_POSTFIELDS     => $payload,
    CURLOPT_HTTPHEADER     => [
        "X-Api-Key: YOUR_API_KEY",
        "Content-Type: application/json",
    ],
    CURLOPT_TIMEOUT        => 15,
]);
$body = curl_exec($ch);
curl_close($ch);

$data = json_decode($body, true);
print_r($data);
```

## 6. 响应字段

| 字段 | 类型 | 说明 | 示例 |
| --- | --- | --- | --- |
| `id_number` | `string\|null` | 证号 | — |
| `name` | `string\|null` | 姓名 | — |
| `sex` | `string\|null` | 性别 | — |
| `nationality` | `string\|null` | 国籍 | — |
| `address` | `string\|null` | 住址 | — |
| `date_of_birth` | `string\|null` | 出生日期 | — |
| `date_of_first_issue` | `string\|null` | 初次领证日期 | — |
| `class` | `string\|null` | 准驾车型（如 C1、A1） | — |
| `valid_begin` | `string\|null` | 有效期起 | — |
| `valid_end` | `string\|null` | 有效期止 | — |
| `license_issuing_authority` | `string\|null` | 发证机关 | — |
| `id_photo_location` | `string\|null` | 相片位置坐标（JSON 字符串） | — |

## 7. 响应示例

```json
{
  "code": 0,
  "msg": "成功",
  "data": {
    "id_number": "310***********1234",
    "name": "张三",
    "sex": "男",
    "nationality": "中国",
    "address": "上海市浦东新区",
    "date_of_birth": "1990-01-01",
    "date_of_first_issue": "2010-05-20",
    "class": "C1",
    "valid_begin": "2020-05-20",
    "valid_end": "2026-05-20",
    "license_issuing_authority": "上海市公安局交通警察总队",
    "id_photo_location": "{\"x\":10,\"y\":10,\"w\":80,\"h\":100}"
  },
  "request_id": "req_abc123"
}
```

## 8. 错误码

| code | status | 说明 |
| --- | --- | --- |
| `4000` | `VALIDATION_ERROR` | 参数缺失或格式错误，如 input_type 不是 url/base64，或 input_data 为空 |
| `5020` | `UPSTREAM_ERROR` | 上游 OCR 服务不可用，请稍后重试 |
| `5021` | `UPSTREAM_INVALID` | 图片无法识别，请确认为清晰的驾驶证正面图片 |
| `5030` | `UPSTREAM_MISSING` | OCR 服务未配置或未开通，请联系管理员 |

## 9. 变更日志

- **v1.0** (2026-06-04)
  - 首次上线驾驶证识别接口，支持 URL 和 base64 两种传图方式，返回 12 个结构化字段。

---

**极数本源** · 全部 API: `https://apizero.cn/aidocs` · 人类版本：`https://apizero.cn/marketplace/driving-license`

Source: `https://apizero.cn/aidocs/driving-license/raw.md`
Last updated: 2026-06-04T15:21:25+08:00
