Tutorial: Disparar um trabalho em lotes usando o Azure Functions

Neste tutorial, você aprenderá como disparar um trabalho do Lote usando o Azure Functions. Este artigo mostra um exemplo que usa documentos adicionados a um contêiner de blob do Armazenamento do Microsoft Azure e aplica o reconhecimento óptico de caracteres (OCR) usando o Lote do Azure. Para agilizar o processamento de OCR, este exemplo configura uma função do Azure que executa um trabalho de OCR do Lote sempre que um arquivo é adicionado ao contêiner de blob. Você aprenderá como:

  • Utilize o portal do Azure para criar pools e trabalhos.
  • Criar contêineres de blob e uma assinatura de acesso compartilhado (SAS).
  • Crie uma Função do Azure disparada pelo blob.
  • Carregar arquivos de entrada para o Armazenamento.
  • Monitorar a execução da tarefa.
  • Recuperar arquivos de saída.

Pré-requisitos

Entrar no Azure

Entre no portal do Azure.

Criar um pool do Lote e um trabalho do Lote usando o portal do Azure

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

Criar um pool

  1. Entrar 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 tela da página Pools em uma conta do Lote que destaca o botão Adicionar.

    1. Insira uma ID de Pool. Este exemplo nomeia o pool ocr-pool.
    2. Selecione canonical como Distribuidor.
    3. Selecione 0001-com-ubuntu-server-jammy como a Oferta.
    4. Selecione 22_04-lts como 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 insira 3 para os Nós dedicados de destino.
    7. Defina Tarefa inicial para Habilitar tarefa inicial 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, que permite que as tarefas iniciais incluam comandos com sudo.
    8. Selecione OK.

Criar um trabalho

  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 uma ID de Trabalho. Este exemplo usa o ocr-job.
    2. Selecione ocr-pool para Pool atual ou qualquer nome que você tenha escolhido para seu pool.
    3. Selecione OK.

Criar contêineres de blob

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

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

  2. Escolha sua conta de armazenamento vinculada à sua conta do Lote.

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

  4. Crie uma assinatura de acesso compartilhado para seu contêiner de saída selecionando o contêiner de saída e, na página Tokens de acesso compartilhado, selecione Gravar no menu suspenso Permissões. Não são necessárias outras permissões.

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

    Captura de tela da página de tokens de acesso compartilhado que destaca o menu suspenso Permissões e o botão URL e Gerar token SAS.

Criar uma Função do Azure

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

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

    1. Para pilha de runtime, escolha .NET. Esta função de exemplo utiliza o C# para aproveitar o SDK do .NET do Lote.
    2. Na página Armazenamento, use a mesma conta de armazenamento que você vinculou à sua conta do Lote.
    3. Selecione Revisar + Criar > Criar.

    A captura de tela a seguir é a página Criar Aplicativo de Função na guia Básico usando informações de exemplo.

    Captura de tela da página Criar Aplicativo de Função na guia Básico usando 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 gatilho Armazenamento de Blobs do Azure.

  4. Insira um nome para sua função em Nova Função. Neste exemplo, o nome é OcrTrigger. Insira o caminho como input/{name}, no qual entrar com o nome do seu contêiner de Blob.

  5. Selecione Criar.

    Captura de tela do painel Criar Função que destaca a opção de gatilho do Armazenamento de Blobs do Azure, os Novos Campos de Caminho e Funções.

  6. Após a função disparada por blob ser criada, selecione Codificar + Testar. Use o run.csx e o function.proj do GitHub na Função. function.proj não existe por padrão, sendo assim, selecione o botão Carregar para carregá-lo no workspace de desenvolvimento.

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

Disparar a função e recuperar resultados

Carregue um ou todos os arquivos digitalizados do diretório input_files 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. Digite o caminho para o contêiner de entrada no Corpo na guia Entrada.
  3. Selecione Executar.

Depois de 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 se torna visível e pode ser recuperado no Gerenciador de Armazenamento.

Alternativamente, 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 seu computador local, acesse o contêiner de saída na sua conta de armazenamento. Selecione mais opções no arquivo desejado e, em seguida, selecione Baixar.

Dica

Os arquivos baixados poderão ser pesquisados se abertos em um leitor de PDF.

Limpar os recursos

Você é cobrado pelo pool enquanto os nós estão em execução, mesmo que nenhum trabalho esteja agendado. Exclua o pool quando não precisar mais dele executando as seguintes etapas:

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

Quando você excluir o pool, todas as saídas de tarefa nos nós são excluídas. No entanto, os arquivos de saída permanecerão na conta de armazenamento. Quando não for mais necessário, você também poderá excluir a conta do Lote e a conta de armazenamento.

Próximas etapas

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