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 Počítačové zpracování obrazu. Dozvíte se také, jak v rámci tohoto procesu implementovat triggery a vazby funkce Azure Functions. Tyto služby společně analyzují nahraný obrázek, který obsahuje text, extrahují z něj text a pak ho uloží do řádku databáze pro pozdější analýzu nebo jiné účely.

Azure Blob Storage je řešení microsoftu s masivně škálovatelným úložištěm objektů pro cloud. Blob Storage je navržené pro ukládání obrázků a dokumentů, streamování multimediálních souborů, správu zálohovacích a archivačních dat a mnoho dalšího. Další informace o službě Blob Storage najdete na stránce s přehledem.

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 s přehledem.

V tomto kurzu se naučíte, jak:

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

Požadavky

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

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

Přihlaste se k webu Azure Portal.

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

  2. Na stránce Účty úložiště vlevo nahoře vyberte + Vytvořit .

  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 novou , 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 v rámci Azure jedinečný, 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 znázorňující vytvoření účtu úložiště v Azure

  4. V dolní části vyberte Zkontrolovat a vytvořit a Azure ověří zadané informace. Po ověření nastavení zvolte Vytvořit a Azure začne 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 k prostředku. 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 nahoře vyberte + Kontejner . Na panelu vysunutí zadejte Názevanalýzy obrázků 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). Potom 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ů.

Získání připojovacího řetězce

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í řetězec v části key1 a vložte ji někam, abyste ji mohli použít pro pozdější použití. Název účtu msdocsstoragefunction úložiště si také poznamenejte na později.

    Snímek obrazovky znázorňující přístup ke kontejneru úložiště

Tyto hodnoty budou nezbytné, když budeme potřebovat připojit funkci Azure Functions k tomuto účtu úložiště.

Vytvoření služby Počítačové zpracování obrazu

Dále vytvořte účet služby Počítačové zpracování obrazu, který bude zpracovávat naše nahrané soubory. Počítačové zpracování obrazu je součástí služeb Azure AI a nabízí celou řadu funkcí pro extrakci dat z imagí. Další informace o Počítačové zpracování obrazu najdete na stránce přehledu.

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

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

  3. Na stránce Vytvořit Počítačové zpracování obrazu 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 msdocscomputervision.
    • Cenová úroveň: Zvolte Free , pokud je k dispozici, v opačném případě zvolte Standard S1.
    • Pokud souhlasíte s podmínkami, zaškrtněte políčko Oznámení o odpovědné AI .

    Snímek obrazovky znázorňující, jak vytvořit novou službu Počítačové zpracování obrazu

  4. V dolní části vyberte Zkontrolovat a vytvořit . Azure chvíli potrvá, než ověří informace, které jste zadali. Po ověření nastavení zvolte Vytvořit a Azure začne zřizovat službu Počítačové zpracování obrazu, 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 Počítačové zpracování obrazu, která se má používat v naší aplikaci Funkcí Azure.

  1. Na stránce přehledu Počítačové zpracování obrazu vyberte Klíče a koncový bod.

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

    Snímek obrazovky znázorňující, jak načíst klíče a koncový bod adresy URL pro službu Počítačové zpracování obrazu

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

Kód funkce Azure použitý v tomto kurzu najdete v tomto úložišti GitHub. Projekt můžete také naklonovat 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

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

  • Načte proměnné prostředí pro připojení k účtu úložiště a službě Počítačové zpracování obrazu.
  • Přijme nahraný soubor jako parametr objektu blob.
  • Analyzuje objekt blob pomocí služby Počítačové zpracování obrazu.
  • 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á vazby triggeru a výstupu, které se použijí pomocí atributů v Run podpisu metody.

Atribut Table používá dva parametry. První parametr určuje název tabulky pro zápis hodnoty analyzovaného textu obrázku vrácené funkcí. Druhý Connection parametr načte z proměnných prostředí připojovací řetězec služby Table Storage, aby k němu funkce Azure functions získala přístup.

Atribut BlobTrigger slouží k vytvoření vazby naší funkce s událostí nahrávání ve službě Blob Storage a poskytne funkci nahraný objekt blob Run . Trigger objektu blob má dva vlastní parametry – jeden pro název kontejneru objektů blob, který se má monitorovat nahrá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 Počítačové zpracování obrazu klíč. Tyto proměnné prostředí přidáme do našeho prostředí funkce Azure Functions po jejím nasazení.

Funkce ProcessImage také využívá druhou metodu s názvem AnalyzeImage, viz níže. Tento kód používá koncový bod adresy URL a klíč účtu Počítačové zpracování obrazu k vytvoření požadavku na server o zpracování našeho obrázku. Požadavek vrátí veškerý text zjištěný na obrázku, který se pak zapíše do služby 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();
}

Místní spuštění

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

I když kód funkce Azure functions poběží místně, bude se stále připojovat k živým službám v 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í sady Visual Studio. Aplikaci Azure Functions můžete také vytvořit v Azure současně v rámci procesu nasazení.

  1. Začněte tak, že pravým tlačítkem vyberete uzel projektu ProcessImage a vyberete Publikovat.

  2. Na obrazovce dialogového okna Publikovat vyberte Azure a zvolte Další.

    Snímek obrazovky znázorňují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ší .

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

  4. V kroku Instance služby Functions nezapomeňte zvolit předplatné, do které chcete provést nasazení. Potom 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 předplatné, které chcete použít.
    • Skupina prostředků: Zvolte skupinu prostředků, msdocs-storage-function kterou jste vytvořili dříve.
    • Typ plánu: Vyberte Spotřeba.
    • 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í postup vytvoření nové aplikace funkcí v Azure

  6. Jakmile vyplníte všechny tyto hodnoty, vyberte Vytvořit. Visual Studio a Azure začnou zřizovat požadované prostředky, což bude chvíli trvat.

  7. Po dokončení procesu vyberte Dokončit a zavřete pracovní postup dialogového okna.

  8. Posledním krokem k nasazení funkce Azure Functions je výběr možnosti Publikovat v pravém horním rohu obrazovky. Dokončení publikování funkce může chvíli trvat. Po dokončení bude vaše aplikace spuštěna v Azure.

Propojení služeb

Funkce Azure Functions se úspěšně nasadila, ale zatím se nemůže připojit k našemu účtu úložiště a Počítačové zpracování obrazu služby. Správné klíče a připojovací řetězce musí být nejprve přidány do nastavení konfigurace aplikace Azure Functions.

  1. V horní části Azure Portal vyhledejte funkci a ve výsledcích vyberte Function App.

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

  3. Na stránce přehledu aplikace Funkcí vyberte v levém navigačním panelu Možnost Konfigurace . Otevře se stránka, 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 připojovací řetězec, Počítačové zpracování obrazu tajný klíč a koncový bod Počítačové zpracování obrazu.

  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.
    • Hodnota: Vložte klíč Počítačové zpracování obrazu, který jste si uložili dříve.
  6. Kliknutím na OK přidejte toto nastavení do aplikace.

    Snímek obrazovky znázorňující, jak přidat nové nastavení aplikace do funkce Azure Functions

  7. Teď tento proces zopakujeme pro koncový bod naší Počítačové zpracování obrazu služby s použitím následujících hodnot:

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

    • Název: Zadejte hodnotu StorageConnection.
    • Hodnota: Vložte připojovací řetězec, který jste si uložili dříve.
  9. Nakonec tento postup ještě jednou zopakujte pro název účtu úložiště a použijte následující hodnoty:

    • 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í ukládání můžete také stisknout Tlačítko Aktualizovat , abyste měli jistotu, že se nastavení vybere.

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

Nahrání obrázku do služby Blob Storage

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

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

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

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

  3. Několik ukázkových obrázků, které jsou součástí složky images , 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. V informačním rámečku, který se otevře, otevřete výběrem ikony složky na pravé straně prohlížeč souborů. Zvolte obrázek, který chcete nahrát, a pak vyberte Nahrát.

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

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

  6. Pomocí popisu cesty 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ě a pak vyberte Tabulky.

  7. Teď by měla být dostupná tabulka ImageText . Kliknutím na tabulku zobrazte náhled řádků dat uvnitř tabulky. Měla by se zobrazit položka pro zpracovaný text obrázku, který jsme nahráli. Můžete to ověřit pomocí časového razítka nebo zobrazením obsahu sloupce Text .

    Snímek obrazovky znázorňující textovou položku ve službě Azure Table Storage

Gratulujeme! Úspěšně jste zpracovali obrázek, který se nahrál do služby Blob Storage pomocí Azure Functions a Počítačové zpracování obrazu.

Vyčištění prostředků

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

  1. V hlavní navigaci vyberte Skupiny prostředků .
  2. msdocs-storage-function V 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. Proces odstranění skupiny prostředků může trvat několik minut.