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

# Les cinq contrôles

> Ce que vérifie chaque contrôle, et ce que veulent dire pass, warn, fail et skipped.

Chaque contrôle a un `name`, un `status`, un `score` entre 0 et 1 (ou `null` s'il est ignoré), et une justification `evidence` en français et en anglais, à afficher telle quelle à vos équipes.

```json theme={null}
{
  "name": "viz_mrz_consistency",
  "status": "pass",
  "score": 1,
  "evidence": { "fr": "6 champs sur 6 concordent", "en": "6 of 6 fields agree" }
}
```

| Statut | Signification |
| - | - |
| `pass` | Le contrôle est satisfait |
| `warn` | Un doute, qui coûte des points sans bloquer à lui seul |
| `fail` | Le contrôle échoue : la vérification ne peut pas être `verified` |
| `skipped` | Le contrôle n'a pas pu s'appliquer (pas de selfie, pas de MRZ) et ne compte pas |

## `mrz_checksum`

La zone de lecture automatique (MRZ) contient des chiffres de contrôle calculés selon la norme OACI 9303. VerifNer recalcule chacun d'eux : numéro de document, date de naissance, date d'expiration, et le chiffre composite.

* **pass** : tous les chiffres de contrôle sont justes.
* **fail** : un chiffre faux, un caractère invalide ou un format inconnu. C'est un signe fort de falsification ou de document fabriqué. Score plafonné à 0,50.
* **skipped** : le document n'a pas de MRZ. Le score est alors plafonné à 0,85, sauf pour la carte papier du Niger quand tous les autres contrôles sont solides.

## `expiry`

La date d'expiration, lue sur la MRZ en priorité, sinon sur la zone imprimée.

* **pass** : le document est valide à la date de la vérification.
* **fail** : le document est expiré (score ramené à 0) ou la date est illisible (plafond à 0,50).

La carte d'identité papier du Niger n'imprime pas de date d'expiration : elle est valide 5 ans après sa date de délivrance (« Fait le »), et la justification le précise.

## `viz_mrz_consistency`

Compare ce qui est **imprimé** sur le document (zone visuelle) à ce qui est **encodé** dans la MRZ : nom, prénoms, date de naissance, sexe, numéro de document, date d'expiration. Un faussaire modifie souvent l'un sans l'autre.

* **pass** : tous les champs concordent.
* **warn** : ceux qui ont pu être lus concordent, mais certains étaient illisibles.
* **fail** : un champ diverge. Si c'est le nom, les prénoms ou la date de naissance, score plafonné à 0,50.

La comparaison tolère les accents, la casse et les translittérations de la MRZ (`É` devient `E`, les espaces deviennent `<`).

## `tamper`

Les signes visuels relevés sur la photo du document. Chaque anomalie a un type et une gravité (faible, moyenne, élevée), et la justification reprend la description de ce qui a été vu.

| Type | Nature | Effet maximal |
| - | - | - |
| `photo_of_screen` | Photo d'un écran au lieu du document | fail |
| `photocopy` | Photocopie ou impression | fail |
| `font_inconsistency` | Police différente à l'intérieur d'un champ | fail |
| `portrait_edge` | Bords du portrait qui semblent recollés | fail |
| `field_overwritten` | Champ surchargé | fail |
| `glare` | Reflet | warn |
| `blur` | Flou | warn |
| `partial_document` | Une partie du document hors cadre ou cachée | warn |

Les anomalies de **prise de vue** (reflet, flou, cadrage) coûtent des points mais ne font jamais échouer le contrôle à elles seules : elles ne prouvent pas une altération. Si un mauvais cadrage cache la MRZ ou un champ, ce sont les autres contrôles qui échouent.

Un portrait invisible ou une lisibilité très faible font aussi échouer ce contrôle.

## `face_match`

Compare le portrait du document au selfie, avec un modèle de reconnaissance faciale. Le visage est détecté et recadré automatiquement sur chaque image.

* **pass** : similarité de 0,45 ou plus.
* **warn** : similarité entre 0,30 et 0,45.
* **fail** : similarité sous 0,30 (score ramené à 0), aucun visage sur le selfie, plusieurs visages, ou portrait introuvable sur le document (plafond à 0,50).
* **skipped** : aucun selfie envoyé.

Le score du contrôle monte de 0 à 1 entre une similarité de 0,30 et de 0,60.

<Tip>
  Pour un bon selfie : visage de face, bien éclairé, sans lunettes ni couvre-chef qui masque le visage, une seule personne dans le cadre. Le [SDK web](/guides/web-sdk) guide la personne pour vous.
</Tip>
