Cómo Leer la MRZ de un Pasaporte Línea por Línea (Guía de Posiciones)
Mapa completo de las 88 posiciones de la MRZ de un pasaporte: qué contiene cada carácter de las dos líneas, cómo se codifican los nombres, por qué las fechas no llevan siglo y cómo decodificarla a mano.
La MRZ de un pasaporte no es texto libre: es un formato de ancho fijo donde cada posición está definida por el estándar ICAO 9303. Si sabes qué hay en cada una, puedes decodificar un pasaporte a mano, sin software.
Esta guía es el mapa completo de esas 88 posiciones. Es la referencia que conviene tener abierta cuando estás depurando una integración y necesitas saber por qué el campo 7 salió vacío.
El formato TD3
Los pasaportes usan el formato TD3: dos líneas de exactamente 44 caracteres cada una, impresas al pie de la página de datos. El alfabeto está restringido a A-Z, 0-9 y < (el carácter de relleno). No hay minúsculas, no hay acentos, no hay espacios.
Trabajaremos sobre este ejemplo real y válido:
P<MEXGOMEZ<VELAZQUEZ<<MARGARITA<<<<<<<<<<<<<
G123456786MEX8007050F3307054<<<<<<<<<<<<<<08
Línea 1: documento, país y nombre
| Posiciones | Contenido | En el ejemplo |
|---|---|---|
| 1 | Tipo de documento — P para pasaporte | P |
| 2 | Subtipo, a discreción del emisor; casi siempre relleno | < |
| 3-5 | País emisor, código de 3 letras | MEX |
| 6-44 | Campo de nombre, 39 caracteres | GOMEZ<VELAZQUEZ<<MARGARITA<<<... |
Cómo se codifica el nombre
El campo de nombre concentra la mayoría de los errores de integración, porque su estructura no es obvia:
- Los apellidos van primero.
- Un doble
<<separa los apellidos de los nombres de pila. - Un
<sencillo separa palabras dentro de cada bloque. - El resto se rellena con
<hasta completar los 39 caracteres.
Así, GOMEZ<VELAZQUEZ<<MARGARITA se lee: apellidos Gómez Velázquez, nombre Margarita.
Dos consecuencias prácticas para quien procesa pasaportes mexicanos:
Los acentos y la ñ desaparecen. ICAO 9303 solo admite A-Z, así que la transliteración es obligatoria: Velázquez → VELAZQUEZ, Muñoz → MUNOZ, Peña → PENA. Si comparas el nombre de la MRZ contra el de tu base de datos carácter por carácter, todos los apellidos con ñ o acento fallarán. Normaliza ambos lados antes de comparar.
Los nombres largos se truncan. 39 caracteres se agotan rápido con dos apellidos y dos nombres de pila. Cuando no cabe, el emisor recorta — y el nombre truncado es el dato oficial de la MRZ, no un error de lectura. Por eso conviene leer también la zona visual (VIZ) de la página, donde el nombre aparece completo.
Línea 2: los datos que importan
| Posiciones | Contenido | En el ejemplo |
|---|---|---|
| 1-9 | Número de pasaporte | G12345678 |
| 10 | Dígito verificador del número de pasaporte | 6 |
| 11-13 | Nacionalidad, código de 3 letras | MEX |
| 14-19 | Fecha de nacimiento, AAMMDD | 800705 |
| 20 | Dígito verificador de la fecha de nacimiento | 0 |
| 21 | Sexo — M, F, X o < | F |
| 22-27 | Fecha de vencimiento, AAMMDD | 330705 |
| 28 | Dígito verificador del vencimiento | 4 |
| 29-42 | Número personal, 14 caracteres | <<<<<<<<<<<<<< |
| 43 | Dígito verificador del número personal | 0 |
| 44 | Dígito compuesto sobre todos los anteriores | 8 |
Decodificado: pasaporte G12345678 de México, titular nacida el 05/07/1980, sexo F, vigente hasta el 05/07/2033.
Las fechas no llevan siglo
AAMMDD son seis dígitos: 800705 es el 5 de julio, pero ¿de 1980 o de 2080? La MRZ no lo dice. La convención práctica:
- Vencimiento: siempre en el futuro, así que siempre
20xx. - Nacimiento: si los dos dígitos son mayores que el año actual en curso, es
19xx; si no,20xx.
La heurística falla en un solo caso realista: personas de más de 100 años. Si tu sistema atiende a población de edad muy avanzada, resuelve el siglo contra la fecha de vencimiento en lugar de asumirlo.
El número personal es un campo libre
Las posiciones 29-42 son las más malinterpretadas de la MRZ. Cada país decide qué pone ahí, y muchos no ponen nada — de ahí los catorce < del ejemplo. No asumas que ese campo trae un identificador nacional.
Conviene notar un límite duro: el campo tiene 14 caracteres y la CURP tiene 18, así que una CURP completa no cabe en la MRZ de ningún pasaporte. En los pasaportes mexicanos la CURP se lee de la zona visual de la página de datos, no de la MRZ. Es una de las razones por las que una extracción seria lee ambas zonas y no solo las dos líneas del pie.
El relleno < no es opcional
Un error frecuente al construir MRZ de prueba: recortar los < finales. Una línea de 41 caracteres no es una MRZ válida, y cualquier validador que respete el estándar la rechazará antes de mirar su contenido. Las dos líneas miden 44 caracteres exactos, siempre, sin excepción.
Al leer, el tratamiento inverso: los < se traducen a espacios o se descartan según el campo. En un nombre, < sencillo es un separador de palabras; al final de un campo, es solo relleno.
Los cuatro dígitos que lo verifican todo
Habrás notado cuatro dígitos verificadores en la línea 2. Son lo que convierte a la MRZ en el campo más confiable de cualquier documento de identidad: permiten detectar un error de lectura antes de guardar el dato, con aritmética, sin consultar ningún registro externo.
El algoritmo es público y cabe en diez líneas de código. Lo desarrollamos completo, con la aritmética paso a paso sobre este mismo ejemplo, en Dígitos verificadores ICAO 9303: cómo se calculan.
Pruébalo con una MRZ real
Puedes pegar cualquier MRZ en nuestro validador MRZ gratuito: decodifica los campos, recalcula los cuatro dígitos verificadores y te señala exactamente cuál no cuadra. No requiere cuenta y corre sobre el mismo código que usa nuestro motor de extracción, así que lo que ves ahí es literalmente lo que aplicamos en producción.
Si en lugar de decodificar a mano quieres que una API te devuelva los campos ya estructurados y verificados a partir de una foto, la demo gratuita procesa un pasaporte sin registro y la documentación muestra la integración completa en JavaScript, Python y PHP.
¿Necesitas extraer datos de pasaportes automáticamente?
Prueba nuestra API con 20 extracciones gratis. Integración en minutos, resultados en segundos.
Comenzar gratis