Partilhar via


Tutorial: Iniciar um trabalho em lote utilizando o Azure Functions

Neste tutorial, você aprenderá a disparar um trabalho em lote usando o Azure Functions. Este artigo percorre um exemplo em que documentos adicionados a um contentor de blobs do Armazenamento do Azure são submetidos a reconhecimento ótico de caracteres (OCR) usando o Azure Batch. Para simplificar o processamento de OCR, este exemplo configura uma função do Azure que executa um trabalho de OCR em lote cada vez que um arquivo é adicionado ao contêiner de blob. Você aprende a:

  • Use o portal do Azure para criar pools e trabalhos.
  • Crie contêineres de blob e uma assinatura de acesso compartilhado (SAS).
  • Crie uma Função do Azure acionada por objetos blob.
  • Carregue arquivos de entrada para o armazenamento.
  • Monitore a execução da tarefa.
  • Recupere arquivos de saída.

Pré-requisitos

Iniciar sessão no Azure

Inicie sessão no portal Azure.

Criar um pool de lotes e um trabalho em lote usando o portal do Azure

Nesta seção, você usa o portal do Azure para criar o pool de lotes e o trabalho de lote que executa tarefas de OCR.

Criar um pool

  1. Entre no portal do Azure usando suas credenciais do Azure.

  2. Crie um pool selecionando Pools na navegação do lado esquerdo e, em seguida, selecione o botão Adicionar acima do formulário de pesquisa.

    Captura de ecrã da página Pools numa conta Batch que destaca o botão Adicionar.

    1. Insira um ID de pool. Este exemplo dá o nome ocr-pool ao pool.
    2. Selecione Canonical como o Editor.
    3. Selecione 0001-com-ubuntu-server-jammy como a Oferta.
    4. Selecione 22_04-lts como o SKU.
    5. Escolha Standard_F2s_v2 - 2 vCPUs, 2 GB Memory como o tamanho da VM na seção Tamanho do nó .
    6. Defina o Modo na seção Escala como Fixo e digite 3 para os nós dedicados de destino.
    7. Defina Iniciar tarefa como Habilitado e insira o comando /bin/bash -c "sudo update-locale LC_ALL=C.UTF-8 LANG=C.UTF-8; sudo apt-get update; sudo apt-get -y install ocrmypdf" na Linha de comando. Certifique-se de definir o nível de elevação como usuário automático do pool, Admin, o que permite iniciar tarefas para incluir comandos com sudo.
    8. Selecione OK.

Criar um emprego

  1. Crie um trabalho no pool selecionando Trabalhos na navegação do lado esquerdo e escolha o botão Adicionar acima do formulário de pesquisa.
    1. Insira um ID de trabalho. Este exemplo utiliza ocr-job.
    2. Selecione ocr-pool para Pool Atual ou qualquer nome que escolheres para o pool.
    3. Selecione OK.

Criar contêineres de blob

Aqui você cria contêineres de blob que armazenam seus arquivos de entrada e saída para o trabalho em lote de OCR. Neste exemplo, o contêiner de entrada é nomeado input e é onde todos os documentos sem OCR são inicialmente carregados para processamento. O contêiner de saída é nomeado output e é onde o trabalho em lote grava documentos processados com OCR.

  1. Procure e selecione Contas de armazenamento no portal do Azure.

  2. Escolha sua conta de armazenamento vinculada à sua conta Batch.

  3. Selecione Contêineres na navegação do lado esquerdo e crie dois contêineres de blob (um para arquivos de entrada, outro para arquivos de saída) seguindo as etapas em Criar um contêiner de blob.

  4. Crie uma assinatura de acesso partilhado para o seu contentor de saída seleccionando o contentor de saída e, na página tokens de acesso partilhado, seleccione Gravar na lista suspensa Permissões. Nenhuma outra permissão é necessária.

  5. Selecione Gerar token SAS e URL e copie o URL SAS do Blob para usar mais tarde para sua função.

    Captura de ecrã da página de Tokens de Acesso Partilhado que destaca a lista pendente Permissões e o botão Gerar token e URL SAS.

Criar uma Função do Azure

Nesta seção, você cria a Função do Azure que aciona o trabalho em Lote de OCR sempre que um arquivo é carregado em seu contêiner de entrada.

  1. Siga as etapas em Criar uma função acionada pelo armazenamento de Blob do Azure para criar uma função.

    1. Para pilha de tempo de execução, escolha .NET. Esta função de exemplo usa C# para aproveitar o Batch .NET SDK.
    2. Na página Armazenamento , use a mesma conta de armazenamento que você vinculou à sua conta de lote.
    3. Selecione Rever + Criar > Criar.

    A captura de ecrã seguinte mostra a página Criar Função no separador Noções básicas usando informações de exemplo.

    Captura de ecrã da página Criar Aplicação de Função no separador Noções básicas utilizando informações de exemplo.

  2. Na sua função, selecione Funções na navegação do lado esquerdo e selecione Criar.

  3. No painel Criar função, selecione o trigger de Armazenamento de Blob do Azure.

  4. Introduza um nome para a sua função em Nova Função. Neste exemplo, o nome é OcrTrigger. Digite o caminho como input/{name}, onde entrada no nome do seu contêiner de Blob.

  5. Selecione Criar.

    Captura de ecrã do painel Criar Função que destaca a opção de gatilho de Armazenamento de Blobs do Azure e os Campos Nova Função e Caminho.

  6. Depois que a função acionada por blob for criada, selecione Código + Teste. Use o run.csx e function.proj do GitHub na Função. function.proj não existe por padrão, então selecione o botão Carregar para carregá-lo em seu espaço de trabalho de desenvolvimento.

    • run.csx é executado quando um novo blob é adicionado ao seu contêiner de blob de entrada.
    • function.proj lista as bibliotecas externas em seu código de função, por exemplo, o Batch .NET SDK.
  7. Altere os valores de espaços reservados das variáveis na função Run() do arquivo run.csx para refletir as suas credenciais de lote e armazenamento. Você pode encontrar suas credenciais de conta de lote e armazenamento no portal do Azure na seção Chaves de sua conta de lote e armazenamento.

Acionar a função e recuperar resultados

Carregue qualquer um ou todos os arquivos digitalizados do input_files diretório no GitHub para seu contêiner de entrada.

Você pode testar sua função no portal do Azure na página Código + Teste da sua função.

  1. Selecione Testar/executar na página Código + Teste .
  2. Insira o caminho para o contentor de entrada em Corpo na guia Entrada.
  3. Selecione Executar.

Após alguns segundos, o arquivo com OCR aplicado é adicionado ao contêiner de saída. Registre as saídas de informações na janela inferior. O arquivo fica visível e recuperável no Gerenciador de Armazenamento.

Como alternativa, você pode encontrar as informações de log na página Monitor :

2019-05-29T19:45:25.846 [Information] Creating job...
2019-05-29T19:45:25.847 [Information] Accessing input container <inputContainer>...
2019-05-29T19:45:25.847 [Information] Adding <fileName> as a resource file...
2019-05-29T19:45:25.848 [Information] Name of output text file: <outputTxtFile>
2019-05-29T19:45:25.848 [Information] Name of output PDF file: <outputPdfFile>
2019-05-29T19:45:26.200 [Information] Adding OCR task <taskID> for <fileName> <size of fileName>...

Para baixar os arquivos de saída para sua máquina local, vá para o contêiner de saída em sua conta de armazenamento. Selecione mais opções no ficheiro que pretende e, em seguida, selecione Transferir.

Sugestão

Os ficheiros descarregados podem ser pesquisados se abertos num leitor de PDF.

Limpeza de recursos

É cobrado pela utilização do pool enquanto os nós estão em funcionamento, mesmo que não há trabalhos agendados. Quando não precisar mais do pool, exclua-o com as seguintes etapas:

  1. Na página Pools da sua conta Batch, selecione mais opções no seu pool.
  2. Selecione Eliminar.

Quando eliminar o grupo, todos os resultados da tarefa nos nós são eliminados. No entanto, os ficheiros de saída permanecem na conta de armazenamento. Quando não for mais necessário, você também poderá excluir a conta de lote e a conta de armazenamento.

Próximos passos

Para obter mais exemplos de como usar a API do .NET para agendar e processar cargas de trabalho em lote, consulte os exemplos no GitHub.