Passer au contenu principal
Cette rubrique explique comment exécuter ABBYY FineReader Engine 12 dans des conteneurs Docker sous Linux. Cette rubrique présente deux options de configuration :
OptionDescription
Conteneur uniqueLe service de licence et le worker FRE sont regroupés dans un même conteneur.

Plus simple ; convient bien aux tests, aux démonstrations et aux tâches d’OCR ponctuelles.
Deux conteneursLe service de licence et le worker FRE sont répartis dans des conteneurs distincts.

Meilleure tolérance aux pannes ; si l’un s’arrête, il peut redémarrer sans interrompre l’autre. Plusieurs workers peuvent partager un même service de licence.
Les deux options de configuration prennent en charge les licences en ligne et les licences locales, et s’appuient toutes deux sur ubuntu:noble (24.04 LTS).

Types de licence

FRE 12 accepte deux types de licences : en ligne et locales. Les deux types fonctionnent aussi bien dans les configurations à un conteneur que dans celles à deux conteneurs, mais leurs exigences en matière d’activation et d’exécution diffèrent.

Licence en ligne

  • Modèle de nom de fichier : XXXXXXXXXXXXXXXXXXXX.ABBYY.ActivationToken
  • Validation auprès de *.abbyy.com à l’exécution — chaque démarrage du conteneur nécessite un accès à Internet.
  • Exigences partout où le service de licence est installé :
    • Connexion Internet active
    • Connexions HTTPS sortantes autorisées (port 443) vers *.abbyy.com
    • GoDaddy Trusted Root CA dans le package système ca-certificates (déjà présent dans ubuntu:noble)
  • Une instance unique du service de licence ne peut fonctionner qu’avec une seule licence en ligne à la fois.

Licence locale

  • Schéma de nom de fichier : XXXX-XXXX-XXXX-XXXX-XXXX-XXXX.ABBYY.LocalLicense
  • Activée lors de la génération de l’image pendant l’installation de FRE, puis intégrée à l’image.
  • Pas besoin d’accès à Internet à l’exécution — idéal pour les environnements isolés du réseau.

Prise en main

Pour utiliser l’une ou l’autre des options d’installation de ce guide, vous aurez besoin de :
  • Docker et Docker Compose installés (syntaxe docker compose v2)
  • Installateur Linux d’ABBYY FineReader Engine 12 : FRE*.sh
  • Fichier de licence (.ABBYY.ActivationToken ou .ABBYY.LocalLicense) et mot de passe

Option de configuration 1 — Conteneur unique

Cette option exécute le service de licence et le worker FRE dans un seul conteneur. Le point d’entrée démarre le service de licence en arrière-plan, attend brièvement qu’il soit opérationnel, exécute l’exemple CLI, affiche la sortie et arrête proprement tous les processus à la fermeture.Recommandé pour les tests locaux, les démonstrations et les jobs CI où une seule commande suffit pour démarrer et arrêter.

Fichiers

Créez un répertoire vide et ajoutez les fichiers suivants :
  • Dockerfile — génère l’image combinée (indiquée ci-dessous)
  • entrypoint.sh — démarre le LS, exécute l’exemple CLI, affiche le résultat (ci-dessous)
  • docker-compose.yml — crée et exécute le conteneur (indiqué ci-dessous)
  • .env — contient le nom du fichier de licence et votre mot de passe (indiqués ci-dessous)

Compiler et exécuter

  1. Copiez votre installateur FRE*.sh et votre fichier de licence dans le répertoire que vous avez créé ci-dessus.
  2. Créez un fichier .env avec les informations de votre licence (voir ci-dessous).
  3. Depuis ce répertoire, exécutez la commande suivante pour générer l’image et démarrer le conteneur :
Le sample CLI traite le fichier Demo.tif fourni à l’aide de la reconnaissance optique de caractères (OCR) et affiche le texte reconnu dans la console.

.env

docker-compose.yml

shm_size: 1g est obligatoire. FRE utilise la mémoire partagée POSIX et les 64 Mo par défaut de /dev/shm sont insuffisants. Ne supprimez pas ce paramètre et ne le modifiez pas.

Dockerfile

Il s’agit d’un build en deux étapes :
  • L’étape 1 utilise gcc:8 pour installer FRE et compiler l’exemple CLI.
  • L’étape 2 crée une image d’exécution minimale ubuntu:noble et y copie les binaires du service de licence, le runtime FRE, l’exemple compilé et le fichier de licence.

entrypoint.sh


Option de configuration 2 — Deux conteneurs

Cette option exécute le service de licence et le worker FRE dans des conteneurs distincts sur un réseau Docker Compose partagé. Le worker communique avec le service de licence via TCP sur ls:3023.Recommandé pour les déploiements en production. L’exécution des services dans des conteneurs distincts permet à Docker de redémarrer l’un ou l’autre indépendamment en cas de défaillance. Cela permet également à plusieurs workers de se connecter au même service de licence.
N’exécutez pas plusieurs réplicas de workers sur un même service de licence, sauf si votre licence l’autorise. Une seule instance du service de licence ne prend en charge qu’une seule licence en ligne à la fois.

Fichiers

Créez un répertoire vide et ajoutez les fichiers suivants :
  • Dockerfile_ls — crée le conteneur du service de licence (présenté ci-dessous)
  • Dockerfile_worker — construit le conteneur worker FRE (répertorié ci-dessous)
  • entrypoint.sh — exécute l’exemple CLI dans le worker (répertorié ci-dessous)
  • docker-compose.yml — connecte les deux conteneurs (indiqués ci-dessous)
  • .env — contient le nom du fichier de licence et le mot de passe (même format que la configuration 1)

Compiler et exécuter

  1. Copiez le fichier d’installation FRE*.sh et le fichier de licence dans le répertoire.
  2. Créez un fichier .env avec les valeurs de votre licence.
  3. Dans ce répertoire, exécutez :
Les deux conteneurs sont construits et démarrés. Le service de licence démarre en premier, suivi du worker, qui exécute l’exemple CLI sur le fichier Demo.tif inclus et affiche le résultat.

docker-compose.yml

Quelques points à noter :
  • Le worker utilise depends_on: [ls] afin que le conteneur du service de licence démarre en premier.
  • Les deux services utilisent restart: on-failure, ce qui leur permet de redémarrer chacun de manière indépendante.
  • L’argument de build service_address du worker est ls:3023 — le DNS intégré de Docker Compose résout ls en l’adresse du conteneur du service de licence.
  • shm_size: 1g est configuré sur le worker, et non sur le service de licence, car FRE nécessite une mémoire partagée.

Dockerfile_ls

Il s’agit d’un build en deux étapes :
  • L’étape 1 lance le programme d’installation FRE avec --skip-local-license-activation pour extraire les fichiers binaires du service de licence.
  • L’étape 2 crée une image d’exécution ubuntu:noble minimale, expose le port 3023 et exécute LicensingService /standalone en tant que PID 1. L’indicateur /standalone maintient le service de licence au premier plan, ce qui est la bonne approche avec Docker (un processus au premier plan écrit ses journaux sur stdout et se termine proprement lorsque le conteneur est arrêté).

Dockerfile_worker

Il s’agit d’un build en deux étapes :
  • L’étape 1 installe FRE avec --developer-install et --service-address pointant vers le conteneur du service de licence, puis compile l’exemple d’interface de ligne de commande.
  • L’étape 2 crée une image d’exécution ubuntu:noble minimale contenant uniquement les binaires FRE, l’exemple compilé et l’image de démonstration. Comme le worker communique avec le conteneur ls via le réseau, aucun binaire du service de licence n’est inclus.

entrypoint.sh

Le point d’entrée du worker est plus simple que la version à conteneur unique, car il ne gère pas le service de licence. Le worker exécute simplement le sample et affiche le résultat.

Personnaliser l’exemple CLI

Les deux options de configuration exécutent la même commande par défaut dans docker-compose.yml :
  • -if — fichier d’entrée
  • -f — profil de format de sortie
  • -of — fichier de sortie
Modifiez cette ligne pour qu’elle pointe vers un autre fichier d’entrée, fichier de sortie ou profil de format. Consultez la documentation de la FRE Code Samples Library pour obtenir la liste complète des arguments de l’interface CLI.
Pour exécuter la Reconnaissance optique de caractères (OCR) sur vos propres fichiers, montez un répertoire hôte dans /app à l’aide d’un bind mount et faites pointer -if/-of vers des fichiers qu’il contient.

Problèmes courants

Les problèmes connus suivants s’appliquent aux deux options de configuration :
  • shm_size: 1g est obligatoire. FRE s’appuie sur la mémoire partagée POSIX, et l’allocation /dev/shm par défaut de 64 Mo est insuffisante. Les fichiers compose ci-dessus définissent déjà ce paramètre pour le service worker.
  • Le programme d’installation et le fichier de licence doivent se trouver dans le contexte de build. Les deux Dockerfiles copient FRE*.sh et le fichier de licence : s’ils ne se trouvent pas dans le répertoire depuis lequel vous lancez le build, celui-ci échoue immédiatement. Ne montez pas la licence à l’exécution. Elle est activée pendant le build.
  • Les licences en ligne nécessitent un accès réseau sortant depuis le builder et le runtime. Le builder en a besoin pour l’activation ; le service de licence du runtime en a besoin pour poursuivre la validation.
  • Ne versionnez pas les fichiers de licence ni les programmes d’installation. Dans votre système de contrôle de version, ajoutez .env, *.ABBYY.* et FRE*.sh à votre liste d’exclusion, et ne les incluez dans aucune image publiée, sauf si vous comprenez les implications et les risques.
  • Ces exemples utilisent ubuntu:noble (24.04 LTS). La documentation précédente faisait référence à Ubuntu bionic, qui est en fin de vie. Les noms des paquets diffèrent selon les versions d’Ubuntu. Par exemple : libgcc-8-dev est maintenant libgcc-s1 et libstdc++-8-dev est maintenant libstdc++6. Si vous utilisez une autre image de base, vérifiez la liste des paquets en conséquence.

Voir aussi

Installation du service de licence sous Linux Licence Activation