> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# 年龄估算警告与风险代码

> Didit 年龄估算风险代码参考指南，涵盖 AGE_BELOW_MINIMUM、AGE_NOT_DETECTED、LOW_LIVENESS_SCORE、NO_FACE_DETECTED 等代码的触发阈值与建议操作。

年龄估算功能在组合的年龄与被动活体检测中触发风险信号时会发出**警告**：预测年龄低于您的最低要求、无法计算年龄、主体未通过活体检测、未检测到人脸，或检测到呈现攻击。本页面列出了每个代码、触发条件以及如何配置工作流响应。

## 概述

年龄估算始终在**单次调用中运行两项检测**（被动活体检测和年龄回归模型），因此其警告会流经共享的活体检测管道，并标记有功能字段 `LIVENESS`。它们会显示在报告中的 `age_estimation.warnings[]`（独立 API）或 `liveness_checks[].warnings[]`（嵌入工作流中）下。警告对象的结构说明文档位于 [数据模型 - 警告对象](https://docs.didit.me/zh/reference/data-models.md#警告对象)。

生成来源：

* **独立 API**：该 endpoint 会生成[拒绝触发条件](#拒绝触发条件)下列出的五种警告。
* **工作流**：共享的活体检测生成来源加上特定于年龄的检测。年龄警告仅在年龄估算流程（自适应年龄验证工作流或 `AGE_ESTIMATION` 工作流节点）中触发；普通的活体检测步骤会报告预估年龄，但绝不会触发年龄警告。

严重程度：五种自动拒绝风险（`NO_FACE_DETECTED`、`LIVENESS_FACE_ATTACK`、`FACE_IN_BLOCKLIST`、`AGE_BELOW_MINIMUM`、`AGE_NOT_DETECTED`）始终为 `log_type: "error"` 并强制设为 `Declined`；其余风险则根据阈值或配置的操作判定为 `error` / `warning` / `information`。

## 拒绝触发条件

在独立 API 上，只要触发**任何**警告，决策即为 `Declined`：

* **年龄低于阈值**：预测年龄严格低于 `age_estimation_decline_threshold`（默认值为 `18`；`0` 表示禁用年龄检测）。触发 `AGE_BELOW_MINIMUM`。
* **无法计算年龄**：无法估算人脸年龄（未检测到人脸，或没有可用于年龄模型的人脸）。触发 `AGE_NOT_DETECTED`。
* **活体检测分数达到或低于阈值**：`score <= face_liveness_score_decline_threshold`（默认值为 `30`）；`null` 分数视为 `0`。触发 `LOW_LIVENESS_SCORE`。当触发 `NO_FACE_DETECTED` 时会被抑制，两者互斥。
* **未检测到人脸**：活体检测模型未发现人脸。触发 `NO_FACE_DETECTED`。
* **呈现攻击**：活体检测模型标记了屏幕、打印照片、面具或其他欺骗攻击。触发 `LIVENESS_FACE_ATTACK`。

在工作流中，年龄检测会将截断后的预估年龄（整岁）与配置的阈值进行比较：

* **启用身份证件验证后备方案时**（`enable_id_verification_fallback`，默认开启）：低于 `borderline_minimum_age_threshold`（默认值为 `18`）的年龄会触发 `AGE_BELOW_MINIMUM`；处于临界区间的年龄（最高至 `borderline_maximum_age_threshold`）将继续进入证件验证而不是触发警告，且绝不会触发 `AGE_NOT_DETECTED`，未检测到年龄也会路由至证件验证。
* **禁用后备方案时**：未估算出年龄会触发 `AGE_NOT_DETECTED`，低于 `minimum_age_threshold`（默认值为 `18`）的年龄会触发 `AGE_BELOW_MINIMUM`。

## 可配置风险

以下风险允许您根据每个工作流设置调整阈值或操作：

| 设置 | 风险代码 | 可配置选项 |
| - | - | - |
| 年龄阈值 | `AGE_BELOW_MINIMUM` | 独立：`age_estimation_decline_threshold`（默认值 `18`，`0` 表示禁用）。工作流：`minimum_age_threshold` / `borderline_minimum_age_threshold`（默认值 `18`），以及针对临界年龄的身份证件验证后备方案。 |
| 低活体检测分数 | `LOW_LIVENESS_SCORE` | 针对活体检测分数分别应用**拒绝阈值**（默认值 `30` → `error` + 拒绝）和**审核阈值**（默认值 `60` → `warning` + 审核）。 |
| 疑似重复人脸 | `POSSIBLE_DUPLICATED_FACE` | 检测到时的操作：`DECLINE` / `REVIEW` / `NO_ACTION`（默认值为 `NO_ACTION`）。仅限工作流会话。 |
| 检测到多张人脸 | `MULTIPLE_FACES_DETECTED` | 检测到时的操作：`DECLINE` / `REVIEW` / `NO_ACTION`（默认值为 `NO_ACTION`）。仅限工作流被动活体检测。 |

工作流会话还会对照您的名单筛查人脸：`FACE_IN_BLOCKLIST` 始终自动拒绝（`error`），而 `POSSIBLE_FACE_IN_BLOCKLIST` 会将该会话移至“审核中”（`In Review`）。

## 生成的警告

| 标签 | 严重程度 (`log_type`) | 描述 |
| - | - | - |
| `AGE_BELOW_MINIMUM` | `error` — 自动拒绝 | 估算年龄低于生效的阈值（独立 API 为 `age_estimation_decline_threshold`；工作流为 `minimum_age_threshold` / `borderline_minimum_age_threshold`；默认值均为 `18`）。`additional_data` 始终为 `null`。 |
| `AGE_NOT_DETECTED` | `error` — 自动拒绝 | 无法估算人脸年龄。当年龄为 `null` 时独立 API 始终会触发；在工作流中仅在禁用身份证件验证兜底时触发。 |
| `LOW_LIVENESS_SCORE` | 达到或低于拒绝阈值时为 `error`；达到或低于审核阈值时为 `warning` | 活体分数达到或低于配置的阈值（独立 API 和工作流拒绝阈值默认为 `30`；工作流审核阈值默认为 `60`），表明可能使用了静态照片、屏幕或视频。当触发 `NO_FACE_DETECTED` 时不会触发此警告。 |
| `NO_FACE_DETECTED` | `error` — 自动拒绝 | 提交的图像中未检测到人脸。请重新提示用户在光线充足的环境下将摄像头对准面部中心。 |
| `LIVENESS_FACE_ATTACK` | `error` — 自动拒绝 | 活体检测模型标记了一次呈现攻击（屏幕重放、打印照片、面具、深度伪造）。 |
| `MULTIPLE_FACES_DETECTED` | 根据配置的操作执行（默认为 `information`，不采取操作） | 图像中检测到多张人脸；以最大的人脸为准得出结果。仅适用于工作流被动活体检测 — 独立 API 不会触发此警告。 |
| `FACE_IN_BLOCKLIST` | `error` — 自动拒绝 | 检测到的人脸匹配了您通过 [Lists API](https://docs.didit.me/zh/management-api/lists/overview.md) 管理的人脸黑名单中的条目。仅适用于工作流会话。 |
| `POSSIBLE_DUPLICATED_FACE` | 根据配置的操作执行（默认为 `information`，不采取操作） | 检测到的人脸与另一个会话中先前已通过的人脸高度相似（共享相同 `vendor_data` 的匹配会被排除）。仅适用于工作流会话。 |

## 示例

```json theme={null}
{
  "warnings": [
    {
      "risk": "LOW_LIVENESS_SCORE",
      "feature": "LIVENESS",
      "additional_data": null,
      "log_type": "error",
      "short_description": "Low liveness score",
      "long_description": "The liveness check resulted in a low score, indicating potential use of non-live facial representations or poor-quality biometric data."
    },
    {
      "risk": "AGE_BELOW_MINIMUM",
      "feature": "LIVENESS",
      "additional_data": null,
      "log_type": "error",
      "short_description": "Age below minimum",
      "long_description": "The age of the face is below the minimum age threshold for the application."
    }
  ]
}
```

在工作流决策 payload（`liveness_checks[].warnings[]`）中，每个警告还带有一个 `node_id`，用于标识触发该警告的工作流节点。

## 警告类型

根据您应用的配置，系统会为每个风险分配一个严重程度。严重程度分为三类：

## 相关内容

* [年龄估算概述](https://docs.didit.me/zh/core-technology/age-estimation/overview.md) — 功能表现、定价以及决策逻辑。
* [年龄估算报告](https://docs.didit.me/zh/core-technology/age-estimation/report-age-estimation.md) — 独立 API 和嵌入式工作流取值的完整响应结构。
* [独立 API 参考](https://docs.didit.me/zh/standalone-apis/age-estimation.md) — `POST /v3/age-estimation/` 请求和响应。
* [被动活体检测](https://docs.didit.me/zh/core-technology/liveness/overview.md) — 年龄估算响应中使用的共享活体检测模型。
* [数据模型 — 年龄估算](https://docs.didit.me/zh/reference/data-models.md#年龄估算) — 规范的逐字段架构。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.