Esercitazione: Caricare e analizzare un file con Funzioni di Azure e archiviazione BLOB

In questa esercitazione si apprenderà come caricare un'immagine in Archiviazione BLOB di Azure ed elaborarla usando Funzioni di Azure e Visione artificiale. Si apprenderà anche come implementare trigger e associazioni di Funzioni di Azure come parte di questo processo. Insieme, questi servizi analizzano un'immagine caricata che contiene testo, estraggono il testo da esso e quindi archiviano il testo in una riga del database per analisi successive o altri scopi.

Archiviazione BLOB di Azure è la soluzione di archiviazione degli oggetti scalabile di Microsoft per il cloud. L'archiviazione BLOB è progettata per l'archiviazione di immagini e documenti, lo streaming di file multimediali, la gestione dei dati di backup e archiviazione e molto altro ancora. Per altre informazioni sull'archiviazione BLOB, vedere la pagina di panoramica.

Funzioni di Azure è una soluzione computer serverless che consente di scrivere ed eseguire piccoli blocchi di codice come funzioni altamente scalabili, serverless e basate su eventi. Per altre informazioni sulle Funzioni di Azure, vedere la pagina di panoramica.

In questa esercitazione verranno illustrate le procedure per:

  • Caricare immagini e file nell'archivio BLOB
  • Usare un trigger di eventi di Funzioni di Azure per elaborare i dati caricati nell'archiviazione BLOB
  • Usare Servizi cognitivi per analizzare un'immagine
  • Scrivere dati nell'archiviazione tabelle usando le associazioni di output di Funzioni di Azure

Prerequisiti

Creare l'account di archiviazione e il contenitore

Il primo passaggio consiste nel creare l'account di archiviazione che conterrà i dati BLOB caricati, che in questo scenario saranno immagini che contengono testo. Un account di archiviazione offre diversi servizi, ma questa esercitazione usa l'archiviazione BLOB e l'archiviazione tabelle.

Accedere al portale di Azure.

  1. Nella barra di ricerca nella parte superiore del portale cercare Archiviazione e selezionare il risultato con l'etichetta Account di archiviazione.

  2. Nella pagina Account di archiviazione selezionare + Crea in alto a sinistra.

  3. Nella pagina Crea un account di archiviazione immettere i valori seguenti:

  • Sottoscrizione: scegliere la sottoscrizione desiderata.
  • Gruppo di risorse: selezionare Crea nuovo e immettere un nome e msdocs-storage-functionquindi scegliere OK.
  • Nome account di archiviazione: immettere il valore msdocsstoragefunction. Il nome dell'account di archiviazione deve essere univoco in Azure, quindi potrebbe essere necessario aggiungere numeri dopo il nome, ad esempio msdocsstoragefunction123.
  • Area: selezionare l'area più vicina.
  • Prestazioni: scegliere Standard.
  • Ridondanza: lasciare selezionato il valore predefinito.

Screenshot che mostra come creare un account di archiviazione in Azure.

  1. Selezionare Rivedi e crea nella parte inferiore e Azure convaliderà le informazioni immesse. Dopo aver convalidato le impostazioni, scegliere Crea e Azure inizierà il provisioning dell'account di archiviazione, che potrebbe richiedere qualche minuto.

Creare il contenitore

  1. Dopo aver effettuato il provisioning dell'account di archiviazione, selezionare Vai alla risorsa. Il passaggio successivo consiste nel creare un contenitore di archiviazione all'interno dell'account per contenere le immagini caricate per l'analisi.

  2. Nel pannello di spostamento scegliere Contenitori.

  3. Nella pagina Contenitori selezionare + Contenitore nella parte superiore. Nel pannello di scorrimento immettere un nome di imageanalysis e assicurarsi che il livello di accesso Pubblico sia impostato su BLOB (accesso in lettura anonimo solo per i BLOB. Quindi selezionare Crea

Screenshot che mostra come creare un nuovo contenitore di archiviazione.

Verrà visualizzato il nuovo contenitore nell'elenco dei contenitori.

Recuperare la stringa di connessione

L'ultimo passaggio consiste nel recuperare la stringa di connessione per l'account di archiviazione.

  1. Nel pannello di spostamento a sinistra selezionare Chiavi di accesso.

  2. Nella pagina Chiavi di accesso selezionare Mostra chiavi. Copiare il valore della stringa di connessione nella sezione key1 e incollarlo in un punto da usare per un secondo momento. È anche necessario prendere nota del nome msdocsstoragefunction dell'account di archiviazione per un secondo momento.

Screenshot che mostra come accedere al contenitore di archiviazione.

Questi valori saranno necessari quando è necessario connettere la funzione di Azure a questo account di archiviazione.

Creare il servizio Visione artificiale

Creare quindi l'account del servizio Visione artificiale che elabora i file caricati. Visione artificiale fa parte di Servizi cognitivi di Azure e offre un'ampia gamma di funzionalità per estrarre i dati dalle immagini. Altre informazioni sulle Visione artificiale sono disponibili nella pagina di panoramica.

  1. Nella barra di ricerca nella parte superiore del portale cercare Computer e selezionare il risultato con l'etichetta Visione artificiale.

  2. Nella pagina Visione artificiale selezionare + Crea.

  3. Nella pagina Crea Visione artificiale immettere i valori seguenti:

  • Sottoscrizione: scegliere la sottoscrizione desiderata.
  • Gruppo di risorse: usare il msdocs-storage-function gruppo di risorse creato in precedenza.
  • Area: selezionare l'area più vicina.
  • Nome: immettere in un nome .msdocscomputervision
  • Piano tariffario: scegliere Gratuito se disponibile. In caso contrario, scegliere Standard S1.
  • Selezionare la casella Avviso sull'intelligenza artificiale responsabile se si accettano le condizioni

Screenshot che mostra come creare un nuovo servizio Visione artificiale.

  1. Selezionare Rivedi e crea nella parte inferiore. Azure richiederà qualche minuto per convalidare le informazioni immesse. Dopo aver convalidato le impostazioni, scegliere Crea e Azure inizierà il provisioning del servizio Visione artificiale, che potrebbe richiedere qualche minuto.

  2. Al termine dell'operazione, selezionare Vai alla risorsa.

Recuperare le chiavi

Successivamente, è necessario trovare la chiave privata e l'URL dell'endpoint per il servizio Visione artificiale da usare nell'app per le funzioni di Azure.

  1. Nella pagina di panoramica Visione artificiale selezionare Chiavi ed endpoint.

  2. Nella pagina Chiavi ed EndPoint copiare il valore Chiave 1 e i valori di EndPoint e incollarli in un punto da usare per usarli in un secondo momento.

Screenshot che mostra come recuperare le chiavi e l'endpoint URL per un servizio Visione artificiale.

Scaricare e configurare il progetto di esempio

Il codice per la funzione di Azure usata in questa esercitazione è disponibile in questo repository GitHub. È anche possibile clonare il progetto usando il comando seguente.

git clone https://github.com/Azure-Samples/msdocs-storage-bind-function-service.git \
cd msdocs-storage-bind-function-service/dotnet

Il codice di progetto di esempio esegue le attività seguenti:

  • Recupera le variabili di ambiente per connettersi all'account di archiviazione e al servizio Visione artificiale
  • Accetta il file caricato come parametro BLOB
  • Analizza il BLOB usando il servizio Visione artificiale
  • Invia il testo dell'immagine analizzata a una nuova riga di tabella usando associazioni di output

Dopo aver scaricato e aperto il progetto, esistono alcuni concetti essenziali da comprendere nel metodo principale Run illustrato di seguito. La funzione di Azure usa associazioni trigger e output, che vengono applicate usando attributi nella firma del Run metodo.

L'attributo Table usa due parametri. Il primo parametro specifica il nome della tabella per scrivere il valore di testo dell'immagine analizzato restituito dalla funzione. Il secondo Connection parametro esegue il pull di una stringa di connessione dell'archiviazione tabelle dalle variabili di ambiente in modo che la funzione di Azure possa accedervi.

L'attributo BlobTrigger viene usato per associare la funzione all'evento di caricamento nell'archiviazione BLOB e fornisce il BLOB caricato nella Run funzione. Il trigger BLOB ha due parametri propri, uno per il nome del contenitore BLOB da monitorare per i caricamenti e uno per la stringa di connessione dell'account di archiviazione.

// 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; }
}

Questo codice recupera anche i valori di configurazione essenziali dalle variabili di ambiente, ad esempio la stringa di connessione dell'account di archiviazione e Visione artificiale chiave. Queste variabili di ambiente verranno aggiunte all'ambiente della funzione di Azure dopo la distribuzione.

La ProcessImage funzione usa anche un secondo metodo denominato AnalyzeImage, illustrato di seguito. Questo codice usa l'endpoint URL e la chiave dell'account Visione artificiale per effettuare una richiesta a tale server per elaborare l'immagine. La richiesta restituirà tutto il testo individuato nell'immagine, che verrà quindi scritto in Archiviazione tabelle usando l'associazione di output sul Run metodo .

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();
}

Esecuzione in locale

Se si vuole eseguire il progetto in locale, è possibile popolare le variabili di ambiente usando il file local.settings.json. All'interno di questo file compilare i valori segnaposto con i valori salvati in precedenza durante la creazione delle risorse di Azure.

Anche se il codice della funzione di Azure verrà eseguito in locale, si connetterà comunque ai servizi in tempo reale in Azure, anziché usare gli emulatori locali.

{
    "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"
    }
}

Distribuire il codice in Funzioni di Azure

A questo punto è possibile distribuire l'applicazione in Azure usando Visual Studio. È anche possibile creare l'app Funzioni di Azure in Azure contemporaneamente all'interno del processo di distribuzione.

  1. Per iniziare, selezionare il nodo del progetto ProcessImage e selezionare Pubblica.

  2. Nella finestra di dialogo Pubblica selezionare Azure e scegliere Avanti.

Screenshot che mostra come selezionare Azure come destinazione di distribuzione.

  1. Selezionare App per le funzioni di Azure (Windows) o App per le funzioni di Azure (Linux) nella schermata successiva e quindi scegliere di nuovo Avanti .

Screenshot che mostra come scegliere Funzioni di Azure come destinazione di distribuzione specifica.

  1. Nel passaggio Dell'istanza di Funzioni assicurarsi di scegliere la sottoscrizione in cui si vuole eseguire la distribuzione. Selezionare quindi il simbolo verde + sul lato destro della finestra di dialogo.

  2. Verrà aperta una nuova finestra di dialogo. Immettere i valori seguenti per la nuova app per le funzioni.

  • Nome: immettere msdocsprocessimage o qualcosa di simile.
  • Nome sottoscrizione: scegliere la sottoscrizione da usare.
  • Gruppo di risorse: scegliere il msdocs-storage-function gruppo di risorse creato in precedenza.
  • Tipo di piano: selezionare Consumo.
  • Località: scegliere l'area più vicina.
  • Archiviazione di Azure: selezionare l'account di archiviazione creato in precedenza.

Screenshot che mostra come creare una nuova app per le funzioni in Azure.

  1. Dopo aver compilato tutti questi valori, selezionare Crea. Visual Studio e Azure inizieranno a eseguire il provisioning delle risorse richieste, che richiederanno alcuni minuti.

  2. Al termine del processo, selezionare Fine per chiudere il flusso di lavoro della finestra di dialogo.

  3. Il passaggio finale per distribuire la funzione di Azure consiste nell'selezionare Pubblica in alto a destra nella schermata. Il completamento della pubblicazione della funzione potrebbe richiedere anche alcuni minuti. Al termine, l'applicazione verrà eseguita in Azure.

Connettere i servizi

La funzione di Azure è stata distribuita correttamente, ma non è possibile connettersi all'account di archiviazione e ai servizi Visione artificiale. Le chiavi e le stringhe di connessione corrette devono prima essere aggiunte alle impostazioni di configurazione dell'app Funzioni di Azure.

  1. Nella parte superiore del portale di Azure cercare la funzione e selezionare App per le funzioni nei risultati.

  2. Nella schermata App per le funzioni selezionare l'app per le funzioni creata in Visual Studio.

  3. Nella pagina panoramica dell'app per le funzioni selezionare Configurazione nel riquadro di spostamento a sinistra. Verrà aperta una pagina in cui è possibile gestire vari tipi di impostazioni di configurazione per l'app. Per il momento, si è interessati alla sezione Impostazioni applicazione .

  4. Il passaggio successivo consiste nell'aggiungere le impostazioni per il nome dell'account di archiviazione e la stringa di connessione, la chiave privata Visione artificiale e l'endpoint Visione artificiale.

  5. Nella scheda Impostazioni applicazione selezionare + Nuova impostazione applicazione. Nel riquadro a comparsa visualizzato immettere i valori seguenti:

  • Nome: immettere il valore ComputerVisionKey.
  • Valore: incollare la chiave Visione artificiale salvata in precedenza.
  1. Fare clic su OK per aggiungere questa impostazione all'app.

Screenshot che mostra come aggiungere una nuova impostazione dell'applicazione a una funzione di Azure.

  1. Ripetere quindi questo processo per l'endpoint del servizio Visione artificiale usando i valori seguenti:
  • Nome: immettere il valore ComputerVisionEndpoint.
  • Valore: incollare l'URL dell'endpoint salvato in precedenza.
  1. Ripetere questo passaggio per la connessione all'account di archiviazione usando i valori seguenti:
  • Nome: immettere un valore di StorageConnection.
  • Valore: incollare la stringa di connessione salvata in precedenza.
  1. Ripetere infine questo processo ancora una volta per il nome dell'account di archiviazione, usando i valori seguenti:
  • Nome: immettere un valore di StorageAccountName.
  • Valore: immettere il nome dell'account di archiviazione creato.
  1. Dopo aver aggiunto queste impostazioni dell'applicazione, assicurarsi di selezionare Salva nella parte superiore della pagina di configurazione. Al termine del salvataggio, è anche possibile premere Aggiorna per assicurarsi che le impostazioni siano selezionate.

Tutte le variabili di ambiente necessarie per connettere la funzione di Azure a servizi diversi sono ora disponibili.

Caricare un'immagine nell'archivio BLOB

A questo punto è possibile testare l'applicazione. È possibile caricare un BLOB nel contenitore e quindi verificare che il testo nell'immagine sia stato salvato in Archiviazione tabelle.

  1. In primo luogo, nella parte superiore del portale di Azure cercare Archiviazione e selezionare Account di archiviazione. Nella pagina account di archiviazione selezionare l'account creato in precedenza.

  2. Selezionare quindi Contenitori nel riquadro di spostamento a sinistra e quindi passare al contenitore ImageAnalysis creato in precedenza. Da qui è possibile caricare un'immagine di test direttamente all'interno del browser.

Screenshot che mostra come passare a un contenitore di archiviazione.

  1. È possibile trovare alcune immagini di esempio incluse nella cartella images nella radice del progetto di esempio scaricabile oppure è possibile usare una delle proprie immagini.

  2. Nella parte superiore della pagina ImageAnalysis selezionare Carica. Nel riquadro a comparsa visualizzato selezionare l'icona della cartella a destra per aprire un browser di file. Scegliere l'immagine da caricare e quindi selezionare Carica.

Screenshot che mostra come caricare un BLOB in un contenitore di archiviazione.

  1. Il file verrà visualizzato all'interno del contenitore BLOB. Successivamente, è possibile verificare che il caricamento abbia attivato la funzione di Azure e che il testo nell'immagine sia stato analizzato e salvato correttamente nell'archiviazione tabelle.

  2. Usando i percorsi nella parte superiore della pagina, passare a un livello superiore nell'account di archiviazione. Individuare e selezionare Browser di archiviazione nel riquadro di spostamento a sinistra e quindi selezionare Tabelle.

  3. Dovrebbe essere ora disponibile una tabella ImageText . Fare clic sulla tabella per visualizzare in anteprima le righe di dati al suo interno. Verrà visualizzata una voce per il testo dell'immagine elaborata del caricamento. È possibile verificarlo usando il timestamp o visualizzando il contenuto della colonna Testo .

Screenshot che mostra una voce di testo in Archiviazione tabelle di Azure.

Congratulazioni! L'elaborazione di un'immagine caricata nell'archiviazione BLOB è riuscita usando Funzioni di Azure e Visione artificiale.

Pulire le risorse

Se non si intende continuare a usare questa applicazione, è possibile eliminare le risorse create rimuovendo il gruppo di risorse.

  1. Selezionare Gruppi di risorse nel riquadro di spostamento principale
  2. Selezionare il msdocs-storage-function gruppo di risorse dall'elenco.
  3. Selezionare il pulsante Elimina gruppo di risorse nella parte superiore della pagina di panoramica del gruppo di risorse.
  4. Immettere il nome del gruppo di risorse msdocs-storage-function nella finestra di dialogo di conferma.
  5. Selezionare Elimina. Il completamento del processo per eliminare il gruppo di risorse può richiedere alcuni minuti.