OCR de MRZ
La MRZ, ou zone de lecture optique, est la bande de caractères en bas d’un passeport ou d’une carte d’identité. Cette capacité la lit et en décode les champs : type de document, code pays, nom, numéro et dates. Elle est réservée aux vérifications d’identité (KYC) avec consentement, et l’image n’est pas conservée.
Exécuter en ligne
Exécutez cette tâche sur nos serveurs, avec votre compte. Les outils gratuits tournent dans votre navigateur ; celui-ci est facturé sur votre solde KIT au prix affiché ci-dessus.
La bande MRZ, conçue pour être lue
La MRZ (machine-readable zone) est cette suite de lettres et de chevrons, en bas d’une pièce, pensée précisément pour la lecture automatique. Elle encode de façon normalisée le type de document, le pays émetteur, le nom, le numéro et les dates. Parce qu’elle suit un format strict, sa reconnaissance est plus fiable que la lecture du reste de la pièce. Cette capacité la décode et vous rend des champs structurés, prêts à alimenter un contrôle d’identité, sans ressaisir une ligne de caractères techniques.
Un usage encadré, dit sans détour
Comme pour la lecture d’une pièce d’identité, l’emploi est strictement limité : vérification d’identité avec le consentement de la personne concernée. La détection ou l’identification à l’insu de l’intéressé est interdite. La capacité décode la MRZ ; elle ne vérifie pas l’authenticité du document et ne fait aucune biométrie. Étant en bêta, elle demande une bande nette et complète : un cliché flou ou une MRZ partiellement masquée compromet le décodage. La limite est de 25 Mo par image.
Données sensibles, tarif et accès
La MRZ est une donnée personnelle sensible : l’image est chiffrée pendant le transfert, décodée côté serveur, puis supprimée, jamais conservée. Le prix est public — $0.010 par requête, plus $0.0575 par image, en dollars US, sans abonnement. Le format normalisé de la MRZ se prête bien à l’automatisation : l’outil s’utilise sur cette page comme par l’API, pour intégrer le décodage à un parcours de vérification, avec une arrivée prévue sur mobile.
Cas d’usage
Préremplir un dossier KYC
Avec le consentement du client, une plateforme lit la MRZ de son passeport pour préremplir nom, numéro et dates. Le décodage évite les fautes de saisie sur une ligne de caractères difficile à recopier.
Contrôle de cohérence des champs
Studio Lumen SAS compare les champs décodés de la MRZ à ceux saisis par l’utilisateur, pour repérer un écart avant de valider une inscription, sans jamais conserver l’image.
Vérifier une date de validité
Lors d’une démarche de conformité, Nadia Benali décode la MRZ d’une pièce transmise avec accord pour en lire la date d’expiration de façon fiable, grâce au format normalisé de la bande.
Questions fréquentes
Qu’est-ce que la MRZ, exactement ?
C’est la zone de lecture optique en bas d’un passeport ou d’une carte d’identité : une bande de caractères normalisée encodant le type de document, le pays, le nom, le numéro et les dates, conçue pour la lecture automatique.
Pourquoi lire la MRZ plutôt que le reste de la pièce ?
Parce que son format strict la rend plus fiable à décoder que le texte libre du document. Elle regroupe les champs clés au même endroit, dans un ordre normalisé, ce qui limite les erreurs de lecture.
Dans quel cadre puis-je m’en servir ?
Uniquement pour une vérification d’identité avec le consentement de la personne concernée. Toute identification ou surveillance à son insu est interdite ; l’usage relève de votre responsabilité de responsable de traitement.
L’image du passeport est-elle gardée ?
Non. Elle est chiffrée pendant le transfert, décodée côté serveur, puis supprimée. Aucune conservation, aucune relecture humaine : la MRZ n’est traitée que pour vous rendre les champs demandés.
Pour quelle raison ce décodage est-il en bêta ?
Parce qu’une bande floue, coupée ou partiellement masquée compromet le décodage. Sur un cliché net et complet, le résultat est fiable ; sur une image dégradée, un contrôle des champs s’impose.
Quel est le tarif du décodage ?
$0.010 par requête et $0.0575 par image, en dollars US, sans abonnement. Le paiement se fait par PayPal, sans compte, et une facture vous est délivrée sur demande.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/ocr/mrz \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/ocr/mrz", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ocr/mrz",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ocr/mrz", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ocr/mrz", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"image": "https://ejemplo.com/imagen.jpg"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ocr.mrz",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 25 |
max_pages | 10 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
422 | task_failed | La tâche a échoué : elle ne vous est pas facturée. |