中国护照结构化识别 API 实战:从请求到字段解析的完整流程
2026/7/22 17:09:30 网站建设 项目流程

适用场景

在出行实名核验、酒店/机构入住登记、跨境业务证件录入等场景中,需要快速从中国护照中提取结构化字段。传统的OCR全量识别方案会输出大量无关文本,且无法直接映射到业务字段。本文介绍的API专为此类场景设计,能直接返回护照号码、中英文姓名、出生日期、有效期至和签发地点共六个关键字段,便于业务系统直接消费。

接口能力与边界

该接口基于深度学习OCR模型,对中国护照(第二版及新版)进行结构化识别。输入支持图片URL或Base64编码,输出为JSON格式。接口QPS限制为2次/秒,适合中低频业务场景,如后台异步处理或人工审核辅助。需要注意:护照属于高敏感度身份证件,接口仅限已登录用户调用,匿名访问不开放;调用方必须在请求头中携带有效的API Key鉴权。

请求鉴权与参数说明

鉴权方式

接口使用Bearer Token鉴权。在HTTP请求头中传入Authorization字段,格式为:Bearer <你的API Key>。API Key需从服务商后台获取并妥善保管,不要硬编码在客户端代码中。

请求体参数

请求方法为POST,请求体为JSON对象,包含以下两个必填字段:

字段名类型必填说明
input_typestring图片传输方式,可选值:url(公网图片地址)或base64(图片的Base64编码)
input_datastring图片内容:当input_type=url时填写HTTP/HTTPS图片链接;当input_type=base64时填写Base64编码字符串(可含data:image/xxx;base64,前缀)

例如,使用图片URL时请求体为:

{ "input_type": "url", "input_data": "https://example.com/passport.jpg" }

代码接入:curl 与 Python

curl 命令

以下示例使用curl发起请求,请将YOUR_API_KEY替换为真实的API Key,将图片链接替换为实际护照图片URL。

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

若使用Base64编码图片,则请求体改为:

{ "input_type": "base64", "input_data": "data:image/jpeg;base64,/9j/4AAQ..." }

Python 示例

使用requests库的示例代码,适合集成到后端服务中。

import requests import json API_URL = "https://v1.apizero.cn/api/ocr-cn-passport" API_KEY = "YOUR_API_KEY" # 请替换为真实密钥 def recognize_passport(image_source, source_type="url"): """ 识别护照 :param image_source: 图片URL或Base64字符串 :param source_type: "url" 或 "base64" :return: 字典格式的响应结果 """ headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } payload = { "input_type": source_type, "input_data": image_source } response = requests.post(API_URL, headers=headers, json=payload) response.raise_for_status() # 检查HTTP错误 return response.json() # 使用示例 if __name__ == "__main__": result = recognize_passport("https://example.com/passport.jpg", "url") print(json.dumps(result, indent=2, ensure_ascii=False))

注意:生产环境中应将API Key配置为环境变量,避免泄露。

返回字段解读

成功时HTTP状态码为200,返回JSON结构如下:

{ "code": 0, "data": { "passport_number": "E12345678", "full_name_cn": "张三", "full_name_en": "ZHANG SAN", "date_of_birth": "1990-01-01", "date_of_expiry": "2034-12-31", "place_of_issue": "上海" }, "msg": "成功", "request_id": "req_abc123" }

各字段含义:

字段类型说明
codeint业务状态码,0表示成功,非0表示错误
msgstring状态描述信息
request_idstring本次请求的唯一标识,可用于问题排查
data.passport_numberstring护照号码
data.full_name_cnstring中文姓名
data.full_name_enstring英文姓名(大写)
data.date_of_birthstring出生日期,格式 YYYY-MM-DD
data.date_of_expirystring有效期至,格式 YYYY-MM-DD
data.place_of_issuestring签发地点

如果识别失败或图片质量不佳,data可能返回空字段或部分字段缺失,此时需结合codemsg判断。

常见错误与排查

错误现象可能原因解决措施
HTTP 401API Key无效或未携带检查请求头是否包含正确的Authorization: Bearer <key>
HTTP 400请求体格式错误或缺少必填字段确认JSON结构正确,input_typeinput_data均已提供
code为40001图片无法下载(url模式)检查URL是否可公开访问,图片大小是否超限(以文档为准)
code为40002图片解码失败(base64模式)确认Base64字符串正确,图片格式为常见格式(JPEG/PNG)
code为40003护照区域未检测到图片可能非护照或角度偏差过大,建议调整拍摄角度后重试
QPS超限请求频率超过2次/秒增加调用间隔,或使用请求队列

注意:所有错误详情均以文档为最终依据,此处仅列出常见情形。

工程化注意事项

  1. 图片质量要求:建议护照图片分辨率不低于800×600像素,文字区域清晰无遮挡,避免反光或阴影。证件应占据图片主体的80%以上。

  2. Base64编码长度限制:Base64字符串对应原始图片大小建议控制在5MB以内,过大的图片会增加传输时间和内存消耗。可以在上传前对图片进行压缩。

  3. 异步处理:由于QPS限制,如果需要批量处理,应将识别请求放入任务队列(如Celery),控制并发数,避免触发限流。

  4. 字段校验:返回的护照号码、日期等字段应进行二次校验,例如护照号码正则匹配、日期格式验证等,以防范OCR误识别。

  5. 敏感数据保护:护照图片和识别结果属于个人隐私,传输时务必使用HTTPS,数据库存储时应加密,日志中不应记录原始图片或完整字段。

  6. 重试策略:针对网络抖动或临时性错误,建议采用指数退避的重试策略,最多重试3次。

  7. 缓存设计:对于同一护照号码的重复查询,可以设计本地缓存(如Redis),避免重复请求API。缓存过期时间根据业务需求设定。

参考文档

  • 接口文档页:https://apizero.cn/aidocs/ocr-cn-passport
  • 原始文档(Markdown格式):https://apizero.cn/aidocs/ocr-cn-passport/raw.md

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

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

立即咨询