Partager via


Tutoriel : Charger et analyser un fichier avec Azure Functions et Blob Storage

Dans ce tutoriel, vous allez apprendre à charger une image dans Azure Blob Storage et à la traiter à l’aide de Azure Functions et de Computer Vision. Vous apprendrez également à implémenter des déclencheurs et des liaisons de Fonction Azure dans le cadre de ce processus. Ensemble, ces services analysent une image chargée comprenant du texte, extraient le texte, puis le stockent le dans une ligne de base de données à des fins d’analyse ou à d’autres fins.

Azure Blob Storage est la solution de stockage d'objets massivement évolutive de Microsoft pour le cloud. Blob Storage est conçu pour stocker des images et des documents, diffuser en continu des fichiers multimédias, gérer les données de sauvegarde et d’archivage, et bien plus encore. Vous pouvez en savoir plus sur Blob Storage sur la page overview.

Azure Functions est une solution d’ordinateur serverless qui vous permet d’écrire et d’exécuter de petits blocs de code comme fonctions hautement évolutives, serverless et pilotées par les événements. Vous pouvez en savoir plus sur Azure Functions sur la page overview.

Dans ce tutoriel, vous allez apprendre à :

  • Charger des images et des fichiers dans Blob Storage
  • Utiliser un déclencheur d’événement de fonction Azure pour traiter les données chargées dans Blob Storage
  • Utiliser Foundry Tools pour analyser une image
  • Écrire des données dans Table Storage à l’aide de liaisons de sortie de Function Azure

Prerequisites

Créer le compte de stockage et le conteneur

La première étape consiste à créer le compte de stockage pour contenir les données d’objet blob chargées, qui, dans ce scénario, sont des images qui contiennent du texte. Un compte de stockage offre plusieurs services différents, mais ce didacticiel utilise Blob Storage et le stockage table.

Connectez-vous au portail Azure.

  1. Dans la barre de recherche située en haut du portail, lancez une recherche sur Stockage, puis sélectionnez le résultat Comptes de stockage.

  2. Dans la page Comptes de stockage, sélectionnez + Créer en haut à gauche.

  3. Dans la page Créer un compte de stockage, entrez les valeurs suivantes :

    • Abonnement : choisissez l’abonnement souhaité.
    • Groupe de ressources : sélectionnez Créer nouveau, entrez le nom msdocs-storage-function, puis choisissez OK.
    • Nom du compte de stockage : entrez une valeur de msdocsstoragefunction. Le nom du compte de stockage doit être unique dans Azure. Vous devrez peut-être ajouter des nombres après le nom, par exemple msdocsstoragefunction123.
    • Région : sélectionnez la région la plus proche de vous.
    • Performances : choisissez Standard.
    • Redondance : conservez la valeur sélectionnée par défaut.

    capture d’écran A montrant comment créer un compte de stockage dans Azure.

  4. Sélectionnez Review + Créer en bas et Azure valide les informations que vous avez entrées. Une fois les paramètres validés, choisissez Create et Azure commence à provisionner le compte de stockage, ce qui peut prendre un moment.

Créer le conteneur

  1. Une fois le compte de stockage provisionné, sélectionnez Accéder à la ressource. L’étape suivante consiste à créer un conteneur de stockage à l’intérieur du compte afin d’y placer les images chargées à des fins d’analyse.

  2. Dans le volet de navigation, choisissez Conteneurs.

  3. Dans la page Conteneurs, sélectionnez + Conteneur en haut. Dans le volet déroulant, sous Nom, entrez imageanalysis, puis vérifiez que le Niveau d’accès public est défini sur Objet blob (accès en lecture anonyme pour les objets blob uniquement). Sélectionnez ensuite Créer.

    Capture d’écran montrant comment créer un conteneur de stockage.

Vous devriez voir votre nouveau conteneur s’afficher dans la liste de conteneurs.

Récupérer le connection string

La dernière étape consiste à récupérer la chaîne de connexion de notre compte de stockage.

  1. Dans le volet de navigation de gauche, sélectionnez l’onglet Clés d’accès.

  2. Dans la page Clés d’accès, sélectionnez Afficher les clés. Copiez la valeur de la chaîne de connexion sous la section key1 et collez la clé quelque part pour une utilisation ultérieure. Notez le nom msdocsstoragefunction du compte de stockage pour plus tard.

    Capture d’écran montrant comment accéder au conteneur de stockage.

Ces valeurs sont nécessaires lorsque nous devons connecter notre fonction Azure à ce compte de stockage.

Créer le service Computer Vision

Ensuite, créez le compte de service Computer Vision qui traite nos fichiers chargés. Computer Vision fait partie de Foundry Tools et offre différentes fonctionnalités pour extraire des données à partir d’images. Vous pouvez en savoir plus sur Computer Vision sur la page overview.

  1. Dans la barre de recherche située en haut du portail, lancez une recherche sur Ordinateur, puis sélectionnez le résultat Vision par ordinateur.

  2. Dans la page Vision par ordinateur, sélectionnez + Créer.

  3. Dans la page Create Computer Vision, entrez les valeurs suivantes :

    • Abonnement : choisissez l’abonnement souhaité.
    • Groupe de ressources : utilisez le groupe de ressources msdocs-storage-function que vous avez créé précédemment.
    • Région : sélectionnez la région la plus proche de vous.
    • Nom : entrez le nom msdocscomputervision.
    • Niveau tarifaire : choisissez Gratuit si ce niveau est disponible, sinon, choisissez Standard S1.
    • Cochez la case Avis sur l’IA responsable si vous acceptez les conditions.

    capture d’écran A montrant comment créer un Computer Vision service.

  4. Sélectionnez Vérifier + créer en bas. Azure prend un moment pour valider les informations que vous avez entrées. Une fois les paramètres validés, choisissez Create et Azure commence à approvisionner le service Computer Vision, ce qui peut prendre un moment.

  5. Une fois l’opération terminée, sélectionnez Accéder à la ressource.

Récupérer les clés

Ensuite, nous devons rechercher la clé secrète et l’URL du point de terminaison du service Computer Vision à utiliser dans notre application de fonction Azure.

  1. Dans la page de vue d’ensemble Computer Vision, sélectionnez Keys et Endpoint.

  2. Dans la page Clés et point de terminaison, copiez la valeur de Key 1 et les valeurs de Point de terminaison, puis collez-les quelque part pour les utiliser plus tard.

    Capture d’écran montrant comment récupérer les clés et l'URL de point de terminaison pour un service de vision par ordinateur.

Télécharger et configurer l’exemple de projet

Le code de la fonction Azure utilisée dans ce didacticiel est disponible dans ce référentiel GitHub. Vous pouvez également cloner le projet à l’aide de la commande suivante :

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

Le code de l’exemple de projet effectue les tâches suivantes :

  • Récupère les variables d’environnement pour se connecter au compte de stockage et au service Computer Vision
  • Accepte le fichier chargé en tant que paramètre d’objet blob
  • Analyse du blob à l’aide du service Computer Vision
  • Envoie le texte de l’image analysée vers une nouvelle ligne de table à l’aide de liaisons de sortie

Une fois que vous avez téléchargé et ouvert le projet, il existe quelques concepts essentiels à comprendre dans la méthode principale Run illustrée ci-dessous. La fonction Azure utilise des liaisons de déclencheur et de sortie, qui sont appliquées à l’aide d’attributs sur la signature de méthode Run.

L’attribut Table utilise deux paramètres. Le premier paramètre spécifie le nom de la table dans laquelle écrire la valeur de texte de l’image analysée qui est retournée par la fonction. Le deuxième paramètre Connection récupère une chaîne de connexion Table Storage à partir des variables d’environnement afin que notre fonction Azure y ait accès.

L’attribut BlobTrigger est utilisé pour lier notre fonction à l’événement de chargement dans Blob Storage et fournit cet objet blob chargé dans la fonction Run. Le déclencheur d'objets blob a deux paramètres propres : un pour le nom du conteneur d’objets blob à surveiller pour les chargements, et un pour la chaîne de connexion de notre compte de stockage.

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

Ce code récupère également les valeurs de configuration essentielles des variables d’environnement, telles que la chaîne de connexion du compte de stockage et la clé de vision par ordinateur. Nous allons ajouter ces variables d'environnement à notre environnement de fonction Azure après son déploiement.

La ProcessImage fonction utilise également une deuxième méthode appelée AnalyzeImage. Ce code utilise le point de terminaison d’URL et la clé de notre compte Computer Vision pour effectuer une demande à ce serveur pour traiter notre image. La requête retourne tout le texte détecté dans l’image. Celui-ci est ensuite écrit dans le Stockage Table à l’aide de la liaison de sortie de la méthode 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();
}

Exécution locale

Si vous souhaitez exécuter le projet localement, vous pouvez renseigner les variables d’environnement à l’aide du fichier local.settings.json. À l’intérieur de ce fichier, renseignez les valeurs d’espace réservé avec les valeurs que vous avez enregistrées précédemment lors de la création des ressources Azure.

Bien que le code de la fonction Azure s’exécute localement, il se connecte toujours aux services en direct sur Azure, plutôt que d’utiliser des émulateurs locaux.

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

Déployer le code sur Azure Functions

Vous êtes maintenant prêt à déployer notre application sur Azure à l’aide de Visual Studio. Vous pouvez également créer l’application Azure Functions dans Azure en même temps dans le cadre du processus de déploiement.

  1. Pour commencer, sélectionnez avec le bouton droit le nœud du projet ProcessImage, puis sélectionnez Publier.

  2. Dans l’écran de boîte de dialogue Publish, sélectionnez Azure et choisissez Next.

    Une capture d’écran montrant comment sélectionner Azure comme cible de déploiement.

  3. Sélectionnez Azure Function App (Windows) ou Azure Function App (Linux) sur l’écran suivant, puis choisissez Next à nouveau.

    capture d’écran A montrant comment choisir Azure Functions comme cible de déploiement spécifique.

  4. À l’étape Instance de Functions, choisissez l’abonnement dans lequel vous souhaitez effectuer le déploiement. Ensuite, sélectionnez le symbole vert + sur le côté droit de la boîte de dialogue.

  5. Une nouvelle boîte de dialogue s’ouvre. Entrez les valeurs suivantes pour votre nouvelle application de fonction.

    • Nom : entrez msdocsprocessimage ou quelque chose de similaire.
    • Nom de l’abonnement : choisissez l’abonnement que vous souhaitez utiliser.
    • Groupe de ressources : choisissez le groupe de ressources msdocs-storage-function que vous avez créé précédemment.
    • Type de plan : sélectionnez Consommation.
    • Emplacement : vous pouvez choisir la région la plus proche.
    • Azure Storage : sélectionnez le compte de stockage que vous avez créé précédemment.

    Capture d'écran montrant comment créer une nouvelle Function App dans Azure.

  6. Une fois que vous avez renseigné toutes ces valeurs, sélectionnez Créer. Visual Studio et Azure commencer à provisionner les ressources demandées, ce qui prend quelques instants.

  7. Une fois le processus terminé, sélectionnez Terminer pour fermer le flux de travail de boîte de dialogue.

  8. La dernière étape pour déployer la fonction Azure consiste à sélectionner Publish en haut à droite de l’écran. La publication de la fonction peut également prendre quelques instants. Une fois l’opération terminée, votre application s’exécute sur Azure.

Connecter les services

La fonction Azure a été déployée avec succès, mais elle ne peut pas encore se connecter à notre compte de stockage et Computer Vision services. Les clés et les chaînes de connexion appropriées doivent d’abord être ajoutées aux paramètres de configuration de l’application Azure Functions.

  1. En haut du portail Azure, recherchez function et sélectionnez Function App dans les résultats.

  2. Dans l’écran Function App, sélectionnez l’application de fonction que vous avez créée dans Visual Studio.

  3. Dans la page vue d’ensemble de l’application de fonction , sélectionnez Configuration dans le volet de navigation gauche pour ouvrir une page dans laquelle nous pouvons gérer différents types de paramètres de configuration pour notre application. Pour l’instant, c’est la section Paramètres d’application qui nous intéresse.

  4. L’étape suivante consiste à ajouter des paramètres pour notre nom de compte de stockage et la chaîne de connexion, la clé secrète de Vision par ordinateur et le point de terminaison de Vision par ordinateur.

  5. Sous l’onglet Paramètre d’application, sélectionnez + Nouveau paramètre d’application. Dans le menu volant qui s’affiche, entrez les valeurs suivantes :

    • Nom : entrez la valeur ComputerVisionKey.
    • Value : collez la clé Computer Vision que vous avez enregistrée précédemment.
  6. Sélectionnez OK pour ajouter ce paramètre à votre application.

    capture d’écran A montrant comment ajouter un nouveau paramètre d’application à un Azure Function.

  7. Répétons ensuite ce processus pour le point de terminaison de notre service Computer Vision, en utilisant les valeurs suivantes :

    • Nom : entrez la valeur ComputerVisionEndpoint.
    • Valeur : collez l’URL du point de terminaison que vous avez enregistrée précédemment.
  8. Répétez cette étape pour la connexion du compte de stockage en utilisant les valeurs suivantes :

    • Nom : entrez la valeur StorageConnection.
    • Value : collez le connection string que vous avez enregistré précédemment.
  9. Enfin, répétez ce processus pour le nom du compte de stockage, en utilisant les valeurs suivantes :

    • Nom : entrez la valeur StorageAccountName.
    • Valeur : entrez le nom du compte de stockage que vous avez créé.
  10. Après avoir ajouté ces paramètres d’application, veillez à sélectionner Enregistrer en haut de la page de configuration. Une fois l’enregistrement terminé, vous pouvez également sélectionner Actualiser pour être sûr que les paramètres ont été appliqués.

Toutes les variables d’environnement requises pour connecter notre fonction Azure à différents services sont désormais en place.

Charger une image dans Blob Storage

Vous êtes maintenant prêt à tester l’application ! Vous pouvez charger un objet blob dans le conteneur, puis vérifier que le texte de l’image a été enregistré dans le Stockage Table.

  1. Tout d’abord, en haut du portail Azure, recherchez Storage et sélectionnez _compte de stockage. Dans la page Compte de stockage, sélectionnez le compte que vous avez créé précédemment.

  2. Ensuite, sélectionnez Conteneurs sur la gauche, puis accédez au conteneur ImageAnalysis que vous avez créé précédemment. À partir de là, vous pouvez charger une image de test directement dans le navigateur.

    Capture d’écran montrant comment accéder au conteneur de stockage.

  3. Vous pouvez utiliser les quelques exemples d’images inclus dans le dossier images situé à la racine de l’exemple de projet téléchargeable. Vous pouvez également utiliser l’une de vos propres images.

  4. En haut de la page ImageAnalysis, sélectionnez Charger. Dans le menu volant qui s’ouvre, sélectionnez l’icône de dossier pour ouvrir un navigateur de fichiers. Choisissez l’image que vous souhaitez charger, puis sélectionnez Charger.

    Capture d’écran montrant comment charger un objet blob dans un conteneur de stockage.

  5. Le fichier doit apparaître à l’intérieur de votre conteneur d’objets blob. Ensuite, vous pouvez vérifier que le chargement a déclenché la fonction Azure, et que le texte de l’image a été analysé et enregistré correctement dans le stockage table.

  6. À l’aide des barres de navigation situées en haut de la page, remontez d’un niveau dans votre compte de stockage. Recherchez puis sélectionnez Navigateur de stockage sur la gauche, puis sélectionnez Tables.

  7. Une table ImageText doit désormais être disponible. Sélectionnez la table pour afficher un aperçu des lignes de données à l’intérieur de celle-ci. Vous devez voir une entrée pour le texte de l’image traitée pour notre chargement. Vous pouvez vérifier cela à l’aide de l’horodatage ou en affichant le contenu de la colonne Texte.

    Une capture d’écran montrant une entrée de texte dans Azure Table Storage.

Congratulations! Vous avez réussi à traiter une image qui a été chargée sur Blob Storage à l’aide de Azure Functions et de Computer Vision.

Nettoyer les ressources

Si vous ne comptez pas continuer à utiliser cette application, vous pouvez supprimer les ressources que vous avez créées en supprimant le groupe de ressources.

  1. Dans le volet de navigation principal, sélectionnez Groupes de ressources.
  2. Sélectionnez le groupe de ressources msdocs-storage-function dans la liste.
  3. Sélectionnez le bouton Supprimer un groupe de ressources en haut de la page de présentation du groupe de ressources.
  4. Entrez le nom du groupe de ressources msdocs-storage-function dans la boîte de dialogue de confirmation.
  5. Sélectionnez Supprimer. Le processus de suppression du groupe de ressources peut prendre quelques minutes.