> ## 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.

# Konfiguration

FineParser wird einmalig beim Start des Containers über Umgebungsvariablen und Befehlszeilen-Flags konfiguriert. Jede Einstellung steht in beiden Formen zur Verfügung; werden beide angegeben, hat das Flag Vorrang. Die Einstellungen gelten für die gesamte Laufzeit des Prozesses.

<h2 id="settings">
  Einstellungen
</h2>

| Einstellung            | Flag                      | Umgebungsvariable         | Standard                                                                                                                                                                               |
| ---------------------- | ------------------------- | ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Lizenz                 | `-license-data`           | `FINEPARSER_LICENSE_DATA` | Erforderlich. Der Inhalt Ihrer `.fineparserlicense`-Datei. Siehe [Lizenzen und Tarife](/de/fine-parser/basics/licenses-and-plans).                                                     |
| Recognition mode       | `-mode`                   | `FRE_MODE`                | `accurate`. Siehe [Erkennungsmodi](/de/fine-parser/basics/recognition-modes).                                                                                                          |
| Sprache                | `-language`               | `FRE_LANGUAGE`            | `English`. Siehe [Sprachen](/de/fine-parser/basics/languages).                                                                                                                         |
| Listen-Adresse         | `-addr`                   | `LISTEN_ADDR`             | `:8080`                                                                                                                                                                                |
| Ausgabeverzeichnis     | `-output-dir`             | `OUTPUT_DIR`              | `/app/output`. Hier werden Ergebnisse und die Job-Datenbank abgelegt. Binden Sie hier ein Volume ein.                                                                                  |
| Scratch-Verzeichnis    | `-scratch-dir`            | `SCRATCH_DIR`             | `/app/scratch`. Hier warten Uploads auf die Erkennung. Benötigt kein Volume.                                                                                                           |
| Job-Datenbank          | `-db`                     | `JOB_DB`                  | `<output-dir>/jobs.db`                                                                                                                                                                 |
| Beim Download löschen  | `-delete-on-download`     | `DELETE_ON_DOWNLOAD`      | `false`. Bei `true` werden ein Ergebnis und der zugehörige Job-Datensatz entfernt, sobald das Ergebnis vollständig heruntergeladen wurde.                                              |
| Upload-Limit           | `-max-upload-bytes`       | `MAX_UPLOAD_BYTES`        | `1Gi`. Maximal akzeptierter Request-Body. Zulässig sind die Suffixe `Ki`, `Mi`, `Gi`, `Ti` oder `K`, `M`, `G`, `T`. `0` bedeutet unbegrenzt.                                           |
| Upload-Timeout         | `-upload-timeout`         | `UPLOAD_TIMEOUT`          | `5m`. Wie viel Zeit eine Übermittlung hat, um ihren Body zu liefern. `0` bedeutet unbegrenzt.                                                                                          |
| Download-Stall-Timeout | `-download-stall-timeout` | `DOWNLOAD_STALL_TIMEOUT`  | `5m`. Wie lange ein Download ohne Fortschritt bleiben darf, bevor er abgebrochen wird. Eine langsame, aber fortschreitende Übertragung wird nie unterbrochen. `0` bedeutet unbegrenzt. |

Die Lizenz ist ein mehrzeiliger Text. Übergeben Sie sie mit `$(cat acme.fineparserlicense)` oder aus einem Kubernetes Secret. Docker-`.env`-Dateien können keine mehrzeiligen Werte enthalten und eignen sich daher nicht für diese Variable.

Die Telemetrie verfügt über eigene Umgebungsvariablen, mit denen Sie den Stream prüfen oder eine Kopie an Ihren eigenen Collector senden können. Siehe [Stream prüfen und kopieren](/de/fine-parser/reference/data-privacy#inspecting-and-copying-the-stream).

<h2 id="one-configuration-per-container">
  Eine Konfiguration pro Container
</h2>

Die Erkennungseinstellungen lassen sich nicht pro Anfrage ändern. Jedes Dokument, das ein Container empfängt, wird mit dem Modus und den Sprachen verarbeitet, mit denen er gestartet wurde.

Wenn unterschiedliche Dokumentensätze unterschiedliche Einstellungen erfordern, betreiben Sie je Konfiguration einen eigenen Container und leiten Sie jede Anfrage an den passenden Container weiter. Ein Reverse-Proxy oder Ihr eigener Anwendungscode kann diese Entscheidung anhand der bereits bekannten Informationen über das Dokument treffen, etwa anhand seiner Herkunft oder seines Dateityps.

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

Die Ergebnisse werden als `{jobId}/{name}` in das Ausgabeverzeichnis geschrieben – neben einer kleinen Job-Datenbank, die alle Jobs erfasst. Das Image deklariert `/app/output` als Volume. Mounten Sie dort ein benanntes Volume oder ein Host-Verzeichnis, denn andernfalls erstellt Docker ein anonymes Volume und die Ergebnisse gehen verloren, sobald der Container entfernt wird.

```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
```

Der Container läuft als non-root user, daher muss ein unter `/app/output` eingehängtes Host-Verzeichnis für ihn beschreibbar sein.

Ein Container pro Ausgabeverzeichnis. Die Job-Datenbank ist gesperrt, solange sie geöffnet ist, sodass ein zweiter Container, der auf dasselbe Volume verweist, nicht startet. Wenn Sie mehrere Container betreiben, weisen Sie jedem ein eigenes Volume zu.

Uploads verbleiben nur so lange im Scratch-Verzeichnis, wie sie auf die Erkennung warten, und werden gelöscht, sobald diese abgeschlossen ist. Nichts im Scratch-Verzeichnis überdauert einen Job, daher ist dafür kein Volume erforderlich.

<h2 id="running-on-arm">
  Ausführung auf ARM
</h2>

Das FineParser-Image wird derzeit ausschließlich für `linux/amd64` gebaut. Auf einem ARM-Host, etwa einem Mac mit Apple Silicon (M-Serie), muss Docker es im Kompatibilitätsmodus ausführen. Übergeben Sie dazu `--platform linux/amd64` an `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
```

Ohne das Flag verweigert Docker je nach Version entweder den Start des Containers oder gibt eine Warnung wegen einer Plattform-Inkompatibilität aus.

Die Emulation ist langsamer als die native Ausführung. Die Erkennung dauert pro Seite länger als auf einem x86-64-Host, daher sollte dies als Entwicklungs-Setup und nicht als Benchmark betrachtet werden. Ein nativer ARM-Build des Images ist in Arbeit und macht dieses Flag künftig überflüssig.

<h2 id="stopping-the-container">
  Container stoppen
</h2>

Legen Sie für den Container ein Stop-Timeout von 60 Sekunden fest. Bei einem sauberen Stopp lässt FineParser laufende Anfragen zu Ende laufen, schreibt Telemetriedaten weg und beendet sich anschließend. Der Docker-Standardwert von 10 Sekunden unterbricht diesen Vorgang vorzeitig. Verwenden Sie `--stop-timeout 60` mit `docker run` oder `terminationGracePeriodSeconds: 60` in Kubernetes. Unter [Neustarts und Herunterfahren](/de/fine-parser/concepts/rest-api#restarts-and-shutdown) erfahren Sie, was mit Jobs geschieht, die zu diesem Zeitpunkt in der Warteschlange stehen oder ausgeführt werden.

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

FineParser lauscht innerhalb des Containers auf Port 8080. Veröffentlichen Sie diesen Port mit `-p HOST:CONTAINER` auf Ihrem Host, damit Sie Anfragen an ihn senden können. Mit `-p 8080:8080` ist die API auf Host-Port 8080 von jedem Rechner im Netzwerk aus erreichbar, während `-p 127.0.0.1:9000:8080` den Zugriff auf localhost über Port 9000 beschränkt. Die vollständige Syntax finden Sie unter [Published ports](https://docs.docker.com/engine/network/#published-ports) in der Docker-Dokumentation.

<Warning>
  Der Container muss den Lizenzserver von ABBYY erreichen können. Ohne diese ausgehende Verbindung verarbeitet FineParser keine Dokumente. Geben Sie die unter [Netzwerkanforderungen](/de/fine-parser/reference/data-privacy#network-requirements) aufgeführten Adressbereiche in Ihrer Firewall bzw. Ihrem Egress-Proxy frei. Für Umgebungen ohne ausgehende Verbindung siehe [FineParser Enterprise](/de/fine-parser/reference/enterprise).
</Warning>

<h2 id="confirming-the-license">
  Lizenz bestätigen
</h2>

Rufen Sie im Servermodus `/healthz` auf. Ein lizenzierter Container meldet `ready: true`:

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

Suchen Sie im CLI-Modus in der Ausgabe des Containers nach der Zeile `metering ready for instance …`, die vor der Seitenzahl erscheint.

Ohne Lizenz funktioniert keiner der beiden Modi. Der Server meldet den Zustand „unhealthy“ und verarbeitet nichts:

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