身份证识别 API 参数详解:从请求到响应的完整实践
2026/7/11 23:21:46 网站建设 项目流程

适用场景

身份证识别是实名认证流程中不可或缺的一环。典型场景包括:

  • 用户信息录入:通过上传身份证照片自动填充姓名、身份证号、地址等字段,减少手动输入错误。
  • KYC(Know Your Customer)辅助:在金融、租赁、社交平台等场景中,快速提取证件信息用于合规审查。
  • 身份核验对账:将 OCR 结果与用户提交的身份证号、姓名进行比对,提升人工审核效率。

本 API 支持正面与反面自动判断,一次请求即可获取全部 10 个结构化字段,适合作为流水线中的一个原子服务。

接口能力与限制

指标说明
端点https://v1.apizero.cn/api/ocr-idcard
方法POST
QPS 上限2 次/秒——超过会被限流,返回 429
输入格式图片 URL(jpg/png)或 base64 编码字符串(≤10 MB)
输出字段姓名、身份证号、性别、民族、出生日期、地址、签发机关、有效期起止、正反面标识 (共 10 个)
调用前提需在平台登录后获取 API Key,并作为 Bearer Token 传入

注意:该接口目前只返回结构化字段,不提供证件照片切割或高清化能力。图片过小(<200px)或模糊时,识别准确率会明显下降。

鉴权与请求头

每次请求必须携带两个Header

参数值格式说明
AuthorizationBearer <你的 API Key>在平台申请 API Key 后填入。注意和空格,Bearer 后有一个半角空格
Content-Typeapplication/json请求体采用 JSON 格式

部分老版 SDK 可能使用X-API-Key头传递,建议以官方最新文档为准。本文示例统一使用Authorization: Bearer

请求参数详解

请求体为 JSON 对象,包含两个必填字段

字段类型必填说明
input_typestring取值"url""base64",表示图片的传递方式
input_datastringinput_type="url"时传入图片的完整 URL;为"base64"时传入图片的 base64 编码字符串(不含 data:image/... 前缀)

参数设计意图

  • 分离 type 和 data 可以降低服务端解析维护复杂度:若固定为 url,则无需检测字符串格式。
  • base64 方式适用于图片已在前端或本地缓存中,不需要外网可访问的场景。但注意 base64 编码后体积膨胀约 1/3,且 10 MB 的原始图片对应的 base64 字符串可能超过 13 MB,实际传输时需考虑请求体大小限制(多数网关限制 10–20 MB)。

最佳实践

  • 如果图片存储在对象存储(如 OSS、S3)或可生成临时外链,优先使用input_type="url",减少请求体体积,同时可以利用 CDN 加速。
  • 如果图片来自本地文件或摄像头拍照后直接处理,可使用 base64 编码;编码前建议压缩原始图片至 1 MB 以内,既能保留文字清晰度,又能减少传输时间。

额外注意:URL 必须为公网可访问的链接;内网地址或带鉴权参数的私有地址可能被拒绝。

请求示例

curl 示例(推荐用于快速测试)

curl -sS -X POST \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input_type":"url","input_data":"https://example.com/idcard-front.jpg"}' \ "https://v1.apizero.cn/api/ocr-idcard"

YOUR_API_KEY替换为实际密钥,input_data替换为可用的身份证正面图片 URL。成功响应时终端会输出 JSON 字符串。

Python 示例(使用 requests 库)

import requests import json url = "https://v1.apizero.cn/api/ocr-idcard" headers = { "Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json" } payload = { "input_type": "url", "input_data": "https://example.com/idcard-front.jpg" } response = requests.post(url, headers=headers, data=json.dumps(payload)) print(response.status_code) print(response.json())

若希望处理 base64 编码,注意不要添加data:image/png;base64,前缀,仅传入纯 base64 字符串。

响应字段说明

成功的 HTTP 状态码为 200,响应体示例:

{ "code": 0, "msg": "成功", "request_id": "req_abc123", "data": { "address": "上海市浦东新区某某路123号", "birth": "1990-01-01", "gender": "男", "identity_code": "310101199001011234", "identity_name": "张三", "issued_by": null, "race": "汉", "side": 1, "valid_date_end": null, "valid_date_start": null } }

顶层字段

字段类型说明
codeint业务状态码:0 表示成功,非 0 表示失败(见“常见错误”)
msgstring中文描述信息
request_idstring请求唯一标识,可用于排查日志
dataobject识别结果,若失败则为null

data 内字段详解

字段类型说明
identity_namestring/null姓名(正面),反面时为null
identity_codestring/null身份证号(正面)
genderstring/null性别,"男" 或 "女"(正面)
racestring/null民族,如 "汉"(正面)
birthstring/null出生日期,格式YYYY-MM-DD(正面)
addressstring/null住址(正面)
issued_bystring/null签发机关(反面)
valid_date_startstring/null有效期起始日期(反面)
valid_date_endstring/null有效期截止日期,若为长期有效则可能返回"长期"null(以实际为准)
sideint1 表示正面(人像面),0 表示反面(国徽面)

关键注意

  • 正面只返回人像面信息(姓名、号码等),反面只返回签发机关和有效期。当传入图片为正面时,issued_by等反向字段为null;反之亦然。
  • 利用side字段可以验证用户是否上传了正确的页面。
  • 部分旧版身份证的地址可能省略“省/市/区”字样;字段值按图片中实际印刷内容输出。

常见错误码与排查

HTTP 状态codemsg示例可能原因与处理
2000成功正常识别
2001001参数错误缺少input_typeinput_data,或 content_type 值非法
2001002图片下载失败URL 不可达、网络超时、图片内容非 jpg/png
2001003图片解析失败base64 格式错误或图片损坏
2001004未检测到身份证图片中无身份证,或图片过于模糊、倾斜角度过大
401-Unauthorized未提供 Authorization 头或 API Key 无效
429-Too Many RequestsQPS 超过 2/s,需加入本地重试或排队逻辑
5xx-服务器错误短暂故障,建议指数退避重试 1–3 次

排查步骤

  1. 检查请求头中是否包含正确的 Bearer Token。
  2. 确认图片格式和大小合规。
  3. 若返回 1002,可用浏览器先访问图片 URL 检查可访问性。
  4. 若返回 1004,尝试调整图片方向(正放)或提高分辨率。

工程化注意事项

1. 并发与限流保护

QPS 只有 2/s,在生产中若需要批量处理大量身份证图片,建议使用消息队列(如 Redis List 或 RabbitMQ)控制消费速率,避免触发 429 并导致整体任务失败。

2. 图片预处理

  • 图片尺寸建议在 500px–2000px 之间,太小的图片文字模糊度上升。
  • 若传 base64,注意在客户端压缩(例如 Web 端使用 canvas 调整质量)。
  • 对于翻拍或扫描件,可以先用图像增强库(如 OpenCV)做灰度化、去噪、纠偏,再传给 API。

3. 结果校验

OCR 输出的姓名、身份证号可能存在个别字符偏差(尤其 0/O、1/I 混淆)。建议在业务层增加校验:

  • 身份证号:校验前 6 位地区码、出生日期合法性、第 18 位校验码。
  • 姓名:与用户提交的姓名做模糊匹配或人工二次确认。

4. 重试与幂等

由于request_id每次请求都会新生成,不支持幂等去重。如果同一条图片因超时失败,直接重发请求即可,接收方不记录图片内容,无需担心重复写入。

5. 安全与隐私

身份证图片包含敏感信息,传输时应使用 HTTPS 加密通道;若使用 base64,避免在日志或错误堆栈中打印完整 payload。建议只记录request_id用于回溯。

参考文档

  • 官方文档页:https://apizero.cn/aidocs/ocr-idcard
  • 原始 Markdown 文档:https://apizero.cn/aidocs/ocr-idcard/raw.md

调用前请务必查阅文档以获取最新参数变更和错误码说明。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询