Sdílet prostřednictvím


Kurz: Nahrání a analýza souboru pomocí Azure Functions a Blob Storage

V tomto kurzu se dozvíte, jak nahrát obrázek do Azure Blob Storage a zpracovat ho pomocí Azure Functions a Computer Vision. Dozvíte se také, jak v rámci tohoto procesu implementovat triggery a vazby funkce Azure. Tyto služby společně analyzují nahraný obrázek, který obsahuje text, extrahuje z něj text a pak text uloží do řádku databáze pro pozdější analýzu nebo jiné účely.

Azure Blob Storage je masivně škálovatelné řešení úložiště objektů Od Microsoftu pro cloud. Blob Storage je určená k ukládání obrázků a dokumentů, streamování mediálních souborů, správě zálohovacích a archivovaných dat a mnoho dalšího. Další informace o Blob Storage najdete na přehledové stránce.

Azure Functions je bezserverové počítačové řešení, které umožňuje psát a spouštět malé bloky kódu jako vysoce škálovatelné bezserverové funkce řízené událostmi. Další informace o Azure Functions najdete na stránce přehledová stránka.

V tomto návodu se naučíte, jak:

  • Nahrání obrázků a souborů do Blob Storage
  • Použití triggeru události funkce Azure ke zpracování dat nahraných do Blob Storage
  • Analýza obrázku pomocí nástrojů Foundry
  • Zápis dat do Table Storage pomocí výstupních vazeb funkce Azure

Prerequisites

Vytvoření účtu úložiště a kontejneru

Prvním krokem je vytvoření účtu úložiště, aby byla uchována nahraná data typu blob, což v tomto scénáři znamená obrázky obsahující text. Účet úložiště nabízí několik různých služeb, ale tento kurz využívá Blob Storage a Table Storage.

Přihlaste se k portálu Azure.

  1. Na panelu hledání v horní části portálu vyhledejte Storage a vyberte výsledek označený Účty úložiště.

  2. Na stránce Účty úložiště vyberte + Vytvořit v levém horním rohu.

  3. Na stránce Vytvořit účet úložiště zadejte následující hodnoty:

    • Předplatné: Zvolte požadované předplatné.
    • Skupina prostředků: Vyberte Vytvořit nový a zadejte název msdocs-storage-functiona pak zvolte OK.
    • Název účtu úložiště: Zadejte hodnotu msdocsstoragefunction. Název účtu úložiště musí být jedinečný v rámci Azure, takže možná budete muset za název přidat čísla, například msdocsstoragefunction123.
    • Oblast: Vyberte oblast, která je k vám nejblíže.
    • Výkon: Zvolte Standard.
    • Redundance: Ponechte vybranou výchozí hodnotu.

    Snímek obrazovky ukazuje, jak vytvořit účet úložiště v Azure.

  4. V dolní části vyberte Recenze + Vytvořit a Azure ověří zadané informace. Po ověření nastavení zvolte Create a Azure začnete zřizovat účet úložiště, což může chvíli trvat.

Vytvoření kontejneru

  1. Po zřízení účtu úložiště vyberte Přejít ke zdroji. Dalším krokem je vytvoření kontejneru úložiště uvnitř účtu pro uložení nahraných obrázků pro účely analýzy.

  2. Na navigačním panelu zvolte Kontejnery.

  3. Na stránce Kontejnery vyberte nahoře + Kontejner. Na panelu vysunutí zadejte název imageanalysis a ujistěte se, že je úroveň veřejného přístupu nastavená na Objekt blob (anonymní přístup pro čtení pouze pro objekty blob). Pak vyberte Vytvořit.

    Snímek obrazovky znázorňující, jak vytvořit nový kontejner úložiště

Nový kontejner by se měl zobrazit v seznamu kontejnerů.

Načtěte řetězec připojení

Posledním krokem je načtení připojovacího řetězce pro účet úložiště.

  1. Na levém navigačním panelu vyberte Přístupové klíče.

  2. Na stránce Přístupové klíče vyberte Zobrazit klíče. Zkopírujte hodnotu připojovacího řetězce pod oddílem key1 a vložte ho někam, kde ho použijete pro pozdější použití. Poznamenejte si také název msdocsstoragefunction účtu úložiště pro pozdější použití.

    Snímek obrazovky znázorňující, jak získat přístup k kontejneru úložiště

Tyto hodnoty jsou nezbytné, když potřebujeme připojit naši funkci Azure k tomuto účtu úložiště.

Vytvoření služby Computer Vision

Dále vytvořte účet služby Computer Vision, který zpracovává nahrané soubory. Computer Vision je součástí foundry Tools a nabízí různé funkce pro extrakci dat z obrázků. Další informace o Počítačovém vidění najdete na přehledové stránce .

  1. Na panelu hledání v horní části portálu vyhledejte Počítač a vyberte výsledek označený jako Počítačové zpracování obrazu.

  2. Na stránce Počítačové zpracování obrazu vyberte + Vytvořit.

  3. Na stránce Kreate Computer Vision zadejte následující hodnoty:

    • Předplatné: Zvolte požadované předplatné.
    • Skupina prostředků: Použijte msdocs-storage-function skupinu prostředků, kterou jste vytvořili dříve.
    • Oblast: Vyberte oblast, která je k vám nejblíže.
    • Název: Zadejte název pro msdocscomputervision.
    • Cenová úroveň: Pokud je dostupná, zvolte Free , jinak zvolte Standard S1.
    • Pokud souhlasíte s podmínkami, zaškrtněte políčko Responsible AI Notice.

    A snímek obrazovky ukazující, jak vytvořit novou službu Computer Vision.

  4. Dole vyberte Zkontrolovat + Vytvořit. Azure chvíli trvá ověření zadaných informací. Po ověření nastavení zvolte Create a Azure zahájí zřizování služby Computer Vision, což může chvíli trvat.

  5. Po dokončení operace vyberte Přejít k prostředku.

Načtení klíčů

Dále musíme najít tajný klíč a adresu URL koncového bodu pro službu Computer Vision, která se má použít v aplikaci funkcí Azure.

  1. Na stránce přehledu Computer Vision vyberte Klíče a koncový bod.

  2. Na stránce Klíče a Koncový bod zkopírujte hodnotu Klíč 1 a hodnoty EndPointu a vložte je někam, kde je chcete použít pro pozdější použití.

    Snímek obrazovky, který ukazuje, jak načíst klíče a koncový bod URL pro službu Computer Vision.

Stažení a konfigurace ukázkového projektu

Kód funkce Azure použité v tomto kurzu najdete v úložišti this GitHub. Projekt můžete naklonovat také pomocí následujícího příkazu:

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

Vzorový kód projektu provádí následující úlohy:

  • Načítá proměnné prostředí pro přístup k účtu úložiště a k službě Computer Vision.
  • Přijme nahraný soubor jako parametr objektu blob.
  • Analyzuje objekt blob pomocí služby Computer Vision
  • Odešle analyzovaný text obrázku do nového řádku tabulky pomocí výstupních vazeb.

Po stažení a otevření projektu existuje několik základních konceptů, které je potřeba pochopit v hlavní Run metodě uvedené níže. Funkce Azure využívá aktivační a výstupní vazby, které se použijí pomocí atributů v podpisu metody Run.

Atribut Table používá dva parametry. První parametr určuje název tabulky, která zapíše analyzovanou textovou hodnotu obrázku vrácenou funkcí. Druhý parametr Connection načte řetězec pro připojení k Table Storage z proměnných prostředí, aby naše funkce Azure k němu měla přístup.

Atribut BlobTrigger slouží k vytvoření vazby naší funkce na událost nahrání v Blob Storage a poskytuje nahraný objekt blob do funkce Run. Spouštěč blobů má dva vlastní parametry – jeden pro název kontejneru blobů, který se má monitorovat kvůli nahrávání, a druhý pro připojovací řetězec našeho účtu úložiště.

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

Tento kód také načte základní konfigurační hodnoty z proměnných prostředí, jako je připojovací řetězec účtu úložiště a klíč služby Computer Vision. Tyto proměnné prostředí přidáme do prostředí funkce Azure po nasazení.

Funkce ProcessImage také využívá druhou metodu volanou AnalyzeImage. Tento kód používá koncový bod adresy URL a klíč našeho účtu Computer Vision k vytvoření požadavku na tento server ke zpracování obrázku. Požadavek vrátí veškerý text zjištěný na obrázku, který je zapsán do Table Storage pomocí výstupní vazby metody 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();
}

Lokální spuštění

Pokud chcete projekt spustit místně, můžete proměnné prostředí naplnit pomocí souboru local.settings.json. Uvnitř tohoto souboru vyplňte zástupné hodnoty hodnotami, které jste si předtím uložili při vytváření Azure prostředků.

I když se kód funkce Azure spouští místně, stále se připojuje k živým službám na Azure, a ne pomocí místních emulátorů.

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

Nasazení kódu do Azure Functions

Teď jste připraveni nasadit naši aplikaci do Azure pomocí Visual Studio. Aplikaci Azure Functions můžete také vytvořit ve Azure současně s procesem nasazení.

  1. Začněte tak, že vpravo vyberete uzel projektu ProcessImage a vyberete Publikovat.

  2. Na obrazovce dialogového okna Publish vyberte Azure a zvolte Dalši.

    Snímek obrazovky ukazující, jak vybrat Azure jako cíl nasazení.

  3. Na další obrazovce vyberte Azure Function App (Windows) nebo Azure Function App (Linux) a pak znovu zvolte Dalši.

    Snímek obrazovky znázorňující, jak vybrat Azure Functions jako konkrétní cíl nasazení.

  4. V kroku instance služby Functions nezapomeňte zvolit předplatné, do které chcete nasadit. Dále vyberte zelený + symbol na pravé straně dialogového okna.

  5. Otevře se nové dialogové okno. Zadejte následující hodnoty pro novou aplikaci Funkcí.

    • Název: Zadejte msdocsprocessimage nebo něco podobného.
    • Název předplatného: Zvolte libovolné předplatné, které chcete použít.
    • Skupina prostředků: Zvolte msdocs-storage-function skupinu prostředků, kterou jste vytvořili dříve.
    • Typ plánu: Vyberte spotřebu.
    • Umístění: Zvolte oblast, která je k vám nejblíže.
    • Azure Storage: Vyberte účet úložiště, který jste vytvořili dříve.

    snímek obrazovky znázorňující, jak vytvořit novou funkční aplikaci v Azure.

  6. Po vyplnění všech těchto hodnot vyberte Vytvořit. Visual Studio a Azure začnou zřizovat požadované prostředky, což trvá několik okamžiků.

  7. Jakmile se proces dokončí, výběrem možnosti Dokončit zavřete pracovní postup dialogového okna.

  8. Posledním krokem nasazení funkce Azure je výběr Publish v pravém horním rohu obrazovky. Publikování funkce může chvíli trvat. Po dokončení aplikace běží na Azure.

Propojení služeb

Funkce Azure byla úspěšně nasazena, ale zatím se nemůže připojit k našemu účtu úložiště a Computer Vision službám. Do konfiguračního nastavení aplikace Azure Functions musí být nejprve přidány správné klíče a připojovací řetězce.

  1. V horní části portálu Azure vyhledejte function a ve výsledcích vyberte Function App.

  2. Na obrazovce Function App vyberte aplikaci funkcí, kterou jste vytvořili v Visual Studio.

  3. Na stránce přehledu aplikace funkcí vyberte v levém navigačním panelu možnost Konfigurace a otevřete stránku, kde můžeme spravovat různé typy nastavení konfigurace pro naši aplikaci. Prozatím nás zajímá část Nastavení aplikace.

  4. Dalším krokem je přidání nastavení pro název účtu úložiště a jeho connection string, tajný klíč služby Computer Vision a koncový bod služby Computer Vision.

  5. Na kartě Nastavení aplikace vyberte + Nové nastavení aplikace. V informačním rámečku, který se zobrazí, zadejte následující hodnoty:

    • Název: Zadejte hodnotu ComputerVisionKey.
    • Value: Vložte klíč Computer Vision, který jste si uložili dříve.
  6. Pokud chcete toto nastavení přidat do aplikace, vyberte OK .

    A snímek obrazovky ukazující, jak přidat nové nastavení aplikace do Azure Function.

  7. V dalším kroku tento proces zopakujeme pro koncový bod naší služby Computer Vision pomocí následujících hodnot:

    • Název: Zadejte hodnotu ComputerVisionEndpoint.
    • Hodnota: Vložte adresu URL koncového bodu, kterou jste si uložili dříve.
  8. Opakujte tento krok znovu pro připojení účtu úložiště s použitím následujících hodnot:

    • Název: Zadejte hodnotu StorageConnection.
    • Hodnotu: Vložte connection string, které jste si uložili dříve.
  9. Nakonec tento proces opakujte ještě jednou pro název účtu úložiště s použitím následujících hodnot:

    • Název: Zadejte hodnotu StorageAccountName.
    • Hodnota: Zadejte název účtu úložiště, který jste vytvořili.
  10. Po přidání těchto nastavení aplikace nezapomeňte v horní části stránky konfigurace vybrat Uložit . Po dokončení uložení můžete také stisknout aktualizovat, abyste měli jistotu, že se nastavení aplikují.

Všechny požadované proměnné prostředí pro připojení naší Azure funkce k různým službám jsou teď na místě.

Nahrání obrázku do Blob Storage

Teď jste připraveni otestovat naši aplikaci. Do kontejneru můžete nahrát objekt blob a pak ověřit, že se text v obrázku uložil do služby Table Storage.

  1. Nejprve v horní části portálu Azure vyhledejte Storage a vyberte storage account. Na stránce účtu úložiště vyberte účet, který jste vytvořili dříve.

  2. Dále vyberte Kontejnery v levém navigačním panelu a pak přejděte do kontejneru ImageAnalysis , který jste vytvořili dříve. Odtud můžete nahrát testovací obrázek přímo v prohlížeči.

    Snímek obrazovky znázorňující, jak přejít do kontejneru úložiště

  3. Několik ukázkových obrázků, které jsou součástí složky obrázků, najdete v kořenovém adresáři ukázkového projektu ke stažení nebo můžete použít vlastní.

  4. V horní části stránky ImageAnalysis vyberte Nahrát. Ve rozbalovací nabídce, která se otevře, vyberte ikonu složky, abyste otevřeli prohlížeč souborů. Zvolte obrázek, který chcete nahrát, a pak vyberte Nahrát.

    Snímek obrazovky znázorňující, jak nahrát objekt blob do kontejneru úložiště

  5. Soubor by se měl zobrazit v kontejneru blob. Dále můžete ověřit, že nahrávání aktivovalo funkci Azure a že se text na obrázku správně analyzoval a uložil do služby Table Storage.

  6. Pomocí navigační stopy v horní části stránky přejděte v účtu úložiště o jednu úroveň výš. Na levém navigačním panelu vyhledejte a vyberte Prohlížeč úložiště, potom vyberte Tabulky.

  7. Tabulka ImageText by teď měla být dostupná. Výběrem v tabulce zobrazíte náhled řádků dat uvnitř tabulky. Měli byste vidět položku pro zpracovaný text z nahraného obrázku. Můžete to ověřit pomocí časového razítka nebo zobrazením obsahu sloupce Text .

    snímek obrazovky zobrazující textovou položku v Azure Table Storage.

Congratulations! Úspěšně jste zpracovali obrázek, který jste nahráli do Blob Storage pomocí Azure Functions a Computer Vision.

Čištění prostředků

Pokud nebudete tuto aplikaci dál používat, můžete odstranit prostředky, které jste vytvořili odebráním skupiny prostředků.

  1. Zvolte skupiny prostředků z hlavní navigace
  2. msdocs-storage-function Ze seznamu vyberte skupinu prostředků.
  3. V horní části stránky přehledu skupiny prostředků vyberte tlačítko Odstranit skupinu prostředků.
  4. V potvrzovacím dialogovém okně zadejte název skupiny prostředků msdocs-storage-function.
  5. Vyberte odstranit. Dokončení procesu odstranění skupiny prostředků může trvat několik minut.