Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste tutorial, aprende como carregar uma imagem para o Azure Blob Storage e processá-la usando Azure Functions e Computer Vision. Também aprende a implementar triggers e bindings do Azure Function como parte deste processo. Juntos, esses serviços analisam uma imagem carregada que contém texto, extraem o texto dela e, em seguida, armazenam o texto em uma linha de banco de dados para análise posterior ou outros fins.
Azure Blob Storage é a solução de armazenamento de objetos massivamente escalável da Microsoft para a cloud. O Blob Storage foi concebido para armazenar imagens e documentos, transmitir ficheiros multimédia, gerir backup e arquivamento de dados, entre outros. Pode ler mais sobre Blob Storage na página de visão geral .
Azure Functions é uma solução de computador serverless que permite escrever e executar pequenos blocos de código como funções altamente escaláveis, serverless e orientadas a eventos. Pode ler mais sobre Azure Functions na página visão geral.
Neste tutorial, aprenderás como:
- Carregar imagens e ficheiros para o Blob Storage
- Use um disparador de evento Azure Function para processar dados carregados para o Blob Storage
- Use Foundry Tools para analisar uma imagem
- Escrever dados no Armazenamento de Tabelas usando ligações de saída do Azure Function
Prerequisites
- Uma conta no Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Visual Studio 2022
Criar a conta de armazenamento e o contêiner
A primeira etapa é criar a conta de armazenamento para armazenar os dados de blob carregados, que neste cenário são imagens que contêm texto. Uma conta de armazenamento oferece vários serviços diferentes, mas este tutorial utiliza o Blob Storage e o Table Storage.
Inicie sessão no portal Azure.
Na barra de pesquisa na parte superior do portal, procure por Armazenamento e selecione o resultado rotulado Contas de armazenamento.
Na página Contas de armazenamento, selecione + Criar no canto superior esquerdo.
Na página Criar uma conta de armazenamento, insira os seguintes valores:
- Assinatura: escolha a assinatura desejada.
-
Grupo de Recursos: Selecione Criar novo, insira um nome em
msdocs-storage-function, e em seguida, escolha OK. -
Nome da conta de armazenamento: insira um valor de
msdocsstoragefunction. O nome da conta de Armazenamento deve ser único em Azure, por isso pode ser necessário adicionar números após o nome, comomsdocsstoragefunction123. - Região: selecione a região mais próxima de você.
- Desempenho: Escolha Padrão.
- Redundância: deixe o valor padrão selecionado.
Selecione Review + Criar no final e Azure valida a informação que introduziu. Depois de validadas as definições, escolha Criar e Azure começa a provisionar a conta de armazenamento, o que pode demorar algum tempo.
Criar o contentor
Depois que a conta de armazenamento for provisionada, selecione Ir para Recurso. O próximo passo é criar um contêiner de armazenamento dentro da conta para armazenar imagens carregadas para análise.
No painel de navegação, escolha Contêineres.
Na página Contêineres, selecione + Contêiner na parte superior. No painel de deslizamento, insira um Nome da análise de imagem e verifique se o nível de acesso público está definido como Blob (acesso de leitura anônimo somente para blobs). Em seguida, selecione Criar.
Você verá seu novo contêiner aparecer na lista de contêineres.
Recuperar a string de conexão
O último passo é obter a nossa cadeia de ligação para a conta de armazenamento.
No painel de navegação esquerdo, selecione Teclas de acesso.
Na página Teclas de Acesso, selecione Mostrar chaves. Copie o valor da Cadeia de Conexão na seção key1 e cole a chave em algum lugar para usar mais tarde. Anote o nome
msdocsstoragefunctionda conta de armazenamento para mais tarde também.
Estes valores são necessários quando precisamos de ligar a nossa Função Azure a esta conta de armazenamento.
Criar o serviço de Computer Vision
De seguida, crie a conta do serviço Computer Vision que processa os nossos ficheiros carregados. Computer Vision faz parte da Foundry Tools e oferece várias funcionalidades para extrair dados de imagens. Pode saber mais sobre Computer Vision na página de visão geral .
Na barra de pesquisa na parte superior do portal, procure por Computador e selecione o resultado rotulado Visão computacional.
Na página Visão computacional, selecione + Criar.
Na página Create Computer Vision, insira os seguintes valores:
- Subscrição: Escolha a Subscrição pretendida.
-
Grupo de Recursos: use o grupo de
msdocs-storage-functionrecursos criado anteriormente. - Região: selecione a região mais próxima de você.
-
Nome: insira um nome de
msdocscomputervision. - Nível de preço: Escolha Gratuito se estiver disponível, caso contrário, escolha Standard S1.
- Marque a caixa Aviso de IA Responsável se concordar com os termos
Selecione Rever + Criar na parte inferior. O Azure demora um momento a validar a informação que introduziu. Depois de validadas as definições, escolha Create e Azure começa a provisionar o serviço de Computer Vision, o que pode demorar algum tempo.
Quando a operação for concluída, selecione Ir para Recurso.
Recuperar as chaves
De seguida, precisamos de encontrar a chave secreta e a URL do endpoint para o serviço Computer Vision usar na nossa aplicação Azure Function.
Na página de visão geral Computer Vision, selecione Keys e Endpoint.
Na página Chaves e Ponto de Extremidade, copie o valor da Chave 1 e os valores de Ponto de Extremidade e cole-os em algum lugar para usar mais tarde.
Baixar e configurar o projeto de exemplo
O código da Função Azure usado neste tutorial pode ser encontrado em this GitHub repositório. Você também pode clonar o projeto usando o seguinte comando:
git clone https://github.com/Azure-Samples/msdocs-storage-bind-function-service.git \
cd msdocs-storage-bind-function-service/dotnet
O código de projeto de exemplo realiza as seguintes tarefas:
- Recupera variáveis de ambiente para se ligar à conta de armazenamento e ao serviço de Computer Vision
- Aceita o arquivo carregado como um parâmetro de blob
- Analisa o blob usando o serviço Computer Vision
- Envia o texto da imagem analisada para uma nova linha da tabela usando associações de saída
Depois de baixar e abrir o projeto, existem alguns conceitos essenciais para entender no método principal Run mostrado abaixo. A função Azure utiliza ligações de Trigger e Output, que são aplicadas usando atributos na assinatura do método Run.
O Table atributo usa dois parâmetros. O primeiro parâmetro especifica o nome da tabela para gravar o valor de texto da imagem analisada retornado pela função. O segundo parâmetro Connection obtém uma cadeia de ligação da Tabela de Armazenamento das variáveis de ambiente de forma a que a nossa função Azure possa aceder a esta.
O atributo BlobTrigger é usado para vincular a nossa função ao evento de upload em Blob Storage, e fornece esse blob carregado à função Run. O disparador do blob tem dois parâmetros próprios – um para o nome do contentor do blob a monitorizar para uploads, e outro para a connection string da nossa conta de armazenamento.
// Azure Function name and output Binding to Table Storage
[FunctionName("ProcessImageUpload")]
[return: Table("ImageText", Connection = "StorageConnection")]
// Trigger binding runs when an image is uploaded to the blob container below
public async Task<ImageContent> Run([BlobTrigger("imageanalysis/{name}",
Connection = "StorageConnection")]Stream myBlob, string name, ILogger log)
{
// Get connection configurations
string subscriptionKey = Environment.GetEnvironmentVariable("ComputerVisionKey");
string endpoint = Environment.GetEnvironmentVariable("ComputerVisionEndpoint");
string imgUrl = $"https://{ Environment.GetEnvironmentVariable("StorageAccountName")}
.blob.core.windows.net/imageanalysis/{name}";
ComputerVisionClient client = new ComputerVisionClient(
new ApiKeyServiceClientCredentials(subscriptionKey)) { Endpoint = endpoint };
// Get the analyzed image contents
var textContext = await AnalyzeImageContent(client, imgUrl);
return new ImageContent {
PartitionKey = "Images",
RowKey = Guid.NewGuid().ToString(), Text = textContext
};
}
public class ImageContent
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Text { get; set; }
}
Este código também recupera valores de configuração essenciais de variáveis de ambiente, como a connection string da conta de armazenamento e a chave Computer Vision. Vamos adicionar estas variáveis de ambiente ao nosso ambiente Azure Function depois de implementado.
A ProcessImage função também utiliza um segundo método chamado AnalyzeImage. Este código utiliza o URL Endpoint e a Chave da nossa conta Computer Vision para fazer um pedido a esse servidor para processar a nossa imagem. A solicitação retorna todo o texto descoberto na imagem, que é gravado no Armazenamento de Tabela usando a associação de saída no método Run.
static async Task<string> ReadFileUrl(ComputerVisionClient client, string urlFile)
{
// Analyze the file using Computer Vision Client
var textHeaders = await client.ReadAsync(urlFile);
string operationLocation = textHeaders.OperationLocation;
Thread.Sleep(2000);
// Complete code omitted for brevity, view in sample project
return text.ToString();
}
Executando localmente
Se você quiser executar o projeto localmente, poderá preencher as variáveis de ambiente usando o arquivo local.settings.json. Dentro deste ficheiro, preencha os valores provisórios com os valores que guardou anteriormente ao criar os recursos do Azure.
Embora o código da Função Azure seja executado localmente, ainda se liga aos serviços em tempo real no Azure, em vez de usar emuladores locais.
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"StorageConnection": "your-storage-account-connection-string",
"StorageAccountName": "your-storage-account-name",
"ComputerVisionKey": "your-computer-vision-key",
"ComputerVisionEndPoint": "your-computer-vision-endpoint"
}
}
Implementar o código para o Azure Functions
Agora está pronto para implementar a nossa aplicação no Azure usando o Visual Studio. Também pode criar a aplicação Azure Functions no Azure ao mesmo tempo como parte do processo de implementação.
Para começar, selecione com o botão direito do mouse o nó do projeto ProcessImage e selecione Publicar.
No ecrã de diálogo Publicar, selecione Azure e selecione Próximo.
Selecione Azure Function App (Windows) ou Azure Function App (Linux) no ecrã seguinte, e depois escolha novamente Next novamente.
Na etapa Instância de Functions, certifique-se de escolher a assinatura em que deseja implantar. Em seguida, selecione o símbolo verde + no lado direito da caixa de diálogo.
Uma nova caixa de diálogo é aberta. Insira os seguintes valores para seu novo aplicativo de função.
- Nome: Digite msdocsprocessimage ou algo semelhante.
- Nome da assinatura: escolha a assinatura que você gostaria de usar.
-
Grupo de recursos: escolha o grupo de
msdocs-storage-functionrecursos criado anteriormente. - Tipo de plano: Selecione Consumo.
- Localização: Escolha a região mais próxima de si.
- Azure Storage: Selecione a conta de armazenamento que criou anteriormente.
Depois de preencher todos esses valores, selecione Criar. O Visual Studio e o Azure começam a provisionar os recursos solicitados, o que demora alguns momentos a concluir.
Quando o processo terminar, selecione Concluir para fechar o fluxo de trabalho da caixa de diálogo.
O passo final para implementar a Função Azure é selecionar Publicar no canto superior direito do ecrã. A publicação da função também pode levar alguns minutos para ser concluída. Quando terminar, a sua aplicação está a correr no Azure.
Ligar os serviços
A Função Azure foi implementada com sucesso, mas ainda não consegue ligar-se à nossa conta de armazenamento e aos serviços de Computer Vision. As chaves e strings de ligação corretas devem primeiro ser adicionadas às definições de configuração da aplicação Azure Functions.
No topo do portal Azure, procure por função e selecione Function App nos resultados.
No ecrã Function App, selecione a Function App que criou no Visual Studio.
Na página Visão geral do aplicativo de função , selecione Configuração na navegação à esquerda para abrir uma página onde podemos gerenciar vários tipos de definições de configuração para nosso aplicativo. Por enquanto, estamos interessados na seção Configurações do aplicativo.
O próximo passo é adicionar definições para o nome da nossa conta de armazenamento e para a cadeia de conexão, a chave secreta da Visão Computacional e o ponto final da Visão Computacional.
Na guia Configurações do aplicativo, selecione + Nova configuração do aplicativo. No submenu que aparece, insira os seguintes valores:
- Nome: insira um valor de ComputerVisionKey.
- Value: Colar a chave do Computer Vision que guardaste antes.
Selecione OK para adicionar essa configuração ao seu aplicativo.
De seguida, vamos repetir este processo para o endpoint do nosso serviço de Computer Vision, usando os seguintes valores:
- Nome: insira um valor de ComputerVisionEndpoint.
- Valor: Cole no URL do ponto de extremidade que você salvou anteriormente.
Repita esta etapa novamente para a conexão da conta de armazenamento, usando os seguintes valores:
- Nome: insira um valor de StorageConnection.
- Value: Cola a connection string que guardaste antes.
Finalmente, repita esse processo mais uma vez para o nome da conta de armazenamento, usando os seguintes valores:
- Name: insira um valor de StorageAccountName.
- Valor: insira o nome da conta de armazenamento que você criou.
Depois de adicionar essas configurações do aplicativo, selecione Salvar na parte superior da página de configuração. Quando a gravação for concluída, tu também poderás pressionar Atualizar para garantir que as configurações sejam aplicadas.
Todas as variáveis de ambiente necessárias para ligar a nossa função Azure a diferentes serviços estão agora implementadas.
Carregar uma imagem para o Blob Storage
Agora está pronto para testar a nossa aplicação! Você pode carregar um blob para o contêiner e, em seguida, verificar se o texto na imagem foi salvo no Armazenamento de Tabela.
Primeiro, no topo do portal Azure, procure por Storage e selecione storage account. Na página conta de armazenamento , selecione a conta criada anteriormente.
Em seguida, selecione Contêineres no painel de navegação esquerdo e navegue até o contêiner ImageAnalysis criado anteriormente. A partir daqui, você pode carregar uma imagem de teste diretamente dentro do navegador.
Você pode encontrar algumas imagens de exemplo incluídas na pasta de imagens na raiz do projeto de exemplo para download, ou você pode usar uma de sua própria.
Na parte superior da página ImageAnalysis , selecione Upload. No submenu que se abre, selecione o ícone de pasta para abrir um navegador de arquivos. Escolha a imagem que pretende carregar e, em seguida, selecione Carregar.
O arquivo deve aparecer dentro do contêiner de blob. De seguida, pode verificar se o upload ativou a Função Azure e que o texto na imagem foi analisado e guardado corretamente no Table Storage.
Usando o caminho de navegação no topo da página, suba um nível na conta de armazenamento. Localize e selecione Navegador de armazenamento no painel de navegação esquerdo e, em seguida, selecione Tabelas.
Uma tabela ImageText agora deve estar disponível. Selecione na tabela para visualizar as linhas de dados dentro dela. Você deve ver uma entrada para o texto da imagem processada do nosso upload. Você pode verificar isso usando o carimbo de data/hora ou exibindo o conteúdo da coluna Texto .
Congratulations! Conseguiu processar uma imagem que foi carregada para o Blob Storage usando Azure Functions e Computer Vision.
Limpar recursos
Se não pretender continuar a utilizar esta aplicação, pode eliminar os recursos que criou removendo o grupo de recursos.
- Selecione Grupos de recursos na navegação principal
- Selecione o
msdocs-storage-functiongrupo de recursos na lista. - Selecione o botão Excluir grupo de recursos na parte superior da página de visão geral do grupo de recursos.
- Digite o nome do grupo de recursos msdocs-storage-function na caixa de diálogo de confirmação.
- Selecione excluir. O processo para excluir o grupo de recursos pode levar alguns minutos para ser concluído.