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

# 本人確認（ID認証）の警告とエラーコード一覧

> DiditのID認証モジュールが出すすべての警告を、原因と対処法付きで解説。自動却下のトリガー、設定可能なリスクグループ、不一致や改ざんのコードを網羅しています。

## 概要

本人確認レポートの警告は、Diditが書類の読み取りと検証の過程で検出したすべての条件を示します。警告は`id_verifications[]`の各項目にある`warnings[]`配列に格納され([本人確認レポート](https://docs.didit.me/ja/core-technology/id-verification/report-id-verification.md)を参照)、その構成は[データモデル：Warningオブジェクト](https://docs.didit.me/ja/reference/data-models.md#警告オブジェクト)に記載のとおりです：`feature`、`risk`、`additional_data`、`log_type`、`short_description`、`long_description`、`node_id`。

すべての警告は3つの層で構成されます。

1. **`risk`コード**：コード内で照合に使える、変わることのない識別子です。
2. **`log_type`**：評価時に設定がそのリスクに割り当てたアクションから導出されます。**却下 → `error`**、**レビュー → `warning`**、それ以外 → `information`となります。
3. **判定への影響**：ワークフローの設定可能なリスクグループによって決まります。同じ`risk`コードでも、アプリケーションの設定に応じて**承認**、**レビュー**、**却下**のいずれかに振り分けられます。

## 自動却下の条件

ワークフローでは、以下のリスクが発生すると、IDレポート(およびセッション)は必ず`Declined`になります。これらは設定で変更できません。

| リスク | トリガー |
| - | - |
| `DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION` | 提出された書類の種類が、アプリケーションの許可書類リストに含まれていません。`additional_data`には`issuing_state`、`document_type`、`document_subtype`、`document_region`、`document_region_with_subtype`が含まれるため、該当する書類をワークフローで正確に有効化できます。 |
| `DOCUMENT_EXPIRED` | 撮影時点で書類の有効期限が過ぎています。 |
| `PORTRAIT_IMAGE_NOT_DETECTED` | 書類上に顔写真を検出できませんでした。 |
| `ID_DOCUMENT_IN_BLOCKLIST` | 書類がアプリケーションのブロックリストのエントリーと一致しています。 |
| `FRONT_CAMERA_FACE_IN_BLOCKLIST` | 書類の撮影中にフロントカメラで撮影されたセルフィーが、顔ブロックリスト内の顔と一致しています。 |
| `AGE_BELOW_MINIMUM` | アダプティブ年齢確認ワークフローのみ：抽出された年齢が最低年齢を下回っています。 |
| `AGE_NOT_DETECTED` | アダプティブ年齢確認ワークフローのみ：書類から年齢を抽出できませんでした。 |

**スタンドアロンOCR API**では、無条件で却下となるリスクは`DOCUMENT_EXPIRED`、`MINIMUM_AGE_NOT_MET`、`PORTRAIT_IMAGE_NOT_DETECTED`、`SCREEN_CAPTURE_DETECTED`、`PRINTED_COPY_DETECTED`、`PORTRAIT_MANIPULATION_DETECTED`、`PUBLIC_DOCUMENT_IMAGE_DETECTED`です。ワークフローでは、最低年齢は設定可能(デフォルトは却下)で、3つの書類ライブネス関連のリスクはしきい値に基づいて判定されます(後述)。

このAPIでは、設定可能なリスクに対して、レビュー判定ではなく`DECLINE`または`NO_ACTION`をリクエストパラメーターとして指定します。このAPIが返す可能性のある唯一のレビュー判定は設定できません。要求された書類ライブネスチェックで使用可能なスコアが得られなかった場合、レスポンスは`In Review`となり、`DOCUMENT_LIVENESS_NOT_COMPUTED`警告が付与されます([書類ライブネス](#書類ライブネス-改ざん)を参照)。

| リクエストパラメーター | リスク | デフォルト |
| - | - | - |
| `invalid_mrz_action` | `MRZ_VALIDATION_FAILED`、`MRZ_NOT_DETECTED` | `DECLINE` |
| `inconsistent_data_action` | `DATA_INCONSISTENT`、`MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAME`、`DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTS` | `DECLINE` |
| `expiration_date_not_detected_action` | `EXPIRATION_DATE_NOT_DETECTED` | `NO_ACTION` |
| `critical_field_occlusion_action` | `CRITICAL_FIELD_OCCLUSION_DETECTED` | `DECLINE` |
| `document_or_personal_number_format_mismatch_action` | `DOCUMENT_NUMBER_FORMAT_MISMATCH`、`PERSONAL_NUMBER_FORMAT_MISMATCH` | `NO_ACTION` |

## 設定可能な検証設定

Didit コンソールでは、残りの本人確認リスクが設定グループにまとめられており、それぞれを **承認**、**確認**、**拒否** のいずれかに振り分けられます(ワークフローごと、グラフワークフローではノードごとに設定できます):

| グループ | リスク | デフォルトのアクション |
| - | - | - |
| **最小年齢** | `MINIMUM_AGE_NOT_MET` | 拒否 |
| **最大年齢** | `MAXIMUM_AGE_EXCEEDED` | 拒否 |
| **Duplicated User** | `POSSIBLE_DUPLICATED_USER`(書類番号が書類の許可リストに含まれている場合はスキップ) | 承認(情報) |
| **Invalid Code** | `QR_NOT_DETECTED`、`BARCODE_NOT_DETECTED`、`QR_VALIDATION_FAILED`、`BARCODE_VALIDATION_FAILED` | 承認(情報) |
| **Invalid MRZ** | `MRZ_VALIDATION_FAILED`、`MRZ_NOT_DETECTED` | 承認(情報) |
| **Data Inconsistency** | `DATA_INCONSISTENT`、`MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAME`、`DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTS`、`DOCUMENT_SIDES_MISMATCH`、`ID_VERIFICATION_DATA_MISMATCH_BETWEEN_DOCUMENTS` | 承認(情報) |
| **Invalid Validation** | `INVALID_DATE`、`COULD_NOT_RECOGNIZE_DOCUMENT`、`DOCUMENT_NUMBER_NOT_DETECTED`、`COULD_NOT_DETECT_DOCUMENT_TYPE`、`NAME_NOT_DETECTED`、`DATE_OF_BIRTH_NOT_DETECTED` | 確認 |
| **Expected Details Mismatch** | `FULL_NAME_MISMATCH_WITH_PROVIDED`、`GENDER_MISMATCH_WITH_PROVIDED`、`DOB_MISMATCH_WITH_PROVIDED`、`COUNTRY_MISMATCH_WITH_PROVIDED`、`NATIONALITY_MISMATCH_WITH_PROVIDED`、`IDENTIFICATION_NUMBER_MISMATCH_WITH_PROVIDED` | 確認 |
| **Expiration Date Not Detected** | `EXPIRATION_DATE_NOT_DETECTED` | 承認(情報) |
| **Document or Personal Number Format Mismatch** | `DOCUMENT_NUMBER_FORMAT_MISMATCH`、`PERSONAL_NUMBER_FORMAT_MISMATCH`(共通のアクションを1つ設定) | 確認 |
| **Critical Field Covered** | `CRITICAL_FIELD_OCCLUSION_DETECTED` | 確認 |
| **Unparsed Address** | `UNPARSED_ADDRESS` | 承認(情報) |
| **Image Quality** | `IMAGE_TOO_BLURRY`、`IMAGE_TOO_DARK`、`IMAGE_TOO_BRIGHT`(リスクごとにアクションを1つ設定) | 承認(情報) |
| **Document Without Portrait** | `DOCUMENT_HAS_NO_PORTRAIT` | 確認 |
| **サイレントキャプチャでの重複した顔** | `FRONT_CAMERA_DUPLICATED_FACE`、`POSSIBLE_FRONT_CAMERA_DUPLICATED_FACE`(共通のアクションを1つ設定) | 承認(情報) |
| **氏名が異なるサイレントキャプチャの重複** | `FRONT_CAMERA_DUPLICATED_FACE_NAME_MISMATCH`(重複した顔の判定結果をより厳しくする方向にのみ作用) | 確認 |
| **生年月日が異なるサイレントキャプチャの重複** | `FRONT_CAMERA_DUPLICATED_FACE_DOCUMENT_MISMATCH`(重複した顔の判定結果をより厳しくする方向にのみ作用) | 確認 |

サイレントキャプチャの重複およびブロックリストに関するリスクは、[書類撮影中に撮影されたセルフィーに対する顔検索](https://docs.didit.me/ja/core-technology/face-search/overview.md#書類撮影中に撮る自撮り)から生成されます。この検索は、**サイレントキャプチャ顔検索**(`document_selfie_face_search_enabled`)が有効(デフォルト)で、かつライブネスステップで顔検索が無効化されていない場合に実行されます。それ以外の場合、これら6つのリスクはいずれも発生しません。

書類関連リスクのうち2つのファミリーは、承認/確認/拒否の切り替えではなく、**しきい値によって判定**されます:

* **書類の真正性検知**:`SCREEN_CAPTURE_DETECTED`、`PRINTED_COPY_DETECTED`、`PORTRAIT_MANIPULATION_DETECTED`。不正の種類ごとに拒否と確認のしきい値がそれぞれ設定されています。スコアが拒否のしきい値を下回る場合は `error` + 却下、確認のしきい値を下回る場合は `warning` + レビュー中、それ以外は `information` となります。
* **カメラ間の顔照合**:`LOW_FRONT_CAMERA_FACE_MATCH_SIMILARITY`。`document_selfie_portrait_match_decline_threshold` / `document_selfie_portrait_match_review_threshold` によって制御されます。

### 書類の真正性検知のしきい値を設定する

ワークフローエディターでは、これらのしきい値は本人確認ステップの **偽造** タブにあり、不正の種類ごとに **肖像の差し替え**、**印刷したコピー**、**画面キャプチャ** の3枚のカードが用意されています。

各チェックは、書類がどの程度本物らしいかを `0` から `100` のスコアで評価します。**スコアが高いほど、書類が本物である可能性が高くなります。** カード上の2つの値によって、このスケールが3つの帯に分かれます:

| スコア | 結果 |
| - | - |
| **拒否** の値を下回る | `error`、セッションは却下されます |
| **拒否** の値以上かつ **確認** の値を下回る | `warning`、セッションはレビュー中になります |
| **確認** の値以上 | `information`、チェックは合格します |

どちらの値を上げてもチェックはより厳しくなり、上の表でその値の1つ上の帯に入るセッションが増えます。値を下げると、通過するセッションが増えます。エディターでは、**拒否** の値を **確認** の値より上に設定することはできません。APIを通じて **拒否** の値を **確認** の値より上に設定すると、レビュー中の帯がなくなります。

ワークフローで値が設定されていない場合に使用されるプラットフォームのデフォルト値:

| 不正の種類 | 拒否となるスコア(未満) | 確認となるスコア(未満) | ワークフロー設定キー |
| - | - | - | - |
| 肖像の差し替え | `35` | `70` | `document_liveness_portrait_replace_decline_threshold`、`document_liveness_portrait_replace_review_threshold` |
| 印刷したコピー | `35` | `77` | `document_liveness_printed_copy_decline_threshold`、`document_liveness_printed_copy_review_threshold` |
| 画面キャプチャ | `30` | `70` | `document_liveness_screen_replay_decline_threshold`、`document_liveness_screen_replay_review_threshold` |

まずはデフォルト値から始め、値は1つずつ変更してください。各カードにはデフォルト値と **デフォルトに戻す** ボタンが表示されるため、いつでも元に戻せます。また、エディターは次の設定について警告を表示します:

* **確認を `100` に設定。** 満点のスコアのみが合格となるため、ほぼすべてのセッションがレビュー中になるか却下されます。
* **拒否を `100` に設定。** 満点のスコアのみが拒否を免れるため、ほぼすべてのセッションが却下されます。
* **両方の値を `0` に設定。** どのスコアもフラグが立たないため、チェックは実質的に無効になります。

両方の値を同じ数値に設定すると、レビュー中の帯がなくなります。その値を下回るスコアは却下され、それ以外のスコアは合格となります。

**印刷したコピー** と **画面キャプチャ** の両方が同じ書類にフラグを立てる場合は、`SCREEN_CAPTURE_DETECTED` のみが報告されます。

カメラ間の顔照合も同じ考え方を採用していますが、境界値の扱いが1点異なります。スコアが確認のしきい値と等しい場合も、レビュー中になります。

4つのIDリスクは、設定で変更できず、しきい値にも左右されません。`POSSIBLE_FRONT_CAMERA_FACE_IN_BLOCKLIST`は常に**確認**に振り分けられます。ブロックリストに登録された顔に近いものの、一致が確定していないセルフィーは人が判断すべきものであり、自動的に却下されることも、無視されることもありません。`BARCODE_SIGNATURE_INVALID`は常に**確認**に振り分けられます。これはバーコードに含まれる発行機関の署名が暗号学的検証に失敗した場合にのみ発生するため、偽造が証明されたものが無視される設定は存在しません。`DOCUMENT_BACK_SIDE_NOT_AVAILABLE`は常に**情報**扱いであり、判定に影響することはありません。これは提示された書類の特性ではなく、Diditの書類カタログの制約を報告するものであるため、正当な所持者を却下したり確認に回したりする設定は存在しません。
`FRONT_CAMERA_CAPTURED_DOCUMENT`は常に**確認**に振り分けられます。
これは、書類のスキャン中にフロントカメラで撮影されたフレームに本人確認書類が写っていて人物が写っていない場合にのみ発生します。そのため、誰が書類を持っていたかについて何も示さない撮影は、必ず人の判断に回されます。
この確認は、書類撮影時のセルフィー照合(`is_document_selfie_portrait_match_enabled`)が有効な場合に常に行われます。

## 発生する警告

`collect_ocr_logs`、書類撮影フロー、`process_ocr_logs_and_get_status`と照合して検証済みです。以下の短い説明は、APIが返す`short_description`文字列そのままです。

### 書類の認識と品質

| リスク | 短い説明 | 原因 | 重大度 |
| - | - | - | - |
| `COULD_NOT_RECOGNIZE_DOCUMENT` | Could not validate Document | 提出された書類の真正性または有効性をシステムが確認できませんでした。多くの場合、画質の低さや非対応の書類タイプが原因です。認識できない処理エラーのフォールバックとしても使用されます。 | 設定可能（Invalid Validation、デフォルトはReview） |
| `COULD_NOT_DETECT_DOCUMENT_TYPE` | Could not detect document type | 書類の表面が既知の公式書類デザインと高い信頼度で一致しないか、OCRエンジンが書類の種別（パスポート、身分証明書、運転免許証）を分類できませんでした。有効なデータを含んでいてもレイアウトがどの公式デザインとも一致しない書類（編集された書類やコンピューターで生成された書類、まだ対応していない新しいデザイン）はここに該当します。この警告が発生した場合、`DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION`は抑制されます（タイプが不明なため、「非対応」とすると矛盾するためです）。 | 設定可能（Invalid Validation、デフォルトはReview） |
| `DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION` | Document not supported for your application | 認識された書類タイプがアプリケーションの許可リストにありません。`additional_data`には国、書類タイプ、サブタイプ、地域を考慮したサブタイプが含まれます。 | `error`（**自動却下**） |
| `DOCUMENT_EXPIRED` | Document expired | 撮影時：書類の有効期限が過ぎています（`error`、自動却下）。承認後：承認済み書類の有効期限が過ぎると、継続的な有効期限モニタリングがこの警告を`log_type: "warning"`で追加し、レポートのステータスは`Expired`になります。 | 撮影時は`error`、モニタリングでは`warning` |
| `DOCUMENT_SIDES_MISMATCH` | Document sides mismatch | 表面と裏面の画像が同じ書類のものではありません。 | 設定可能（Data Inconsistency、デフォルトはinformation） |
| `DOCUMENT_BACK_SIDE_NOT_AVAILABLE` | Back side not available for this document | ワークフローが両面を要求し、表面は認識されましたが、Diditの書類カタログにはその書類の裏面が登録されていないため、表面のみを収集しました。レポートの証拠は片面のみです。提示された書類に問題はなく、所持者に再撮影を求めることは一切なく、再スキャンしても裏面を追加することはできません。`additional_data`には認識された`front_document_name`が含まれます。 | `information`（判定には一切影響しません） |
| `PORTRAIT_IMAGE_NOT_DETECTED` | Portrait image not detected | 顔写真があるはずの書類で顔写真を検出できませんでした（ユーザーが顔写真のない面を先にアップロードした場合は判定が保留されます）。 | `error`（**自動却下**） |
| `DOCUMENT_HAS_NO_PORTRAIT` | Document has no portrait | 認識された書類種別は、どの面にも顔写真を持ちません（一部の在留許可証、健康保険証、登録証明書、税務カード、一部の運転免許証・身分証明書）。これは書類タイプに関するカタログ上の事実であり、画質の問題ではありません。書類を再スキャンしても結果は変わりません。 | 設定可能（Document Without Portrait、デフォルトはReview） |
| `IMAGE_TOO_BLURRY` / `IMAGE_TOO_DARK` / `IMAGE_TOO_BRIGHT` | Document image is too blurry / too dark / too bright | 画質チェックによりアップロードが拒否されました（ユーザーに再撮影を求めます）。`additional_data`には不合格となった`side`が含まれます。再撮影に成功すると古い警告は消去されます。ユーザーに許可された最後の試行では画質チェックがスキップされるため、完全にブロックされることはありません。 | 設定可能（リスクごとのImage Qualityアクション、デフォルトはinformation） |

> [!NOTE]
>
> 撮影フローでは、フィードバックコード`IMAGE_RESOLUTION_TOO_LOW`、`DOCUMENT_NOT_FULLY_VISIBLE`、`IMAGE_QUALITY_TOO_LOW`、`DOCUMENT_OCCLUSION_DETECTED`（指や物体が印字されたテキストを物理的に覆っていると判断された場合）でアップロードを拒否することもあります。いずれもSDKで再撮影を促し、Image Quality設定に従って処理される個別のリスクとしてレポートに記録されます。`DOCUMENT_OCCLUSION_DETECTED`と`IMAGE_QUALITY_TOO_LOW`は同じアクションを共有します。これらは*撮影*に関するもので、再撮影に成功すると警告は消去されます。覆われたフィールドを判定に反映させるかどうかは、後述する整合性側の別のリスク`CRITICAL_FIELD_OCCLUSION_DETECTED`が扱います。これは判定時に発生し、デフォルトはReviewです。

> [!TIP]
>
> ワークフローで書類の顔写真ではなく顔照合を本人確認の基準としている場合は、**Document Without Portrait**をDeclineに設定することを検討してください。そうしないと、顔写真のない書類種別が比較対象のないまま顔照合に進みます。

### フィールド抽出

| リスク | 短い説明 | 原因 | 重大度 |
| - | - | - | - |
| `NAME_NOT_DETECTED` | First name and/or last name not detected | 名と姓を抽出できませんでした。所持者が正当に単一の名前を持つ場合（単一名の国、またはMRZ自体に単一の名前が記載されている場合）で、少なくとも1つの名前の値が抽出されたときは対象外です。 | 設定可能（Invalid Validation、デフォルトはReview） |
| `DATE_OF_BIRTH_NOT_DETECTED` | Date of birth not detected | 生年月日があるはずの書類から生年月日を抽出できませんでした。 | 設定可能（Invalid Validation、デフォルトはReview） |
| `DOCUMENT_NUMBER_NOT_DETECTED` | Document number not detected | 書類番号も個人番号も抽出できませんでした。 | 設定可能（Invalid Validation、デフォルトはReview） |
| `EXPIRATION_DATE_NOT_DETECTED` | Expiration date not detected | 有効期限があるはずの書類から有効期限を抽出できませんでした。 | 設定可能（Expiration Date Not Detected、デフォルトはinformation） |
| `INVALID_DATE` | Invalid Date | 書類上の日付（生年月日または有効期限）を有効な日付として解析できません。現在の撮影フローでは、保存される警告ではなく、アップロード中の再撮影の案内として表示されます。このコードは引き続きInvalid Validationのルーティンググループに属しており、古いセッションに表示される場合があります。 | 設定可能（Invalid Validation、デフォルトはReview） |
| `DOCUMENT_NUMBER_FORMAT_MISMATCH` | 書類番号の形式不一致 | 書類番号が、この書類タイプに設定された想定形式と一致しません。`additional_data`には`expected_format`と`extracted_value`が含まれます。 | 設定可能（Format Mismatch、既定値: Review） |
| `PERSONAL_NUMBER_FORMAT_MISMATCH` | 個人番号の形式不一致 | 個人番号が、この書類タイプに設定された想定形式と一致しません。 | 設定可能（Format Mismatch、既定値: Review） |
| `CRITICAL_FIELD_OCCLUSION_DETECTED` | 重要な書類フィールドが隠れている | オクルージョンチェックにより、撮影画像上で重要な印字フィールド（ID番号、氏名、生年月日、有効期限のいずれか）が物理的に覆われていることが報告されました。これは撮影品質ではなく、書類の完全性に関するシグナルです。レポートの照合対象となる番号そのものが隠されているのは、墨消しや改ざんが施された書類に見られる特徴です。覆われたフィールドから読み取られた値は、確定値として返されるのではなく抽出結果から除外されるため、通常は対応する`*_NOT_DETECTED`リスクがこの警告とともに発生します。`additional_data`には、覆われたフィールド名が`covered_fields`に含まれ、そのいずれかが`document_number`または`personal_number`に反映される場合は`covered_identifiers`も含まれます。 | 設定可能（Critical Field Covered、既定値: Review） |

### MRZ・QR・バーコード

MRZの信頼性が低いことがわかっている書類タイプでは、3つのMRZリスクはいずれもスキップされます。

| リスク | 概要 | 原因 | 重大度 |
| - | - | - | - |
| `MRZ_NOT_DETECTED` | MRZが検出されない | MRZがあるはずの書類で、MRZの位置を特定できませんでした。 | 設定可能（Invalid MRZ、既定値: information） |
| `MRZ_VALIDATION_FAILED` | MRZが無効 | MRZがチェックサムまたは形式の検証に失敗しました。多くの場合は撮影品質の低さが原因ですが、改ざんを示している可能性もあります。 | 設定可能（Invalid MRZ、既定値: information） |
| `MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAME` | MRZとOCRで抽出したデータに不一致がある | MRZの内容がVIZ（視認領域）のOCR結果と一致しません。改変の可能性があります。 | 設定可能（Data Inconsistency、既定値: information） |
| `QR_NOT_DETECTED` | QRが検出されない | QRコードがあるはずの書類で、QRコードの位置を特定できませんでした。 | 設定可能（Invalid Code、既定値: information） |
| `QR_VALIDATION_FAILED` | QRの検証に失敗 | QRの内容を書類の他の部分と照合して検証できませんでした。 | 設定可能（Invalid Code、既定値: information） |
| `BARCODE_NOT_DETECTED` | バーコードが検出されない | バーコードがあるはずの書類で、バーコードの位置を特定できませんでした。 | 設定可能（Invalid Code、既定値: information） |
| `BARCODE_VALIDATION_FAILED` | バーコードの検証に失敗 | バーコードの内容を書類の他の部分と照合して検証できませんでした。 | 設定可能（Invalid Code、既定値: information） |
| `BARCODE_SIGNATURE_INVALID` | バーコードの署名が無効 | バーコードには発行機関によるデジタル署名が含まれていますが、その署名の検証に失敗しました。つまりバーコード内のデータは発行機関が署名したデータではなく、偽造または改変された書類であることを示しています。現在は**フランスの2D-Doc（ANTS）**バーコードを対象にチェックしており、署名が検証されるとDiditはMRZによる裏付けなしでフィールドを採用できます。AAMVA（米国・カナダの運転免許証およびID）の署名は検出してログに記録するのみで、まだ適用はしていません。 | 固定: Review（独自のアクショングループ`invalid_barcode_signature_action`。コンソールやAPIからはまだ設定できません） |
| `DATA_INCONSISTENT` | 書類内のOCRデータに一貫性がない | 書類の異なる部分から抽出されたデータが一致しません。典型的には、同じ書類の表面と裏面の間で発生します。 | 設定可能（Data Inconsistency、既定値: information） |

> [!NOTE]
>
> バーコードの署名検証は現在、フランスの国民IDカードを対象としています。このカードのANTS 2D-Docバーコードには発行機関が署名しています。`BARCODE_SIGNATURE_INVALID`が発生するのは、署名チェック自体がペイロードを拒否した場合のみです。署名のないバーコード、まだDiditのトラストストアに登録されていない機関が署名したバーコード、または署名をデコードできないバーコードは、認証されていないデータとして扱われ、従来どおりMRZや印字テキストと照合して検証されます。この場合、このリスクは発生しません。
>
> 米国およびカナダの運転免許証（AAMVA）のバーコードは暗号学的に検証されません。これらの地域ではデジタル署名は任意かつ管轄区域ごとに異なり、検証用の鍵を公開している管轄区域もないため、Diditはペイロードに署名が含まれているかどうかを検出してログに記録するだけで、署名自体は一切チェックしません。現時点では、AAMVAの署名の失敗はリスクシグナルではありません。改ざんされたAAMVAのペイロードは`BARCODE_VALIDATION_FAILED`としてのみ表面化し、それも改ざんによってバーコードがMRZや印字/OCRデータと一致しなくなった場合に限られます。それ以外の点で内部的に整合しているペイロードに偽造署名が付いていても、何のシグナルも出ずに通過します。
>
> `BARCODE_SIGNATURE_INVALID`が発生しても、ユーザーに再撮影を求めることはありません。ペイロードと一致しない署名は、より良い写真を撮っても解決できないためです。

### 本人情報の照合

| リスク | 概要 | 原因 | 重大度 |
| - | - | - | - |
| `ID_DOCUMENT_IN_BLOCKLIST` | 書類がブロックリストに登録されている | 書類が、ブロックリストに登録された書類（生年月日、発行国、書類番号が完全に一致）、または手動でブロックリストに登録された書類番号と一致します。`additional_data`にはブロックリストに登録されたセッションの参照が含まれます。 | `error`（**自動却下**） |
| `ID_DOCUMENT_IN_ALLOWLIST` | 書類が許可リストに登録されている | 書類番号が書類の許可リストと一致したため、重複ユーザーのアクションはスキップされました。`additional_data`には`document_number`が含まれます。 | `information` |
| `POSSIBLE_DUPLICATED_USER` | 他のセッションのユーザーと重複している可能性 | アプリケーション内の別の書類が、生年月日と発行国が同じで氏名も非常に類似しており、別のユーザー（`vendor_data`）に属しています。そのセッションのステータスは問いません。`additional_data`には重複しているセッションの参照が含まれます。 | 設定可能（Duplicated User、既定値: information） |
| `DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTS` | 書類の氏名が他の承認済み書類と異なる | この書類の氏名が、同じユーザーの過去に承認された書類の氏名と異なります。Didit-protocol（UserKYC）アカウントでのみ発生し、標準のAPIセッションでは発生しません。 | 設定可能（Data Inconsistency、既定値: information） |
| `ID_VERIFICATION_DATA_MISMATCH_BETWEEN_DOCUMENTS` | 本人確認書類間のデータ不一致 | 同じセッション内の2つの本人確認書類で、氏名または生年月日が一致しません。 | 設定可能（Data Inconsistency、デフォルトはinformation） |
| `LOW_FRONT_CAMERA_FACE_MATCH_SIMILARITY` | 書類撮影中のセルフィーが書類の顔写真と一致しない | 書類撮影中にユーザーのフロントカメラで撮影された顔が、書類の顔写真と十分に一致しません。 | しきい値で判定：却下のしきい値未満で`error`、レビューのしきい値以下で`warning` |
| `FRONT_CAMERA_FACE_IN_BLOCKLIST` | 書類撮影中のセルフィーがブロックリストの顔と一致 | 書類撮影中にフロントカメラで撮影されたセルフィーの顔が、顔のブロックリストにある顔と高い確度で一致しています。そのブロックリストの顔がライブネスチェック、別のセッションの書類撮影時のセルフィー、アップロードのいずれで追加されたかは問いません。ブロックリストの顔がセッション由来の場合、`additional_data`にはブロックリストに登録されたセッションの参照（`blocklisted_session_id`、`blocklisted_session_number`）が含まれ、一致したセルフィーについては`face_image_source`（`front_image_camera_front`または`back_image_camera_front`）が含まれます。 | `error`：**自動却下** |
| `POSSIBLE_FRONT_CAMERA_FACE_IN_BLOCKLIST` | 書類撮影中のセルフィーがブロックリストの顔と一致する可能性 | 書類撮影時のセルフィーの顔が顔のブロックリストにある顔と類似していますが、一致と確定できるほどではありません。`additional_data`は上記と同じです。 | `warning`：**常にレビュー** |
| `FRONT_CAMERA_DUPLICATED_FACE` | 書類撮影中のセルフィーが承認済みユーザーと一致 | 書類撮影中にフロントカメラで撮影されたセルフィーの顔が、アプリケーションですでに承認済みのユーザーの顔と高い確度で一致しています。同一人物が別のアカウントで再度認証している可能性があります。`additional_data`には一致したセッション（`duplicated_session_id`、`duplicated_session_number`）と、一致したセルフィーの`face_image_source`が含まれます。 | **サイレントキャプチャでの重複した顔**の設定に従う（デフォルトは承認、`information`） |
| `POSSIBLE_FRONT_CAMERA_DUPLICATED_FACE` | 書類撮影中のセルフィーが承認済みユーザーと一致する可能性 | 書類撮影時のセルフィーの顔がアプリケーションですでに承認済みのユーザーの顔と類似していますが、一致と確定できるほどではありません。`additional_data`は上記と同じです。 | **サイレントキャプチャでの重複した顔**の設定に従う（デフォルトは承認、`information`） |
| `FRONT_CAMERA_DUPLICATED_FACE_NAME_MISMATCH` | 書類撮影時のセルフィーが別の氏名のユーザーと一致 | 承認済みユーザーが別の氏名で認証されていた場合に、`FRONT_CAMERA_DUPLICATED_FACE`に加えて発生します。`additional_data`には`name_match_score`が追加されます。相手ユーザーの氏名が含まれることはありません。 | **Silent Capture duplicate with a different name**の設定に従う（デフォルトはレビュー、`warning`） |
| `FRONT_CAMERA_DUPLICATED_FACE_DOCUMENT_MISMATCH` | 書類撮影時のセルフィーが別の生年月日のユーザーと一致 | 承認済みユーザーの本人確認書類に別の生年月日が記載されている場合に、`FRONT_CAMERA_DUPLICATED_FACE`に加えて発生します。同一人物の別の書類（例：IDカードの後にパスポート）、更新された書類、同じ国の同じ書類番号はフラグの対象になりません。`additional_data`には`mismatch_dimensions`が追加され、相手ユーザーの書類データが含まれることはありません。 | **Silent Capture duplicate with a different date of birth**の設定に従う（デフォルトはレビュー、`warning`） |
| `FRONT_CAMERA_CAPTURED_DOCUMENT` | フロントカメラがユーザーではなく本人確認書類を撮影 | 書類のスキャン中に撮影されたフロントカメラのフレームに、本人確認書類（例：カメラにかざしたカード）が写っており、人物が写っていません。そのフレームについては書類撮影時のセルフィー照合は計算されません。 | 常に**レビュー** |

### 書類ライブネス (改ざん)

ワークフローでは、不正の種類ごとにしきい値で判定されます。スタンドアロンのOCR APIでは、これら3つのリスクは無条件で却下となり、リクエストされたチェックで有効なスコアが得られない場合は、承認ではなく`In Review`を返します。

スコア自体は、警告が発生しなかった場合も含め、すべてのV3レポートに[`document_liveness`](https://docs.didit.me/ja/core-technology/id-verification/report-id-verification#書類の真正性検知スコア)として含まれるため、承認済みの書類でも後から監査できます。

| リスク | 概要 | 原因 | 重大度 |
| - | - | - | - |
| `SCREEN_CAPTURE_DETECTED` | 書類の画面撮影を検出 | 書類が実物ではなく画面から撮影されました。 | 却下のしきい値未満で`error`、レビューのしきい値未満で`warning`、それ以外は`information` |
| `PRINTED_COPY_DETECTED` | 書類の印刷コピーを検出 | 書類が原本ではなく印刷コピーであると思われます。 | 同じ3段階のしきい値 |
| `PORTRAIT_MANIPULATION_DETECTED` | 顔写真の改ざんを検出 | 顔写真の領域が差し替えまたは改変されていると思われます。 | 同じ3段階のしきい値 |
| `DOCUMENT_LIVENESS_NOT_COMPUTED` | 書類ライブネスチェックを計算できなかった | リクエストされた書類ライブネス（偽造）チェックで有効なスコアが返されませんでした。プロバイダーが失敗した、200以外で応答した、またはHTTP 200で`status="ERR"`を返したため、書類は顔写真の差し替え、印刷コピー、画面の再撮影について一度もチェックされていません。スコアがないことは、書類が本物である証拠にはなりません。スタンドアロンのOCR APIのみ。 | `warning` + `In Review`（設定不可。`Declined`を上書きすることはありません） |

### 撮影チャネルの完全性

| リスク | 概要 | 原因 | 設定項目 | デフォルト |
| - | - | - | - | - |
| `INJECTION_ATTACK_DETECTED` | インジェクション攻撃を検出 | 撮影がデバイス自身のカメラによるものではなく、注入されたものです。任意の動画を再生できるソフトウェアの仮想カメラ、ページやブラウザ自動化によって生成されたカメラ映像、フックされたカメラ、またはアプリにアタッチされた計測ツールがフレームを供給していました。`additional_data.reasons`にはそれを証明する理由のみが列挙され、`source`は`capture_integrity`です。書類撮影と、ID照会のために撮影されたセルフィーに適用されます。 | `id_verification_injection_attack_action` | **却下** |

`log_type`は設定されたアクションに対応します。却下（Decline）の場合は`error`、レビュー（Review）の場合は`warning`、アクションなし（No action）の場合は`information`です。
推奨アクション：却下されたセッションはインジェクションされたキャプチャとして扱い、本人に物理デバイスの内蔵カメラで再試行するよう依頼してください。
本物の人物でも生じうるシグナルが`INJECTION_ATTACK_DETECTED`を発生させることはなく、情報レベルにとどまります。
実際のカメラ映像を中継するアプリ（ウェブカメラとして使用するスマートフォンや、実際のウェブカメラに重ねるエフェクトレイヤーなど）は、インジェクション攻撃として報告されません。
これはインジェクション攻撃の検知であり、プレゼンテーション攻撃の検知（実際のカメラに偽物を提示する攻撃）とは別のものです。

### 既知の公開書類画像

| リスク | 概要 | 原因 | 重大度 |
| - | - | - | - |
| `PUBLIC_DOCUMENT_IMAGE_DETECTED` | インターネット上で公開されている既知の書類画像を検出 | 提出された書類画像が、インターネット上で公開されている既知の画像（書類の見本、報道写真、ストックフォトなど）と一致するため、ユーザー自身の物理的な書類を撮影したものではありえません。照合には、Diditが保有する既知の公開書類画像のコーパスに対する完全一致および知覚的（pHash/dHash）フィンガープリントを使用します。`additional_data`には`match_type`（`exact`または`perceptual`）、`source`、`source_url`、`similarity_score`（0-100）が含まれます。 | 固定：ワークフローではレビュー、スタンドアロンの`/id-verification` APIでは**自動却下** |

### 期待値との不一致

セッションに`expected_details`を渡すと、一致しないフィールドごとにDiditが不一致の警告を発生させます。これらすべてのルーティングは、1つのグループ設定（`expected_details_mismatch_action`、デフォルトはレビュー）で制御されます。

| リスク | 概要 | 原因 |
| - | - | - |
| `FULL_NAME_MISMATCH_WITH_PROVIDED` | 提供された情報と氏名が不一致 | 提供された氏名と書類との照合スコアが、氏名照合のしきい値を下回っています。 |
| `DOB_MISMATCH_WITH_PROVIDED` | 提供された情報と生年月日が不一致 | 提供された生年月日が一致しません。 |
| `GENDER_MISMATCH_WITH_PROVIDED` | 提供された情報と性別が不一致 | 提供された性別が一致しません。 |
| `COUNTRY_MISMATCH_WITH_PROVIDED` | 提供された情報と国が不一致 | 提供された国が`issuing_state`と一致しません。 |
| `NATIONALITY_MISMATCH_WITH_PROVIDED` | 提供された情報と国籍が不一致 | 提供された国籍が一致しません。 |
| `IDENTIFICATION_NUMBER_MISMATCH_WITH_PROVIDED` | 提供された情報と身分証明番号が不一致 | 提供されたID番号が、書類番号、個人番号、納税者番号のいずれとも一致しません。 |

各不一致の警告には、`additional_data`に期待値と抽出値が含まれます。

### 年齢

| リスク | 概要 | 原因 | 重大度 |
| - | - | - | - |
| `MINIMUM_AGE_NOT_MET` | 最低年齢に未達 | 所持者が設定された最低年齢（全体または国・州ごと）を下回っています。`additional_data`には`min_age_allowed`と`user_age`が含まれます。 | 設定可能：Minimum Age、デフォルトは却下（`error`）。スタンドアロンのOCR APIでは無条件に却下 |
| `MAXIMUM_AGE_EXCEEDED` | 最高年齢を超過 | 所持者が設定された最高年齢を上回っています。`additional_data`には`max_age_allowed`と`user_age`が含まれます。 | 設定可能：Maximum Age、デフォルトは却下（`error`） |
| `AGE_NOT_DETECTED` | 年齢を検出できない | アダプティブ年齢確認ワークフロー：書類から年齢を抽出できませんでした。 | `error`：**自動却下** |
| `AGE_BELOW_MINIMUM` | 年齢が最低年齢未満 | アダプティブ年齢確認ワークフロー：抽出された年齢が最低年齢を下回っています。 | `error`：**自動却下** |

### 住所

| リスク | 概要 | 原因 | 重大度 |
| - | - | - | - |
| `UNPARSED_ADDRESS` | 住所の位置を特定できない | 書類に住所フィールドが定義されていますが、抽出された住所を解析またはジオロケーションできませんでした。 | 設定可能：Unparsed Address、デフォルトはinformation |

## セッション間の書類一致

上記の警告に加えて、V3のIDレポートには`matches[]`配列が含まれます。これは、アプリケーション内で生年月日と発行国が同じで、氏名が非常に類似している他の書類を最大5件示すものです（ブロックリストに登録された書類については、さらに書類番号の完全一致が必要です）。同じユーザーに属するセッションは除外されます。ブロックリストに追加された書類は`is_blocklisted: true`として表示されます。許可リストに登録された書類も一致には表示されますが、重複ユーザーのアクションはスキップされます。

各一致には、`session_id`、`session_number`、`vendor_data`、`verification_date`、`user_details`（`name`、`document_type`、`document_number`）、`status`、`is_blocklisted`、`api_service`、署名付きの`front_image_url`が含まれます。

## 例

### デフォルトのルーティング（information）が設定された設定可能な警告

```json theme={null}
"warnings": [
  {
    "feature": "ID_VERIFICATION",
    "risk": "QR_NOT_DETECTED",
    "additional_data": null,
    "log_type": "information",
    "short_description": "QR not detected",
    "long_description": "The system couldn't find or read the QR code on the document. This could be due to poor image quality or an unsupported document type.",
    "node_id": "id_primary"
  }
]
```

### 期限切れの書類による自動却下

```json theme={null}
"warnings": [
  {
    "feature": "ID_VERIFICATION",
    "risk": "DOCUMENT_EXPIRED",
    "additional_data": null,
    "log_type": "error",
    "short_description": "Document expired",
    "long_description": "The document's expiration date has passed, rendering it no longer valid for use.",
    "node_id": "id_primary"
  }
]
```

### ペイロードを含む期待される詳細の不一致

```json theme={null}
"warnings": [
  {
    "feature": "ID_VERIFICATION",
    "risk": "DOB_MISMATCH_WITH_PROVIDED",
    "additional_data": {
      "expected_dob": "1990-01-01",
      "extracted_dob": "1991-03-15"
    },
    "log_type": "warning",
    "short_description": "Date of birth mismatch with provided information",
    "long_description": "The provided date of birth in `expected_details` doesn't match the date extracted from the document.",
    "node_id": "id_primary"
  }
]
```

## 警告の種類

各リスクには、アプリケーションの設定に基づいて重大度が割り当てられます。重大度は次の3種類です。

## 関連情報

* [本人確認レポート](https://docs.didit.me/ja/core-technology/id-verification/report-id-verification.md)：レポートの完全なスキーマとステータス。
* [書類モニタリング](https://docs.didit.me/ja/core-technology/id-verification/document-monitoring-id-verification.md)：Diditが改ざんやセッション間の重複を検出する仕組み。
* [Webhook](https://docs.didit.me/ja/integration/webhooks.md)：IDステップが完了するとすぐに、`session.status.updated`に警告が含まれます。
* [データモデル：本人確認](https://docs.didit.me/ja/reference/data-models.md#本人確認)：フィールドごとの正式なスキーマ。
* [データモデル：Warningオブジェクト](https://docs.didit.me/ja/reference/data-models.md#警告オブジェクト)：`warnings[]`の各エントリの構造。


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