Udostępnij za pośrednictwem


Samouczek: przekazywanie i analizowanie pliku przy użyciu Azure Functions i Blob Storage

Z tego samouczka dowiesz się, jak przekazać obraz do Azure Blob Storage i przetworzyć go przy użyciu Azure Functions i przetwarzanie obrazów. Dowiesz się również, jak zaimplementować wyzwalacze i powiązania funkcji Azure w ramach tego procesu. Razem te usługi analizują przekazany obraz zawierający tekst, wyodrębniają z niego tekst, a następnie przechowują tekst w wierszu bazy danych na potrzeby późniejszej analizy lub innych celów.

Azure Blob Storage to wysoce skalowalne rozwiązanie magazynu obiektów firmy Microsoft dla chmury. Blob Storage jest przeznaczony do przechowywania obrazów i dokumentów, przesyłania strumieniowego plików multimedialnych, zarządzania danymi kopii zapasowych i archiwizowania oraz wiele innych. Więcej informacji na temat Blob Storage można uzyskać na stronie overview.

Azure Functions to rozwiązanie bezserwerowe, które umożliwia pisanie i uruchamianie małych bloków kodu jako wysoce skalowalnych, bezserwerowych, opartych na zdarzeniach funkcji. Więcej informacji na temat Azure Functions można uzyskać na stronie overview.

W tym poradniku nauczysz się, jak:

  • Przekazywanie obrazów i plików do Blob Storage
  • Używanie wyzwalacza zdarzenia funkcji Azure do przetwarzania danych przekazanych do Blob Storage
  • Analizowanie obrazu za pomocą narzędzi Foundry
  • Zapisywanie danych w usłudze Table Storage przy użyciu powiązań wyjściowych funkcji Azure

Prerequisites

Tworzenie konta magazynu i kontenera

Pierwszym krokiem jest utworzenie konta magazynowego w celu przechowywania przekazanych danych BLOB, które w tym scenariuszu stanowią obrazy zawierające tekst. Konto magazynowe oferuje kilka różnych usług, ale w tym samouczku wykorzystywane są usługi Blob Storage i Table Storage.

Zaloguj się do portalu Azure.

  1. Na pasku wyszukiwania w górnej części portalu wyszukaj Magazyn i wybierz wynik z etykietą Konta magazynu.

  2. Na stronie Kont magazynowych wybierz pozycję + Utwórz w lewym górnym rogu.

  3. Na stronie Utwórz konto magazynu wprowadź następujące wartości:

    • Subskrypcja: wybierz żądaną subskrypcję.
    • Grupa zasobów: Wybierz Utwórz nową i wprowadź nazwę , a następnie wybierz OK.
    • Nazwa konta magazynu: wprowadź wartość . Nazwa konta magazynu musi być unikatowa w Azure, dlatego może być konieczne dodanie numerów po nazwie, takich jak msdocsstoragefunction123.
    • Region: wybierz region, który znajduje się najbliżej Ciebie.
    • Wydajność: wybierz pozycję Standardowa.
    • Nadmiarowość: Pozostaw wybraną wartość domyślną.

    zrzut ekranu przedstawiający sposób tworzenia konta magazynowego w Azure.

  4. Wybierz pozycję Przegląd + Utwórz u dołu i Azure weryfikuje wprowadzone informacje. Po zweryfikowaniu ustawień wybierz pozycję Utwórz a Azure rozpocznie aprowizowanie konta magazynu, co może potrwać chwilę.

Tworzenie kontenera

  1. Po aprowizacji konta magazynowego wybierz pozycję Przejdź do zasobu. Następnym krokiem jest utworzenie kontenera przechowywania wewnątrz konta w celu przechowywania przekazanych obrazów na potrzeby analizy.

  2. Na panelu nawigacyjnym wybierz pozycję Kontenery.

  3. Na stronie Kontenery wybierz pozycję + Kontener u góry. W panelu wysuwanym wprowadź nazwęimageanalysis i upewnij się, że poziom dostępu publicznego jest ustawiony na wartość Blob (anonimowy dostęp do odczytu tylko dla blobów). Następnie wybierz Utwórz.

    Zrzut ekranu przedstawiający sposób tworzenia nowego kontenera przechowywania.

Nowy kontener powinien zostać wyświetlony na liście kontenerów.

Pobierz ciąg połączenia

Ostatnim krokiem jest pobranie ciągu połączenia dla konta magazynu.

  1. Na panelu nawigacyjnym po lewej stronie wybierz pozycję Klucze dostępu.

  2. Na stronie Klucze dostępu wybierz pozycję Pokaż klucze. Skopiuj wartość łańcucha połączenia w sekcji key1 i wklej klucz, aby użyć go później. Zanotuj również nazwę konta przechowywania na później.

    Zrzut ekranu przedstawiający sposób uzyskiwania dostępu do kontenera magazynu.

Te wartości są niezbędne, gdy musimy połączyć naszą funkcję Azure z tym kontem magazynu.

Tworzenie usługi przetwarzanie obrazów

Następnie utwórz konto usługi przetwarzanie obrazów, które przetwarza przekazane pliki. przetwarzanie obrazów jest częścią narzędzi Foundry Tools i oferuje różne funkcje do wyodrębniania danych z obrazów. Więcej informacji na temat przetwarzanie obrazów można uzyskać na stronie overview.

  1. Na pasku wyszukiwania w górnej części portalu wyszukaj Komputer i wybierz wynik z etykietą Widzenie komputerowe.

  2. Na stronie Wizja komputerowa wybierz pozycję + Utwórz.

  3. Na stronie Utwórz przetwarzanie obrazów wprowadź następujące wartości:

    • Subskrypcja: wybierz żądaną subskrypcję.
    • Grupa zasobów: użyj utworzonej wcześniej grupy zasobów.
    • Region: wybierz region, który znajduje się najbliżej Ciebie.
    • Nazwa: Wprowadź nazwę dla .
    • Warstwa cenowa: wybierz pozycję Bezpłatna , jeśli jest dostępna, w przeciwnym razie wybierz pozycję Standardowa S1.
    • Zaznacz pole Powiadomienie o odpowiedzialnej sztucznej inteligencji, jeśli zgadzasz się na warunki

    Zrzut ekranu przedstawiający sposób tworzenia nowej usługi przetwarzanie obrazów.

  4. Wybierz pozycję Przejrzyj i utwórz u dołu. Azure chwilę zajmuje zweryfikowanie wprowadzonych informacji. Po zweryfikowaniu ustawień wybierz pozycję Utwórz a Azure rozpoczyna aprowizowanie usługi przetwarzanie obrazów, co może chwilę potrwać.

  5. Po zakończeniu operacji wybierz pozycję Przejdź do zasobu.

Pobieranie kluczy

Następnie musimy znaleźć klucz tajny i adres URL punktu końcowego dla usługi przetwarzanie obrazów do użycia w naszej aplikacji funkcji Azure.

  1. Na stronie przeglądu przetwarzanie obrazów wybierz pozycję Klucze i punkty końcowe.

  2. Na stronie Klucze i punkt końcowy skopiuj wartość Klucz 1 i wartości punktu końcowego i wklej je gdzieś, aby użyć ich do późniejszego użycia.

    Zrzut ekranu przedstawiający sposób pobierania kluczy i punktu końcowego URL dla usługi przetwarzanie obrazów.

Pobieranie i konfigurowanie przykładowego projektu

Kod funkcji Azure używany w tym samouczku można znaleźć w tym repozytorium GitHub. Projekt można również sklonować przy użyciu następującego polecenia:

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

Przykładowy kod projektu wykonuje następujące zadania:

  • Pobiera zmienne środowiskowe niezbędne do nawiązania połączenia z kontem magazynu i usługą przetwarzanie obrazów
  • Przyjmuje przesłany plik jako parametr "blob".
  • Analizuje obiekt "blob" przy użyciu usługi przetwarzanie obrazów
  • Wysyła przeanalizowany tekst obrazu do nowego wiersza tabeli przy użyciu powiązań wyjściowych

Po pobraniu i otwarciu projektu istnieje kilka podstawowych pojęć, które należy zrozumieć w metodzie głównej pokazanej poniżej. Funkcja Azure korzysta z powiązań Wyzwalacz i Dane wyjściowe, które są stosowane przy użyciu atrybutów w sygnaturze metody Run.

Atrybut używa dwóch parametrów. Pierwszy parametr określa nazwę tabeli do zapisania przeanalizowanej wartości tekstowej obrazu zwróconej przez funkcję. Drugi parametr Connection pobiera ciąg połączenia (parametry połączenia) z usługi Table Storage ze zmiennych środowiskowych, aby nasza funkcja Azure mogła uzyskać do niego dostęp.

Atrybut BlobTrigger służy do powiązania naszej funkcji ze zdarzeniem przekazywania danych w Blob Storage oraz dostarcza przekazany obiekt blob do funkcji Run. Wyzwalacz obiektu blob ma dwa własne parametry — jeden dla nazwy kontenera obiektów blob do monitorowania przesyłania, a drugi dla ciągu połączenia konta magazynu.

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

Ten kod pobiera również podstawowe wartości konfiguracji ze zmiennych środowiskowych, takich jak ciąg połączenia konta magazynu i klucz przetwarzanie obrazów. Te zmienne środowiskowe zostaną dodane do naszego środowiska funkcji Azure po jego wdrożeniu.

Funkcja wykorzystuje również drugą metodę o nazwie . Ten kod używa punktu końcowego adresu URL i klucza naszego konta przetwarzanie obrazów, aby wysłać żądanie do tego serwera w celu przetworzenia naszego obrazu. Żądanie zwraca cały tekst odnaleziony na obrazie, który jest zapisywany w usłudze Table Storage przy użyciu powiązania wyjściowego metody .

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();
}

Uruchamianie lokalnie

Jeśli chcesz uruchomić projekt lokalnie, możesz wypełnić zmienne środowiskowe przy użyciu pliku local.settings.json. Wewnątrz tego pliku uzupełnij wartości zastępcze wartościami, które zapisałeś wcześniej podczas tworzenia zasobów w Azure.

Mimo że kod funkcji Azure działa lokalnie, nadal łączy się z usługami na żywo na Azure, a nie przy użyciu jakichkolwiek lokalnych emulatorów.

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

Wdrażanie kodu w Azure Functions

Teraz możesz przystąpić do wdrażania naszej aplikacji w Azure przy użyciu Visual Studio. Aplikację Azure Functions można również utworzyć w Azure w tym samym czasie w ramach procesu wdrażania.

  1. Aby rozpocząć, wybierz prawym przyciskiem pozycję ProcessImage węzeł projektu i wybierz pozycję Publikuj.

  2. Na ekranie dialogowym Publish0 wybierz pozycję Azure i wybierz Dalej.

    Zrzut ekranu przedstawiający sposób wybierania Azure jako celu wdrożenia.

  3. Wybierz Azure Aplikację funkcji (Windows) lub Azure Aplikację funkcji (Linux) na następnym ekranie, a następnie wybierz Dalej ponownie.

    zrzut ekranu przedstawiający, jak wybrać Azure Functions jako określony cel wdrożenia.

  4. Na etapie wystąpienia usługi Functions upewnij się, że wybrano subskrypcję, do której chcesz wdrożyć. Następnie wybierz zielony symbol po prawej stronie okna dialogowego.

  5. Zostanie otwarte nowe okno dialogowe. Wprowadź następujące wartości dla nowej aplikacji funkcjonalnej.

    • Nazwa: wprowadź msdocsprocessimage lub coś podobnego.
    • Nazwa subskrypcji: wybierz dowolną subskrypcję, której chcesz użyć.
    • Grupa zasobów: wybierz utworzoną wcześniej grupę zasobów.
    • Typ planu: wybierz pozycję Zużycie.
    • Lokalizacja: wybierz region najbliżej Ciebie.
    • Azure Storage: Wybierz utworzone wcześniej konto pamięci masowej.

    zrzut ekranu przedstawiający, jak utworzyć nową aplikację funkcji w Azure.

  6. Po wypełnieniu wszystkich tych wartości wybierz pozycję Utwórz. Visual Studio i Azure rozpoczynają udostępnianie żądanych zasobów, co potrwa kilka chwil.

  7. Po zakończeniu procesu wybierz pozycję Zakończ , aby zamknąć przepływ pracy okna dialogowego.

  8. Ostatnim krokiem wdrażania funkcji Azure jest wybranie Publish w prawym górnym rogu ekranu. Opublikowanie funkcji może potrwać kilka minut. Po zakończeniu aplikacja jest uruchomiona na Azure.

Łączenie usług

Funkcja Azure została pomyślnie wdrożona, ale jeszcze nie może nawiązać połączenia z naszym kontem magazynowym i usługami przetwarzanie obrazów. Prawidłowe klucze i parametry połączenia należy najpierw dodać do ustawień konfiguracji aplikacji Azure Functions.

  1. W górnej części portalu Azure wyszukaj function i wybierz pozycję Function App z wyników.

  2. Na ekranie Function App wybierz aplikację funkcji utworzoną w Visual Studio.

  3. Na stronie Przegląd aplikacji funkcji wybierz pozycję Konfiguracja po lewej stronie, aby otworzyć stronę, na której można zarządzać różnymi typami ustawień konfiguracji dla naszej aplikacji. Na razie interesuje nas sekcja Ustawienia aplikacji .

  4. Następnym krokiem jest dodanie ustawień dla nazwy konta magazynu i ciągu połączenia, klucza tajnego przetwarzanie obrazów i punktu końcowego przetwarzanie obrazów.

  5. Na karcie Ustawienia aplikacji wybierz pozycję + Nowe ustawienie aplikacji. W pojawiającym się panelu wysuwanym wprowadź następujące wartości:

    • Nazwa: wprowadź wartość ComputerVisionKey.
    • Value: wklej zapisany wcześniej klucz przetwarzanie obrazów.
  6. Wybierz przycisk OK , aby dodać to ustawienie do aplikacji.

    zrzut ekranu pokazujący, jak dodać nowe ustawienie aplikacji do funkcji Azure.

  7. Następnie powtórzmy ten proces dla punktu końcowego naszej usługi przetwarzanie obrazów przy użyciu następujących wartości:

    • Nazwa: wprowadź wartość ComputerVisionEndpoint.
    • Wartość: wklej zapisany wcześniej adres URL punktu końcowego.
  8. Powtórz ten krok dla połączenia konta przechowywania, używając następujących wartości:

    • Nazwa: wprowadź wartość StorageConnection.
    • Value: Wklej zapisany wcześniej łańcuch połączenia.
  9. Na koniec powtórz ten proces dla nazwy konta magazynowego, używając następujących wartości:

    • Nazwa: wprowadź wartość StorageAccountName.
    • Wartość: wprowadź nazwę utworzonego konta magazynu.
  10. Po dodaniu tych ustawień aplikacji wybierz pozycję Zapisz w górnej części strony konfiguracji. Po zakończeniu zapisywania można również nacisnąć pozycję Odśwież , aby upewnić się, że ustawienia są pobierane.

Wszystkie wymagane zmienne środowiskowe do połączenia naszej funkcji Azure z różnymi usługami są teraz dostępne.

Przekazywanie obrazu do Blob Storage

Teraz możesz przetestować naszą aplikację! Możesz przesłać dane blob do kontenera, a następnie sprawdzić, czy tekst na obrazie został zapisany w usłudze Table Storage.

  1. Najpierw w górnej części portalu Azure wyszukaj pozycję Storage i wybierz pozycję storage account. Na stronie konta magazynowego wybierz utworzone wcześniej konto.

  2. Następnie wybierz pozycję Kontenery na lewym pasku nawigacyjnym, a następnie przejdź do utworzonego wcześniej kontenera ImageAnalysis . Tutaj możesz przesłać obraz testowy bezpośrednio w przeglądarce.

    Zrzut ekranu przedstawiający sposób przechodzenia do kontenera magazynu.

  3. Możesz znaleźć kilka przykładowych obrazów zawartych w folderze images w katalogu głównym przykładowego projektu do pobrania lub użyć własnego.

  4. W górnej części strony ImageAnalysis wybierz pozycję Przekaż. W otwartym oknie wysuwanym wybierz ikonę folderu, aby otworzyć przeglądarkę plików. Wybierz obraz, który chcesz przekazać, a następnie wybierz pozycję Przekaż.

    Zrzut ekranu przedstawiający sposób ładowania bloba do kontenera magazynu.

  5. Plik powinien pojawić się wewnątrz kontenera blob. Następnie możesz sprawdzić, czy przekazywanie wyzwoliło funkcję Azure i czy tekst na obrazie został poprawnie przeanalizowany i zapisany w usłudze Table Storage.

  6. Korzystając z nawigacji ścieżkowej u góry strony, przejdź o jeden poziom w górę na swoim koncie magazynowym. Znajdź i wybierz Przeglądarkę Storage na lewym pasku, a następnie wybierz Tabele.

  7. Tabela ImageText powinna być teraz dostępna. Wybierz tabelę, aby wyświetlić podgląd wierszy danych w niej. Powinien zostać wyświetlony wpis dla przetworzonego tekstu obrazu naszego przekazywania. Możesz to sprawdzić przy użyciu znacznika czasu lub wyświetlając zawartość kolumny Text .

     Zrzut ekranu przedstawiający wpis tekstowy w Azure Table Storage.

Congratulations! Udało Ci się przetwarzać obraz przekazany do Blob Storage przy użyciu Azure Functions i przetwarzanie obrazów.

Uprzątnij zasoby

Jeśli nie zamierzasz nadal korzystać z tej aplikacji, możesz usunąć utworzone zasoby, usuwając grupę zasobów.

  1. Wybierz pozycję Grupy zasobów z głównej nawigacji
  2. Wybierz grupę zasobów z listy.
  3. Wybierz przycisk Usuń grupę zasobów w górnej części strony przeglądu grupy zasobów.
  4. Wprowadź nazwę grupy zasobów msdocs-storage-function w oknie dialogowym potwierdzenia.
  5. Wybierz pozycję Usuń. Proces usuwania grupy zasobów może potrwać kilka minut.