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

# 構成

FineParser の構成は、コンテナーの起動時に環境変数とコマンドラインフラグで一度だけ行います。すべての設定は環境変数とフラグの両方で指定でき、両方を指定した場合はフラグが優先されます。設定内容はプロセスが終了するまで有効です。

<h2 id="settings">
  設定
</h2>

| 設定               | フラグ                       | 環境変数                      | Default                                                                                          |
| ---------------- | ------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------ |
| License          | `-license-data`           | `FINEPARSER_LICENSE_DATA` | 必須。`.fineparserlicense` ファイルの内容。[ライセンスとプラン](/ja/fine-parser/basics/licenses-and-plans)を参照してください。 |
| Recognition mode | `-mode`                   | `FRE_MODE`                | `accurate`。[認識モード](/ja/fine-parser/basics/recognition-modes)を参照してください。                           |
| Languages        | `-language`               | `FRE_LANGUAGE`            | `English`。[言語](/ja/fine-parser/basics/languages)を参照してください。                                       |
| 待ち受けアドレス         | `-addr`                   | `LISTEN_ADDR`             | `:8080`                                                                                          |
| 出力ディレクトリ         | `-output-dir`             | `OUTPUT_DIR`              | `/app/output`。結果とジョブデータベースの書き込み先です。ここにボリュームをマウントしてください。                                          |
| スクラッチディレクトリ      | `-scratch-dir`            | `SCRATCH_DIR`             | `/app/scratch`。アップロードされたファイルが認識処理を待つ場所です。ボリュームは不要です。                                             |
| ジョブデータベース        | `-db`                     | `JOB_DB`                  | `<output-dir>/jobs.db`                                                                           |
| ダウンロード時に削除       | `-delete-on-download`     | `DELETE_ON_DOWNLOAD`      | `false`。`true` の場合、結果が完全にダウンロードされた時点で、その結果とジョブレコードが削除されます。                                       |
| アップロード上限         | `-max-upload-bytes`       | `MAX_UPLOAD_BYTES`        | `1Gi`。受け付けるリクエストボディの最大サイズです。`Ki`、`Mi`、`Gi`、`Ti` または `K`、`M`、`G`、`T` の接尾辞が使用できます。`0` は無制限です。      |
| アップロードのタイムアウト    | `-upload-timeout`         | `UPLOAD_TIMEOUT`          | `5m`。送信側がボディを送り終えるまでに許容される時間です。`0` は無制限です。                                                       |
| ダウンロード停滞のタイムアウト  | `-download-stall-timeout` | `DOWNLOAD_STALL_TIMEOUT`  | `5m`。ダウンロードが進行しない状態を許容する時間で、これを超えると切断されます。低速でも進行している転送が中断されることはありません。`0` は無制限です。                 |

ライセンスは複数行のテキストです。`$(cat acme.fineparserlicense)` で渡すか、Kubernetes Secret から渡してください。Docker の `.env` ファイルは複数行の値を扱えないため、この変数には使用できません。

テレメトリには、ストリームを確認したり、独自のコレクターへコピーを送信したりするための専用の環境変数があります。[ストリームの確認とコピー](/ja/fine-parser/reference/data-privacy#inspecting-and-copying-the-stream)を参照してください。

<h2 id="one-configuration-per-container">
  コンテナーごとに1つの構成
</h2>

認識設定はリクエストごとに変更することはできません。コンテナーが受け取る文書はすべて、起動時に指定されたモードと言語で処理されます。

文書セットごとに異なる設定が必要な場合は、構成ごとにコンテナーを1つずつ実行し、各リクエストを該当するコンテナーへルーティングしてください。この振り分けは、リバースプロキシや独自のアプリケーションコードで、ソースやファイルの種類など、その文書についてすでに分かっている情報をもとに判断できます。

<h2 id="storage">
  ストレージ
</h2>

結果は出力ディレクトリに `{jobId}/{name}` として書き込まれ、同じ場所にすべてのジョブを追跡する小規模なジョブデータベースが作成されます。イメージでは `/app/output` をボリュームとして宣言しています。ここには名前付きボリュームまたはホストのディレクトリをマウントしてください。マウントしない場合、Docker は匿名ボリュームを作成するため、コンテナーを削除すると結果が失われます。

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

コンテナーは非 root ユーザーとして実行されるため、`/app/output` にマウントするホストディレクトリには、そのユーザーからの書き込み権限が必要です。

出力ディレクトリ 1 つにつき、コンテナーは 1 つです。ジョブデータベースは開いている間ロックされるため、同じボリュームを指す 2 つ目のコンテナーは起動できません。複数のコンテナーを実行する場合は、それぞれに専用のボリュームを割り当ててください。

アップロードされたファイルは、認識処理を待機している間だけスクラッチディレクトリに保持され、処理が完了すると直ちに削除されます。スクラッチディレクトリ内のデータがジョブの終了後まで残ることはないため、ボリュームは不要です。

<h2 id="running-on-arm">
  ARM 上での実行
</h2>

FineParser のイメージは、現在 `linux/amd64` 向けにのみビルドされています。Apple シリコン (M シリーズ) 搭載の Mac などの ARM ホストでは、Docker は互換モードでイメージを実行することになります。`docker run` に `--platform linux/amd64` を指定してください。

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

このフラグを指定しない場合、Docker はバージョンに応じて、コンテナーの起動を拒否するか、プラットフォームの不一致に関する警告を表示します。

エミュレーションはネイティブ実行よりも低速です。1 ページあたりの認識処理には x86-64 ホストよりも時間がかかることを想定し、ベンチマーク用ではなく開発用のセットアップとしてお使いください。イメージのネイティブ ARM ビルドは現在対応中で、提供され次第このフラグは不要になります。

<h2 id="stopping-the-container">
  コンテナーの停止
</h2>

コンテナーの停止タイムアウトは 60 秒に設定してください。正常に停止する場合、FineParser は処理中のリクエストを完了させ、テレメトリをフラッシュしてから終了します。Docker のデフォルトの 10 秒では、この処理が途中で打ち切られてしまいます。`docker run` では `--stop-timeout 60` を、Kubernetes では `terminationGracePeriodSeconds: 60` を指定してください。停止時にキューに入っているジョブや実行中のジョブがどうなるかについては、[再起動とシャットダウン](/ja/fine-parser/concepts/rest-api#restarts-and-shutdown)を参照してください。

<h2 id="networking">
  ネットワーク
</h2>

FineParser はコンテナー内のポート 8080 で待ち受けます。リクエストを送信できるようにするには、`-p HOST:CONTAINER` でそのポートをホストに公開してください。`-p 8080:8080` を指定すると、ネットワーク上のどのマシンからでもホストのポート 8080 経由で API にアクセスでき、`-p 127.0.0.1:9000:8080` を指定すると localhost のポート 9000 のみに限定されます。構文の詳細については、Docker ドキュメントの [Published ports](https://docs.docker.com/engine/network/#published-ports) を参照してください。

<Warning>
  コンテナーから ABBYY のライセンスサーバーに接続できる必要があります。この外向きの接続がないと、FineParser はドキュメントを解析できません。[ネットワーク要件](/ja/fine-parser/reference/data-privacy#network-requirements)に記載されているアドレス範囲を、ファイアウォールまたは送信プロキシで許可してください。外部への接続が一切ない環境については、[FineParser Enterprise](/ja/fine-parser/reference/enterprise) を参照してください。
</Warning>

<h2 id="confirming-the-license">
  License の確認
</h2>

サーバーモードでは、`/healthz` を呼び出します。License が適用されたコンテナーは `ready: true` を返します。

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

CLIモードでは、コンテナーの出力でページ数の前に `metering ready for instance …` という行が出力されているか確認してください。

Licenseがない場合、どちらのモードも動作しません。サーバーは異常 (unhealthy) を報告し、何も処理しません。

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