メインコンテンツへスキップ
このトピックでは、Linux 上の Docker コンテナー内で ABBYY FineReader Engine 12 を実行する方法について説明します。 このトピックでは、次の 2 つのセットアップ オプションを取り上げます。
OptionDescription
単一コンテナーLicensing Service と FRE ワーカーを 1 つにまとめてパッケージ化する構成です。

シンプルで、テスト、デモ、単発の OCR ジョブに適しています。
2 つのコンテナーLicensing Service と FRE ワーカーを別々のコンテナーで実行する構成です。

耐障害性に優れており、一方がクラッシュしても、もう一方に影響を与えずに再起動できます。複数のワーカーで 1 つの Licensing Service を共有することもできます。
どちらのセットアップ オプションでも オンライン ライセンスローカルライセンス をサポートしており、どちらも ubuntu:noble (24.04 LTS) をベースにしています。

ライセンスの種類

FRE 12 では、オンラインとローカルの 2 種類のライセンスを使用できます。どちらの種類も単一コンテナー構成と 2 コンテナー構成の両方で利用できますが、アクティベーションとランタイムの要件は異なります。

オンライン ライセンス

  • ファイル名のパターン: XXXXXXXXXXXXXXXXXXXX.ABBYY.ActivationToken
  • 実行時*.abbyy.com に対して検証されます — コンテナーを起動するたびにインターネット接続が必要です。
  • Licensing Service がインストールされている環境の要件:
    • 有効なインターネット接続
    • *.abbyy.com への外向き HTTPS 通信 (ポート 443) が許可されていること
    • システムの ca-certificates パッケージに GoDaddy Trusted Root CA が含まれていること (ubuntu:noble にはすでに含まれています)
  • 1 つの Licensing Service インスタンスで同時に利用できるオンライン ライセンスは 1 つ のみです。

ローカルライセンス

  • ファイル名パターン: XXXX-XXXX-XXXX-XXXX-XXXX-XXXX.ABBYY.LocalLicense
  • FRE のインストール中にビルド時点でアクティブ化され、その後イメージに埋め込まれます。
  • ランタイム時にインターネット接続は不要です — エアギャップ環境に適しています。

はじめに

このガイドのいずれのセットアップ方法を使用する場合も、以下が必要です。
  • Docker および Docker Compose がインストールされていること (docker compose v2 構文)
  • ABBYY FineReader Engine 12 Linux インストーラー: FRE*.sh
  • ライセンスファイル (.ABBYY.ActivationToken または .ABBYY.LocalLicense) とパスワード

セットアップ オプション 1 — 単一コンテナー

このオプションは、Licensing ServiceとFREワーカーを1つのコンテナーで実行します。エントリーポイントはバックグラウンドでLicensing Serviceを起動し、起動が完了するまで少し待機した後、CLIサンプルを実行して出力を表示し、終了時にすべてのプロセスを正常にシャットダウンします。ローカルテスト、デモ、および1つのコマンドで起動・停止を完結させたいCIジョブに推奨します。

ファイル

空のディレクトリを作成し、以下のファイルを追加します。
  • Dockerfile — 統合イメージ (以下に記載) をビルドします
  • entrypoint.sh — LS を起動し、CLI サンプルを実行して、結果 (以下に示す) を出力します
  • docker-compose.yml — コンテナーをビルドして実行します (下記参照)
  • .env — ライセンスファイル名とパスワード (以下に記載) を格納します

ビルドと実行

  1. 先ほど作成したディレクトリに、FRE*.sh インストーラーとライセンスファイルをコピーします。
  2. ライセンス値を設定した.envファイルを作成します (以下を参照) 。
  3. そのディレクトリで、次のコマンドを実行し、イメージをビルドしてコンテナーを起動します。
CLIサンプルは、バンドルされたDemo.tifをOCRで処理し、認識されたテキストをコンソールに出力します。

.env

docker-compose.yml

shm_size: 1g は必須です。FRE はPOSIX共有メモリを使用しており、デフォルトの64MB (/dev/shm) では不足します。この設定を削除または変更しないでください。

Dockerfile

これは2段階ビルドです:
  • ステージ 1 では、gcc:8 を使用して FRE をインストールし、CLI サンプルをコンパイルします。
  • ステージ2では、最小限のubuntu:nobleランタイムイメージを作成し、Licensing Serviceのバイナリ、FREランタイム、コンパイル済みのサンプル、ライセンスファイルをコピーします。

entrypoint.sh


セットアップ オプション 2 — 2 つのコンテナー

このオプションでは、Licensing Service と FRE ワーカーを共有 Docker Compose ネットワーク上の別々のコンテナーで実行します。ワーカーは TCP を介して ls:3023 で Licensing Service と通信します。本番環境へのデプロイに推奨。 サービスを別々のコンテナーで実行することで、いずれかがクラッシュした場合にDockerが独立して再起動できます。また、複数のワーカーが同一のLicensing Serviceに接続することも可能になります。
ライセンスで許可されていない限り、単一の Licensing Service に対して複数のワーカーレプリカを実行しないでください。単一の Licensing Service インスタンスがサポートできるオンライン ライセンスは、同時に1つのみです。

ファイル

空のディレクトリを作成し、以下のファイルを追加します。
  • Dockerfile_ls — 以下に記載の Licensing Service コンテナーをビルドします
  • Dockerfile_worker — 以下に示すFRE worker コンテナーをビルドします
  • entrypoint.sh — ワーカーで CLI サンプルを実行します (下記参照)
  • docker-compose.yml — 2 つのコンテナーを接続します (以下に記載)
  • .env — ライセンスファイル名とパスワードを格納します (形式はセットアップ 1 と同じ)

ビルドと実行

  1. FRE*.sh のインストーラーとライセンスファイルをそのディレクトリにコピーします。
  2. ライセンス値を記載した.envファイルを作成します。
  3. そのディレクトリで、次を実行します:
両方のコンテナーがビルドされ、起動します。Licensing Service が最初に起動し、次にワーカーが起動して、同梱の Demo.tif に対して CLI サンプルを実行し、結果を出力します。

docker-compose.yml

いくつか注意点があります:
  • worker では depends_on: [ls] を使用しているため、Licensing Service コンテナーが先に起動します。
  • 両方のサービスで restart: on-failure を使用しているため、それぞれが独立して復旧できます。
  • worker の service_address ビルド引数は ls:3023 です — Docker Compose の組み込み DNS により、ls は Licensing Service コンテナーを指すように名前解決されます。
  • FRE では共有メモリが必要なため、shm_size: 1g は Licensing Service ではなく、worker に設定されます。

Dockerfile_ls

これは2段階ビルドです:
  • ステージ 1 では、Licensing Service のバイナリを抽出するため、--skip-local-license-activation を指定して FRE インストーラーを実行します。
  • ステージ 2 では、最小構成の ubuntu:noble ランタイムイメージを作成し、ポート 3023 を公開して、LicensingService /standalone を PID 1 として実行します。/standalone フラグを指定すると、Licensing Service はフォアグラウンドで実行されたままになります。これは Docker では適切な方法です (フォアグラウンドのプロセスは stdout にログを出力し、コンテナーが停止されると正常に終了します) 。

Dockerfile_worker

これは2段階ビルドです:
  • ステージ 1 では、Licensing Service コンテナーを指す --service-address--developer-install を指定して FRE をインストールし、その後 CLI サンプルをコンパイルします。
  • ステージ 2 では、FRE のバイナリ、コンパイル済みのサンプル、デモ用イメージのみを含む最小構成の ubuntu:noble ランタイムイメージを作成します。worker はネットワーク経由で ls コンテナーと通信するため、Licensing Service のバイナリは含まれません。

entrypoint.sh

ワーカーのエントリーポイントは、Licensing Serviceを管理しないため、単一コンテナー版よりもシンプルです。ワーカーはサンプルを実行して出力を表示するだけです。

CLI サンプルのカスタマイズ

どちらのセットアップ方法でも、docker-compose.yml では同じデフォルトコマンドが実行されます。
  • -if — 入力ファイル
  • -f — 出力形式プロファイル
  • -of — 出力ファイル
この行を編集して、別の入力ファイル、出力ファイル、または形式プロファイルを指定してください。CLI 引数の完全な一覧については、 FRE Code Samples Library のドキュメントを参照してください。
独自のファイルで OCR を実行するには、ホスト ディレクトリを /app にバインド マウントし、-if/-of でその中のファイルを指定してください。

注意点

以下は、両方のセットアップ オプションに共通する既知の問題です。
  • shm_size: 1g は必須です。 FRE は POSIX 共有メモリに依存しており、デフォルトの 64MB の /dev/shm 割り当てでは足りません。上記の compose ファイルでは、worker サービスに対してすでにこれが設定されています。
  • インストーラーとライセンス ファイルはビルド コンテキスト内に置く必要があります。 どちらの Dockerfile でも COPY FRE*.sh とライセンス ファイルを使用します。これらがビルド元のディレクトリにない場合、ビルドは即座に失敗します。実行時にライセンスをマウントしないでください。ライセンスはビルド中にアクティブ化されます。
  • オンライン ライセンスでは、builder と ランタイム の両方から外向きのネットワーク接続が必要です。 builder ではアクティブ化のために必要であり、ランタイム の Licensing Service では検証を継続するために必要です。
  • ライセンス ファイルやインストーラーはコミットしないでください。 ソース管理では、.env*.ABBYY.*FRE*.sh を無視リストに追加し、その影響とリスクを理解していない限り、公開するイメージには含めないでください。
  • これらの例では ubuntu:noble (24.04 LTS) を使用しています。 以前のドキュメントでは Ubuntu bionic を参照していましたが、これはすでにサポート終了です。Ubuntu のリリースによってパッケージ名は異なります。たとえば、libgcc-8-dev は現在 libgcc-s1libstdc++-8-dev は現在 libstdc++6 です。別のベース イメージを使用する場合は、それに応じてパッケージ一覧を確認してください。

関連項目

Linux への Licensing Service のインストール ライセンス管理 アクティベーション