Configurar contêineres de Document Intelligence

O suporte para contêineres está atualmente disponível com a versão 2022-08-31 (GA) Document Intelligence para todos os modelos e 2023-07-31 (GA) para os modelos de Documento de Leitura, Layout, Fatura, Recibo e ID:

✔️ Consulte Configurar contêineres do Document Intelligence v3.0 para obter a documentação de contêiner suportada.

Este conteúdo aplica-se a: marca de verificação v3.0 (GA) marca de verificação v3.1 (GA)

Com os contêineres de Document Intelligence, você pode criar uma arquitetura de aplicativo otimizada para aproveitar os recursos robustos da nuvem e a localidade de borda. Os contêineres fornecem um ambiente minimalista e isolado que pode ser facilmente implantado no local e na nuvem. Neste artigo, mostramos como configurar o ambiente de tempo de execução do contêiner do Document Intelligence usando os argumentos de docker compose comando. Os recursos de Document Intelligence são suportados por sete contêineres de recursos de Document Intelligence — Leitura, Layout, Cartão de Visita, Documento de ID, Recibo, Fatura, Personalizado. Esses contêineres têm configurações obrigatórias e opcionais. Para obter alguns exemplos, consulte a seção Exemplo docker-compose.yml arquivo .

Definições de configuração

Cada contêiner tem as seguintes definições de configuração:

Necessário Definição Purpose
Sim Chave Rastreia informações de faturamento.
Sim Faturação Especifica o URI do ponto de extremidade do recurso de serviço no Azure. Para obter mais informações, consulte Faturamento. Para obter mais informações e uma lista completa de pontos de extremidade regionais, consulte Nomes de subdomínio personalizados para serviços de IA do Azure.
Sim Eula Indica que você aceitou a licença para o contêiner.
Não ApplicationInsights Permite adicionar suporte ao cliente do Azure Application Insights para seu contêiner.
Não Fluente Grava dados de log e, opcionalmente, métricos em um servidor Fluentd.
Não HTTP Proxy Configura um proxy HTTP para fazer solicitações de saída.
Não Registo Fornece suporte de log ASP.NET Core para seu contêiner.

Importante

As Keyconfigurações , Billing, e são Eula usadas juntas. Você deve fornecer valores válidos para todas as três configurações; caso contrário, seus contêineres não serão iniciados. Para obter mais informações sobre como usar essas definições de configuração para instanciar um contêiner, consulte Faturamento.

Definição de configuração de chave e faturamento

A Key configuração especifica a chave de recurso do Azure que é usada para controlar as informações de cobrança do contêiner. O valor da chave deve ser uma chave válida para o recurso especificado Billing na seção "Definição de configuração de faturamento".

A Billing configuração especifica o URI do ponto de extremidade do recurso no Azure que é usado para medir as informações de cobrança do contêiner. O valor para essa definição de configuração deve ser um URI de ponto de extremidade válido para um recurso no Azure. O contêiner relata o uso a cada 10 a 15 minutos.

Você pode encontrar essas configurações no portal do Azure na página Chaves e Ponto de Extremidade .

Captura de ecrã das chaves do portal do Azure e da página de ponto de extremidade.

EULA Cenário

A Eula configuração indica que você aceitou a licença para o contêiner. Você deve especificar um valor para essa definição de configuração e o valor deve ser definido como accept.

Necessário Name Tipo de dados Description
Sim Eula String Aceitação da licença

Exemplo:
Eula=accept

Os contêineres de serviços de IA do Azure são licenciados sob seu contrato que rege seu uso do Azure. Se não tiver um contrato existente que regule a sua utilização do Azure, concorda que o seu contrato que rege a utilização do Azure é o Contrato de Subscrição Online da Microsoft, que incorpora os Termos dos Serviços Online. Para visualizações, você também concorda com os Termos de Uso Suplementares para Visualizações do Microsoft Azure. Ao usar o contêiner, você concorda com estes termos.

Configuração do ApplicationInsights

A ApplicationInsights configuração permite que você adicione suporte à telemetria do Azure Application Insights ao seu contêiner. O Application Insights fornece monitoramento detalhado do seu contêiner. Você pode facilmente monitorar seu contêiner quanto à disponibilidade, desempenho e uso. Você também pode identificar e diagnosticar rapidamente erros em seu contêiner.

A tabela a seguir descreve as definições de configuração suportadas ApplicationInsights na seção .

Necessário Name Tipo de dados Description
Não InstrumentationKey String A chave de instrumentação da instância do Application Insights para a qual os dados de telemetria do contêiner são enviados. Para obter mais informações, consulte Application Insights for ASP.NET Core.

Exemplo:
InstrumentationKey=123456789

Configurações fluentes

Fluentd é um coletor de dados de código aberto para registro em log unificado. As Fluentd configurações gerenciam a conexão do contêiner com um servidor Fluentd . O contêiner inclui um provedor de registro em log Fluentd, que permite que seu contêiner grave logs e, opcionalmente, dados métricos em um servidor Fluentd.

A tabela a seguir descreve as definições de configuração suportadas Fluentd na seção .

Name Tipo de dados Description
Host String O endereço IP ou nome de host DNS do servidor Fluentd.
Port Número inteiro A porta do servidor Fluentd.
O valor padrão é 24224.
HeartbeatMs Número inteiro O intervalo de batimento cardíaco, em milissegundos. Se nenhum tráfego de eventos tiver sido enviado antes que esse intervalo expire, uma pulsação será enviada para o servidor Fluentd. O valor padrão é 60000 milissegundos (1 minuto).
SendBufferSize Número inteiro O espaço de buffer de rede, em bytes, alocado para operações de envio. O valor padrão é 32768 bytes (32 kilobytes).
TlsConnectionEstablishmentTimeoutMs Número inteiro O tempo limite, em milissegundos, para estabelecer uma conexão SSL/TLS com o servidor Fluentd. O valor padrão é 10000 milissegundos (10 segundos).
Se UseTLS estiver definido como false, esse valor será ignorado.
UseTLS Boolean Indica se o contêiner deve usar SSL/TLS para se comunicar com o servidor Fluentd. O valor predefinido é false.

Configurações de credenciais de proxy HTTP

Se você precisar configurar um proxy HTTP para fazer solicitações de saída, use estes dois argumentos:

Name Tipo de dados Description
HTTP_PROXY string O proxy a ser usado, por exemplo, http://proxy:8888
<proxy-url>
HTTP_PROXY_CREDS string Quaisquer credenciais necessárias para autenticar no proxy, por exemplo, username:password. Esse valor deve estar em minúsculas.
<proxy-user> string O usuário para o proxy.
<proxy-password> string A senha associada ao <proxy-user> proxy.
docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
--mount type=bind,src=/home/azureuser/output,target=/output \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
HTTP_PROXY=<proxy-url> \
HTTP_PROXY_CREDS=<proxy-user>:<proxy-password> \

Definições de registo

As Logging configurações gerenciam ASP.NET suporte de log principal para seu contêiner. Você pode usar as mesmas definições de configuração e valores para seu contêiner que você usa para um aplicativo ASP.NET Core.

Os seguintes provedores de log são suportados pelo contêiner:

Provider Propósito
Consola O provedor de log ASP.NET Core Console . Todas as definições de configuração do ASP.NET Core e os valores padrão para este provedor de log são suportados.
Debug O provedor de log ASP.NET Core Debug . Todas as definições de configuração do ASP.NET Core e os valores padrão para este provedor de log são suportados.
Disk O provedor de log JSON. Esse provedor de log grava dados de log na montagem de saída.

Este comando container armazena informações de log no formato JSON para a montagem de saída:

docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
--mount type=bind,src=/home/azureuser/output,target=/output \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
Logging:Disk:Format=json \
Mounts:Output=/output

Este comando container mostra informações de depuração, prefixadas com dbug, enquanto o contêiner está em execução:

docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
Logging:Console:LogLevel:Default=Debug

Registo de discos

O Disk provedor de log suporta as seguintes definições de configuração:

Name Tipo de dados Description
Format String O formato de saída para arquivos de log.
Nota: Esse valor deve ser definido para json habilitar o provedor de log. Se esse valor for especificado sem especificar também uma montagem de saída ao instanciar um contêiner, ocorrerá um erro.
MaxFileSize Número inteiro O tamanho máximo, em megabytes (MB), de um arquivo de log. Quando o tamanho do arquivo de log atual atende ou excede esse valor, um novo arquivo de log é iniciado pelo provedor de log. Se -1 for especificado, o tamanho do arquivo de log será limitado apenas pelo tamanho máximo do arquivo, se houver, para a montagem de saída. O valor predefinido é 1.

Para obter mais informações sobre como configurar ASP.NET suporte ao log principal, consulte Configuração do arquivo de configurações.

Configurações de volume

Use volumes para ler e gravar dados de e para o contêiner. Os volumes são os preferidos para dados persistentes gerados e usados por contêineres do Docker. Você pode especificar uma montagem de entrada ou uma montagem de saída incluindo a volumes opção e especificando type (bind), source (caminho para a pasta) e target (parâmetro de caminho de arquivo).

O contêiner Document Intelligence requer um volume de entrada e um volume de saída. O volume de entrada pode ser somente leitura (ro) e é necessário para acessar os dados usados para treinamento e pontuação. O volume de saída deve ser gravável e você usá-lo para armazenar os modelos e dados temporários.

A sintaxe exata do local do volume do host varia dependendo do sistema operacional do host. Além disso, o local do volume do computador host pode não estar acessível devido a um conflito entre as permissões da conta de serviço do Docker e as permissões do local de montagem do host.

Exemplo docker-compose.yml arquivo

O método de composição docker é construído a partir de três etapas:

  1. Crie um Dockerfile.
  2. Defina os serviços em um docker-compose.yml para que possam ser executados juntos em um ambiente isolado.
  3. Execute docker-compose up para iniciar e executar seus serviços.

Exemplo de contêiner único

Neste exemplo, insira os valores {FORM_RECOGNIZER_ENDPOINT_URI} e {FORM_RECOGNIZER_KEY} para sua instância de contêiner Layout.

Contêiner de layout

version: "3.9"
services:
  azure-cognitive-service-layout:
    container_name: azure-cognitive-service-layout
    image: mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout
    environment:
      - EULA=accept
      - billing={FORM_RECOGNIZER_ENDPOINT_URI}
      - key={FORM_RECOGNIZER_KEY}

    ports:
      - "5000"
    networks:
      - ocrvnet
networks:
  ocrvnet:
    driver: bridge

Exemplo de vários contêineres

Recipientes de recebimento e leitura de OCR

Neste exemplo, insira os valores {FORM_RECOGNIZER_ENDPOINT_URI} e {FORM_RECOGNIZER_KEY} para o contêiner Recibo e os valores {COMPUTER_VISION_ENDPOINT_URI} e {COMPUTER_VISION_KEY} para o contêiner Azure AI Vision Read.

version: "3"
services:
  azure-cognitive-service-receipt:
    container_name: azure-cognitive-service-receipt
    image: cognitiveservicespreview.azurecr.io/microsoft/cognitive-services-form-recognizer-receipt:2.1
    environment:
      - EULA=accept
      - billing={FORM_RECOGNIZER_ENDPOINT_URI}
      - key={FORM_RECOGNIZER_KEY}
      - AzureCognitiveServiceReadHost=http://azure-cognitive-service-read:5000
    ports:
      - "5000:5050"
    networks:
      - ocrvnet
  azure-cognitive-service-read:
    container_name: azure-cognitive-service-read
    image: mcr.microsoft.com/azure-cognitive-services/vision/read:3.2
    environment:
      - EULA=accept
      - billing={COMPUTER_VISION_ENDPOINT_URI}
      - key={COMPUTER_VISION_KEY}
    networks:
      - ocrvnet

networks:
  ocrvnet:
    driver: bridge

Próximos passos