Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este contenido se aplica a:v3.0 (GA)
v3.1 (GA)
v4.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:
- API de REST
v3.0: 2022-08-31 (GA)
- API de REST
v3.1: 2023-07-31 (GA)
- API de REST
v4.0: 2024-11-30 (GA)
- Bibliotecas cliente destinadas a
REST API v3.0: 2022-08-31 (GA)
- Bibliotecas cliente destinadas a
REST API v3.1: 2023-07-31 (GA)
- Bibliotecas cliente destinadas a
REST API v4.0: 2024-11-30 (GA)
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 |
|
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.
|
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:
- Azure Kubernetes Service.
- Azure Container Instances.
- Un clúster de Kubernetes implementado en Azure Stack. Para obtener más información, consulte Implementación de Kubernetes en Azure Stack.
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 |
Memoria y núcleos de CPU recomendados
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 comandodocker compose
odocker 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.
Asegúrese de que el valor
EULA
esté establecido en accept.Los valores
EULA
,Billing
yApiKey
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.
- Diseño
- Leer
- Documento general
- Factura
- Recibo
- Documento de identificación
- Tarjeta de presentación
- Personalizada
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.
Asegúrese de que el valor
EULA
esté establecido en accept.Los valores
EULA
,Billing
yApiKey
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.
- Diseño
- Leer
- Documento general
- Factura
- Recibo
- Documento de identificación
- Tarjeta de presentación
- Personalizada
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.
Asigne a este archivo el nombre docker-compose.yml.
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. Condocker compose
, se usa un archivo YAML para configurar los servicios de la aplicación. A continuación, con el comandodocker-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.
Asigne a este archivo el nombre docker-compose.yml.
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. Condocker compose
, se usa un archivo YAML para configurar los servicios de la aplicación. A continuación, con el comandodocker-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 |
Sí | Ejemplo de aceptación de licencia: Eula=accept |
Facturación | Sí | Identificador URI del punto de conexión de facturación del recurso FR |
ApiKey | Sí | 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) | Sí | Especifique el identificador URI del contenedor de lectura Ejemplo:AzureCognitiveServiceReadHost=http://onprem-frread:5000 |
AzureCognitiveServiceLayoutHost (solo contenedores Documento, Factura) | Sí | 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.
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.