Saltar al contenido principal
En este tema se describe cómo ejecutar ABBYY FineReader Engine 12 en contenedores Docker en Linux. En este tema se tratan dos opciones de configuración:
OpciónDescripción
Contenedor únicoEl servicio de licencias y el worker de FRE se empaquetan juntos.

Más simple; adecuado para pruebas, demostraciones y trabajos de OCR puntuales.
Dos contenedoresEl servicio de licencias y el worker de FRE se ejecutan en contenedores separados.

Mejor tolerancia a fallos; si uno se bloquea, puede reiniciarse sin interrumpir el otro. Varios workers pueden compartir un servicio de licencias.
Ambas opciones de configuración admiten licencias en línea y licencias locales, y ambas se basan en ubuntu:noble (24.04 LTS).

Tipos de licencias

FRE 12 admite dos tipos de licencias: en línea y local. Ambos tipos funcionan tanto en configuraciones de uno como de dos contenedores, pero tienen distintos requisitos de activación y de tiempo de ejecución.

Licencia en línea

  • Patrón de nombre de archivo: XXXXXXXXXXXXXXXXXXXX.ABBYY.ActivationToken
  • Se valida con *.abbyy.com en tiempo de ejecución: cada ejecución del contenedor requiere acceso a Internet.
  • Requisitos en cualquier entorno donde esté instalado el servicio de licencias:
    • Conexión activa a Internet
    • Conexión HTTPS saliente permitida (puerto 443) a *.abbyy.com
    • GoDaddy Trusted Root CA en el paquete del sistema ca-certificates (ya incluido en ubuntu:noble)
  • Una sola instancia del servicio de licencias puede funcionar con solo una licencia en línea a la vez.

Licencia local

  • Patrón del nombre de archivo: XXXX-XXXX-XXXX-XXXX-XXXX-XXXX.ABBYY.LocalLicense
  • Se activa en tiempo de compilación durante la instalación de FRE y luego se integra en la imagen.
  • No se requiere Internet en tiempo de ejecución — ideal para entornos aislados de la red.

Primeros pasos

Para usar cualquiera de las opciones de configuración de esta guía, necesitará lo siguiente:
  • Docker y Docker Compose instalados (sintaxis v2 de docker compose)
  • Instalador de ABBYY FineReader Engine 12 para Linux: FRE*.sh
  • Archivo de licencia (.ABBYY.ActivationToken o .ABBYY.LocalLicense) y contraseña

Opción de configuración 1 — Contenedor único

Esta opción ejecuta el servicio de licencias y el worker de FRE en un único container. El punto de entrada inicia el servicio de licencias en segundo plano, espera brevemente a que esté listo, ejecuta el sample de CLI, imprime la salida y detiene correctamente todos los procesos al salir.Recomendado para pruebas locales, demostraciones y trabajos de CI donde solo se necesita un comando para iniciar y detener el servicio.

Archivos

Cree un directorio vacío y añada los siguientes archivos:
  • Dockerfile — crea la imagen combinada (que se indica a continuación)
  • entrypoint.sh — inicia el LS, ejecuta el ejemplo de la CLI y muestra el resultado (a continuación)
  • docker-compose.yml — crea y ejecuta el contenedor (indicado a continuación)
  • .env — contiene el nombre del archivo de licencia y la contraseña (se indican a continuación)

Compilar y ejecutar

  1. Copia el instalador FRE*.sh y el archivo de licencia en el directorio que creaste anteriormente.
  2. Cree un archivo .env con los valores de la licencia (consulte más abajo).
  3. Desde ese directorio, ejecute el siguiente comando para crear la imagen e iniciar el contenedor:
El ejemplo de CLI procesará el archivo Demo.tif incluido mediante Reconocimiento óptico de caracteres (OCR) e imprimirá el texto reconocido en la consola.

.env

docker-compose.yml

shm_size: 1g es obligatorio. FRE utiliza memoria compartida POSIX y los 64 MB predeterminados de /dev/shm no son suficientes. No elimine ni cambie esta configuración.

Dockerfile

Esta es una compilación en dos etapas:
  • La etapa 1 usa gcc:8 para instalar FRE y compilar el ejemplo de la CLI.
  • La etapa 2 crea una imagen de runtime mínima basada en ubuntu:noble y copia en ella los binarios del servicio de licencias, el runtime de FRE, el ejemplo compilado y el archivo de licencia.

entrypoint.sh


Opción de configuración 2 — Dos contenedores

Esta opción ejecuta el servicio de licencias y el worker de FRE en contenedores separados en una red compartida de Docker Compose. El worker se comunica con el servicio de licencias a través de TCP en ls:3023.Recomendado para implementaciones en producción. Ejecutar los servicios en contenedores separados permite que Docker reinicie cualquiera de ellos de forma independiente si se produce un fallo. Además, permite que varios workers se conecten al mismo servicio de licencias.
No ejecute varias réplicas de worker con un solo servicio de licencias, a menos que su licencia lo permita. Una única instancia del servicio de licencias admite solo una licencia en línea a la vez.

Archivos

Cree un directorio vacío y añada los siguientes archivos:
  • Dockerfile_ls — crea el contenedor del servicio de licencias (que aparece a continuación)
  • Dockerfile_worker — compila el contenedor del worker de FRE (indicado a continuación)
  • entrypoint.sh — ejecuta el ejemplo de CLI en el worker (que se muestra a continuación)
  • docker-compose.yml — conecta ambos contenedores (indicados a continuación)
  • .env — contiene el nombre del archivo de licencia y la contraseña (con el mismo formato que en la Configuración 1)

Compilar y ejecutar

  1. Copia el instalador FRE*.sh y el archivo de licencia en el directorio.
  2. Crea un archivo .env con los valores de tu licencia.
  3. En ese directorio, ejecute:
Ambos contenedores se compilan e inician. El servicio de licencias arranca primero, seguido del worker, que ejecuta el ejemplo de CLI con el archivo Demo.tif incluido e imprime el resultado.

docker-compose.yml

Algunos aspectos a tener en cuenta:
  • El worker usa depends_on: [ls], por lo que el contenedor del servicio de licencias se iniciará antes.
  • Ambos servicios usan restart: on-failure, lo que les permite reiniciarse de forma independiente.
  • El argumento de compilación service_address del worker es ls:3023 — el DNS integrado de Docker Compose hace que ls apunte al contenedor del servicio de licencias.
  • shm_size: 1g se configura en el worker, no en el servicio de licencias, ya que FRE requiere memoria compartida.

Dockerfile_ls

Esta es una compilación en dos etapas:
  • En la etapa 1, se ejecuta el instalador de FRE con --skip-local-license-activation para extraer los binarios del servicio de licencias.
  • La etapa 2 crea una imagen mínima de ejecución ubuntu:noble, expone el puerto 3023 y ejecuta LicensingService /standalone como PID 1. La marca /standalone mantiene el servicio de licencias en primer plano, que es el enfoque correcto en Docker (un proceso en primer plano registra los mensajes en stdout y finaliza correctamente cuando se detiene el contenedor).

Dockerfile_worker

Esta es una compilación en dos etapas:
  • La etapa 1 instala FRE con --developer-install y --service-address configurado para apuntar al contenedor del servicio de licencias, y luego compila el sample de CLI.
  • La etapa 2 crea una imagen de runtime mínima de ubuntu:noble que contiene solo los binarios de FRE, el ejemplo compilado y la imagen de demostración. Como el worker se comunica con el contenedor ls por la red, no se incluyen binarios del servicio de licencias.

entrypoint.sh

El punto de entrada del worker es más sencillo que el de la versión de contenedor único, ya que no gestiona el servicio de licencias. El worker simplemente ejecuta el sample e imprime la salida.

Personalización del ejemplo de CLI

Ambas opciones de configuración ejecutan el mismo comando predeterminado en docker-compose.yml:
  • -if — archivo de entrada
  • -f — perfil de formato de salida
  • -of — archivo de salida
Edite esta línea para que apunte a un archivo de entrada o de salida, o a un perfil de formato diferente. Consulte la documentación de FRE Code Samples Library para ver la lista completa de argumentos de la CLI.
Para ejecutar Reconocimiento óptico de caracteres (OCR) en sus propios archivos, monte un directorio del host en /app y haga que -if/-of apunten a archivos dentro de él.

Problemas comunes

A continuación se indican problemas conocidos que se aplican a ambas opciones de configuración:
  • shm_size: 1g es obligatorio. FRE depende de la memoria compartida POSIX y la asignación predeterminada de 64 MB de /dev/shm no es suficiente. Los archivos de Compose anteriores ya lo configuran en el servicio worker.
  • El instalador y el archivo de licencia deben estar en el contexto de compilación. Ambos Dockerfiles hacen COPY de FRE*.sh y del archivo de licencia; si no están en el directorio desde el que se compila, la compilación falla de inmediato. No monte la licencia en tiempo de ejecución. Se activa durante la compilación.
  • Las licencias en línea necesitan conectividad de salida a la red desde el builder y el tiempo de ejecución. El builder la necesita para activar la licencia; el servicio de licencias del tiempo de ejecución la necesita para seguir validándola.
  • No haga commit de archivos de licencia ni de instaladores. En el control de código fuente, agregue .env, *.ABBYY.* y FRE*.sh a su lista de ignorados, y no los incluya en ninguna imagen publicada a menos que comprenda las implicaciones y los riesgos.
  • Estos ejemplos usan ubuntu:noble (24.04 LTS). La documentación anterior hacía referencia a Ubuntu bionic, que ya no tiene soporte. Los nombres de los paquetes difieren entre versiones de Ubuntu. Por ejemplo: libgcc-8-dev ahora es libgcc-s1 y libstdc++-8-dev ahora es libstdc++6. Si usa una imagen base diferente, verifique la lista de paquetes según corresponda.

Consulte también

Instalación del servicio de licencias en Linux Licencias Activación