Saltar al contenido principal
Version: 3.2.0

INE (Identificación Nacional de México)

POST

  https://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

Ruta: api/ocr/

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

Python

# 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):

Formato de respuesta: JSON
{
"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:

Formato de respuesta: JSON
{
"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):

Formato de respuesta: JSON
{
"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:

Formato de respuesta: JSON
{
"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ódigoMensaje
800Archivo enviado no pudo ser procesado correctamente.
802No se pudo procesar la fecha de nacimiento.
803No se pudo procesar el género.
804No se pudo procesar la fecha de expiración.
806No se pudo extraer la metadata del documento.
807No se pudo extraer los nombres del documento.
808No se pudo extraer el número de identificación del documento.
809No se envió el "frontside" en la request.
810No se envió el "backside" en la request.
814No se pudo extraer la MRZ del documento.
816El documento no concuerda con el especificado en los parámetros.
819No se pudo extraer el CURP del documento.