> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuración

FineParser se configura una sola vez, al iniciarse el contenedor, mediante variables de entorno y flags de línea de comandos. Cada ajuste admite ambas formas y, si se indican las dos, prevalece el flag. Los ajustes se mantienen durante toda la vida del process.

<h2 id="settings">
  Configuración
</h2>

| Ajuste                                 | Flag                      | Variable de entorno       | Predeterminado                                                                                                                                                             |
| -------------------------------------- | ------------------------- | ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| License                                | `-license-data`           | `FINEPARSER_LICENSE_DATA` | Obligatorio. El contenido de su archivo `.fineparserlicense`. Consulte [Licencias y planes](/es/fine-parser/basics/licenses-and-plans).                                    |
| Modo de reconocimiento                 | `-mode`                   | `FRE_MODE`                | `accurate`. Consulte [Modos de reconocimiento](/es/fine-parser/basics/recognition-modes).                                                                                  |
| Idiomas                                | `-language`               | `FRE_LANGUAGE`            | `English`. Consulte [Idiomas](/es/fine-parser/basics/languages).                                                                                                           |
| Dirección de escucha                   | `-addr`                   | `LISTEN_ADDR`             | `:8080`                                                                                                                                                                    |
| Directorio de salida                   | `-output-dir`             | `OUTPUT_DIR`              | `/app/output`. Allí se escriben los resultados y la base de datos de trabajos. Monte un volumen en esta ruta.                                                              |
| Directorio temporal                    | `-scratch-dir`            | `SCRATCH_DIR`             | `/app/scratch`. Allí esperan los archivos cargados hasta su reconocimiento. No necesita un volumen.                                                                        |
| Base de datos de trabajos              | `-db`                     | `JOB_DB`                  | `<output-dir>/jobs.db`                                                                                                                                                     |
| Eliminar al descargar                  | `-delete-on-download`     | `DELETE_ON_DOWNLOAD`      | `false`. Cuando es `true`, el resultado y su registro de trabajo se eliminan en cuanto el resultado se ha descargado por completo.                                         |
| Límite de carga                        | `-max-upload-bytes`       | `MAX_UPLOAD_BYTES`        | `1Gi`. Tamaño máximo aceptado del request body. Admite los sufijos `Ki`, `Mi`, `Gi`, `Ti` o `K`, `M`, `G`, `T`. `0` significa sin límite.                                  |
| Tiempo de espera de carga              | `-upload-timeout`         | `UPLOAD_TIMEOUT`          | `5m`. Tiempo del que dispone un envío para entregar su body. `0` significa sin límite.                                                                                     |
| Tiempo de espera por descarga detenida | `-download-stall-timeout` | `DOWNLOAD_STALL_TIMEOUT`  | `5m`. Tiempo que una descarga puede permanecer sin avanzar antes de interrumpirse. Una transferencia lenta pero en progreso nunca se interrumpe. `0` significa sin límite. |

La License es un texto de varias líneas. Pásela con `$(cat acme.fineparserlicense)` o desde un Secret de Kubernetes. Los archivos `.env` de Docker no admiten valores de varias líneas, por lo que no sirven para esta variable.

La telemetría cuenta con sus propias variables de entorno para inspeccionar el flujo o enviar una copia a su propio recolector. Consulte [Inspeccionar y copiar el flujo](/es/fine-parser/reference/data-privacy#inspecting-and-copying-the-stream).

<h2 id="one-configuration-per-container">
  Una configuración por contenedor
</h2>

Los ajustes de reconocimiento no se pueden cambiar en cada request. Todo documento que recibe un contenedor se procesa con el modo y los idiomas con los que este se inició.

Si distintos document sets requieren ajustes diferentes, ejecute un contenedor por cada configuración y dirija cada request al contenedor que corresponda. Un proxy inverso o el código de su propia aplicación puede tomar esa decisión con base en lo que ya sepa del documento, como su source o su tipo de archivo.

<h2 id="storage">
  Almacenamiento
</h2>

Los resultados se escriben en el directorio de salida como `{jobId}/{name}`, junto a una pequeña base de datos de trabajos que realiza el seguimiento de cada trabajo. La imagen declara `/app/output` como volumen. Monte allí un volumen con nombre o un directorio del host, ya que, de lo contrario, Docker crea un volumen anónimo y los resultados se pierden al eliminar el contenedor.

```bash theme={null}
docker run -d --name fineparser -p 8080:8080 --stop-timeout 60 \
  -e FINEPARSER_LICENSE_DATA="$(cat acme.fineparserlicense)" \
  -v fineparser-output:/app/output \
  abbyyteam/fineparser
```

El contenedor se ejecuta como usuario sin privilegios de root, por lo que debe tener permisos de escritura sobre el directorio del host montado en `/app/output`.

Un contenedor por directorio de salida. La base de datos de trabajos permanece bloqueada mientras está abierta, de modo que un segundo contenedor que apunte al mismo volumen no podrá iniciarse. Si ejecuta varios contenedores, asigne a cada uno su propio volumen.

Los archivos cargados se conservan en el directorio temporal solo mientras esperan el reconocimiento y se eliminan en cuanto este finaliza. Nada del directorio temporal sobrevive a un trabajo, por lo que no necesita un volumen.

<h2 id="running-on-arm">
  Ejecución en ARM
</h2>

Actualmente, la imagen de FineParser solo se compila para `linux/amd64`. En un host ARM, como un Mac con chip Apple silicon (serie M), Docker debe ejecutarla en modo de compatibilidad. Pase `--platform linux/amd64` a `docker run`:

```bash theme={null}
docker run -d --name fineparser -p 8080:8080 --stop-timeout 60 \
  --platform linux/amd64 \
  -e FINEPARSER_LICENSE_DATA="$(cat acme.fineparserlicense)" \
  -v fineparser-output:/app/output \
  abbyyteam/fineparser
```

Sin el flag, Docker se niega a iniciar el contenedor o muestra una advertencia de incompatibilidad de plataforma, según la versión.

La emulación es más lenta que la ejecución nativa. Es previsible que el reconocimiento tarde más por página que en un host x86-64, por lo que conviene tomarlo como un entorno de desarrollo y no como una referencia de rendimiento. Ya se está preparando una build nativa de la imagen para ARM que eliminará la necesidad de este flag.

<h2 id="stopping-the-container">
  Detención del contenedor
</h2>

Asigne al contenedor un tiempo de espera de detención de 60 segundos. En una detención limpia, FineParser permite que finalicen las requests en curso, vacía la telemetría y se cierra. El valor predeterminado de Docker, de 10 segundos, no da tiempo suficiente. Use `--stop-timeout 60` con `docker run`, o bien `terminationGracePeriodSeconds: 60` en Kubernetes. Consulte [Reinicios y apagado](/es/fine-parser/concepts/rest-api#restarts-and-shutdown) para saber qué ocurre con los trabajos que estén en cola o en ejecución en ese momento.

<h2 id="networking">
  Redes
</h2>

FineParser escucha en el puerto 8080 dentro del contenedor. Publique ese puerto en su host con `-p HOST:CONTAINER` para poder enviarle requests. Con `-p 8080:8080`, la API queda accesible en el puerto 8080 del host desde cualquier máquina de la red, y con `-p 127.0.0.1:9000:8080` se limita a localhost en el puerto 9000. Consulte [Published ports](https://docs.docker.com/engine/network/#published-ports) en la documentación de Docker para conocer la sintaxis completa.

<Warning>
  El contenedor debe poder comunicarse con el License server de ABBYY. Sin esa conexión de salida, FineParser no procesa documentos. Permita los rangos de direcciones indicados en [Requisitos de red](/es/fine-parser/reference/data-privacy#network-requirements) en su firewall o proxy de salida. Para entornos sin conectividad de salida, consulte [FineParser Enterprise](/es/fine-parser/reference/enterprise).
</Warning>

<h2 id="confirming-the-license">
  Confirmación de la License
</h2>

En modo servidor, llame a `/healthz`. Un contenedor con License devuelve `ready: true`:

```bash theme={null}
curl -s localhost:8080/healthz
# {"code":"ok","ready":true,"telemetry":true}
```

En modo CLI, busque la línea `metering ready for instance …` en la salida del contenedor antes del número de páginas.

Sin una License, ninguno de los dos modos funciona. El Server informa un estado no saludable y no procesa nada:

```json theme={null}
{"code":"no_instance","detail":"...no licence supplied; set FINEPARSER_LICENSE_DATA or pass -license-data","ready":false,"telemetry":true}
```
