适用场景与业务价值
驾驶证识别 API 能够自动从图片中提取驾驶证的关键字段信息,包括证号、姓名、性别、国籍、住址、出生日期、准驾车型、有效期等 12 个字段。这使得它在以下场景中成为重要的基础设施:
- 网约车平台司机资质核验:司机上传驾驶证图片后,自动提取信息并与数据库比对,加快审核流程。
- 二手车交易身份核实:交易环节中快速获取卖方驾驶证件信息,降低人工录入错误。
- 物流企业驾照信息录入:批量处理司机驾照,实现自动化归档。
这些场景往往面临高并发请求,因此理解接口的调用限制与用量边界是保证系统稳定运行的前提。
接口能力边界
1. 频率限制:QPS = 2/s
API 的QPS(Queries Per Second)为 2,即每秒钟最多允许 2 次请求。超出此限制后,服务端会返回429 Too Many Requests错误。开发者必须在前端或中间层实现限流逻辑,避免瞬间流量冲垮配额。
- 请求间隔:建议相邻请求至少间隔 500ms。
- 并发控制:如果使用多个线程或协程发送请求,请确保全局速率不超过 2 QPS。
2. 图片格式与大小限制
- 支持格式:JPG、PNG、BMP。
- 图片建议:清晰、无遮挡、文字水平。
- base64 上传限制:当使用
input_type: "base64"时,请求体中的 base64 字符串大小不得超过 5 MB。实际图片本身的分辨率与压缩质量也影响识别准确率。
3. 请求超时与重定向
接口未公开具体的超时时间,但从通用实践出发,建议客户端设置 30 秒超时。若网络不稳定,应实现指数退避重试,避免短时间内重复请求导致限流。
参数与鉴权
Header 参数
| 参数名 | 是否必填 | 类型 | 说明 |
|---|---|---|---|
| Authorization | 是 | string | Bearer <你的 API Key>。API Key 需要在控制台申请并妥善保管。 |
| Content-Type | 是 | string | 请求体格式,固定为application/json。 |
请求体(Body)
请求体为一层 JSON 对象,包含两个必填字段:
{ "input_type": "url", "input_data": "https://example.com/driving-license.jpg" }| 字段名 | 是否必填 | 类型 | 说明 |
|---|---|---|---|
input_type | 是 | string | 图片传入方式。可选值:"url"(图片链接)或"base64"(base64 编码数据)。 |
input_data | 是 | string | 图片 URL 或 base64 编码字符串。base64 长度上限 5 MB。 |
注意:使用
url方式时,确保图片链接可公开访问,且服务器能正常下载(无鉴权限制)。使用base64方式时,建议先压缩图片至合理大小(如 1MB 以内)再编码。
可复制的 curl 接入示例
以下 curl 命令演示了如何通过 URL 上传驾驶证图片进行识别(请将$YOUR_API_KEY替换为实际密钥):
curl -sS \ -X POST \ -H "Authorization: Bearer $YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "input_type": "url", "input_data": "https://example.com/driving-license.jpg" }' \ "https://v1.apizero.cn/api/driving-license"若希望使用 base64 发送图片,可将input_data替换为 base64 字符串(注意字符串需要其内容长度为 5MB 内):
curl -sS \ -X POST \ -H "Authorization: Bearer $YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "input_type": "base64", "input_data": "/9j/4AAQ...<base64 content>..." }' \ "https://v1.apizero.cn/api/driving-license"提示:生产环境中请勿将 API Key 硬编码在脚本中,建议通过环境变量或密钥管理服务注入。
响应字段解读
成功响应状态码为200,返回 JSON 结构如下:
{ "code": 0, "msg": "成功", "request_id": "req_abc123", "data": { "address": "上海市浦东新区", "class": "C1", "date_of_birth": "1990-01-01", "date_of_first_issue": "2010-05-20", "id_number": "310***********1234", "id_photo_location": "{\"x\":10,\"y\":10,\"w\":80,\"h\":100}", "license_issuing_authority": "上海市公安局交通警察总队", "name": "张三", "nationality": "中国", "sex": "男", "valid_begin": "2020-05-20", "valid_end": "2026-05-20" } }字段说明
| 字段 | 类型 | 含义 |
|---|---|---|
code | int | 业务状态码,0 表示成功,非 0 表示失败。 |
msg | string | 描述信息,通常与 code 对应。 |
request_id | string | 请求唯一标识,可用于排查日志。 |
data | object | 识别结果对象,包含 12 个字段。 |
data.address | string | 住址。 |
data.class | string | 准驾车型,如 C1、B2。 |
data.date_of_birth | string | 出生日期,格式 YYYY-MM-DD。 |
data.date_of_first_issue | string | 初次领证日期。 |
data.id_number | string | 驾驶证号(部分脱敏)。 |
data.id_photo_location | string | 照片位置 JSON 字符串,包含x,y,w,h(像素坐标)。 |
data.license_issuing_authority | string | 发证机关。 |
data.name | string | 姓名。 |
data.nationality | string | 国籍。 |
data.sex | string | 性别。 |
data.valid_begin | string | 有效期起始日期。 |
data.valid_end | string | 有效期截止日期。 |
注:
id_photo_location字段为嵌套 JSON 字符串,使用时需二次解析。部分字段(如证件号)可能因脱敏规则显示星号。
常见错误与状态码
| HTTP 状态码 | 错误原因 | 排查要点 |
|---|---|---|
| 400 Bad Request | 请求参数格式错误(如缺少必填字段、input_type值不合法) | 检查请求体 JSON 是否合法,字段名是否拼写正确。 |
| 401 Unauthorized | API Key 无效或未提供 Authorization 头 | 确认 Key 是否有效,且 Bearer 后有一个空格。 |
| 429 Too Many Requests | 请求频率超过 QPS 限制(2/s) | 降低请求速率,实现请求队列或加入延时。 |
| 500 Internal Server Error | 服务端异常 | 稍后重试,若持续报错请参考文档联系技术支持。 |
| 502/503 | 网关或服务不可用 | 通常为临时网络波动,建议指数退避重试。 |
特别说明:429 错误处理
当客户端收到 429 时,响应体通常包含Retry-After头部,指示需等待的秒数。示例响应:
HTTP/1.1 429 Too Many Requests Retry-After: 1建议实现如下重试策略:
- 首次 429 后,等待
Retry-After值再重试。 - 若连续失败,采用指数退避(1s、2s、4s……)并限制最大重试次数(如 3 次)。
- 超出重试次数后,记录错误并告警,避免死循环消耗配额。
工程化注意事项
1. 限流控制
在客户端维护一个令牌桶或漏桶,精确控制请求间隔。例如使用 Go 的time.Ticker或 Python 的rate-limiter库。
2. 图片预处理
- 上传前检查图片尺寸,建议宽度不低于 800px,否则可能影响 OCR 识别率。
- 使用 base64 时,务必限制大小,可以在服务端统一压缩。
3. 异步与批处理
对于批量场景(如一次性核验 1000 个司机),不建议并发调用来突破 QPS。应设计定时任务,每 500ms 发送一个请求,或使用带间隔的任务队列。
4. 缓存设计
- 对于相同图片的重复识别(如驾驶证图片在短时间内多次请求),可在客户端缓存结果(如以图片 hash 为 key),减少 API 调用。
- 注意时效性:驾驶证有效期字段可能需要实时校验,但基本信息可以缓存。
5. 日志与监控
- 记录每次请求的
request_id、状态码、耗时。 - 设置告警:当 429 或 5xx 比例超过阈值时触发通知。
6. 测试环境与生产环境隔离
建议使用不同的 API Key 分离测试与生产流量,避免测试请求影响生产 QPS 配额。
参考文档
- 驾驶证识别接口文档:https://apizero.cn/aidocs/driving-license
- 原始文档(Markdown):https://apizero.cn/aidocs/driving-license/raw.md
(本文中出现的 API 地址与参数均来自官方文档,未做任何虚构。)