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 služby 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, 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ů, streamovaných mediálních souborů, správě zálohovacích a archivovaný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 službě Azure Functions najdete na stránce přehledu.

V tomto kurzu se naučíte, jak:

  • Nahrání obrázků a souborů do služby Blob Storage
  • Použití triggeru události funkce 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 portálu Azure.

  1. Na panelu hledání v horní části portálu vyhledejte Storage a vyberte výsledek označený jako Úč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 znázorňující, jak vytvořit účet úložiště v Azure

  4. V dolní části vyberte Zkontrolovat a vytvořit a Azure ověří zadané informace. Jakmile se nastavení ověří, 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 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ů.

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

Posledním krokem je načtení připojovací řetězec 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 ji někam, abyste ji mohli použít pro pozdější použití. Budete si také chtít poznamenat 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 budou potřeba v případě, že potřebujeme k tomuto účtu úložiště připojit naši funkci Azure Functions.

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

Dále vytvořte účet služby Počítačové zpracování obrazu, který zpracuje 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 obrázků. Další informace o Počítačové zpracování obrazu najdete na stránce s přehledem.

  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 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ň: Pokud je dostupná, zvolte Free , jinak zvolte Standard S1.
    • Pokud souhlasíte s podmínkami, zaškrtněte políčko Zodpovědné oznámení 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 bude chvíli trvat, než ověří zadané informace. Jakmile se nastavení ověří, 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 potřebujeme najít tajný klíč a adresu URL koncového bodu pro službu Počítačové zpracování obrazu, která se má použít v naší aplikaci funkcí Azure.

  1. Na stránce s přehledem 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 EndPointu a vložte je někam, kde je chcete 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 pro funkci Azure, která se používá v tomto kurzu, najdete v tomto úložišti 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č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á aktivační a výstupní vazby, které se použijí pomocí atributů v Run podpisu metody.

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ý Connection parametr načítá připojovací řetězec Table Storage z proměnných prostředí, aby k němu naše funkce Azure získala přístup.

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

Funkce ProcessImage také využívá druhou metodu nazvanou AnalyzeImage, viz níže. Tento kód používá koncový bod adresy URL a klíč našeho účtu Počítačové zpracování obrazu 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ý se pak zapíše 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();
}

Místní 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 uložili dříve při vytváření prostředků Azure.

I když se kód funkce Azure Functions spustí 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 ve stejnou dobu jako součást procesu nasazení.

  1. Začněte tak, že vpravo 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 aplikaci 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 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 aplikaci 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 výběrem možnosti Dokončit zavřete pracovní postup dialogového okna.

  8. Posledním krokem nasazení funkce Azure Functions je výběr možnosti Publikovat v pravém horním rohu obrazovky. Publikování funkce může chvíli trvat. Po dokončení bude vaše aplikace spuštěná 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žbám. Správné klíče a připojovací řetězec musí být nejprve přidány do nastavení konfigurace aplikace Azure Functions.

  1. V horní části webu Azure Portal vyhledejte funkci a ve výsledcích vyberte Aplikaci funkcí.

  2. Na obrazovce Aplikace funkcí vyberte aplikaci funkcí, kterou jste vytvořili v sadě Visual Studio.

  3. Na stránce Přehled 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 a připojovací řetězec účtu úložiště, tajný klíč Počítačové zpracování obrazu 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 toto nastavení přidáte do aplikace.

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

  7. V dalším kroku tento proces zopakujeme pro koncový bod naší služby Počítačové zpracování obrazu 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 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.
    • Hodnota: Vložte připojovací řetězec, 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í vyzvedne.

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

Nahrání obrázku do služby 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 webu 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. 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. V rozevíracím rámečku, který se otevře, otevřete v prohlížeči souborů ikonu složky vpravo. 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 uvnitř kontejneru objektů blob. Dále můžete ověřit, že nahrávání aktivovalo funkci Azure Functions a že se text na obrázku analyzoval a uložil do služby Table Storage správně.

  6. Pomocí popisů 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. Tabulka ImageText by teď měla být dostupná. Kliknutím na tabulku zobrazíte náhled řádků dat uvnitř tabulky. Měla by se zobrazit položka pro zpracovaný text obrázku našeho nahrání. 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 image, která se nahrála do služby Blob Storage pomocí služby Azure Functions a Počítačové zpracování obrazu.

Vyč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. Výběr skupin 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. Do potvrzovací dialogového okna 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.