INE (Identificación Nacional de México)
POSThttps://api.apptenticate.com/api/v3.2/ocr/
Autenticación
Usa tu JWT obtenido del proceso de autenticación para hacer peticiones a este endpoint.
La respuesta sera 401 unauthorized si el JWT se encuentra vencido. En dicho caso deberás obtener un nuevo JWT.
Este endpoint recibe todas las peticiones dirigidas al microservicio de OCR de Apptenticate que permite extraer datos de documentos de identificación mexicanos (INE/IFE). El servicio procesa tanto el frente como el dorso del documento, extrayendo información del OCR del frente y la MRZ (Machine Readable Zone) del dorso. Al final, el microservicio de ID Reader retornará un JSON con los datos extraídos si la operación fue exitosa, o el debido error si no lo fue.
NOTA
• La respuesta puede ser 401 unauthorized si el token JWT debe ser refrescado.
• Las imágenes enviadas en formato jpg no deben exceder los 2MB.
• Si se desea obtener en la respuesta el ID de la transacción, se debe indicar "return_id": "True" en el JSON de la request.
• Se debe especificar en la request el tipo de documento mediante el parámetro "document_type", que debe tomar el valor "id_mexico".
• Si se desea validar los datos del frontside y backside, se debe indicar "validate_sides": True en el JSON de la request.
Estructura de requests - método: POST
• Payload para request base:
Payload: {
'frontside': Imagen del frente del documento,
'backside': Imagen del dorso del documento,
'document_type': 'mexican_id',
} // (donde las imágenes son archivos .jpg)
• Si se desea obtener el ID de la transacción:
Payload: {
'frontside': Imagen del frente del documento,
'backside': Imagen del dorso del documento,
'document_type': 'mexican_id',
'return_id': True
} // (donde las imágenes son archivos .jpg)
• Si se desea mejorar la precisión de la prueba de vida:
Payload: {
'frontside': Imagen del frente del documento,
'backside': Imagen del dorso del documento,
'document_type': 'mexican_id',
'device': 'IOS', // Dispositivos: IOS, ANDROID o DESKTOP
} // (donde las imágenes son archivos .jpg)
Ejemplos de requests
# JWT Token
header = { 'Authorization': 'Bearer {}'.format(token) }
# Payload para request base
data = {'document_type': 'id_mexico'}
files = {
'frontside': imagen_1.jpg,
'backside': imagen_2.jpg,
} # Donde las imágenes son archivos .jpg
# Si se desea obtener el ID de la transacción:
data = {'document_type': 'id_mexico', 'return_id': True}
files = {
'frontside': imagen_1.jpg,
'backside': imagen_2.jpg,
} # Donde las imágenes son archivos .jpg
# Si se desea validar ambos lados del documento:
data = {
'document_type': 'mexican_id',
'validate_sides': True,
}
files = {
'frontside': imagen_1.jpg,
'backside': imagen_2.jpg,
} # Donde las imágenes son archivos .jpg
# Envío de request
response = requests.post(
apptenticate_url,
data=data,
files=files,
headers=header
)
response = json.loads(response.content)
Estructura de respuestas
Datos extraídos del frontside (OCR):
El servicio extrae los siguientes campos del frente del documento:
- name: Nombres del ciudadano
- surname: Apellidos del ciudadano
- address: Domicilio registrado
- CURP: Clave Única de Registro de Población (18 caracteres alfanuméricos)
- elector_key: Clave de Elector (18 caracteres alfanuméricos)
- validity_period: Período de vigencia del documento
- date_of_birth: Fecha de nacimiento
- document_type: Tipo de documento (INE)
- section: Sección electoral
- gender: Género (H/M)
- emission_number: Año de registro/emisión
Datos extraídos del backside (MRZ):
El servicio extrae los siguientes campos del dorso del documento:
- document_type: Tipo de documento (INE)
- country_code: Código del país (MEX)
- document_number: Número de identificación
- birth_date: Fecha de nacimiento en formato DD-MM-YYYY
- gender: Género (Male/Female)
- expiration_date: Fecha de expiración en formato YYYY-MM-DD
- name: Nombres extraídos de la MRZ
- surname: Apellidos extraídos de la MRZ
• Respuesta base (sin validación de lados):
{
"document_type": "INE",
"country_code": "MEX",
"document_number": "1234567890123",
"citizen_id": "137438414",
"cic": "345636022",
"birth_date": "15-03-1990",
"gender": "Male",
"expiration_date": "2025-12-31",
"surname": "GARCIA LOPEZ",
"name": "JUAN CARLOS",
"valid": true
}
• Respuesta con ID de transacción:
{
"document_type": "INE",
"country_code": "MEX",
"document_number": "1234567890123",
"citizen_id": "137438414",
"cic": "345636022",
"birth_date": "15-03-1990",
"gender": "Male",
"expiration_date": "2025-12-31",
"surname": "GARCIA LOPEZ",
"name": "JUAN CARLOS",
"valid": true,
"id": 281234
}
• Respuesta con validación de lados (validate_sides: True):
{
"backside": {
"document_type": "INE",
"country_code": "MEX",
"document_number": "1234567890123",
"citizen_id": "137438414",
"cic": "345636022",
"birth_date": "15-03-1990",
"gender": "Male",
"expiration_date": "2025-12-31",
"name": "JUAN CARLOS",
"surname": "GARCIA LOPEZ"
},
"frontside": {
"name": "JUAN CARLOS",
"surname": "GARCIA LOPEZ",
"address": "CALLE REFORMA 123 COL CENTRO",
"CURP": "GALJ900315HDFRPN01",
"elector_key": "GLRJNC90031512H400",
"validity_period": "2024-2034",
"date_of_birth": "15-03-1990",
"document_type": "INE",
"section": "1234",
"gender": "Male",
"emission_number": "12"
},
"matches_percentage": 85.5,
"match": true,
"valid": true
}
• En el caso de un OCR fallido:
{
"error_code": 806,
"error": "No se pudo extraer la metadata del documento",
"valid": false
}
Validaciones automáticas
El servicio realiza las siguientes validaciones automáticas:
Validación de CURP (Clave Única de Registro de Población):
- Debe tener exactamente 18 caracteres
- Primeros 4 caracteres deben ser letras
- Siguientes 6 caracteres deben ser números (fecha de nacimiento)
- Posición 10 debe ser H o M (género)
- Siguientes 2 caracteres deben ser letras (estado)
- Siguientes 3 caracteres deben ser letras (consonantes)
- Últimos 2 caracteres deben ser alfanuméricos
Validación de Clave de Elector:
- Debe tener exactamente 18 caracteres alfanuméricos
- Primeros 6 caracteres deben ser letras
- Siguientes 6 caracteres deben ser números (fecha)
- Validación de código de entidad federativa válido (00-32)
- Posición 14 debe ser H o M (género)
- Últimos 3 caracteres deben ser alfanuméricos
Validación de MRZ:
- El documento debe ser de tipo TD1 (3 líneas)
- Código de país debe ser "MEX"
- Validación de estructura según estándar ICAO
Códigos de error
| Código | Mensaje |
|---|---|
800 | Archivo enviado no pudo ser procesado correctamente. |
802 | No se pudo procesar la fecha de nacimiento. |
803 | No se pudo procesar el género. |
804 | No se pudo procesar la fecha de expiración. |
806 | No se pudo extraer la metadata del documento. |
807 | No se pudo extraer los nombres del documento. |
808 | No se pudo extraer el número de identificación del documento. |
809 | No se envió el "frontside" en la request. |
810 | No se envió el "backside" en la request. |
814 | No se pudo extraer la MRZ del documento. |
816 | El documento no concuerda con el especificado en los parámetros. |
819 | No se pudo extraer el CURP del documento. |