> ## 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.

# 年齢推定API：セルフィーによる年齢確認

> DiditはAIの顔分析でセルフィーから年齢を推定します。1回$0.10、13〜17歳の平均絶対誤差は1.0年で、本人確認へのフォールバックも設定できます。

Didit年齢推定は、パッシブライブネスを含むセルフィーから年齢を予測する機能です。すべてのユーザーに身分証明書を求めることなく、年齢制限のあるサービスを制御できます。このモデルは年齢制限の判断が分かれる年齢層で最も高精度で、平均絶対誤差は13〜17歳で1.0年、18〜20歳で1.8年です（[モデルの性能](#モデルの性能と統計)を参照）。

年齢推定の連携プロンプト
        Copy prompt to clipboard



      
      

\<pre>

\````# Goal
Integrate Didit Age Estimation (selfie-based age gating, includes passive liveness) into your app. Pick ONE mode.

\# Mode A — Session-based (embedded in Liveness)
In hosted Didit flows, age estimation is **embedded inside the Liveness step** — there is no separate "age_estimation" workflow feature. Enable age estimation on the Liveness node in the Business Console.

1\. Configure the workflow's LIVENESS feature with age estimation enabled and set age_estimation_decline_threshold (default 18).
2\. Create a session — POST /v3/session/ with { workflow_id, vendor_data, callback }. See /sessions-api/create-session.
3\. Open session.url for the user (or mount the Web/Mobile SDK).
4\. Fetch the decision — GET /v3/session/{sessionId}/decision/.

Decision surface: the result lives at `liveness_checks[].age_estimation` on each Liveness entry (not in a top-level age_estimations[] array).

\# Mode B — Standalone API (server-to-server, age + liveness in one call)
Use when you already have a selfie and need a one-shot age gate.

POST https://verification.didit.me/v3/age-estimation/
multipart/form-data — x-api-key: YOUR_API_KEY

curl example:
\```bash
curl -X POST 'https://verification.didit.me/v3/age-estimation/' \
-H 'x-api-key: YOUR_API_KEY' \
-F 'user_image=@./selfie.jpg' \
-F 'age_estimation_decline_threshold=18' \
-F 'save_api_request=true' \
-F 'vendor_data=user-1234'
\```
Returns: { request_id, age_estimation: { status, method: "PASSIVE", age_estimation (float, years), score (passive-liveness 0-100), user_image: {entities}, warnings: [...] } }.

Required: `user_image` (jpg/jpeg/png/tiff/webp, max 5 MB; PDFs not accepted). The largest face wins when multiple are present.

\# Decision logic
status="Declined" when ANY of the following is true:
\- passive-liveness score ≤ face_liveness_score_decline_threshold (default 30)
\- predicted age < age_estimation_decline_threshold (default 18)
\- no face detected
\- liveness model flagged a presentation attack

\# Status enum
"Not Started" | "In Progress" | "Approved" | "In Review" | "Declined" | "Abandoned" | "Kyc Expired"

\# Warnings
warnings[] risk codes include:
AGE_BELOW_MINIMUM, AGE_NOT_DETECTED, LOW_LIVENESS_SCORE, NO_FACE_DETECTED, LIVENESS_FACE_ATTACK, MULTIPLE_FACES_DETECTED.
Full catalogue: /core-technology/age-estimation/warnings-age-estimation.

\# Failure modes to handle
\- HTTP 400 — missing or oversized user_image, unsupported extension.
\- HTTP 403 — out of credits.
\- status="Declined" with AGE_BELOW_MINIMUM — user is below the configured age; reject.
\- status="Declined" with LOW_LIVENESS_SCORE / LIVENESS_FACE_ATTACK — presentation attack suspected; reject.
\- AGE_NOT_DETECTED — the model could not extract age (poor image quality); request a retake.

\# See also
\- Canonical schema: /reference/data-models#age-estimation
\- Per-feature report: /core-technology/age-estimation/report-age-estimation
\- Risk catalogue: /core-technology/age-estimation/warnings-age-estimation
\- Full integration playbook: /integration/integration-prompt````

\</pre>



      
      

Paste into

## 年齢推定の方式Diditのプラットフォームは、年齢推定をさまざまなライブネス検証技術と組み合わせて実装しています。<table>
  <thead>
    <tr>
      <th>方式</th>
      <th>説明</th>
      <th>セキュリティレベル</th>
      <th>適した用途</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>**`3D Action & Flash`**</td>

      <td>
        • 多要素の生体認証と、**ランダムな動作シーケンス**および**動的な光パターン解析**を組み合わせます。\

        • 開始時に、**まばたき**や**うなずき**などの簡単な動作を求め、リアルタイムのやり取りを確認します。\

        • 同時に、顔に一連の光パターンを投影し、その**反射**を解析して顔の立体構造を確認します。\

        • **ディープラーニングアルゴリズム**が微表情と光の反射応答を調べ、生きた人物がいることを検証します。\

        • 行動（動作）と物理（光による奥行き）の手がかりを組み合わせるため、**最高のセキュリティ**を実現し、静止画、動画、高度なマスクでさえなりすましはほぼ不可能です。
      </td>

      <td>最高</td>
      <td>銀行、医療、行政のアプリケーション</td>
    </tr>

    <tr>
      <td>**`3D Flash`**</td>

      <td>
        • **動的な光パターン解析**により、ユーザー操作なしで顔の立体形状を検証します。\

        • 毎秒**30フレーム**を超える速度で一連の光パターンを顔に投影し、反射を解析して**深度マップ**を作成します。\

        • この深度マップで顔の立体構造を確認し、平面の画像や2Dのなりすましと区別します。\

        • **スムーズな体験**を保ちながら、写真や画面などのプレゼンテーション攻撃に対して**高いセキュリティ**を維持します。\

      </td>

      <td>高</td>
      <td>金融サービス、アカウントアクセス、本人確認</td>
    </tr>

    <tr>
      <td>**`Passive Liveness`**</td>

      <td>
        • **1フレームのディープラーニング解析**でライブネスの兆候を検出します。\

        • プライバシー保護のため、インターフェースではユーザーの顔がぼかして表示され、画像は本人の特定ではなく年齢推定のためだけに解析されることをユーザーに示します。\

        • 画像の**アーティファクト**や**テクスチャパターン**などの微妙な指標を調べ、本物の顔となりすましを区別します。\

        • **畳み込みニューラルネットワーク（CNN）**が顔の特徴を検証し、印刷された写真やデジタル画面に由来する異常を特定します。\

        • **高速で便利**な検証ですが、セキュリティは**標準的**で、低リスクのユースケースに適しています。\

      </td>

      <td>標準</td>
      <td>摩擦の少ないシナリオ、一般消費者向けアプリケーション</td>
    </tr>
  </tbody>
</table>いずれの方式も、信頼度スコアと補足的な性別推定データとともに、精度の高い年齢推定値を生成します。### 設定可能なしきい値年齢推定のしきい値を変えることで、セキュリティレベルをカスタマイズできます。例えば次のように設定します。![年齢制限ポリシーのためのDidit年齢推定しきい値の設定画面](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/age-estimation-thresholds.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=11ffd7baa63b7193970c6b67386279f8)> [!NOTE]
>
> これらのしきい値は、リスク許容度とセキュリティ要件に合わせて調整できます。### 国別の年齢制限成年年齢は法域によって異なるため、年齢制限は**国ごと**に設定できます。全体で1つの最小年齢や最大年齢を設定する代わりに、国別に、さらに国内の州や地域ごとにも具体的な年齢の上限・下限を定義できます。#### 仕組み- **国レベルの設定**: 国（書類の発行国で識別）ごとに最小年齢または最大年齢、あるいはその両方を設定します。例えば、米国は18歳、韓国は19歳、アラブ首長国連邦は21歳を最小年齢にできます。
- **州・地域ごとの上書き**: 米国やメキシコなど、国内で基準が異なる国では、州ごとに上書き設定ができます。例えば、米国の既定が18歳でも、ミシシッピ州は最小年齢を21歳にできます。システムは、OCRが書類から抽出した地域情報で州を判定します。
- **成年年齢のデフォルト**: コンソールの「成人年齢のデフォルトを適用」ボタンを1クリックすると、世界各国の法定成年年齢に基づいて各国の最小年齢が自動入力されます。その後、必要に応じて個別の国や州をカスタマイズできます。
- **設定可能なアクション**: ユーザーの年齢が書類の発行国の最小年齢を下回る、または最大年齢を上回る場合に、実行するアクションとして**拒否**または**レビュー**を選べます。#### 設定例| 国 | 最小年齢 | 最大年齢 | 州ごとの上書き |
| - | - | - | - |
| USA | 18 | -- | Mississippi: 21, Alabama: 19 |
| KOR | 19 | -- | -- |
| GBR | 18 | 65 | -- |
| ARE | 21 | -- | -- |> [!NOTE]
>
> 国別の年齢制限は、標準のKYCワークフローとアダプティブ年齢確認ワークフローのどちらでも利用できます。アダプティブワークフローで境界ケースに対して本人確認が起動される場合、年齢チェックには本人確認ステップで設定した国別の設定が使われます。## 仕組み**1. 画像または動画のキャプチャ**ユーザーは、API経由で鮮明な顔画像をアップロードするか、ライブネス検証を完了します。| チェック | 説明 |
| - | - |
| **画像品質** | 照明、位置、鮮明さを検証します |
| **ライブネス検証** | 被写体がその場にいて、なりすましでないことを確認します |
| **マルチフレーム解析** | 最高の精度を得るため、最適なフレームを選択します |
| **アダプティブキャプチャ** | さまざまなデバイスの性能に合わせて調整します |**2. 顔の特徴の解析**検出器が画像内のすべての顔とすべての人物の位置を特定し、最も大きい顔を解析します。- **顔の切り抜き**: 検出されたままの顔を、顔の形態、比率、肌のテクスチャについて解析します
- **身体のコンテキスト**: 顔をマスクした状態で顔の周囲にある人物の全体像を使い、推定を精緻化します
- 1枚の画像に複数の顔がある場合も検出して報告するため、セッションに応じた対応ができます**3. ニューラルネットワークによる処理**相互に補完する2つのディープニューラルネットワークが独立して年齢を推定し、最終的な推定値はその平均になります。- トランスフォーマーが顔と身体の切り抜きを合わせて読み取り、畳み込みネットワークが顔を読み取ります
- 各ネットワークは、データの異なる分割で学習した5つのモデルを組み合わせ、推定を安定させます
- 身分証明書で年齢が確認されたデータで学習しており、10代、若年成人、すべての肌色グループが十分に含まれています
- 評価は、学習時に一度も見ていないセルフィーと人物のみを対象に行われます**4. 判定と補足分析**システムは包括的な結果を生成します。| 出力 | 説明 |
| - | - |
| **年齢推定値** | 信頼度スコア付きの主な推定値 |
| **性別推定** | 補足的な属性情報（任意） |
| **信頼度指標** | 全体的な信頼性の評価 |
| **環境要因** | 推定品質への影響の評価 |**5. ルールの適用**設定したビジネスルールが推定結果に適用されます。- 年齢推定値を、**設定したしきい値**（国別の最小・最大）と比較します
- 信頼度スコアを、設定した最低要件と照合します
- **境界ケース**では、本人確認へのフォールバックを起動できます（アダプティブモード）
- コンプライアンスのため、結果は詳細な**監査証跡**とともに記録されます## アダプティブ年齢推定正確な年齢確認が重要なシナリオ向けに、Diditのプラットフォームは本人確認へのフォールバック付きのアダプティブ年齢推定を提供します。この方式は、ユーザーの利便性と規制へのコンプライアンスを両立します。### アダプティブ年齢推定の仕組み**1. 最初の年齢推定**システムはまず、顔分析でユーザーの年齢を推定します。年齢推定値とともに、信頼度スコアが生成されます。**2. しきい値の評価**推定年齢を、設定したしきい値と比較します。結果は次の3種類です。| 結果 | 説明 |
| - | - |
| **明確な合格** | ユーザーが必要な年齢のしきい値を明らかに上回っている |
| **明確な不合格** | ユーザーが必要な年齢のしきい値を明らかに下回っている |
| **境界** | 推定年齢が不確実な範囲にある、または信頼度が低い |**3. インテリジェントなフォールバック**- **明確な合格・不合格**: 検証は適切な結果ですぐに完了します
- **境界ケース**: システムが自動的に**本人確認フロー**を開始します
- これにより、大多数のユーザーの手間を最小限に抑えながら、規制へのコンプライアンスを確保します**4. 書類の検証（必要な場合）**境界ケースでは、ユーザーが政府発行の身分証明書を提示します。- 書類の真正性と年齢情報を検証します
- 本人確認ステップの**国別の年齢制限**が適用されます
- 生年月日を、書類の発行国と地域の最小・最大年齢と照合します
- 書類の顔写真は、**年齢推定用にすでに撮影したセルフィーと1:1で顔照合**されるため、書類上の生年月日がカメラの前にいる本人に結び付けられます### フォールバックが返す内容フォールバックの顔照合はワークフローに顔照合ノードがなくても実行されるため、設定していないチェックと見間違えやすい形でセッションの判定結果に現れます。- フォールバックが実行されると、`features`には`AGE_ESTIMATION`と`ID_VERIFICATION`に加えて`FACE_MATCH`が含まれます。
- `face_matches[]`には、`score`、`source_image`（書類の顔写真）、`target_image`（年齢推定のセルフィー）を持つエントリが1件含まれます。この照合は顔照合ステップではなく年齢推定ステップに属するため、その`node_id`は**年齢推定ノード**（ネイティブワークフローでは`feature_age_estimation`）です。
- スコアが低いと、通常の[顔照合の警告](https://docs.didit.me/core-technology/face-match/warnings-face-match.md)が発生し、設定済みの顔照合ノードと同様に、セッションがレビューまたは拒否になることがあります。
- 顔照合としては**課金されません**。セッションに課金されるのは、年齢推定と本人確認のみです。セルフィーだけで合格または不合格になったセッションではフォールバックが実行されないため、`face_matches: null`が返ります。判定ペイロードに画像を含めないようにするには、ワークフローの[レスポンス属性](https://docs.didit.me/sessions-api/retrieve-session.md)で`face_matches`のフィールドを制限します。> [!NOTE]
>
> アダプティブ年齢推定は、[アダプティブ年齢確認](https://docs.didit.me/console/workflows.md)のワークフロータイプで設定できます。本人確認が起動される境界の年齢しきい値を定義できます。境界ケースに対する年齢に基づく最終的な承認または拒否は、本人確認ステップで設定した国別の年齢制限に従います。### アダプティブ年齢推定のメリット- **手間の軽減**: ほとんどのユーザーはセルフィーだけで検証を完了できます
- **コンプライアンスの強化**: 不確実なケースには、国ごとの年齢ルールを使った徹底的な書類検証を行います
- **コスト効率**: 本人確認は必要な場合にのみ使われます
- **リスク許容度のカスタマイズ**: 規制要件に合わせてしきい値を調整できます
- **法域への対応**: ユーザーの書類の発行国と地域に基づき、正しい成年年齢を自動的に適用しますこのアプローチは、オンラインゲーム、酒類の配達、成人向けコンテンツのプラットフォームなど、ユーザー体験と規制へのコンプライアンスの両立が不可欠な年齢制限サービスで特に有効です。## モデルの性能と統計以下の数値は、13歳以上の51,655枚のセルフィーを対象とした評価によるもので、各人の年齢は確認済みの身分証明書から取得しています。
すべての推定は、そのセルフィーも本人も学習時に一度も見ていないモデルで生成しました。
全体の数値は、18歳未満が10%、成人はライブトラフィックの年齢分布という評価用の構成比で重み付けしています。年齢層ごとの数値は、以下で個別に示しています。### 精度指標<table>
  <thead>
    <tr>
      <th>指標</th>
      <th>値</th>
      <th>説明</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>**平均絶対誤差（MAE）**</td>
      <td>2.8年</td>
      <td>推定年齢と書類上の年齢との差の平均</td>
    </tr>

    <tr>
      <td>**標準偏差**</td>
      <td>3.0年</td>
      <td>推定ごとの絶対誤差のばらつき</td>
    </tr>

    <tr>
      <td>**±5年以内の精度**</td>
      <td>84%</td>
      <td>書類上の年齢から5年以内に収まった推定の割合</td>
    </tr>

    <tr>
      <td>**±3年以内の精度**</td>
      <td>65%</td>
      <td>書類上の年齢から3年以内に収まった推定の割合</td>
    </tr>
  </tbody>
</table>### 年齢層別の性能誤差は年齢制限の判断が分かれる年齢の前後で最も小さく、年齢が上がるにつれて大きくなります。<table>
  <thead>
    <tr>
      <th>年齢層</th>
      <th>セルフィー数</th>
      <th>MAE（年）</th>
      <th>標準偏差（年）</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>13-15</td>
      <td>5,003</td>
      <td>1.24</td>
      <td>1.14</td>
    </tr>

    <tr>
      <td>16-17</td>
      <td>10,933</td>
      <td>0.90</td>
      <td>1.05</td>
    </tr>

    <tr>
      <td>18-20</td>
      <td>5,436</td>
      <td>1.81</td>
      <td>1.79</td>
    </tr>

    <tr>
      <td>21-25</td>
      <td>8,640</td>
      <td>2.29</td>
      <td>1.90</td>
    </tr>

    <tr>
      <td>26-40</td>
      <td>15,182</td>
      <td>2.95</td>
      <td>2.39</td>
    </tr>

    <tr>
      <td>41-60</td>
      <td>5,830</td>
      <td>3.62</td>
      <td>3.27</td>
    </tr>

    <tr>
      <td>60歳超</td>
      <td>631</td>
      <td>6.53</td>
      <td>8.64</td>
    </tr>
  </tbody>
</table>> [!NOTE]
>
> 標準偏差は、個々の推定の誤差のばらつきを表すもので、平均値の不確かさではありません。
> 最小年齢の1〜2年以内の推定値は、その前後どちらにもなり得ます。しきい値付近での誤判定が重大な場合は、その境界帯を[アダプティブ本人確認フォールバック](#アダプティブ年齢推定)に回してください。


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