MRZ 解析器与校验位计算器

粘贴护照、身份证或签证的机读区(MRZ):TD3、TD2 或 TD1。工具会自动识别格式,读出每个字段,并重新计算每个 ICAO 9303 校验位,与印在证件上的校验位进行比对。全部过程都在您的浏览器中运行,任何内容都不会离开本页面。

什么是机读区

机读区(MRZ)是护照或身份证底部由若干固定宽度的行组成的区块,由 ICAO Doc 9303 标准化。它在固定位置编码了证件号码、签发国、姓名、国籍、出生日期、性别和有效期,并附有用于验证读取结果的校验位。

各字段在 TD1、TD2 和 TD3 中的位置

位置在每一行中都从 1 开始计数,与 ICAO 9303 的编号方式一致。每个校验位紧跟在它所保护的字段之后;综合校验位是其所在行的最后一个字符。

三种 MRZ 格式中各字段与校验位的位置
字段TD3(护照)TD2TD1(身份证)
证件代码第 1 行,1–2第 1 行,1–2第 1 行,1–2
签发国第 1 行,3–5第 1 行,3–5第 1 行,3–5
姓名第 1 行,6–44第 1 行,6–36第 3 行,1–30
证件号码第 2 行,1–9第 2 行,1–9第 1 行,6–14
其校验位第 2 行,10第 2 行,10第 1 行,15
国籍第 2 行,11–13第 2 行,11–13第 2 行,16–18
出生日期第 2 行,14–19第 2 行,14–19第 2 行,1–6
其校验位第 2 行,20第 2 行,20第 2 行,7
性别第 2 行,21第 2 行,21第 2 行,8
有效期至第 2 行,22–27第 2 行,22–27第 2 行,9–14
其校验位第 2 行,28第 2 行,28第 2 行,15
个人号码第 2 行,29–42
其校验位第 2 行,43
综合校验位第 2 行,44第 2 行,36第 2 行,30

校验位是如何计算的

  1. 取该校验位所保护的字段:证件号码、出生日期、有效期、个人号码,或整个综合校验范围。
  2. 给每个字符赋值:数字取其本身的值,字母取其在字母表中的位置加九(A = 10,Z = 35),填充符 < 记为零。
  3. 将每个值乘以其位置对应的权重。权重在整个字段中按 7, 3, 1 循环,第一个字符从 7 开始。
  4. 把所有乘积相加。
  5. 校验位就是该总和对 10 取模的结果,也就是总和的个位数。

以样例护照号码 AM7304518 为例逐步计算。这是一份虚构的证件,不属于任何人:

在一个样例证件号码上逐个字符演示 7-3-1 加权计算
字符数值权重乘积
A10770
M22366
7717
33721
0030
4414
55735
1133
8818
求和,再对 10 取模214 → 4

所以在该机读区中,AM7304518 之后印的校验位是 4。载入上方的 TD3 示例,解析器就会在您眼前重新算出同一个数字。

综合校验位

还有一个校验位同时覆盖机读区的大部分内容:综合校验位。它的算法相同,但计算范围会跳过没有校验位保护的字段;在 TD1 中,这个范围横跨两行,而手写的解析器通常正是在这里出错。如果一个机读区的各字段校验位全部通过而综合校验位失败,说明各部分都转录正确,但拼接错了。

校验位覆盖不到的内容

没有任何校验位覆盖姓名,也没有任何校验位覆盖签发国。这两处读错都不会被发现:算术依然成立。正因如此,同时读取证件的印刷面并比对两次读取结果,才能发现校验位发现不了的错误。

常见问题

MRZ 是什么?

机读区(MRZ)是护照或身份证底部由若干固定宽度的行组成的区块,由 ICAO Doc 9303 标准化。它在固定位置编码了证件号码、签发国、姓名、国籍、出生日期、性别和有效期,并附有用于验证读取结果的校验位。

这个工具支持哪些格式?

支持 ICAO 9303 的全部三种格式:TD3,即护照上的两行、每行 44 个字符;TD2,两行、每行 36 个字符;TD1,即身份证或居留许可上的三行、每行 30 个字符。它还能读取两种签证格式 MRV-A 和 MRV-B,这两种格式没有综合校验位。格式根据行数和每行长度自动识别,该格式包含的每个校验位都会重新计算。

校验位为什么会不通过?

几乎总是因为它所保护的字段中有一个字符被读错或输错:把 O 当成 0,把 B 当成 8,或者行尾丢了一个填充符。表格会把机读区印出的校验位与根据数据算出的校验位并排显示,并列出该校验位覆盖的字段。如果字段校验位通过而综合校验位不通过,请检查字段之间的字符:综合校验位也覆盖各字段校验位本身。

能从照片中读取机读区吗?

不能。本页面只读取您粘贴的文本,任何内容都不会离开您的浏览器。从照片中读取机读区和印刷页,是识别 API 的工作:带上图像发起一次 HTTP 调用,字段就会以 JSON 返回,同样的校验位已经验证完毕。

你们会保存我的数据吗?

不会。您粘贴的机读区由在您自己浏览器中运行的代码解析:不上传任何内容,也不会发出任何携带它的请求。本页面是一个静态文件,加载后唯一发出的请求是询问是否有需要在顶部显示的服务通知,这个请求不携带您输入的任何内容。识别 API 是另一回事,需要您主动调用。

接下来去哪里

  • MRZ 生成器 – 为测试数据生成校验位正确的有效机读区。
  • TD1、TD2 和 TD3 – 三种格式各有几行、每行多少个字符,以及标准在哪里定义了它们。
  • 读取整份证件 – 除编码区外还读取印刷面,一次请求即可完成,无需账户。
  • 按国家分类的护照 OCR – 本 API 可读取的签发国,每个国家都附有自己的样例机读区。