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
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Nainstalovaná sada Visual Studio 2022 .
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.
Na panelu hledání v horní části portálu vyhledejte Storage a vyberte výsledek označený jako Účty úložiště.
Na stránce Účty úložiště vyberte + Vytvořit v levém horním rohu.
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-function
a 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říkladmsdocsstoragefunction123
. - Oblast: Vyberte oblast, která je k vám nejblíže.
- Výkon: Zvolte Standard.
- Redundance: Ponechte vybranou výchozí hodnotu.
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
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.
Na navigačním panelu zvolte Kontejnery.
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.
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ě.
Na levém navigačním panelu vyberte Přístupové klíče.
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í.
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.
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.
Na stránce Počítačové zpracování obrazu vyberte + Vytvořit.
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.
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.
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.
Na stránce s přehledem Počítačové zpracování obrazu vyberte Klíče a koncový bod.
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í.
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í.
Začněte tak, že vpravo vyberete uzel projektu ProcessImage a vyberete Publikovat.
Na obrazovce dialogového okna Publikovat vyberte Azure a zvolte Další.
Na další obrazovce vyberte aplikaci Azure Function App (Windows) nebo Azure Function App (Linux) a pak znovu zvolte Další .
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.
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.
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.
Po dokončení procesu výběrem možnosti Dokončit zavřete pracovní postup dialogového okna.
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.
V horní části webu Azure Portal vyhledejte funkci a ve výsledcích vyberte Aplikaci funkcí.
Na obrazovce Aplikace funkcí vyberte aplikaci funkcí, kterou jste vytvořili v sadě Visual Studio.
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.
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.
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.
Kliknutím na OK toto nastavení přidáte do aplikace.
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.
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.
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.
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.
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.
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.
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í.
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.
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ě.
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.
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 .
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ů.
- Výběr skupin prostředků z hlavní navigace
msdocs-storage-function
Ze seznamu vyberte skupinu prostředků.- V horní části stránky přehledu skupiny prostředků vyberte tlačítko Odstranit skupinu prostředků.
- Do potvrzovací dialogového okna zadejte název skupiny prostředků msdocs-storage-function .
- Vyberte Odstranit. Dokončení procesu odstranění skupiny prostředků může trvat několik minut.