英国护照是面向英国用户的开户流程中最常见的证件之一。HM Passport Office 自称是“英国护照的唯一签发机构”,用它自己的话说,它负责“每年向英国公民和其他英国国民签发超过 600 万本护照”。如果你的产品要核验英国客户,你会读到大量英国护照。

本文写给需要把英国护照上的数据取出并导入自己系统的开发者。内容包括资料页上有什么、机读区如何排布、2026 年会遇到哪些版式,以及一次 API 调用会返回什么。关于护照本身的每一处表述都引自 GOV.UK 或 ICAO,并在出现处附上链接。引文原文为英文,中文译文由我们翻译。

这是 护照和身份证 OCR API doc.cheap 的博客。阅读产品相关部分时,请记住这一点。

一张图看懂资料页

HM Passport Office 自己的历史护照信息指南描述了现行护照本。“2020 年 3 月 1 日,英国 series C 电子护照(蓝色电子护照)逐步投入生产。”据同一页面,这种护照:

  • “在护照本前部有一张耐磨的聚碳酸酯个人资料页”
  • “在第 3 页印有备注(observations)”
  • “在护照本内 3 次显示申请人的护照照片”
  • “个人资料页中嵌有电子芯片”

对 OCR 来说,这只意味着一件事:你需要的一切都在前部的一页上。把这一页平整、完整地拍下来,一张图像里就有了印刷字段、人像和机读区。芯片也在同一页里,但照片读不了芯片;图像能给你的是印刷的那一页。

机读区

MRZ 是资料页底部由大写字母、数字和 < 填充符组成的区块。同一份指南解释了它的由来:“申请人的个人信息被转换为护照扫描仪可读取的字符。这些字符以每行 44 个字符、共 2 行的形式加入护照。这些信息被称为机读区。”

两行各 44 个字符是 ICAO Doc 9303 的护照格式。ICAO 的 Doc 9303 页面将其 Part 4 命名为“机读护照(MRP)及其他 TD3 尺寸 MRTD 规范”,这就是护照版面被称为 TD3 的原因。Part 5 和 6 涵盖身份证使用的更小的 TD1 和 TD2 尺寸。

在描述最早的英国机读护照本时,指南列出了该区域包含的内容:申请人的姓名、护照号码、校验位、国籍、出生日期、性别、护照有效期截止日期和个人身份号码。校验位是根据这些字段计算的,所以读错的字符通常会表现为一个对不上的数字。因此,MRZ 是页面上唯一一个你无需信任读取方、可以自己复核的部分。

对解析器来说,有两点实际要注意:

  • 没有签发日期。 该区域不包含签发日期。如果需要,只能从印刷页面获取。
  • 国籍不一定是 GBR。 该区域的国家代码遵循 ICAO Doc 9303,而不是 ISO,英国国籍的各个类别各有自己的代码。doc.cheap 的响应参考列出了 GBR 之外的五个 – GBD、GBN、GBO、GBP 和 GBS – 因此只接受 GBR 的解析器会拒绝一部分英国护照。

你会遇到哪些版式

同一时期有不止一种有效的英国护照版式,所以不要构建只认一种外观的检查。

  • 2020 年的蓝色护照本。 即上文介绍的 series C 电子护照。
  • 2025 年 12 月起的新版式。 GOV.UK 宣布“首批带有国王查尔斯三世陛下纹章的英国护照将从 12 月起签发,作为改版设计的一部分”,并称其为“自 2020 年以来首个全新设计”。
  • 仍在有效期内的旧护照本。 同一公告写道:“带有女王伊丽莎白二世纹章签发的护照在有效期截止日期前仍然有效。”

有效期也有陷阱。2018 年 10 月之前,续办时可以把旧护照本的剩余时间顺延过来:指南举例说,一位在剩余 7 个月时续办的成年人拿到的护照“有效期为 10 年零 7 个月”。自 2018 年 10 月起,续办的护照“不超过:10 年有效期(成年人),5 年有效期(儿童)”。所以请从证件上读取有效期截止日期,不要根据签发日期推算。

用一次 API 调用读取

doc.cheap 用一张图像读取护照:一次 POST /v1/scans,照片经 base64 编码后放在 JSON 请求体中。公共沙箱密钥 sk_sandbox_public 无需账户即可使用。请配合样本图像使用它,切勿使用真实护照,因为用公共密钥进行的扫描会保留一年。

curl -X POST https://api.doc.cheap/v1/scans \
  -H "Authorization: Bearer sk_sandbox_public" \
  -H "Content-Type: application/json" \
  -d "{\"image\": \"$(base64 < document.jpg | tr -d '\n')\",
       \"options\": {\"expect_country\": \"GBR\", \"return_portrait\": false}}"

expect_country 在你已经知道签发国时作为提示传入,return_portrait: false 让持证人的面部不出现在响应中。对英国护照而言,响应中重要的部分如下(数值为虚构):

{
  "document": {
    "kind": "passport",
    "issuing_state": "GBR",
    "issuing_state_detail": { "code": "GBR", "alpha3": "GBR", "alpha2": "GB", "category": "iso" },
    "number": "000000000",
    "issue_date": "2025-12-01",
    "expiry_date": "2035-12-01",
    "is_expired": false
  },
  "holder": {
    "surname": "SPECIMEN",
    "given_names": "ANGELA ZOE",
    "birth_date": "1990-01-01",
    "nationality": "GBR"
  },
  "mrz": { "status": "passed", "reason": null },
  "authenticity": { "overall": "not_checked", "checks": [] }
}

从中应当读出:

  • mrz.status 为 passed、failed 或 absent。passed 表示每个校验位都通过验证,且区域内没有任何内容与印刷页面矛盾。为 failed 时,mrz.reason 会指出是哪个字段,这样你就知道是否需要请用户重新拍照。mrz.text 以一个字符串给出整个区域,方便你自己重新计算校验位;MRZ 校验指南逐步讲解了方法。
  • document.issue_date 取自印刷页面,因为该区域没有签发日期。
  • holder.nationality_detail 按原样保留 GBD 等英国代码,并将 category 设为 british_nationality、alpha3 设为 GBR,这样你可以按国家建立索引,又不丢失国籍类别。

英国护照 OCR 页面把同样的事实汇总在一处,并附有 GOV.UK 和 ICAO 的链接。

OCR 不能告诉你的事

读取护照和核验护照是两项不同的工作。doc.cheap 读取印刷内容,并将 MRZ 与其自身以及与视读区进行比对。它不检查证件是否为真:在仅识别场景下,authenticity.overall 为 not_checked,它也不读取芯片。如果你的流程需要人脸比对、活体检测或真伪核验,那些是由专门工具完成的独立步骤。

试一试

公共沙箱密钥无需账户。注册后,你自己的密钥每月可获得 100 次免费识别,足以搭建并测试整个流程。如果你正在挑选服务商,护照 OCR API 对比把公开价格并排列出;处理英国证件,可以从英国护照 OCR 页面开始。

问你一个问题: 英国护照的哪一部分最让你的解析器头疼 – 国籍代码、旧的有效期规则,还是别的什么?欢迎在下方评论区告诉我们。