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
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Uma conta do Lote do Azure e uma conta de Armazenamento do Azure vinculada. Para obter mais informações sobre como criar e vincular contas, confira Criar uma conta do Lote.
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
Entrar no portal do Azure usando suas credenciais do Azure.
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.
- Insira uma ID de Pool. Este exemplo nomeia o pool
ocr-pool
. - Selecione canonical como Distribuidor.
- Selecione 0001-com-ubuntu-server-jammy como a Oferta.
- Selecione 22_04-lts como SKU.
- Escolha
Standard_F2s_v2 - 2 vCPUs, 2 GB Memory
como o tamanho da VM na seção Tamanho do Nó. - Defina o Modo na seção Escala como Fixo e insira 3 para os Nós dedicados de destino.
- 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 comsudo
. - Selecione OK.
- Insira uma ID de Pool. Este exemplo nomeia o pool
Criar um trabalho
- 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.
- Insira uma ID de Trabalho. Este exemplo usa o
ocr-job
. - Selecione
ocr-pool
para Pool atual ou qualquer nome que você tenha escolhido para seu pool. - Selecione OK.
- Insira uma ID de Trabalho. Este exemplo usa o
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.
Pesquise e selecione Contas de armazenamento no portal do Azure.
Escolha sua conta de armazenamento vinculada à sua conta do Lote.
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 .
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.
Selecione Gerar token SAS e URL e copie o URL de SAS do Blob para usar mais tarde na sua função.
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.
Siga as etapas em Criar uma função disparada pelo armazenamento de blob do Azure para criar uma função.
- Para pilha de runtime, escolha .NET. Esta função de exemplo utiliza o C# para aproveitar o SDK do .NET do Lote.
- Na página Armazenamento, use a mesma conta de armazenamento que você vinculou à sua conta do Lote.
- 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.
Na sua função, selecione Funções na navegação do lado esquerdo e selecione Criar.
No painel Criar função, selecione o gatilho Armazenamento de Blobs do Azure.
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.Selecione Criar.
Após a função disparada por blob ser criada, selecione Codificar + Testar. Use o
run.csx
e ofunction.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.
-
Altere os valores de espaço reservado das variáveis na função
Run()
do arquivorun.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.
- Selecione Testar/executar na página Código + Teste.
- Digite o caminho para o contêiner de entrada no Corpo na guia Entrada.
- 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:
- Na página Pools da sua conta do Lote, selecione mais opções no seu pool.
- 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.