免费的护照 OCR API
这是一款在您拥有账户之前就能调用的免费护照 OCR API。文档中印有一个公开的沙箱密钥,该密钥每个 IP 地址可执行 10 次真实识别 – 无需注册、无需信用卡,也不必先和销售通电话。注册后,账户中还会再增加 20 个点数。此后,每份成功识别的证件收费一美分,统一价格,不分用量。发送一张护照、身份证或旅行证件的照片或扫描件,即可拿回结构化 JSON,其中包括持有人、证件、找到的每个字段,以及校验位已经过验证的机读区(MRZ)。扫描失败不花一分钱。
无需账户,完成您的首次识别
从文档中复制密钥,然后 POST 一张图像。整个集成就是这么简单:
IMG=$(base64 -i passport.jpg | tr -d '\n')
curl -s https://api.doc.cheap/v1/scans \
-H "Authorization: Bearer sk_sandbox_public" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: first-call-1" \
-d '{"image":"'"$IMG"'","options":{"mode":"full"}}' sk_sandbox_public 是公开的沙箱密钥 – 它是有意公开的,不是机密,并且有请求频率限制。Idempotency-Key 确保重试的请求不会被重复收费,等到您需要重放一个队列的那天,这一点就很重要。
返回什么
只有一种响应结构,共八个分组,每个键始终存在。字段浏览器列出了每个键及其类型,API 参考(英文)就是接口契约本身。
{
"meta": { "schema_version": "1.0", "status": "recognized", "billed": true,
"confidence": "high",
"timing": { "upload_ms": 118, "processing_ms": 684, "total_ms": 826 } },
"document": { "kind": "passport", "country": "GRC", "country_name": "Greece",
"number": "AM7304518", "series": null,
"issue_date": "2022-03-10", "expiry_date": "2032-03-10",
"is_expired": false, "days_remaining": 2001 },
"holder": { "given_names": "ELENI SOFIA", "surname": "PARADEIGMA",
"birth_date": "1994-03-08", "sex": "F", "nationality": "GRC" },
"mrz": { "status": "passed", "reason": null, "lines": ["…", "…"] },
"fields": [ "…" ], "images": { "…": null },
"quality": { "overall": "pass" },
"authenticity": { "overall": "not_checked", "checks": [] }
} - meta.status 只会是以下五个字符串之一:recognized、no_document_found、unreadable、unsupported_document、rejected。
- 日期一律使用 ISO-8601 格式。缺失的值为 null,绝不会缺少键。
- 每个响应都带有 meta.billed,说明这次调用是否产生了费用。
- fields[] 包含证件上的每个字段,分别从编码区和印刷区读取,各自带有置信度,便于比较两种读取结果。以原有文字书写的值会与其拉丁字母转写一起返回,并标注所属语言。
示例中的持有人是一个合成的样例:虚构的人物,在虚构的数值上进行真实的校验位计算。她的证件所带的机读区在 MRZ 格式页面中有详细说明。
免费调用用完之后的费用
图像会怎样处理
使用沙箱密钥时什么都不保留。图像从不写入磁盘 – 它只在请求期间存在于内存中 – 结果也不会存储。使用您自己的 live 密钥时,结果会被保留,以便您再次读取:按请求指定的 retain_hours 保留;未指定时按您账户的保留期限设置保留,在您更改之前为一年(8760 小时)。
发送 retain_hours: 0 即可什么都不保留 – 没有存储的结果,之后也没有可取回的东西。这由您在每次调用时自行决定。
照片无法读取时
响应会如实说明,而且免费。meta.status 用来区分各种情况,三种情况下 meta.billed 均为 false:
no_document_found– 画面中没有任何形似证件的物体.unreadable– 找到了证件,但无法读取:反光、模糊或分辨率不足.unsupported_document– 读取了证件,但不支持该类型.
每个响应都带有各自的耗时明细,实时的中位数公布在服务状态页面上,而不是在这里做出承诺。
完全不需要密钥的免费工具
- MRZ 解析器 – 粘贴一段 TD1、TD2 或 TD3 机读区,查看每个字段和每个校验位。在您的浏览器中运行。
- MRZ 生成器 – 生成一段有效的机读区,用于测试。
- 证件字段浏览器 – 浏览 API 响应中使用的字段词汇表。
想从助手而不是从代码中调用?MCP 服务器以三个工具的形式提供同样的识别功能。
常见问题
什么是护照 OCR?
护照 OCR 是指通过照片或扫描件,由机器读取护照的资料页。它分为两部分。机读区(MRZ)是页面底部两行各 44 个字符的内容,使用专为机器读取设计的字体印刷,并由校验位保护。视读区是为人印刷的所有内容:同样的姓名、号码和日期,再加上机读区不包含的信息,例如出生地、签发机关和人像。只读第一部分更容易,但得到的信息更少;两部分都读,就可以对二者进行比较。
有免费的护照 OCR API 吗?
有,但有限制。我们在文档中公布了一个沙箱密钥,无需账户、无需银行卡,每个 IP 地址即可执行 10 次真实识别;注册后再增加 20 个点数 – 也就是在任何付费之前共有 30 份证件。离线方面,开源的 PassportEye 库配合 tesseract 可以在您自己的机器上免费读取机读区;它不读取印刷面,而且对手机拍摄照片的准确度完全取决于您自己的图像预处理。在这一领域,“大用量永久免费”这种事谁都做不到,我们也不例外。
护照 OCR API 要多少钱?
在这里,每份证件 $0.01,统一价格,不分用量,识别失败则不收费。其他地方公布的标价使用的计费单位各不相同 – 有些厂商按页计费,而我们按证件计费 – 所以在比较数字之前,请先换算到同一单位。各家的价格都取自厂商自己的页面并附有链接,列在对比页面上。
你们会存储护照图像吗?
不会。图像从不写入磁盘;它只在请求期间存在于内存中,响应发出后即消失。使用沙箱密钥时结果也不会存储。使用 live 密钥时,结果按您传入的 retain_hours 保留;未传入时按账户的保留期限设置保留 – 在您更改之前为一年(8760 小时)– retain_hours: 0 则什么都不保留。这里没有任何证件存储库,这就是“您用户的护照会怎样”这个问题的简短答案。
如果照片无法读取会怎样?
您会收到响应,并且不会被收费。响应中带有 meta.status(找到了证件但无法读取时为 unreadable,画面中没有任何形似证件的物体时为 no_document_found),且 meta.billed 为 false。quality 分组给出对图像本身的结论。请重新拍摄,避免机读区上出现反光,让资料页填满画面,并让机读区保持在大约 300 DPI 以上。