跳转到主要内容

概述

身份证件验证报告汇总了 Didit 从政府签发的身份证明文件(护照、身份证、驾驶执照和居留许可)中提取并验证的所有内容。它整合了 OCR 识别的个人基本信息与证件字段、已拍摄媒体文件的签名 URL、已解析且包含地理位置的地址数据、每面图像质量评分、MRZ 内容、多文字系统(拉丁文/非拉丁文)明细,以及跨会话证件匹配结果。 用户在工作流中完成证件拍摄步骤(或调用独立 OCR endpoint)后,系统会生成该报告。Didit 会识别证件类型、运行 OCR、验证 MRZ / 条形码 / 二维码、解析地址、筛查防篡改迹象(屏幕翻拍、复印件、人像篡改),并将该证件与您应用中拍摄过的所有其他证件进行比对。 每份报告都带有独立的 status(独立于整体会话状态),反映身份证件验证单项步骤的处理结果:
  • 已通过 — 证件已识别,所有必需字段均已提取,且未触发路由至拒绝的警告。
  • 审核中 — 触发了一项或多项警告,且您的工作流将其路由至人工审核。
  • 已拒绝 — 触发了自动拒绝条件(不支持的证件、证件已过期、缺少人像照片、命中黑名单、自适应年龄检查失败),或触发了配置操作为拒绝的警告(最低/最高年龄默认配置为拒绝)。
  • 已过期 — 证件的 expiration_date 在验证之后已过。Didit 的持续到期监控会将报告状态从 Approved 切换为 Expired,追加 DOCUMENT_EXPIRED 警告,并将已通过的会话流转至 Kyc Expired 会话状态。
  • 未完成 — 用户未完成拍摄步骤。

在 API 响应中的位置

身份证件报告包含在 id_verifications[] 数组中 — 始终为 JSON 数组,绝非单一的 id_verification 对象。当工作流运行多个证件步骤(例如主身份证件加上升级验证步骤)时,数组中会出现多条记录。
  • 会话决策 API — GET /v3/session/{sessionId}/decision/ 在顶层返回 id_verifications[]。请参阅 检索会话决策。
  • Webhook — 一旦该步骤生成数据,session.status.updated payload 就会包含相同的 id_verifications[] 数组。请参阅 Webhook。
  • 独立 OCR API — 直接提交证件会返回包含相同字段的单一 id_verification 对象。请参阅 独立 OCR API。
读取 response.id_verifications[0] 并遍历该数组。单一的 id_verification 结构仅存在于独立 OCR API 中 — 在 v3 决策 endpoint 中并不存在。

数据结构

权威的逐字段数据结构请参见数据模型参考页面。以下字段直接来自 IDVerificationV3Serializer,该序列化器扩展了 IDVerificationV2Serializer,并新增了 node_id、跨会话 matches[] 数组以及 Silent Capture 的 document_selfie_face_matches[] 数组。

顶层字段

issuing_state 始终是国家级别,绝非国家以下行政区级别。 对于所有证件类型,包括由州或省签发的驾照(澳大利亚、美国、加拿大),issuing_state 和 issuing_state_name 报告的都是国家(例如 AUS / Australia),而非州/省。当证件包含国家以下行政区的值时,可在 parsed_address.region 中单独获取(在某些证件类型上回退至 extra_fields.state)。Business Console 会话概览在存在该值时,会将其显示在签发国家下方的 Region 行中。
包含两个号码的驾照(澳大利亚)。 澳大利亚驾照同时印有驾照号(licence number,用于标识持证人的驾驶资格,补发卡片时保持不变)和卡号(card number,用于标识实体卡片,每次重新签发时都会变更)。对于这些驾照,Didit 始终采用相同的映射方式:
  • personal_number:驾照号
  • document_number:卡号
这适用于澳大利亚的所有州和领地(NSW、VIC、QLD、WA、SA、TAS、ACT、NT)。在某些版本中,卡号仅印在背面,因此只有在采集了驾照背面时才能读取。当无法读取卡号时,驾照号将同时作为 document_number 和 personal_number 上报,因此验证完成后 document_number 始终包含一个标识符。无论哪种情况,personal_number 都是驾照号。在其他证件类型上,document_number 仍是主要的 OCR 识别号码,其本身可能就是持证人级别的标识符。
阿根廷 CUIL 为 extra_fields.tax_number,绝非 personal_number。 阿根廷证件上印有 CUIL(AFIP、ANSES 和征信机构所依据的 11 位标识符),每种证件上的印刷位置不同,且 DNI 在其旁边还印有第二个 11 位数字:
  • 在驾照上,personal_number 携带的即为 CUIL;
  • 在 DNI 上,personal_number 携带的是 número de trámite(办理编号),该编号用于标识办卡申请,并非持有人本人的标识符。DNI 的 CUIL 是从其独立的印刷字段中读取的。
因此,对于阿根廷证件,personal_number 并不是可靠的 CUIL:在 DNI 上,它是一个 11 位数字,在任何登记系统中都会静默返回无结果。请改用 extra_fields.tax_number。无论持有人出示哪种阿根廷证件,仅当该值通过真实 CUIL 校验(个人前缀加上模 11 校验位)时,Didit 才会以不带分隔符的规范数字形式(27111111117)进行报告。当卡片上的 CUIL 无法读取时,该键会被省略,而不是填充一个非 CUIL 的数字;您可以采集驾照作为第二份证件,或通过问卷回答或会话的 metadata 收集 CUIL,以覆盖这些用户。

图像质量评分

front_image_quality_score 和 back_image_quality_score 分别返回:
将 overall_score 用作快速的适用性检查:高于 70 的分数通常表明采集质量足以进行可靠的验证。

证件活体检测评分

document_liveness 报告证件活体检测测量的结果,无论其是否引发了警告。警告仅在分数低于工作流的某一阈值时才会产生,因此在引入此字段之前,已通过的证件完全不携带任何活体证据;该字段正是您对已通过的会话进行审计的方式。当检查未运行时(例如非证件核验方式,或会话日志中记录的模型服务中断),该字段为 null。 它针对每种欺诈类型(portrait_replace、printed_copy 和 screen_replay)各包含一个对象,每个对象具有:
对于未保存评估证据的历史证件,存储的分数仍然可见,但阈值和 bucket 均为 null。当前工作流设置绝不会用于重构历史结果。这同样适用于尚未完成证件评估的采集。 Business Console 会在会话的身份证件验证部分的证件活体检测区块中显示相同的这三行。

跨会话匹配

matches[] 列出您的应用中与此证件匹配的最多 5 份其他证件:相同的出生日期、相同的签发国家/地区以及高度相似的姓名。列入黑名单的证件还要求证件号码完全匹配。属于同一用户(相同 vendor_data)的会话将被排除。 每个条目包含 session_id、session_number、vendor_data、verification_date、user_details(name、document_type、document_number)、status、is_blocklisted(当证件已添加到您的黑名单时为 true)、api_service 以及经过签名的 front_image_url。

状态值

多文字系统证件 (拉丁 / 非拉丁)

部分证件(例如吉尔吉斯斯坦、哈萨克斯坦、俄罗斯、日本、韩国、中国、阿拉伯语、泰国等)会在持证人的姓名、地址或出生地信息中同时印制拉丁转写并且印制本地文字系统。您可以通过工作流(或独立 API)设置中的 preferred_characters 来选择哪个文字系统用于填充顶层响应字段: 替代文字系统的值位于 extra_fields 内,带有相应后缀键名:first_name_non_latin、last_name_non_latin、middle_name_non_latin、full_name_non_latin、address_non_latin、place_of_birth_non_latin(或对应的 _latin 变体)。

替代文字系统字段何时出现

  • 仅当证件上确实同时存在两种文字系统时。 如果名义上标记为“Surname-Kyrgyz (Cyrillic)”的 OCR 字段被提取为拉丁文字文本(同形异义字或拉丁转写),则其不符合非拉丁替代值的条件,并且该键会被省略。
  • 当名字、中间名和姓氏组件均可用时,full_name_non_latin(以及 full_name_latin)始终由这些单独的组件重新组合 — 为了保持一致性,OCR 提取的原始“Full Name”字段将被忽略。
  • 当 preferred_characters=latin 但证件仅包含非拉丁文本时(因此顶层字段最终为非拉丁文本),Didit 会执行一次转写处理,并提供 first_name_latin、last_name_latin、middle_name_latin、full_name_latin、place_of_birth_latin 和 address_latin 作为拉丁备选字段。
last_name_non_latin 不存在,因为在此样本中,证件的“Surname (Cyrillic)”字段返回的是拉丁字符 — 没有提取到真正的非拉丁姓氏。

示例

Approved — 无异常西班牙身份证 (所有字段)

In Review — 应当包含二维码的证件未检测到二维码

已精简 — 真实的响应始终包含上述所示的完整字段集。

安全注意事项

针对证件图像和视频返回的签名 URL 是临时的 — 它们在有限的有效时间窗口后就会过期。请将其视为短效链接:及时下载所需内容,并且不要缓存或对外公开展示。通常,您的应用只需要 status、少量个人信息字段以及各类警告 — 尽量减少存储的数据,以最大限度降低未来发生数据泄露时的风险敞口。

相关内容

最后修改于 2026年11月7日