Partilhar via


Instalar e executar contentores

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

O Azure AI Document Intelligence é um serviço de IA do Azure que lhe permite criar software de processamento automatizado de dados utilizando tecnologia de aprendizagem automática. O Document Intelligence permite-lhe identificar e extrair texto, pares chave/valor, marcas de seleção, dados de tabelas e muito mais dos seus documentos. Os resultados são entregues como dados estruturados que .. /inclui as relações no arquivo original. Os contêineres processam apenas os dados fornecidos a eles e utilizam exclusivamente os recursos que têm permissão para acessar. Os contêineres não podem processar dados de outras regiões.

Neste artigo, você pode aprender como baixar, instalar e executar contêineres de Document Intelligence. Os contêineres permitem que você execute o serviço de Inteligência de Documentos em seu próprio ambiente. Os contentores são ótimos para requisitos específicos de governação de dados e segurança.

  • O modelo Read, Layout é suportado pelos contêineres do Document Intelligence v4.0.

  • Os modelos de Leitura, Layout, Documento de ID, Recibo e Fatura são suportados pelos contêineres do Document Intelligence v3.1.

  • Os modelos Leitura, Layout, Documento Geral, Cartão de Visita e Personalizado são suportados pelos contentores v3.0 do Document Intelligence.

Suporte de versões

O suporte para contentores está atualmente disponível com a versão v3.0: 2022-08-31 (GA) do Document Intelligence para todos os modelos, v3.1 2023-07-31 (GA) para os modelos de Leitura, Layout, Documento de Identificação, Recibo e Fatura, e v4.0 2024-11-30 (GA) para Leitura e Layout:

Pré-requisitos

Para começar, você precisa de uma conta ativa do Azure. Se não tiver uma, poderá criar uma conta gratuita.

Você também precisa do seguinte para usar contêineres de Document Intelligence:

Necessário Propósito
Familiaridade com o Docker Você deve ter uma compreensão básica dos conceitos do Docker, como registros, repositórios, contêineres e imagens de contêiner, bem como conhecimento de terminologia básica dockere comandos.
Mecanismo do Docker instalado
  • Você precisa do Docker Engine instalado em um computador host. O Docker oferece pacotes que configuram o ambiente do Docker no macOS, no Windows e no Linux. Para um manual de noções básicas do Docker e do contentor, veja a descrição geral do Docker.
  • O Docker deve ser configurado para permitir que os contêineres se conectem e enviem dados de cobrança para o Azure.
  • No Windows, o Docker também deve ser configurado para suportar contêineres Linux .
Recurso de Inteligência Documental Um recurso de inteligência documental do Azure AI de serviço único ou um recurso multisserviço no portal do Azure. Para usar os contêineres, você deve ter a chave associada e o URI do ponto de extremidade. Ambos os valores estão disponíveis na página Document Intelligence Keys and Endpoint do portal do Azure:
  • {FORM_RECOGNIZER_KEY}: uma das duas chaves de recurso disponíveis.
  • {FORM_RECOGNIZER_ENDPOINT_URI}: o endpoint do recurso usado para rastrear informações de cobrança.
Opcional Propósito
CLI do Azure (interface de linha de comando) A CLI do Azure permite que você use um conjunto de comandos online para criar e gerenciar recursos do Azure. Ele está disponível para instalação em ambientes Windows, macOS e Linux e pode ser executado em um contêiner do Docker e no Azure Cloud Shell.

Requisitos do computador host

O host é um computador baseado em x64 que executa o contêiner do Docker. Pode ser um computador em suas instalações ou um serviço de hospedagem do Docker no Azure, como:

Nota

O contêiner Studio não pode ser implantado e executado no Serviço Kubernetes do Azure. O contêiner Studio só é suportado para execução em máquinas locais.

Requisitos e recomendações de contêineres

Contentores de suporte necessários

A tabela a seguir lista um ou mais contêineres de suporte para cada contêiner de Document Intelligence baixado. Para obter mais informações, consulte a seção Faturamento .

Contentor de funcionalidades Contentores de suporte
Ler Não obrigatório
Esquema Não obrigatório
Cartão de visita Ler
Documento Geral Esquema
Fatura Esquema
Recibo Leitura ou Layout
Documento de identificação Ler
Modelo personalizado Esquema

Nota

Os valores mínimos e recomendados são baseados nos limites do Docker e não nos recursos da máquina host.

Contentores de Inteligência Documental
Contentor Mínimo Recomendado
Read 8 núcleos, 10 GB de memória 8 núcleos, 24 GB de memória
Layout 8 núcleos, 16 GB de memória 8 núcleos, 24 GB de memória
Business Card 8 núcleos, 16 GB de memória 8 núcleos, 24 GB de memória
General Document 8 núcleos, 12 GB de memória 8 núcleos, 24 GB de memória
ID Document 8 núcleos, 8 GB de memória 8 núcleos, 24 GB de memória
Invoice 8 núcleos, 16 GB de memória 8 núcleos, 24 GB de memória
Receipt 8 núcleos, 11 GB de memória 8 núcleos, 24 GB de memória
Custom Template 8 núcleos, 16 GB de memória 8 núcleos, 24 GB de memória
  • Cada núcleo deve ter pelo menos 2,6 gigahertz (GHz) ou mais rápido.
  • O núcleo e a memória correspondem às configurações --cpus e --memory, que são usadas como parte do comando docker compose ou docker run.

Gorjeta

Você pode usar o comando docker images para listar as imagens de contêiner baixadas. Por exemplo, o comando a seguir lista o ID, o repositório e a tag de cada imagem de contêiner baixada, formatada como uma tabela:

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

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

Execute o contêiner com o comando docker-compose up

  • Substitua os valores {ENDPOINT_URI} e {API_KEY} pelo URI do ponto de extremidade do recurso e pela chave da página de recursos do Azure.

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

  • Certifique-se de que o EULA valor está definido para aceitar.

  • Os valores EULA, Billing e ApiKey devem ser especificados; caso contrário, o recipiente não pode ser iniciado.

Importante

As chaves são usadas para acessar seu recurso de Document Intelligence. Não partilhe as suas chaves. Armazene-os de forma segura, por exemplo, usando o Azure Key Vault. Recomendamos também que regenere estas chaves regularmente. Só é necessária uma chave para fazer uma chamada à API. Ao gerar novamente a primeira chave, pode utilizar a segunda chave para o acesso continuado ao serviço.

O exemplo de código a seguir é um exemplo autónomo docker compose para correr o contêiner Document Intelligence Layout. Com docker compose, você usa um ficheiro YAML para configurar os serviços da sua aplicação. Em seguida, com docker-compose up o comando, você cria e inicia todos os serviços da sua configuração. Insira os valores {FORM_RECOGNIZER_ENDPOINT_URI} e {FORM_RECOGNIZER_KEY} para sua instância do contêiner Layout.

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

Agora, você pode iniciar o serviço com o comando docker compose:

docker-compose up

Execute o contêiner com o comando docker-compose up

  • Substitua os valores {ENDPOINT_URI} e {API_KEY} pelo URI do ponto de extremidade do recurso e pela chave da página de recursos do Azure.

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

  • Certifique-se de que o EULA valor está definido para aceitar.

  • Os valores EULA, Billing e ApiKey devem ser especificados; caso contrário, o recipiente não pode ser iniciado.

Importante

As chaves são usadas para acessar seu recurso de Document Intelligence. Não partilhe as suas chaves. Armazene-os de forma segura, por exemplo, usando o Azure Key Vault. Recomendamos também que regenere estas chaves regularmente. Só é necessária uma chave para fazer uma chamada à API. Ao gerar novamente a primeira chave, pode utilizar a segunda chave para o acesso continuado ao serviço.

O exemplo de código a seguir é um exemplo autónomo docker compose para correr o contêiner Document Intelligence Layout. Com docker compose, você usa um ficheiro YAML para configurar os serviços da sua aplicação. Em seguida, com docker-compose up o comando, você cria e inicia todos os serviços da sua configuração. Insira os valores {FORM_RECOGNIZER_ENDPOINT_URI} e {FORM_RECOGNIZER_KEY} para sua instância do contêiner Layout.

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

Agora, você pode iniciar o serviço com o comando docker compose:

docker-compose up

Criar um ficheiro docker-compose

  1. Nomeie este arquivo docker-compose.yml

  2. O exemplo de código a seguir é um exemplo independente docker compose para executar contêineres de modelos Document Intelligence Layout, Studio e Personalizado em conjunto. Com docker compose, você usa um ficheiro YAML para configurar os serviços da sua aplicação. Em seguida, com docker-compose up o comando, você cria e inicia todos os serviços da sua configuração.

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)

Criar um ficheiro docker-compose

  1. Nomeie este arquivo docker-compose.yml

  2. O exemplo de código a seguir é um exemplo independente docker compose para executar contêineres de modelos Document Intelligence Layout, Studio e Personalizado em conjunto. Com docker compose, você usa um ficheiro YAML para configurar os serviços da sua aplicação. Em seguida, com docker-compose up o comando, você cria e inicia todos os serviços da sua configuração.

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)

O contentor de modelo personalizado e o contentor de Layout podem usar filas de Armazenamento do Azure ou filas em memória. As variáveis de ambiente Storage:ObjectStore:AzureBlob:ConnectionString e queue:azure:connectionstring só precisam ser definidas se estiveres a usar filas de Armazenamento do Azure. Ao executar localmente, exclua essas variáveis.

Verifique se o serviço está em execução

Para garantir que o serviço está ativo e a funcionar. Execute esses comandos em um shell do Ubuntu.

$cd <folder containing the docker-compose file>

$source .env

$docker-compose up

Os contêineres de modelo personalizados exigem algumas configurações diferentes e suportam outras configurações opcionais.

Configuração Necessário Descrição
EULA Sim Exemplo de aceitação de licença: Eula=accept
Faturação Sim URI do ponto de extremidade de faturamento do recurso FR
ApiKey Sim A chave do ponto final do recurso FR
Fila:Azure:Cadeia de Conexão Não Cadeia de conexão da Fila do Azure
Storage:ObjectStore:AzureBlob:ConnectionString Não Cadeia de conexão do Azure Blob
HealthCheck:LimiteSuperiorDeMemóriaEmMB Não Limiar de memória para indicar estado não saudável à aptidão. Padrão: o mesmo que a memória recomendada
TempoDeArmazenamentoParaViverEmMinutos Não TTL duração para remover todos os ficheiros intermédios e finais. Padrão: Dois dias, TTL pode definir entre cinco minutos a sete dias
Tarefa: DuraçãoMáximaEmMinutos Não Tempo máximo de execução para tratar a solicitação como tempo limite. Padrão: 60 minutos
HTTP_PROXY_BYPASS_URLS (URLs de bypass de proxy HTTP) Não Especificar URLs para ignorar proxy Exemplo: HTTP_PROXY_BYPASS_URLS = abc.com, xyz.com
AzureCognitiveServiceReadHost (recibo, apenas contentores IdDocument) Sim Especificar uri de contêiner de leitura Exemplo:AzureCognitiveServiceReadHost=http://onprem-frread:5000
AzureCognitiveServiceLayoutHost (somente documento, contêineres de fatura) Sim Especificar a URI de contêiner de layout. Exemplo: AzureCognitiveServiceLayoutHost=http://onprem-frlayout:5000

Usar o Document Intelligence Studio para treinar um modelo

  • Reúna um conjunto de pelo menos cinco formas do mesmo tipo. Use esses dados para treinar o modelo e testar um formulário. Você pode usar um conjunto de dados de exemplo (baixar e extrair sample_data.zip).

  • Depois de confirmar que os contêineres estão em execução, abra um navegador e navegue até o ponto de extremidade onde você implantou os contêineres. Se essa implantação for sua máquina local, o ponto de extremidade será [http://localhost:5001](http://localhost:5001).

  • Selecione o ícone do modelo de extração personalizado.

  • Selecione a Create project opção.

  • Forneça um nome de projeto e, opcionalmente, uma descrição

  • Na etapa "configurar o seu recurso", forneça o ponto de acesso para o seu modelo personalizado. Se você implantou os contêineres em sua máquina local, use esta URL [http://localhost:5000](http://localhost:5000).

  • Forneça uma subpasta para onde seus dados de treinamento estão localizados dentro da pasta de arquivos.

  • Finalmente, crie o projeto

Agora você deve ter um projeto criado, pronto para rotulagem. Envie os seus dados de treino e comece a etiquetar. Se você é novo em rotulagem, consulte Criar e treinar um modelo personalizado.

Usando a API para treinar

Caso planeie chamar as APIs diretamente para treinar um modelo, a API de treino de modelo personalizado exige um arquivo zip codificado em base64 com os conteúdos do seu projeto de rotulagem. Você pode omitir os arquivos PDF ou de imagem e enviar apenas os arquivos JSON.

Depois de ter o seu conjunto de dados rotulado e os ficheiros *.ocr.json, *.labels.json e fields.json adicionados a um arquivo zip, use os comandos do PowerShell para gerar a string codificada em base64.

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

Use a API do modelo de compilação para postar a solicitação.


  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"
       }
  }

Validar se o serviço está em execução

Há várias maneiras de validar se o contêiner está em execução:

  • O contêiner fornece uma página inicial em \ como uma validação visual de que o contêiner está a ser executado.

  • Você pode abrir seu navegador favorito e navegar até o endereço IP externo e a porta exposta do contêiner em questão. Use as URLs de solicitação listadas para validar que o contêiner está em execução. Os URLs de solicitação de exemplo listados são http://localhost:5000, mas seu contêiner específico pode variar. Lembra-te de que estás a navegar para o endereço IP externo e para a porta exposta do teu contentor.

    URL do Pedido Propósito
    http:// localhost:5000/ O contentor fornece uma home page.
    http:// localhost:5000/ready Solicitada com GET, essa solicitação fornece uma verificação de que o contêiner está pronto para aceitar uma consulta no modelo. Essa solicitação pode ser usada para sondas de vivacidade e prontidão do Kubernetes.
    http:// localhost:5000/status Solicitada com GET, esta solicitação verifica se a chave de API usada para iniciar o contêiner é válida sem causar uma consulta ao ponto final. Essa solicitação pode ser usada para sondas de vivacidade e prontidão do Kubernetes.
    http:// localhost:5000/swagger O container fornece um conjunto completo de documentação para os endpoints e uma funcionalidade 'Experimente'. Com esse recurso, você pode inserir suas configurações em um formulário HTML baseado na Web e fazer a consulta sem ter que escrever nenhum código. Depois que a consulta retorna, um comando CURL de exemplo é fornecido para demonstrar os cabeçalhos HTTP necessários e o formato do corpo.

Captura de ecrã da página de boas-vindas dos contentores do Azure.

Pare os contentores

Para parar os contêineres, use o seguinte comando:

docker-compose down

Faturação

Os contêineres de Document Intelligence enviam informações de cobrança para o Azure usando um recurso de Document Intelligence em sua conta do Azure.

As consultas ao contêiner são cobradas na camada de preço do recurso do Azure usado para a API Key. O faturamento é calculado para cada instância de contêiner usada para processar seus documentos e imagens.

Se você receber o seguinte erro: O contêiner não está em um estado válido. A validação da assinatura falhou com o status 'OutOfQuota' A chave da API está fora da cota. É um indicador de que os seus contentores não estão a comunicar com o endpoint de faturamento.

Ligar ao Azure

O contêiner precisa dos valores do argumento de faturamento para ser executado. Esses valores permitem que o contentor se conecte ao endpoint de faturamento. O contêiner relata o uso a cada 10 a 15 minutos. Se o contêiner não se conectar ao Azure dentro da janela de tempo permitida, o contêiner continuará a ser executado, mas não atenderá consultas até que o ponto de extremidade de cobrança seja restaurado. A conexão é tentada 10 vezes no mesmo intervalo de tempo de 10 a 15 minutos. Se não conseguir se conectar ao ponto de extremidade de faturamento dentro das 10 tentativas, o contêiner irá parar de atender a solicitações. Consulte as Perguntas frequentes sobre o contêiner do Azure AI para obter um exemplo das informações enviadas à Microsoft para cobrança.

Argumentos de faturação

O comando docker-compose up inicia o contêiner quando todas as três opções a seguir são fornecidas com valores válidos:

Opção Descrição
ApiKey A chave do recurso Azure AI Foundry usada para rastrear informações de cobrança.
O valor dessa opção deve ser definido como uma chave para o recurso provisionado especificado em Billing.
Billing O endpoint do recurso Azure AI Foundry usado para rastrear informações de faturação.
O valor dessa opção deve ser definido como o URI do ponto de extremidade de um recurso provisionado do Azure.
Eula Indica que você aceitou a licença para o contêiner.
O valor desta opção deve ser definido como accept.

Para obter mais informações sobre essas opções, consulte Configurar contêineres.

Resumo

É isso! Neste artigo, você aprendeu conceitos e fluxos de trabalho para baixar, instalar e executar contêineres de Document Intelligence. Em resumo:

  • A Document Intelligence fornece sete contêineres Linux para o Docker.
  • As imagens de contêiner são baixadas do mcr.
  • As imagens de contêiner são executadas no Docker.
  • As informações de faturamento devem ser especificadas quando você instanciar um contêiner.

Importante

Os contêineres de IA do Azure não são licenciados para execução sem estarem conectados ao Azure para medição. Os clientes precisam permitir que os contêineres sempre comuniquem informações de faturamento com o serviço de medição. Os contêineres de IA do Azure não enviam dados do cliente (por exemplo, a imagem ou o texto que está sendo analisado) para a Microsoft.

Próximos passos