Compartir a través de


Instalación y ejecución de contenedores

Este contenido se aplica a:checkmarkv3.0 (GA)checkmarkv3.1 (GA)checkmarkv4.0 (GA)

Azure AI Document Intelligence es un servicio de Azure AI que permite crear software de procesamiento de datos automatizado utilizando tecnología de aprendizaje automático. Document Intelligence le permite identificar y extraer texto, pares clave-valor, marcas de selección, datos de tabla y mucho más de los documentos. Los resultados se entregan como datos estructurados que incluyen las relaciones del fichero original. Los contenedores procesan solo los datos proporcionados y utilizan únicamente los recursos a los que tienen permiso para acceder. Los contenedores no pueden procesar datos de otras regiones.

En este artículo puede aprender a descargar, instalar y ejecutar contenedores de Document Intelligence. Los contenedores le permiten ejecutar el servicio Document Intelligence en su propio entorno. Los contenedores son excelentes para requisitos específicos de control de datos y seguridad.

  • El modelo de diseño es compatible con contenedores de Document Intelligence v3.1.

  • Lectura, Maquetación, Documento de Identificación, Recibo, y Factura son compatibles con los contenedores de Document Intelligence v3.1.

  • Lectura, Diseño, Documento general, Tarjeta de presentación, y modelos personalizados son compatibles con contenedores de Document Intelligence v3.0.

Compatibilidad con versiones

La compatibilidad con contenedores está disponible actualmente con la versión v3.0: 2022-08-31 (GA) de Document Intelligence para todos los modelos, v3.1 2023-07-31 (GA) para los modelos Read, Layout, ID Document, Receipt y Invoice, y v4.0 2024-11-30 (GA) para Layout:

Requisitos previos

Para empezar, necesita una cuenta de Azure activa. En caso de no tener ninguna, puede crear una cuenta gratuita.

También necesita lo siguiente para usar contenedores de Document Intelligence:

Obligatorio Propósito
Conocimientos sobre Docker Debe tener una comprensión básica de conceptos de Docker, como los registros, los repositorios, los contenedores y las imágenes de contenedor, así como conocimientos de docker básicos de .
Motor de Docker instalado
  • Necesita que el motor de Docker esté instalado en un equipo host. Docker dispone de paquetes que configuran el entorno de Docker en macOS, Windows y Linux. Para conocer los principios básicos de Docker y de los contenedores, consulte Introducción a Docker.
  • Docker debe configurarse para permitir que los contenedores se conecten con Azure y envíen datos de facturación a dicho servicio.
  • En Windows, Docker también debe estar configurado de forma que admita contenedores de Linux.
Recurso de Inteligencia de documentos Un recurso de Azure AI Document Intelligence de servicio único o multiservicio en el portal de Azure. Para usar los contenedores, debe tener la clave y el URI del punto de conexión asociados. Ambos valores están disponibles en la página de Claves y Punto de Conexión de Document Intelligence del portal de Azure.
  • {FORM_RECOGNIZER_KEY}: una de las dos claves de recurso disponibles.
  • {FORM_RECOGNIZER_ENDPOINT_URI} : el punto de conexión del recurso que se usa para realizar el seguimiento de la información de facturación.
Opcionales Propósito
CLI (interfaz de la línea de comandos) de Azure La CLI de Azure permite usar un conjunto de comandos en línea para crear y administrar recursos de Azure. Está disponible para instalarse en entornos Windows, macOS y Linux, y se puede ejecutar en un contenedor de Docker y Azure Cloud Shell.

Requisitos del equipo host

El host es un equipo basado en x64 que ejecuta el contenedor de Docker. Puede ser un equipo del entorno local o un servicio de hospedaje de Docker incluido en Azure, como:

Nota:

El contenedor de Studio no se puede implementar y ejecutar en Azure Kubernetes Service. El contenedor de Studio solo se admite para ejecutarse en máquinas locales.

Recomendaciones y requisitos del contenedor

Contenedores auxiliares requeridos

En la tabla siguiente se enumeran uno o varios contenedores de compatibilidad para cada contenedor de Document Intelligence que descargue. Para más información, consulte la sección Facturación.

Contenedor de características Contenedores auxiliares
Leer No se requiere
Diseño No se requiere
Tarjeta de presentación Leer
Documento general Diseño
Factura Diseño
Recibo Lectura o Diseño
Documento de identificación Leer
Plantilla personalizada Diseño

Nota:

Los valores mínimos y recomendados se basan en los límites de Docker y no de los recursos de la máquina host.

Contenedores de Document Intelligence
Contenedor Mínima Recomendado
Read 8 núcleos, 10 GB de memoria 8 núcleos, 24 GB de memoria
Layout 8 núcleos, 16 GB de memoria 8 núcleos, 24 GB de memoria
Business Card 8 núcleos, 16 GB de memoria 8 núcleos, 24 GB de memoria
General Document 8 núcleos, 12 GB de memoria 8 núcleos, 24 GB de memoria
ID Document 8 núcleos, 8 GB de memoria 8 núcleos, 24 GB de memoria
Invoice 8 núcleos, 16 GB de memoria 8 núcleos, 24 GB de memoria
Receipt 8 núcleos, 11 GB de memoria 8 núcleos, 24 GB de memoria
Custom Template 8 núcleos, 16 GB de memoria 8 núcleos, 24 GB de memoria
  • Cada núcleo debe ser de 2,6 gigahercios (GHz) como mínimo.
  • El núcleo y la memoria se corresponden con los valores de --cpus y --memory, que se usan como parte del comando docker compose o docker run.

Sugerencia

Puede usar el comando docker images para enumerar las imágenes de contenedor descargadas. Por ejemplo, el comando siguiente muestra el id., el repositorio y la etiqueta de cada imagen de contenedor descargada, con formato de tabla:

docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

IMAGE ID         REPOSITORY                TAG
<image-id>       <repository-path/name>    <tag-name>

Ejecución del contenedor con el comando docker-compose up

  • Reemplace los valores {ENDPOINT_URI} y {API_KEY} por el URI del punto de conexión del recurso y la clave de la página de recursos de Azure.

    Captura de pantalla de la página de claves y punto de conexión del portal de Azure.

  • Asegúrese de que el valor EULA esté establecido en accept.

  • Los valores EULA, Billing y ApiKey deben estar especificados; de lo contrario, el contenedor no se podrá iniciar.

Importante

Las claves se usan para acceder al recurso de Document Intelligence. No comparta sus claves. Almacénelas de forma segura, por ejemplo, con Azure Key Vault. También se recomienda regenerar estas claves periódicamente. Solo se necesita una clave para realizar una llamada API. Al volver a generar la primera clave, puede usar la segunda clave para seguir teniendo acceso al servicio.

A continuación se muestra un ejemplo de docker compose autocontenido para ejecutar el contenedor Diseño de Document Intelligence. Con docker compose, se usa un archivo YAML para configurar los servicios de la aplicación. A continuación, con el comando docker-compose up, se crean e inician todos los servicios de la configuración. Escriba los valores {FORM_RECOGNIZER_ENDPOINT_URI} y {FORM_RECOGNIZER_KEY} para la instancia de contenedor de diseño.

version: "3.9"
services:
  azure-form-recognizer-layout:
    container_name: azure-form-recognizer-layout
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-4.0
    environment:
      - EULA=accept
      - billing={FORM_RECOGNIZER_ENDPOINT_URI}
      - apiKey={FORM_RECOGNIZER_KEY}
    ports:
      - "5000:5000"
    networks:
      - ocrvnet
networks:
  ocrvnet:
    driver: bridge

Ahora, puede iniciar el servicio con el comando docker compose:

docker-compose up

Ejecución del contenedor con el comando docker-compose up

  • Reemplace los valores {ENDPOINT_URI} y {API_KEY} por el URI del punto de conexión del recurso y la clave de la página de recursos de Azure.

    Captura de pantalla de la página de claves y puntos de conexión del portal de Azure.

  • Asegúrese de que el valor EULA esté establecido en accept.

  • Los valores EULA, Billing y ApiKey deben estar especificados; de lo contrario, el contenedor no se podrá iniciar.

Importante

Las claves se usan para acceder al recurso de Document Intelligence. No comparta sus claves. Almacénelas de forma segura, por ejemplo, con Azure Key Vault. También se recomienda regenerar estas claves periódicamente. Solo se necesita una clave para realizar una llamada API. Al volver a generar la primera clave, puede usar la segunda clave para seguir teniendo acceso al servicio.

A continuación se muestra un ejemplo de docker compose autocontenido para ejecutar el contenedor Diseño de Document Intelligence. Con docker compose, se usa un archivo YAML para configurar los servicios de la aplicación. A continuación, con el comando docker-compose up, se crean e inician todos los servicios de la configuración. Escriba los valores {FORM_RECOGNIZER_ENDPOINT_URI} y {FORM_RECOGNIZER_KEY} para la instancia de contenedor de diseño.

version: "3.9"
services:
  azure-form-recognizer-layout:
    container_name: azure-form-recognizer-layout
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.1
    environment:
      - EULA=accept
      - billing={FORM_RECOGNIZER_ENDPOINT_URI}
      - apiKey={FORM_RECOGNIZER_KEY}
    ports:
      - "5000:5000"
    networks:
      - ocrvnet
networks:
  ocrvnet:
    driver: bridge

Ahora, puede iniciar el servicio con el comando docker compose:

docker-compose up

Cree un archivo de Docker Compose.

  1. Asigne a este archivo el nombre docker-compose.yml.

  2. A continuación se muestra un ejemplo de docker compose autocontenido para ejecutar en conjunto los contenedores de plantillas Diseño, Studio y Personalizado de Document Intelligence. Con docker compose, se usa un archivo YAML para configurar los servicios de la aplicación. A continuación, con el comando docker-compose up, se crean e inician todos los servicios de la configuración.

version: '3.3'
services:
  nginx:
    image: nginx:alpine
    container_name: reverseproxy
    depends_on:
      - layout
      - custom-template
    volumes:
      - ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf
    ports:
      - "5000:5000"
  layout:
    container_name: azure-cognitive-service-layout
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.0:latest
    environment:
      eula: accept
      apikey: ${FORM_RECOGNIZER_KEY}
      billing: ${FORM_RECOGNIZER_ENDPOINT_URI}
      Logging:Console:LogLevel:Default: Information
      SharedRootFolder: /share
      Mounts:Shared: /share
      Mounts:Output: /logs
    volumes:
      - type: bind
        source: ${SHARED_MOUNT_PATH}
        target: /share
      - type: bind
        source: ${OUTPUT_MOUNT_PATH}
        target: /logs
    expose:
      - "5000"

  custom-template:
    container_name: azure-cognitive-service-custom-template
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/custom-template-3.0:latest
    restart: always
    depends_on:
      - layout
    environment:
      AzureCognitiveServiceLayoutHost: http://azure-cognitive-service-layout:5000
      eula: accept
      apikey: ${FORM_RECOGNIZER_KEY}
      billing: ${FORM_RECOGNIZER_ENDPOINT_URI}
      Logging:Console:LogLevel:Default: Information
      SharedRootFolder: /share
      Mounts:Shared: /share
      Mounts:Output: /logs
    volumes:
      - type: bind
        source: ${SHARED_MOUNT_PATH}
        target: /share
      - type: bind
        source: ${OUTPUT_MOUNT_PATH}
        target: /logs
    expose:
      - "5000"

  studio:
    container_name: form-recognizer-studio
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/studio:3.0
    environment:
      ONPREM_LOCALFILE_BASEPATH: /onprem_folder
      STORAGE_DATABASE_CONNECTION_STRING: /onprem_db/Application.db
    volumes:
      - type: bind
        source: ${FILE_MOUNT_PATH} # path to your local folder
        target: /onprem_folder
      - type: bind
        source: ${DB_MOUNT_PATH} # path to your local folder
        target: /onprem_db
    ports:
      - "5001:5001"
    user: "1000:1000" # echo $(id -u):$(id -g)

Cree un archivo de Docker Compose.

  1. Asigne a este archivo el nombre docker-compose.yml.

  2. A continuación se muestra un ejemplo de docker compose autocontenido para ejecutar en conjunto los contenedores de plantillas Diseño, Studio y Personalizado de Document Intelligence. Con docker compose, se usa un archivo YAML para configurar los servicios de la aplicación. A continuación, con el comando docker-compose up, se crean e inician todos los servicios de la configuración.

version: '3.3'
services:
  nginx:
    image: nginx:alpine
    container_name: reverseproxy
    depends_on:
      - layout
      - custom-template
    volumes:
      - ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf
    ports:
      - "5000:5000"
  layout:
    container_name: azure-cognitive-service-layout
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout-3.1:latest
    environment:
      eula: accept
      apikey: ${FORM_RECOGNIZER_KEY}
      billing: ${FORM_RECOGNIZER_ENDPOINT_URI}
      Logging:Console:LogLevel:Default: Information
      SharedRootFolder: /share
      Mounts:Shared: /share
      Mounts:Output: /logs
    volumes:
      - type: bind
        source: ${SHARED_MOUNT_PATH}
        target: /share
      - type: bind
        source: ${OUTPUT_MOUNT_PATH}
        target: /logs
    expose:
      - "5000"

  custom-template:
    container_name: azure-cognitive-service-custom-template
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/custom-template-3.1:latest
    restart: always
    depends_on:
      - layout
    environment:
      AzureCognitiveServiceLayoutHost: http://azure-cognitive-service-layout:5000
      eula: accept
      apikey: ${FORM_RECOGNIZER_KEY}
      billing: ${FORM_RECOGNIZER_ENDPOINT_URI}
      Logging:Console:LogLevel:Default: Information
      SharedRootFolder: /share
      Mounts:Shared: /share
      Mounts:Output: /logs
    volumes:
      - type: bind
        source: ${SHARED_MOUNT_PATH}
        target: /share
      - type: bind
        source: ${OUTPUT_MOUNT_PATH}
        target: /logs
    expose:
      - "5000"

  studio:
    container_name: form-recognizer-studio
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/studio:3.1
    environment:
      ONPREM_LOCALFILE_BASEPATH: /onprem_folder
      STORAGE_DATABASE_CONNECTION_STRING: /onprem_db/Application.db
    volumes:
      - type: bind
        source: ${FILE_MOUNT_PATH} # path to your local folder
        target: /onprem_folder
      - type: bind
        source: ${DB_MOUNT_PATH} # path to your local folder
        target: /onprem_db
    ports:
      - "5001:5001"
    user: "1000:1000" # echo $(id -u):$(id -g)

El contenedor de plantillas personalizadas y el contenedor de diseño pueden usar colas de Azure Storage o colas en memoria. Las variables de entorno Storage:ObjectStore:AzureBlob:ConnectionString y queue:azure:connectionstring solo deben establecerse si usa colas de Azure Storage. Cuando se ejecute localmente, elimine estas variables.

Compruebe que el servicio se esté ejecutando.

Para asegurarse de que el servicio está en funcionamiento. Ejecute estos comandos en un shell de Ubuntu.

$cd <folder containing the docker-compose file>

$source .env

$docker-compose up

Los contenedores de plantillas personalizadas requieren algunas configuraciones diferentes y admiten otras configuraciones opcionales.

Configuración Obligatorio Descripción
EULA Ejemplo de aceptación de licencia: Eula=accept
Facturación Identificador URI del punto de conexión de facturación del recurso FR
ApiKey Clave de punto de conexión del recurso FR
Queue:Azure:ConnectionString No Cadena de conexión de la cola de Azure
Storage:ObjectStore:AzureBlob:ConnectionString No Cadena de conexión de blobs de Azure
HealthCheck:MemoryUpperboundInMB No Umbral de memoria para notificar un estado incorrecto a la ejecución. Valor predeterminado: igual que la memoria recomendada
StorageTimeToLiveInMinutes No Duración de TTL para quitar todos los archivos intermedios y finales. Valor predeterminado: dos días, TTL puede establecer entre cinco minutos y siete días
Tarea:TiempoMáximoDeEjecuciónEnMinutos No Tiempo máximo de ejecución para tratar la solicitud como tiempo de espera. Valor predeterminado: 60 minutos
HTTP_PROXY_BYPASS_URLS No Especificar direcciones URL para omitir el proxy. Ejemplo: HTTP_PROXY_BYPASS_URLS = abc.com, xyz.com
AzureCognitiveServiceReadHost (solo contenedores Recibo, Documento de identificación) Especifique el identificador URI del contenedor de lectura Ejemplo:AzureCognitiveServiceReadHost=http://onprem-frread:5000
AzureCognitiveServiceLayoutHost (solo contenedores Documento, Factura) Especifique el identificador URI del contenedor de diseño. Ejemplo: AzureCognitiveServiceLayoutHost=http://onprem-frlayout:5000

Uso de Document Intelligence Studio para entrenar un modelo

  • Reúna un conjunto de al menos cinco formularios del mismo tipo. Use estos datos para entrenar el modelo y probar un formulario. Puede usar un conjunto de datos de ejemplo (descargue y extraiga sample_data.zip).

  • Una vez que pueda confirmar que los contenedores se están ejecutando, abra un explorador y navegue hasta el punto de conexión en el que ha implementado los contenedores. Si esta implementación es tu máquina local, el punto de conexión es [http://localhost:5001](http://localhost:5001).

  • Seleccione el icono del modelo de extracción personalizado.

  • Seleccione la opción Create project.

  • Proporcione un nombre de proyecto y, opcionalmente, una descripción

  • En el paso "configurar el recurso", proporcione el punto de conexión al modelo de plantilla personalizado. Si implementaste los contenedores en la máquina local, usa esta URL [http://localhost:5000](http://localhost:5000).

  • Proporcione una subcarpeta para la ubicación de los datos de entrenamiento dentro de la carpeta files.

  • Por último, cree el proyecto

Ahora debería tener un proyecto creado, listo para el etiquetado. Cargue los datos de entrenamiento y empiece a etiquetar. Si no se conoce muy bien el etiquetado, consulte Compilación y entrenamiento de un modelo personalizado.

Uso de la API para entrenar

Si planea llamar a las APIs (interfaz de programación de aplicaciones) directamente para entrenar un modelo, la API de entrenamiento del modelo de plantilla personalizada requiere un archivo ZIP codificado en base64 que contenga el contenido de su proyecto de etiquetado. Puede omitir los archivos PDF o de imagen y enviar solo los archivos JSON.

Una vez que tenga el conjunto de datos etiquetado y los archivos *.ocr.json, *.labels.json y fields.json agregados a un ZIP, use los comandos de PowerShell para generar la cadena codificada en base64.

$bytes = [System.IO.File]::ReadAllBytes("<your_zip_file>.zip")
$b64String = [System.Convert]::ToBase64String($bytes, [System.Base64FormattingOptions]::None)

Use la API del modelo de compilación para publicar la solicitud.


  POST http://localhost:5000/formrecognizer/documentModels:build?api-version=2023-07-31

  {
      "modelId": "mymodel",
      "description": "test model",
      "buildMode": "template",

      "base64Source": "<Your base64 encoded string>",
      "tags": {
         "additionalProp1": "string",
         "additionalProp2": "string",
         "additionalProp3": "string"
       }
  }

Valide que el servicio se está ejecutando.

Hay varias maneras de comprobar que el contenedor se está ejecutando:

  • El contenedor proporciona una página principal en \ como validación visual de que se está ejecutando.

  • Puede abrir el explorador web que prefiera e ir a la dirección IP externa y el puerto expuesto del contenedor en cuestión. Use las direcciones URL de solicitud enumeradas para validar que el contenedor se está ejecutando. Las direcciones URL de solicitud de ejemplo que se enumeran son http://localhost:5000, pero el contenedor específico puede variar. Tenga en cuenta que está accediendo a la dirección IP externa y al puerto expuesto de su contenedor.

    URL de la solicitud Propósito
    http://localhost:5000/ El contenedor proporciona una página principal.
    http://localhost:5000/ready Realizado con GET, esta solicitud proporciona una comprobación de que el contenedor está listo para aceptar una consulta sobre el modelo. Esta solicitud se puede utilizar para los sondeos de actividad y disponibilidad de Kubernetes.
    http://localhost:5000/status Solicitado con GET, esta solicitud comprueba si el valor de api-key usado para iniciar el contenedor es válido sin generar una consulta de punto de conexión. Esta solicitud se puede usar con los sondeos de ejecución y preparación de Kubernetes.
    http://localhost:5000/swagger El contenedor cuenta con un completo conjunto de documentación sobre los puntos de conexión y una característica de prueba. Esta característica le permite especificar la configuración en un formulario HTML basado en web y realizar la consulta sin necesidad de escribir código. Después de que la consulta devuelve resultados, se proporciona un ejemplo del comando CURL para mostrar los encabezados HTTP y el formato de cuerpo requeridos.

Captura de pantalla de página principal de los contenedores de Azure.

Detener los contenedores

Para detener los contenedores, use el comando siguiente:

docker-compose down

Facturación

Los contenedores de Document Intelligence envían información de facturación a Azure mediante un recurso de Document Intelligence en la cuenta de Azure.

Las consultas en el contenedor se facturan al nivel de precios del recurso de Azure que se usa para la API Key. La facturación se calcula por cada instancia de contenedor que se utilice para procesar los documentos e imágenes.

Si recibe el siguiente error: El contenedor no está en un estado válido. Error de validación de la suscripción con el estado "OutOfQuota" La clave de API está fuera de cuota. Es un indicador de que los contenedores no se están comunicando con el punto de conexión de facturación.

Conexión con Azure

El contenedor necesita los valores del argumento de facturación para funcionar. Estos valores permiten al contenedor conectarse al punto de conexión de facturación. El contenedor informa sobre el uso cada 10 a 15 minutos. Si el contenedor no se conecta a Azure en la ventana de tiempo permitida, continuará ejecutándose pero no atenderá las consultas hasta que se restaure el punto de conexión de facturación. Se intenta 10 veces la conexión en el mismo intervalo de tiempo de 10 a 15 minutos. Si no se puede conectar con el punto de conexión de facturación en esos 10 intentos, el contenedor deja de atender solicitudes. Consulte Preguntas más frecuentes acerca de los contenedores de Azure AI para obtener un ejemplo de la información que se envía a Microsoft para la facturación.

Argumentos de facturación

El comando docker-compose up inicia el contenedor cuando se especifiquen las tres opciones siguientes con valores válidos:

Opción Descripción
ApiKey La clave del recurso de servicios de Azure AI que se usa para realizar un seguimiento de la información de facturación.
El valor de esta opción debe establecerse en una clave del recurso aprovisionado especificado en Billing.
Billing El punto de conexión del recurso de servicios de Azure AI que se usa para realizar el seguimiento de la información de facturación.
El valor de esta opción debe establecerse en el URI del punto de conexión de un recurso aprovisionado de Azure.
Eula Indica que ha aceptado la licencia del contenedor.
El valor de esta opción debe establecerse en accept.

Para obtener más información acerca de estas opciones, consulte Configure containers (Configuración de contenedores).

Resumen

Eso es todo. En este artículo, ha aprendido los conceptos y el flujo de trabajo para la descarga, instalación y ejecución de contenedores de Document Intelligence. En resumen:

  • Document Intelligence proporciona siete contenedores de Linux para Docker.
  • Las imágenes de contenedor se descargan desde mcr.
  • Las imágenes de contenedores se ejecutan en Docker.
  • La información de facturación debe especificarse al crear una instancia de contenedor.

Importante

Los contenedores de Azure AI no tienen licencia para ejecutarse sin conectarse a Azure para la medición. Los clientes tienen que habilitar los contenedores para comunicar en todo momento la información de facturación con el servicio de medición. Los contenedores de Azure AI no envían datos de cliente (por ejemplo, la imagen o el texto que se está analizando) a Microsoft.

Pasos siguientes