Zelfstudie: Een bestand uploaden en analyseren met Azure Functions en Blob Storage

In deze zelfstudie leert u hoe u een afbeelding uploadt naar Azure Blob Storage en deze verwerkt met behulp van Azure Functions en Computer Vision. U leert ook hoe u Azure Function-triggers en -bindingen implementeert als onderdeel van dit proces. Deze services analyseren samen een geüploade afbeelding die tekst bevat, extraheren de tekst eruit en slaan de tekst vervolgens op in een databaserij voor latere analyse of andere doeleinden.

Azure Blob Storage is de zeer schaalbare oplossing voor objectopslag van Microsoft voor de cloud. Blob Storage is ontworpen voor het opslaan van afbeeldingen en documenten, het streamen van mediabestanden, het beheren van back-up- en archiefgegevens en nog veel meer. Meer informatie over Blob Storage vindt u op de overzichtspagina.

Azure Functions is een serverloze computeroplossing waarmee u kleine codeblokken kunt schrijven en uitvoeren als zeer schaalbare, serverloze, gebeurtenisgestuurde functies. Meer informatie over Azure Functions vindt u op de overzichtspagina.

In deze zelfstudie leert u het volgende:

  • Afbeeldingen en bestanden uploaden naar Blob Storage
  • Een Azure Function-gebeurtenistrigger gebruiken om gegevens te verwerken die zijn geüpload naar Blob Storage
  • Azure AI-services gebruiken om een afbeelding te analyseren
  • Gegevens schrijven naar Table Storage met behulp van Azure Function-uitvoerbindingen

Vereisten

Het opslagaccount en de container maken

De eerste stap bestaat uit het maken van het opslagaccount waarin de geüploade blobgegevens worden opgeslagen. In dit scenario zijn dit afbeeldingen die tekst bevatten. Een opslagaccount biedt verschillende services, maar in deze zelfstudie wordt gebruikgemaakt van Blob Storage en Table Storage.

Meld u aan bij de Azure-portal.

  1. Zoek in de zoekbalk bovenaan de portal naar Opslag en selecteer het resultaat met het label Opslagaccounts.

  2. Selecteer linksboven op de pagina Opslagaccountsde optie + Maken .

  3. Voer op de pagina Een opslagaccount maken de volgende waarden in:

    • Abonnement: kies het gewenste abonnement.
    • Resourcegroep: selecteer Nieuwe maken , voer de naam in en msdocs-storage-functionkies OK.
    • Naam van opslagaccount: voer de waarde in van msdocsstoragefunction. De naam van het opslagaccount moet uniek zijn in Azure, dus mogelijk moet u nummers achter de naam toevoegen, zoals msdocsstoragefunction123.
    • Regio: selecteer de regio die zich het dichtst bij u in de buurt bevindt.
    • Prestaties: kies Standaard.
    • Redundantie: laat de standaardwaarde geselecteerd.

    Een schermopname die laat zien hoe u een opslagaccount maakt in Azure.

  4. Selecteer Onderaan beoordelen en maken . De inGevoerde gegevens worden door Azure gevalideerd. Zodra de instellingen zijn gevalideerd, kiest u Maken . Azure begint met het inrichten van het opslagaccount. Dit kan even duren.

De container maken

  1. Nadat het opslagaccount is ingericht, selecteert u Ga naar resource. De volgende stap is het maken van een opslagcontainer in het account voor het opslaan van geüploade afbeeldingen voor analyse.

  2. Kies Containers in het navigatievenster.

  3. Selecteer op de pagina Containersde optie + Container bovenaan. Voer in het schuifvenster een Naam van de afbeeldingsanalyse in en zorg ervoor dat het niveau Openbare toegang is ingesteld op Blob (alleen anonieme leestoegang voor blobs). Selecteer vervolgens Maken.

    Een schermopname die laat zien hoe u een nieuwe opslagcontainer maakt.

Als het goed is, wordt de nieuwe container weergegeven in de lijst met containers.

De verbindingsreeks ophalen

De laatste stap is het ophalen van de connection string voor het opslagaccount.

  1. Selecteer toegangssleutels in het linkernavigatievenster.

  2. Selecteer op de pagina Toegangssleutelsde optie Sleutels weergeven. Kopieer de waarde van de verbindingsreeks in de sectie key1 en plak deze ergens voor later gebruik. U moet ook de naam msdocsstoragefunction van het opslagaccount noteren voor later.

    Een schermopname die laat zien hoe u toegang hebt tot de opslagcontainer.

Deze waarden zijn nodig wanneer we onze Azure-functie moeten verbinden met dit opslagaccount.

De Computer Vision-service maken

Maak vervolgens het Computer Vision-serviceaccount waarmee de geüploade bestanden worden verwerkt. Computer Vision maakt deel uit van Azure AI-services en biedt diverse functies voor het extraheren van gegevens uit afbeeldingen. Meer informatie over Computer Vision vindt u op de overzichtspagina.

  1. Zoek in de zoekbalk boven aan de portal naar Computer en selecteer het resultaat met het label Computer vision.

  2. Selecteer + Maken op de pagina Computer vision.

  3. Voer op de pagina Computer Vision maken de volgende waarden in:

    • Abonnement: kies het gewenste abonnement.
    • Resourcegroep: gebruik de msdocs-storage-function resourcegroep die u eerder hebt gemaakt.
    • Regio: selecteer de regio die zich het dichtst bij u in de buurt bevindt.
    • Naam: voer de naam in van msdocscomputervision.
    • Prijscategorie: kies Gratis als deze beschikbaar is, kies anders Standard S1.
    • Schakel het selectievakje Kennisgeving voor verantwoordelijke AI in als u akkoord gaat met de voorwaarden

    Een schermopname die laat zien hoe u een nieuwe Computer Vision-service maakt.

  4. Selecteer Beoordelen en maken onderaan. Het duurt even voordat Azure de ingevoerde gegevens valideert. Zodra de instellingen zijn gevalideerd, kiest u Maken. Azure begint met het inrichten van de Computer Vision-service. Dit kan even duren.

  5. Wanneer de bewerking is voltooid, selecteert u Ga naar resource.

De sleutels ophalen

Vervolgens moeten we de geheime sleutel en eindpunt-URL vinden voor de Computer Vision-service die moeten worden gebruikt in onze Azure Function-app.

  1. Selecteer sleutels en eindpuntop de overzichtspagina van Computer Vision.

  2. Kopieer op de pagina Sleutels en eindpunt de waarde voor Sleutel 1 en de Waarden voor Eindpunt en plak deze ergens om later te gebruiken.

    Een schermopname van het ophalen van de sleutels en het URL-eindpunt voor een Computer Vision-service.

Het voorbeeldproject downloaden en configureren

De code voor de Azure-functie die in deze zelfstudie wordt gebruikt, vindt u in deze GitHub-opslagplaats. U kunt het project ook klonen met behulp van de onderstaande opdracht.

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

Met de voorbeeldprojectcode worden de volgende taken uitgevoerd:

  • Haalt omgevingsvariabelen op om verbinding te maken met het opslagaccount en Computer Vision-service
  • Accepteert het geüploade bestand als blobparameter
  • Analyseert de blob met behulp van de Computer Vision-service
  • Hiermee verzendt u de geanalyseerde afbeeldingstekst naar een nieuwe tabelrij met behulp van uitvoerbindingen

Nadat u het project hebt gedownload en geopend, zijn er enkele essentiële concepten die u moet begrijpen in de onderstaande hoofdmethode Run . De Azure-functie maakt gebruik van trigger- en uitvoerbindingen, die worden toegepast met behulp van kenmerken op de Run methodehandtekening.

Het Table kenmerk gebruikt twee parameters. De eerste parameter geeft de naam op van de tabel voor het schrijven van de geparseerde afbeeldingstekstwaarde die door de functie wordt geretourneerd. De tweede Connection parameter haalt een Table Storage-connection string op uit de omgevingsvariabelen, zodat onze Azure-functie er toegang toe heeft.

Het BlobTrigger kenmerk wordt gebruikt om onze functie te binden aan de uploadgebeurtenis in Blob Storage en levert de geüploade blob aan de Run functie. De blobtrigger heeft twee eigen parameters: één voor de naam van de blobcontainer die moet worden bewaakt voor uploads en een voor de connection string van ons opslagaccount.

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

Met deze code worden ook essentiële configuratiewaarden opgehaald uit omgevingsvariabelen, zoals het opslagaccount connection string en Computer Vision sleutel. We voegen deze omgevingsvariabelen toe aan onze Azure Function-omgeving nadat deze is geïmplementeerd.

De ProcessImage functie maakt ook gebruik van een tweede methode met de naam AnalyzeImage, zoals hieronder wordt weergegeven. Deze code maakt gebruik van het URL-eindpunt en de sleutel van het Computer Vision-account om een aanvraag in te dienen bij die server om onze installatiekopieën te verwerken. De aanvraag retourneert alle tekst die in de afbeelding is gedetecteerd, die vervolgens naar Table Storage wordt geschreven met behulp van de uitvoerbinding van de Run methode.

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

Lokaal uitvoeren

Als u het project lokaal wilt uitvoeren, kunt u de omgevingsvariabelen vullen met het bestand local.settings.json. Vul in dit bestand de waarden van de tijdelijke aanduiding in met de waarden die u eerder hebt opgeslagen bij het maken van de Azure-resources.

Hoewel de Azure-functiecode lokaal wordt uitgevoerd, maakt deze nog steeds verbinding met de liveservices in Azure in plaats van lokale emulators te gebruiken.

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

De code implementeren in Azure Functions

U bent nu klaar om onze toepassing te implementeren in Azure met behulp van Visual Studio. U kunt de Azure Functions-app ook tegelijkertijd in Azure maken als onderdeel van het implementatieproces.

  1. Selecteer eerst met de rechtermuisknop het projectknooppunt ProcessImage en selecteer Publiceren.

  2. Selecteer in het dialoogvenster Publiceren de optie Azure en kies Volgende.

    Een schermopname die laat zien hoe u Azure selecteert als het implementatiedoel.

  3. Selecteer Azure-functie-app (Windows) of Azure-functie-app (Linux) op het volgende scherm en kies vervolgens opnieuw Volgende .

    Een schermopname die laat zien hoe u Azure Functions kiest als een specifiek implementatiedoel.

  4. Zorg ervoor dat u in de stap Functions-exemplaar het abonnement kiest waarop u wilt implementeren. Selecteer vervolgens het groene + symbool aan de rechterkant van het dialoogvenster.

  5. Er wordt een nieuw dialoogvenster geopend. Voer de volgende waarden in voor uw nieuwe functie-app.

    • Naam: voer msdocprocessimage of iets dergelijks in.
    • Abonnementsnaam: kies het abonnement dat u wilt gebruiken.
    • Resourcegroep: kies de msdocs-storage-function resourcegroep die u eerder hebt gemaakt.
    • Abonnementstype: Selecteer Verbruik.
    • Locatie: kies de regio die het dichtst bij u in de buurt is.
    • Azure Storage: selecteer het opslagaccount dat u eerder hebt gemaakt.

    Een schermopname die laat zien hoe u een nieuwe functie-app maakt in Azure.

  6. Nadat u al deze waarden hebt ingevuld, selecteert u Maken. Visual Studio en Azure beginnen met het inrichten van de aangevraagde resources. Dit duurt even.

  7. Nadat het proces is voltooid, selecteert u Voltooien om de dialoogvensterwerkstroom te sluiten.

  8. De laatste stap voor het implementeren van de Azure-functie bestaat uit het selecteren van Publiceren in de rechterbovenhoek van het scherm. Het kan even duren voordat de functie is gepubliceerd. Zodra de toepassing is voltooid, wordt deze uitgevoerd in Azure.

De services verbinden

De Azure-functie is geïmplementeerd, maar kan nog geen verbinding maken met ons opslagaccount en Computer Vision services. De juiste sleutels en verbindingsreeksen moeten eerst worden toegevoegd aan de configuratie-instellingen van de Azure Functions-app.

  1. Zoek boven aan de Azure Portal naar functie en selecteer Functie-app in de resultaten.

  2. Selecteer in het scherm Functie-app de functie-app die u hebt gemaakt in Visual Studio.

  3. Selecteer op de overzichtspagina van de functie-appde optie Configuratie in het linkernavigatievenster. Hiermee opent u een pagina waar we verschillende typen configuratie-instellingen voor onze app kunnen beheren. Voorlopig zijn we geïnteresseerd in de sectie Toepassingsinstellingen .

  4. De volgende stap is het toevoegen van instellingen voor de naam en connection string van het opslagaccount, de Computer Vision geheime sleutel en het Computer Vision-eindpunt.

  5. Selecteer op het tabblad Toepassingsinstellingende optie + Nieuwe toepassingsinstelling. Voer in de flyout die wordt weergegeven de volgende waarden in:

    • Naam: voer een waarde in van ComputerVisionKey.
    • Waarde: plak de Computer Vision sleutel die u eerder hebt opgeslagen.
  6. Klik op OK om deze instelling toe te voegen aan uw app.

    Een schermopname die laat zien hoe u een nieuwe toepassingsinstelling toevoegt aan een Azure-functie.

  7. Laten we dit proces vervolgens herhalen voor het eindpunt van onze Computer Vision-service, met behulp van de volgende waarden:

    • Naam: voer de waarde ComputerVisionEndpoint in.
    • Waarde: plak de eindpunt-URL die u eerder hebt opgeslagen.
  8. Herhaal deze stap opnieuw voor de verbinding met het opslagaccount met behulp van de volgende waarden:

    • Naam: voer de waarde StorageConnection in.
    • Waarde: plak de connection string die u eerder hebt opgeslagen.
  9. Herhaal dit proces ten slotte nog een keer voor de naam van het opslagaccount, met behulp van de volgende waarden:

    • Naam: voer een waarde in van StorageAccountName.
    • Waarde: voer de naam in van het opslagaccount dat u hebt gemaakt.
  10. Nadat u deze toepassingsinstellingen hebt toegevoegd, selecteert u Opslaan bovenaan de configuratiepagina. Wanneer het opslaan is voltooid, kunt u ook op Vernieuwen drukken om ervoor te zorgen dat de instellingen worden opgehaald.

Alle vereiste omgevingsvariabelen om onze Azure-functie te verbinden met verschillende services zijn nu aanwezig.

Een afbeelding uploaden naar Blob Storage

U bent nu klaar om onze toepassing te testen. U kunt een blob uploaden naar de container en vervolgens controleren of de tekst in de afbeelding is opgeslagen in Table Storage.

  1. Zoek eerst bovenaan de Azure Portal naar Opslag en selecteer opslagaccount. Selecteer op de pagina opslagaccount het account dat u eerder hebt gemaakt.

  2. Selecteer vervolgens Containers in het linkernavigatievenster en navigeer vervolgens naar de container ImageAnalysis die u eerder hebt gemaakt. Hier kunt u een testafbeelding rechtstreeks in de browser uploaden.

    Een schermopname die laat zien hoe u naar een opslagcontainer navigeert.

  3. U kunt enkele voorbeeldafbeeldingen vinden die zijn opgenomen in de map afbeeldingen in de hoofdmap van het downloadbare voorbeeldproject, of u kunt er zelf een gebruiken.

  4. Selecteer uploaden bovenaan de pagina ImageAnalysis. Selecteer in de flyout die wordt geopend het mappictogram aan de rechterkant om een bestandsbrowser te openen. Kies de afbeelding die u wilt uploaden en selecteer vervolgens Uploaden.

    Een schermopname die laat zien hoe u een blob uploadt naar een opslagcontainer.

  5. Het bestand moet worden weergegeven in uw blobcontainer. Vervolgens kunt u controleren of het uploaden de Azure-functie heeft geactiveerd en of de tekst in de afbeelding correct is geanalyseerd en opgeslagen in Table Storage.

  6. Navigeer met behulp van de breadcrumbs boven aan de pagina één niveau omhoog in uw opslagaccount. Zoek en selecteer Opslagbrowser in het linkernavigatievenster en selecteer vervolgens Tabellen.

  7. Er moet nu een ImageText-tabel beschikbaar zijn. Klik op de tabel om een voorbeeld van de gegevensrijen in de tabel te bekijken. U ziet nu een vermelding voor de verwerkte afbeeldingstekst van onze upload. U kunt dit controleren met behulp van de tijdstempel of door de inhoud van de kolom Tekst weer te geven.

    Een schermopname van een tekstinvoer in Azure Table Storage.

Gefeliciteerd U hebt een afbeelding die naar Blob Storage is geüpload, verwerkt met behulp van Azure Functions en Computer Vision.

Resources opschonen

Als u deze toepassing niet meer gaat gebruiken, kunt u de gemaakte resources verwijderen door de resourcegroep te verwijderen.

  1. Selecteer Resourcegroepen in de hoofdnavigatiebalk
  2. Selecteer de msdocs-storage-function resourcegroep in de lijst.
  3. Selecteer de knop Resourcegroep verwijderen boven aan de overzichtspagina van de resourcegroep.
  4. Voer in het bevestigingsvenster de naam van de resourcegroep msdocs-storage-function in.
  5. Selecteer Verwijderen. Het verwijderen van de resourcegroep kan enkele minuten duren.