Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste tutorial, você aprenderá a carregar uma imagem para Armazenamento de Blobs do Azure e processá-la usando Azure Functions e Pesquisa Visual Computacional. Você também aprenderá a implementar gatilhos e associações do Azure Function como parte desse processo. Juntos, esses serviços analisam uma imagem enviada que contém texto, extraem esse texto e depois armazenam o texto em uma linha do banco de dados para análise futura ou outros usos.
Armazenamento de Blobs do Azure é a solução de armazenamento de objetos massivamente escalonável da Microsoft para a nuvem. Armazenamento de Blobs foi projetado para armazenar imagens e documentos, transmitir arquivos de mídia, gerenciar dados de backup e arquivos e muito mais. Você pode ler mais sobre Armazenamento de Blobs na página overview.
Azure Functions é uma solução de computador sem servidor que permite que você escreva e execute pequenos blocos de código como funções altamente escalonáveis, sem servidor, controladas por eventos. Você pode ler mais sobre Azure Functions na página overview.
Neste tutorial, você aprenderá como:
- Carregar imagens e arquivos para Armazenamento de Blobs
- Usar um gatilho de evento do Azure Functions para processar dados carregados no Armazenamento de Blobs
- Usar ferramentas Foundry para analisar uma imagem
- Gravar dados no Table Storage usando bindings de saída do Azure Functions
Prerequisites
- Uma conta Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Visual Studio 2022
Crie a conta de armazenamento e o contêiner
A primeira etapa é criar a conta de armazenamento para manter 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 Armazenamento de Blobs e Armazenamento de Tabelas.
Entre no portal Azure.
Na barra de pesquisa na parte superior do portal, pesquise por Armazenamento e selecione o resultado rotulado como Contas de armazenamento.
Na página Conta 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 e então insira um nome de , em seguida, escolha OK.
- Armazenamento nome da conta: insira um valor de . O nome da conta de armazenamento deve ser exclusivo em Azure, portanto, talvez seja necessário adicionar números após o nome, como
msdocsstoragefunction123. - Região: selecione a região mais próxima a você.
- Desempenho: escolha Standard.
- Redundância: deixe o valor padrão selecionado.
Selecione Review + Criar na parte inferior e Azure valida as informações inseridas. Depois que as configurações forem validadas, escolha Create e Azure começa a provisionar a conta de armazenamento, o que pode demorar um pouco.
Criar o contêiner
Depois que a conta de armazenamento tiver sido provisionada, selecione Ir para Recursos. A próxima etapa é 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 lateral, insira um Nome como imageanalysis e certifique-se de que o Nível de acesso público esteja definido como Blob (leitura anônima para blobs apenas). Em seguida, selecione Criar.
Captura de tela mostrando como criar um contêiner de armazenamento.
Você deverá ver sua nova contêiner aparecer na lista de contêineres.
Recuperar a string de conexão
A última etapa é recuperar nossa cadeia de conexão para a conta de armazenamento.
No painel de navegação à esquerda, selecione Chaves de acesso.
Na página de Chaves 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 posteriormente. Anote o nome da conta de armazenamento para mais tarde também.
Captura de tela mostrando como acessar o contêiner de armazenamento.
Esses valores são necessários quando precisamos conectar nossa função Azure a essa conta de armazenamento.
Criar o serviço Pesquisa Visual Computacional
Em seguida, crie a conta de serviço Pesquisa Visual Computacional que processa nossos arquivos carregados. Pesquisa Visual Computacional faz parte das Ferramentas Foundry e oferece uma série de funcionalidades para extração de dados de imagens. Você pode saber mais sobre Pesquisa Visual Computacional na página overview.
Na barra de pesquisa na parte superior do portal, pesquise por Computador e selecione o resultado rotulado como Visual computacional.
Na página Pesquisa visual computacional, selecione + Criar.
Na página Create Pesquisa Visual Computacional, insira os seguintes valores:
- Assinatura: escolha a Assinatura desejada.
- Grupo de recursos: use o grupo de recursos que você criou anteriormente.
- Região: selecione a região mais próxima a você.
- Nome: insira um nome de .
- Tipo de preço: escolha Gratuito se estiver disponível, caso contrário, escolha Standard S1.
- Marque a caixa Aviso de IA Responsável se você concordar com os termos
Uma captura de tela mostrando como criar um novo serviço de Visão Computacional.
Selecione Examinar + Criar na parte inferior. Azure leva um momento para validar as informações inseridas. Depois que as configurações forem validadas, escolha Create e Azure começa a provisionar o serviço Pesquisa Visual Computacional, o que pode levar um momento.
Quando a operação for concluída, selecione Ir para o Recurso.
Recuperar as chaves
Em seguida, precisamos encontrar a chave secreta e o URL do ponto de extremidade para o serviço Pesquisa Visual Computacional a ser usado em nosso aplicativo de Azure Functions.
Na página de visão geral Pesquisa Visual Computacional, selecione Keys e Endpoint.
Na página Chaves e Ponto de extremidade, copie o valor da Chave 1 e os valores do Ponto de extremidade e cole-os em algum lugar para usar posteriormente.
Uma captura de tela mostrando como recuperar as chaves e o endpoint de URL para um serviço de Pesquisa Visual Computacional.
Baixar e configurar o projeto de amostra
O código da função Azure usada neste tutorial pode ser encontrado em es 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 do projeto de amostra realiza as seguintes tarefas:
- Obtém variáveis de ambiente para se conectar à conta de armazenamento e ao serviço de Pesquisa Visual Computacional.
- Aceita o arquivo carregado como um parâmetro de blob
- Analisa o blob usando o serviço Pesquisa Visual Computacional
- Envia o texto da imagem analisado para uma nova linha de tabela usando associações de saída
Depois de baixar e abrir o projeto, há alguns conceitos essenciais a serem entendidos no método principal mostrado abaixo. A função Azure utiliza associações de gatilho e saída, que são aplicadas usando atributos na assinatura do método Run.
O 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 extrai uma cadeia de conexão do Table Storage das variáveis de ambiente para que nossa função Azure tenha acesso a ela.
O atributo BlobTrigger é usado para associar nossa função ao evento de upload em Armazenamento de Blobs e fornece o blob carregado para a função Run. O gatilho de blob tem dois parâmetros próprios: um para o nome do contêiner de blob a ser monitorado para uploads e outro para a cadeia de conexão de nossa conta de armazenamento novamente.
// 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; }
}
Esse código também recupera valores de configuração essenciais de variáveis de ambiente, como a cadeia de conexão da conta de armazenamento e a chave de Pesquisa Visual Computacional. Adicionaremos essas variáveis de ambiente ao nosso ambiente de função Azure depois que ele for implantado.
A função também utiliza um segundo método chamado . Esse código usa o endpoint de URL e a chave de nossa conta de Pesquisa Visual Computacional para enviar uma solicitação ao servidor para processar nossa imagem. A solicitação retorna todo o texto identificado na imagem, que é gravado no Armazenamento de Tabelas usando o vínculo de saída no método .
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();
}
Execução local
Se você quiser executar o projeto localmente, poderá preencher as variáveis de ambiente usando o arquivo local.settings.json. Dentro desse arquivo, preencha os valores de espaço reservado com os valores salvos anteriormente ao criar os recursos do Azure.
Embora o código da função Azure seja executado localmente, ele ainda se conecta aos serviços ativos em Azure, em vez de usar quaisquer 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"
}
}
Implantar o código no Azure Functions
Agora você está pronto para implantar nosso aplicativo no Azure usando Visual Studio. Você também pode criar o aplicativo Azure Functions em Azure ao mesmo tempo que parte do processo de implantação.
Para começar, selecione o nó do projeto ProcessImage e selecione Publicar.
Na tela de diálogo Publish, selecione Azure e escolha Next.
captura de tela
Selecione Azure Function App (Windows) ou Azure Function App (Linux) na próxima tela e escolha Next novamente.
Uma captura de tela mostrando como escolher as Azure Functions como um destino específico de implantação.
Na etapa da Instância de funções, escolha a assinatura na qual você 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 valores a seguir para o novo Aplicativo de Funções.
- Nome: insira msdocsprocessimage ou algo semelhante.
- Nome da assinatura: escolha qualquer assinatura que você gostaria de usar.
- Grupo de recursos: escolha o grupo de recursos que você criou anteriormente.
- Tipo de Plano: selecione Consumo.
- Localização: escolha a região mais próxima a você.
- Armazenamento do Azure: selecione a conta de armazenamento criada anteriormente.
captura de tela
Depois de preencher todos esses valores, selecione Criar. Visual Studio e Azure começar a provisionar os recursos solicitados, o que leva alguns instantes para ser concluído.
Depois que o processo for concluído, selecione Concluir para fechar o fluxo de trabalho da caixa de diálogo.
A etapa final para implantar a Função Azure é selecionar Publish no canto superior direito da tela. A publicação da função também pode levar alguns momentos para ser concluída. Após a conclusão, o aplicativo estará em execução no Azure.
Conectar os serviços
A função Azure foi implantada com êxito, mas ainda não pode se conectar à nossa conta de armazenamento e aos serviços de Pesquisa Visual Computacional. As chaves corretas e as cadeias de conexão devem primeiro ser adicionadas às configurações do aplicativo Azure Functions.
Na parte superior do portal Azure, pesquise function e selecione Function App nos resultados.
Na tela Function App, selecione o Aplicativo de Funções criado no Visual Studio.
Na página de visão geral do Aplicativo de Funções , selecione Configuração à esquerda para abrir uma página em que podemos gerenciar vários tipos de configurações para nosso aplicativo. Por enquanto, estamos interessados na seção Configurações de aplicativo.
A próxima etapa é adicionar configurações para nosso nome de conta de armazenamento e cadeia de conexão, a chave secreta da Pesquisa Visual Computacional e o ponto de extremidade da Pesquisa Visual Computacional.
Na guia Configurações de aplicativo, selecione + Novas configurações de aplicativo. No submenu exibido, insira os seguintes valores:
- Nome: insira um valor de ComputerVisionKey.
- Value: cole a chave do Pesquisa Visual Computacional que você salvou anteriormente.
Selecione OK para adicionar essa configuração ao seu aplicativo.
Uma captura de tela mostrando como adicionar uma nova configuração de aplicativo a um Azure Function.
Em seguida, vamos repetir esse processo para o endpoint do nosso serviço de Pesquisa Visual Computacional, usando os seguintes valores:
- Nome: insira um valor de ComputerVisionEndpoint.
- Valor: cole na 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.
- Valor: Cole a string de conexão que você salvou anteriormente.
Por fim, repita esse processo mais uma vez para o nome da conta de armazenamento, usando os seguintes valores:
- Nome: insira um valor de StorageAccountName.
- Valor: insira o nome da conta de armazenamento criada.
Depois de adicionar essas configurações de aplicativo, selecione Salvar na parte superior da página de configuração. Quando a salvação for concluída, você também poderá acessar Atualizar para verificar se as configurações foram selecionadas.
Todas as variáveis de ambiente necessárias para conectar nossa função Azure a serviços diferentes agora estão em vigor.
Carregar uma imagem para Armazenamento de Blobs
Agora você está pronto para testar nosso aplicativo! Você pode carregar um blob no contêiner e verificar se o texto na imagem foi salvo no Armazenamento de Tabelas.
Primeiro, na parte superior do portal Azure, pesquise Storage e selecione storage account. Na página da conta de armazenamento, selecione a conta criada anteriormente.
Em seguida, selecione Contêineres na navegação à esquerda e navegue até o contêiner ImageAnalysis criado anteriormente. A partir daqui, você pode carregar uma imagem de teste diretamente dentro do navegador.
Captura de tela mostrando como navegar até um contêiner de armazenamento.
É possível encontrar algumas imagens de exemplo incluídas na pasta de imagens na raiz do projeto de exemplo para download ou pode usar uma das suas.
Na parte superior da página ImageAnalysis, selecione Upload. No submenu que é aberto, selecione o ícone de pasta para abrir um navegador de arquivos. Escolha a imagem que deseja carregar e selecione Upload.
Captura de tela mostrando como fazer upload de um blob em um contêiner de armazenamento.
O arquivo deve aparecer dentro do contêiner de blob. Em seguida, você pode verificar se o upload disparou a função Azure e se o texto na imagem foi analisado e salvo no Armazenamento de Tabelas corretamente.
Usando as trilhas de navegação na parte superior da página, navegue até um nível em sua conta de armazenamento. Localize e selecione Navegador de armazenamento na navegação à esquerda e 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. É possível verificar isso usando o Carimbo de Data/Hora ou exibindo o conteúdo da coluna Texto.
Uma captura de tela mostrando uma entrada de texto no Armazenamento de Tabelas do Azure.
Congratulations! Você conseguiu processar uma imagem que foi carregada para Armazenamento de Blobs usando Azure Functions e Pesquisa Visual Computacional.
Limpar os recursos
Se você não quiser continuar a usar esse aplicativo, poderá excluir os recursos criados removendo o grupo de recursos.
- Selecione Grupos de recursos na navegação principal
- Selecione o grupo 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.
- Insira 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.
