La vérification de l'âge est passée d'une case à cocher à une tâche d'ingénierie. Au Royaume-Uni, l'Online Safety Act impose à certains services des contrôles de l'âge « hautement efficaces ». Dans l'UE, la Commission européenne a publié un blueprint (un plan de référence) pour prouver que l'on a plus de 18 ans sans rien transmettre d'autre. Les deux citent les pièces d'identité comme l'une des voies d'entrée.

Cet article s'adresse aux développeurs à qui l'on a demandé d'« ajouter une vérification de l'âge » et qui veulent savoir où se place le scan d'une pièce d'identité. Il présente les méthodes que listent les autorités britanniques et européennes, ce que le scan d'un passeport ou d'une carte d'identité prouve et ne prouve pas, comment transformer une date de naissance en réponse « majeur ou non », et ce qu'il faut garder ensuite. Chaque citation ci-dessous vient de la page de l'autorité elle-même, liée là où elle apparaît ; nous en donnons une traduction.

Ceci est le blog de doc.cheap, une API OCR pour passeports et pièces d'identité. Lisez la partie consacrée au produit en gardant cela à l'esprit.

Le Royaume-Uni : la barre est « hautement efficace »

L'obligation figure à la section 12 de l'Online Safety Act 2023. Pour les contenus les plus nocifs, le fournisseur doit « utiliser la vérification de l'âge ou l'estimation de l'âge (ou les deux) pour empêcher les enfants de tout âge de rencontrer des contenus de priorité principale nocifs pour les enfants ». Et le contrôle doit être « d'une nature telle, et utilisé d'une manière telle, qu'il soit hautement efficace pour déterminer correctement si un utilisateur donné est ou non un enfant ».

La section 230 définit les deux termes. La vérification de l'âge « désigne toute mesure conçue pour vérifier l'âge exact des utilisateurs » d'un service concerné. L'estimation de l'âge « désigne toute mesure conçue pour estimer l'âge ou la tranche d'âge des utilisateurs ». Elle ferme aussi le raccourci le plus facile : « Une mesure qui demande à un utilisateur de déclarer lui-même son âge (sans rien de plus) ne doit pas être considérée comme une vérification ou une estimation de l'âge. »

L'Ofcom, l'autorité britannique des communications, explique la barre dans ses lignes directrices sur le contrôle de l'âge hautement efficace pour les services de la Part 3 (la version mise à jour est datée du 24 avril 2025). La section 3 donne « une liste non exhaustive » des méthodes qu'elle juge capables d'être hautement efficaces :

Méthode de la liste de l'Ofcom Rôle d'une pièce d'identité
Open banking Aucun
Correspondance avec une pièce d'identité avec photo (photo-ID matching) Oui, le document est la preuve
Estimation faciale de l'âge Aucun
Contrôles de l'âge par l'opérateur mobile Aucun
Contrôles par carte bancaire Aucun
Estimation de l'âge à partir de l'adresse e-mail Aucun
Services d'identité numérique Souvent, au moment où l'identité est vérifiée la première fois

L'Ofcom décrit ainsi la correspondance avec une pièce d'identité avec photo : elle « fonctionne en recueillant les informations pertinentes d'une pièce d'identité avec photo téléversée et en les comparant à une image de l'utilisateur prise au moment du téléversement, afin de vérifier qu'il s'agit de la même personne ».

La même section liste ce qui ne suffit pas, notamment « demander à un utilisateur de saisir sa date de naissance sans autre preuve pour confirmer cette information ». Une date de naissance saisie au clavier est une auto-déclaration. Une date de naissance lue sur un document est une preuve, et le reste des lignes directrices de l'Ofcom porte sur la qualité que cette preuve doit avoir.

L'UE : un blueprint fondé sur la preuve de l'âge

Côté européen, la Commission a publié la première version d'un blueprint de vérification de l'âge le 14 juillet 2025. Selon ses termes, le blueprint « fournit une méthode permettant aux utilisateurs de prouver qu'ils ont plus de 18 ans lorsqu'ils accèdent à des contenus pour adultes soumis à restriction, comme la pornographie en ligne, sans révéler aucune autre information personnelle ».

La conception sépare le contrôle de son usage. L'« âge de l'utilisateur sera vérifié par l'émetteur à l'aide de données personnelles détaillées, comme la date de naissance. Les services en ligne, eux, ne recevront qu'une preuve que l'utilisateur a plus de 18 ans, sans aucune autre donnée personnelle ».

Les pièces d'identité interviennent à la première étape. La fiche de la Commission sur le blueprint cite comme sources d'une preuve de l'âge « les eID nationales, les passeports et cartes d'identité, des applications préinstallées contenant l'information sur l'âge, comme les applications bancaires, ou une activation hors ligne par un tiers, comme la poste ». Elle ajoute qu'« en octobre 2025, une deuxième version du blueprint a été publiée avec une méthode par passeport et carte d'identité pour générer une preuve de l'âge ».

Des deux côtés, un document est donc une source acceptée. Mais nulle part la photo d'un document ne constitue à elle seule tout le contrôle.

Ce qu'un scan prouve, et ce qu'il ne prouve pas

Le scan d'un document répond bien à une question : que dit ce document ? Il lit la date de naissance, la date d'expiration, le type de document et la zone de lecture automatique (MRZ), et il peut vous dire si les chiffres de contrôle de cette zone tombent juste. C'est la partie « recueillir les informations pertinentes » de la description de l'Ofcom.

Il ne répond pas aux autres questions qu'un contrôle de l'âge doit couvrir :

  • La personne est-elle le titulaire ? La section de l'Ofcom sur la robustesse nomme le cas évident : « un enfant qui téléverse l'image d'une pièce d'identité qui ne lui appartient pas ». Sa réponse : « Exiger une photo de l'utilisateur au moment du téléversement de la pièce d'identité, dans le cadre de la correspondance avec la photo, aide à vérifier que cette pièce appartient bien à l'utilisateur. »
  • La personne est-elle présente ? « La détection du vivant apporte une confiance supplémentaire qu'un enfant n'a pas téléversé la photo d'un adulte, en garantissant que l'utilisateur soumis au contrôle de l'âge est présent au moment où le contrôle est effectué. »
  • Le document est-il authentique ? « Un contrôle robuste par pièce d'identité avec photo ne doit pas pouvoir être facilement contourné ; une méthode par pièce d'identité avec photo doit donc pouvoir détecter les documents falsifiés ou les manipulations qu'un enfant pourrait créer ou se procurer. »

Aucune de ces vérifications n'est de l'OCR. Lire un document et le vérifier sont deux tâches distinctes, assurées par des outils distincts, et un contrôle de l'âge fondé sur des documents a besoin des deux. L'étape de lecture vous donne des données fiables sur le document ; la comparaison faciale, la détection du vivant et le contrôle d'authenticité vous disent si vous pouvez faire confiance au document et à la personne.

D'une date de naissance à « majeur ou non »

Une fois la date de naissance lue, le calcul de l'âge est court mais facile à rater. Soustraire les années ne suffit pas : une personne née le 20 novembre 2008 a 17 ans le 10 novembre 2026, pas 18. Comparez aussi le mois et le jour.

from datetime import date


def age_on(birth_iso: str, on: date) -> int:
    """Whole years completed on the day `on`, from a YYYY-MM-DD date of birth."""
    born = date.fromisoformat(birth_iso)
    years = on.year - born.year
    if (on.month, on.day) < (born.month, born.day):
        years -= 1  # the birthday has not come yet this year
    return years


def is_over(birth_iso: str, threshold: int, on: date) -> bool:
    return age_on(birth_iso, on) >= threshold


print(age_on("2008-11-20", date(2026, 11, 10)))     # 17
print(is_over("2008-11-20", 18, date(2026, 11, 20)))  # True

Quelques détails comptent en pratique :

  • Prenez la date du contrôle, dans un seul fuseau horaire. « Aujourd'hui » sur le serveur et « aujourd'hui » pour l'utilisateur peuvent différer autour de minuit. Choisissez une règle et journalisez la date utilisée.
  • Le 29 février. Avec la comparaison ci-dessus, une personne née un 29 février prend un an le 1er mars les années qui n'en ont pas. Si votre juridiction le définit autrement, modifiez cette seule branche.
  • Une date manquante n'est pas une réponse. Si le scan ne renvoie pas de date de naissance, le résultat est « contrôle impossible », jamais « plus de 18 ans ».
  • L'expiration est une autre question. Accepter ou non un document expiré comme preuve relève de votre politique : lisez la date d'expiration et tranchez explicitement.

Gardez la réponse, pas le document

La conception de la Commission n'envoie aux services « qu'une preuve que l'utilisateur a plus de 18 ans ». La même idée vaut dans votre propre système : une fois le contrôle fait, ce dont vous avez besoin est un booléen et une date, pas l'image d'un passeport.

La section de l'Ofcom sur la vie privée va dans le même sens. Elle rappelle aux fournisseurs que « toutes les méthodes de contrôle de l'âge impliquent un traitement de données personnelles et doivent suivre une approche de protection des données dès la conception », et elle cite la minimisation des données et la limitation de la conservation parmi les principes à suivre.

Un enregistrement minimal ressemble à ceci :

{
  "user_id": "u_3f9c",
  "check": "age_over_18",
  "result": true,
  "checked_on": "2026-11-10",
  "method": "photo_id_matching"
}

Ni image, ni numéro de document, ni date de naissance. Si une loi vous impose d'en garder davantage, gardez exactement cela, dans un seul stockage avec sa propre date de suppression.

La place de doc.cheap

doc.cheap lit les passeports, les cartes d'identité et les permis de conduire, et renvoie en JSON ce qui y est imprimé. Pour un contrôle de l'âge, les champs utiles sont holder.birth_date, une date ISO YYYY-MM-DD ou null, ainsi que document.expiry_date, document.is_expired et mrz.status : la date que vous passez à age_on vient ainsi d'une lecture que vous pouvez recouper.

C'est un service de lecture, pas de vérification. Dans le scénario de reconnaissance seule, le champ authenticity.overall de la réponse vaut not_checked, et la comparaison faciale et la détection du vivant restent du ressort des outils conçus pour cela. Il ne garde rien de ce que vous ne demandez pas : retain_hours: 0 sur une clé live n'écrit aucune ligne, comme l'explique le guide sur la conservation de l'historique. L'image elle-même n'est jamais stockée.

Pour tester l'étape de lecture avant de concevoir le reste, commencez par l'API OCR de passeports gratuite. Si vous choisissez un fournisseur, la comparaison des API OCR de passeports met les prix publiés côte à côte.

Ceci est un résumé technique, pas un conseil juridique.

Une question pour vous : quelle partie de votre contrôle de l'âge a été la plus longue à mettre au point – la lecture, la comparaison faciale ou l'enregistrement que vous conservez ? Dites-le-nous dans les commentaires ci-dessous.