> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/api-rest/midapi-v2/document-services/document-ocr.md).

# Document OCR

Servicio que extrae los campos del documento de identidad. Admite el anverso y, opcionalmente, el reverso.

Los assets se aportan en línea o por referencia, según el valor de `source`.

### Endpoint

```
POST /document/ocr
```

### Headers

| Nombre            | Tipo   | Requerido   | Descripción                                                                                                                                                         |
| ----------------- | ------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Authorization** | string | **Sí**      | Token de consumer en formato `Bearer <token>`. Ver [Autenticación](/api-rest/midapi-v2/autenticacion.md).                                                           |
| **consumer-id**   | string | **Sí**      | Identificador del consumer.                                                                                                                                         |
| **operation-id**  | string | Condicional | Identificador de la operación a la que pertenecen los assets referenciados. Requerido cuando `source` es `FILE_KEY`. Ver [Storage](/api-rest/midapi-v2/storage.md). |

### Cuerpo de la solicitud

**Content-Type:** `application/json`

#### Parámetros

| Parámetro        | Tipo    | Requerido | Descripción                                                                                                                                                      |
| ---------------- | ------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `source`         | string  | **Sí**    | Modo en que se aportan los assets: `FILE_KEY` para claves de assets almacenados, `FILE` para contenido en Base64. Ver [Storage](/api-rest/midapi-v2/storage.md). |
| `files`          | array   | **Sí**    | Una o dos entradas: índice `0` el anverso, índice `1` el reverso. Claves de asset o contenidos en Base64, según `source`.                                        |
| `documentType`   | string  | **Sí**    | Tipo de documento: `ID_CARD`, `PASSPORT`, `DRIVING_LICENSE` o `FOREIGN_CARD`.                                                                                    |
| `countryCode`    | string  | **Sí**    | País emisor del documento, como código **ISO 3166-1 alpha-3**.                                                                                                   |
| `isCropped`      | boolean | No        | Indica que las imágenes ya vienen recortadas. Por defecto `false`.                                                                                               |
| `forceDetection` | boolean | No        | Fuerza la detección aunque la detección automática del documento falle. Por defecto `false`.                                                                     |
| `retrieveImages` | boolean | No        | Devuelve las imágenes recortadas en la respuesta. Por defecto `false`.                                                                                           |

`files` admite como máximo dos entradas. Los impresos multipágina se procesan en [Form OCR](/api-rest/midapi-v2/document-services/form-ocr.md).

#### Ejemplo de solicitud

```json
{
  "source": "FILE_KEY",
  "files": [
    "0192a3f4-7b21-7c44-9e1a-3f5b8c2d1e04/TOKEN_FRONT_DOCUMENT",
    "0192a3f4-7b21-7c44-9e1a-3f5b8c2d1e04/TOKEN_BACK_DOCUMENT"
  ],
  "documentType": "ID_CARD",
  "countryCode": "ARG"
}
```

### Respuestas

#### `200` Éxito

#### Parámetros de respuesta

| Parámetro              | Tipo    | Descripción                                                                        |
| ---------------------- | ------- | ---------------------------------------------------------------------------------- |
| `serviceResultCode`    | integer | Código que indica el resultado general de la ejecución del servicio. `0` es éxito. |
| `serviceResultLog`     | string  | Campo descriptivo del resultado de la ejecución del servicio.                      |
| `serviceTransactionId` | string  | Identificador de transacción asociado a la solicitud procesada.                    |
| `serviceTime`          | string  | Tiempo total de procesamiento **(milisegundos)**.                                  |
| `timestamp`            | string  | Momento en que finalizó el procesamiento, en formato **ISO 8601**.                 |
| `serviceResult`        | object  | Resultado del OCR con los campos extraídos del documento.                          |

#### Ejemplo de respuesta

```json
{
  "serviceResultCode": 0,
  "serviceResultLog": "Service executed ok",
  "serviceTime": "820",
  "serviceResult": {
    "side": "front",
    "type": "passport",
    "model": "ESP",
    "version": "1",
    "dictionary": {
      "LastName": "DOE",
      "FirstName": "JANE",
      "DocumentNumber": "PAL140268",
      "DateOfBirth": "10/07/1987"
    }
  }
}
```

#### Otras respuestas

| Código | Descripción                                                                                                                                                                                                                                                                                                                                         |
| ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `400`  | Campo obligatorio ausente o valor no admitido; falta la cabecera `operation-id` habiendo referencias; o una clave no tiene la forma `{operationId}/{CONTEXTO}` o declara un contexto que el hueco no admite.                                                                                                                                        |
| `403`  | El consumer no está aprovisionado con el servicio `DOCUMENT_OCR`.                                                                                                                                                                                                                                                                                   |
| `404`  | La operación declarada en `operation-id` no existe o pertenece a otro consumer.                                                                                                                                                                                                                                                                     |
| `409`  | Un asset referenciado contiene un contenido ya procesado en otra operación.                                                                                                                                                                                                                                                                         |
| `410`  | La operación declarada en `operation-id` ha caducado.                                                                                                                                                                                                                                                                                               |
| `422`  | Una clave nombra una operación distinta de la declarada en `operation-id`, o el contexto no tiene ningún asset almacenado.                                                                                                                                                                                                                          |
| `429`  | El consumer ha superado su límite de tasa de peticiones, o un asset referenciado ha agotado su presupuesto de invocaciones en este endpoint. En el primer caso la respuesta incluye `Retry-After`, `X-RateLimit-Limit` y `X-RateLimit-Burst`, y esperar resuelve; en el segundo no. El servicio subyacente no se invoca y la llamada no se factura. |

El cuerpo de una respuesta de error tiene la forma descrita en [Middleware API v2](/api-rest/midapi-v2.md#respuestas-de-error).
