Öğretici: Azure İşlevleri ve Blob Depolama ile bir dosyayı karşıya yükleme ve analiz etme

Bu öğreticide, Azure Blob Depolama'ya görüntü yüklemeyi ve Azure İşlevleri ile Görüntü İşleme'yi kullanarak işlemeyi öğreneceksiniz. Ayrıca bu işlemin bir parçası olarak Azure İşlevi tetikleyicilerini ve bağlamalarını uygulamayı da öğreneceksiniz. Bu hizmetler birlikte metin içeren karşıya yüklenen bir görüntüyü analiz eder, içindeki metni ayıklar ve sonra daha sonra analiz etmek veya başka amaçlarla bir veritabanı satırında depolar.

Azure Blob Depolama, Microsoft'un bulut için yüksek düzeyde ölçeklenebilir nesne depolama çözümüdür. Blob Depolama görüntüleri ve belgeleri depolamak, medya dosyalarını akışla aktarmak, yedekleme ve arşiv verilerini yönetmek ve çok daha fazlası için tasarlanmıştır. Blob Depolama hakkında daha fazla bilgiyi genel bakış sayfasından okuyabilirsiniz.

Azure İşlevleri, küçük kod bloklarını yüksek oranda ölçeklenebilir, sunucusuz ve olay odaklı işlevler olarak yazmanızı ve çalıştırmanızı sağlayan sunucusuz bir bilgisayar çözümüdür. Genel bakış sayfasında Azure İşlevleri hakkında daha fazla bilgi edinebilirsiniz.

Bu öğreticide şunların nasıl yapıldığını öğrenirsiniz:

  • Görüntüleri ve dosyaları Blob Depolama'ya yükleme
  • Blob Depolama'ya yüklenen verileri işlemek için Azure İşlevi olay tetikleyicisi kullanma
  • Görüntüyü analiz etmek için Azure AI hizmetlerini kullanma
  • Azure İşlevi çıkış bağlamalarını kullanarak Tablo Depolama'ya veri yazma

Önkoşullar

Depolama hesabını ve kapsayıcıyı oluşturma

İlk adım, karşıya yüklenen blob verilerini barındıracak depolama hesabını oluşturmaktır ve bu senaryoda metin içeren görüntüler olacaktır. Depolama hesabı birkaç farklı hizmet sunar, ancak bu öğreticide Blob Depolama ve Tablo Depolama kullanılır.

Azure Portal oturum açın.

  1. Portalın üst kısmındaki arama çubuğunda Depolama araması yapın ve Depolama hesapları etiketli sonucu seçin.

  2. Depolama hesapları sayfasında sol üst kısımdaki + Oluştur'u seçin.

  3. Depolama hesabı oluştur sayfasında aşağıdaki değerleri girin:

    • Abonelik: İstediğiniz aboneliği seçin.
    • Kaynak Grubu: Yeni oluştur'u seçin ve adını msdocs-storage-functiongirin ve ardından Tamam'ı seçin.
    • Depolama hesabı adı: değerini msdocsstoragefunctiongirin. Depolama hesabı adı Azure genelinde benzersiz olmalıdır, bu nedenle adından msdocsstoragefunction123sonra gibi numaralar eklemeniz gerekebilir.
    • Bölge: Size en yakın bölgeyi seçin.
    • Performans: Standart'ı seçin.
    • Yedeklilik: Varsayılan değeri seçili bırakın.

    Azure'da depolama hesabı oluşturmayı gösteren ekran görüntüsü.

  4. En alttaki Gözden Geçir + Oluştur'u seçtiğinizde Azure girdiğiniz bilgileri doğrular. Ayarlar doğrulandıktan sonra Oluştur'u seçtiğinizde Azure depolama hesabını sağlamaya başlar ve bu işlem biraz zaman alabilir.

Kapsayıcı oluşturma

  1. Depolama hesabı sağlandıktan sonra Kaynağa Git'i seçin. Sonraki adım, analiz için karşıya yüklenen görüntüleri tutmak üzere hesabın içinde bir depolama kapsayıcısı oluşturmaktır.

  2. Gezinti panelinde Kapsayıcılar'ı seçin.

  3. Kapsayıcılar sayfasında üstteki + Kapsayıcı'yı seçin. Slayttan çıkma panelinde bir Görüntü analiziadı girin ve Genel erişim düzeyininBlob (yalnızca bloblar için anonim okuma erişimi) olarak ayarlandığından emin olun. Ardından Oluştur’u seçin.

    Yeni bir depolama kapsayıcısı oluşturmayı gösteren ekran görüntüsü.

Yeni kapsayıcınızın kapsayıcı listesinde göründüğünü görmeniz gerekir.

Bağlantı dizesini alma

Son adım, depolama hesabı için bağlantı dizemizi almaktır.

  1. Sol gezinti panelinde Erişim Tuşları'nı seçin.

  2. Erişim Anahtarları sayfasında Anahtarlarıgöster'i seçin. key1 bölümünün altındaki Bağlantı Dizesi değerini kopyalayın ve bunu daha sonra kullanmak üzere bir yere yapıştırın. Ayrıca daha sonra kullanmak üzere depolama hesabı adını msdocsstoragefunction da not almak istersiniz.

    Depolama kapsayıcısına erişmeyi gösteren ekran görüntüsü.

Azure İşlevimizi bu depolama hesabına bağlamamız gerektiğinde bu değerler gerekli olacaktır.

Görüntü İşleme hizmetini oluşturma

Ardından, karşıya yüklenen dosyalarımızı işleyecek Görüntü İşleme hizmeti hesabını oluşturun. Görüntü İşleme, Azure AI hizmetlerinin bir parçasıdır ve görüntülerden veri ayıklamaya yönelik çeşitli özellikler sunar. Görüntü İşleme hakkında daha fazla bilgiyi genel bakış sayfasından öğrenebilirsiniz.

  1. Portalın üst kısmındaki arama çubuğunda Bilgisayar için arama yapın ve Görüntü işleme etiketli sonucu seçin.

  2. Görüntü işleme sayfasında + Oluştur'u seçin.

  3. Görüntü İşleme Oluştur sayfasında aşağıdaki değerleri girin:

    • Abonelik: İstediğiniz Aboneliği seçin.
    • Kaynak Grubu: Daha önce oluşturduğunuz kaynak grubunu kullanın msdocs-storage-function .
    • Bölge: Size en yakın bölgeyi seçin.
    • Ad: adını msdocscomputervisiongirin.
    • Fiyatlandırma Katmanı: Varsa Ücretsiz'i seçin, aksi takdirde Standart S1'i seçin.
    • Koşulları kabul ediyorsanız Sorumlu Yapay Zeka Bildirimi kutusunu işaretleyin

    Yeni görüntü işleme hizmetinin nasıl oluşturulacağını gösteren ekran görüntüsü.

  4. En alttaki Gözden Geçir + Oluştur'u seçin. Azure girdiğiniz bilgilerin doğrulanması biraz zaman alır. Ayarlar doğrulandıktan sonra Oluştur'u seçtiğinizde Azure Görüntü İşleme hizmetini sağlamaya başlar ve bu işlem biraz zaman alabilir.

  5. İşlem tamamlandığında Kaynağa Git'i seçin.

Anahtarları alma

Ardından, Azure İşlevi uygulamamızda Görüntü İşleme hizmetinin kullanacağımız gizli anahtar ve uç nokta URL'sini bulmamız gerekir.

  1. Görüntü İşleme'ye genel bakış sayfasında Anahtarlar ve Uç Nokta'yı seçin.

  2. Anahtarlar ve EndPoint sayfasında Anahtar 1 değerini ve EndPoint değerlerini kopyalayın ve daha sonra kullanmak üzere bir yere yapıştırın.

    Görüntü İşleme hizmeti için Anahtarlar ve URL Uç Noktasının nasıl alınıp alınamaya devam etmek istediğinize ilişkin ekran görüntüsü.

Örnek projeyi indirme ve yapılandırma

Bu öğreticide kullanılan Azure İşlevinin kodu bu GitHub deposunda bulunabilir. Aşağıdaki komutu kullanarak projeyi de kopyalayabilirsiniz.

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

Örnek proje kodu aşağıdaki görevleri gerçekleştirir:

  • Depolama hesabına ve Görüntü İşleme hizmetine bağlanmak için ortam değişkenlerini alır
  • Karşıya yüklenen dosyayı blob parametresi olarak kabul eder
  • Görüntü İşleme hizmetini kullanarak blobu analiz eder
  • Çözümlenen görüntü metnini çıkış bağlamalarını kullanarak yeni bir tablo satırına gönderir

Projeyi indirip açtıktan sonra, aşağıda gösterilen ana Run yöntemde anlaşılması gereken birkaç temel kavram vardır. Azure işlevi, yöntem imzasının Run öznitelikleri kullanılarak uygulanan Tetikleyici ve Çıkış bağlamalarını kullanır.

Table özniteliği iki parametre kullanır. İlk parametre, işlevi tarafından döndürülen ayrıştırılmış görüntü metin değerini yazmak için tablonun adını belirtir. İkinci Connection parametre, Azure işlevimizin buna erişebilmesi için ortam değişkenlerinden bir Tablo Depolama bağlantı dizesi çeker.

BlobTrigger özniteliği işlevimizi Blob Depolama'daki karşıya yükleme olayına bağlamak için kullanılır ve blobu işleve Run yükleyen kaynakları sağlar. Blob tetikleyicisinin kendi iki parametresi vardır: biri karşıya yüklemeleri izlemek için blob kapsayıcısının adı, diğeri de depolama hesabımızın bağlantı dizesi için.

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

Bu kod ayrıca depolama hesabı bağlantı dizesi ve Görüntü İşleme anahtarı gibi ortam değişkenlerinden temel yapılandırma değerlerini alır. Bu ortam değişkenlerini dağıtıldıktan sonra Azure İşlevi ortamımıza ekleyeceğiz.

ProcessImage işlevi aşağıda görülen adlı AnalyzeImageikinci bir yöntem de kullanır. Bu kod görüntüümüzü işlemek üzere sunucuya istekte bulunmak için Görüntü İşleme hesabımızın URL Uç Noktasını ve Anahtarını kullanır. İstek, görüntüde bulunan metnin tümünü döndürür ve ardından yöntemindeki çıkış bağlaması Run kullanılarak Tablo Depolama'ya yazılır.

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

Yerel olarak çalıştırma

Projeyi yerel olarak çalıştırmak isterseniz local.settings.json dosyasını kullanarak ortam değişkenlerini doldurabilirsiniz. Bu dosyanın içinde yer tutucu değerlerini Azure kaynaklarını oluştururken daha önce kaydettiğiniz değerlerle doldurun.

Azure İşlevi kodu yerel olarak çalışacak olsa da, herhangi bir yerel öykünücü kullanmak yerine Azure'da canlı hizmetlere bağlanmaya devam eder.

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

Kodu Azure İşlevleri'ne dağıtma

Artık Visual Studio kullanarak uygulamamızı Azure'a dağıtmaya hazırsınız. Azure İşlevleri uygulamasını, dağıtım işleminin bir parçası olarak aynı anda Azure'da da oluşturabilirsiniz.

  1. Başlamak için ProcessImage proje düğümünü sağ seçip Yayımla'yı seçin.

  2. Yayımla iletişim kutusunda Azure'ı ve ardından İleri'yi seçin.

    Dağıtım hedefi olarak Azure'ı seçmeyi gösteren ekran görüntüsü.

  3. Sonraki ekranda Azure İşlev Uygulaması (Windows) veya Azure İşlev Uygulaması (Linux) seçeneğini belirleyip yeniden İleri'yi seçin.

    Azure İşlevleri'nin belirli bir dağıtım hedefi olarak nasıl seçileceğini gösteren ekran görüntüsü.

  4. İşlevler örneği adımında, dağıtmak istediğiniz aboneliği seçtiğinizden emin olun. Ardından, iletişim kutusunun sağ tarafındaki yeşil + simgeyi seçin.

  5. Yeni bir iletişim kutusu açılır. Yeni İşlev Uygulamanız için aşağıdaki değerleri girin.

    • Ad: msdocsprocessimage veya benzer bir şey girin.
    • Abonelik Adı: Kullanmak istediğiniz aboneliği seçin.
    • Kaynak Grubu: Daha önce oluşturduğunuz kaynak grubunu seçin msdocs-storage-function .
    • Plan Türü: Tüketim'i seçin.
    • Konum: Size en yakın bölgeyi seçin.
    • Azure Depolama: Daha önce oluşturduğunuz depolama hesabını seçin.

    Azure'da yeni bir İşlev Uygulaması oluşturmayı gösteren ekran görüntüsü.

  6. Bu değerlerin tümünü doldurduktan sonra Oluştur'u seçin. Visual Studio ve Azure istenen kaynakları sağlamaya başlar ve tamamlanması birkaç dakika sürer.

  7. İşlem tamamlandıktan sonra, iletişim kutusu iş akışını kapatmak için Son'u seçin.

  8. Azure İşlevi'ni dağıtmanın son adımı, ekranın sağ üst kısmındaki Yayımla'yı seçmektir. İşlevin yayımlanması da birkaç dakika sürebilir. İşlem tamamlandıktan sonra uygulamanız Azure'da çalışır duruma gelecek.

Hizmetleri bağlama

Azure İşlevi başarıyla dağıtıldı, ancak henüz depolama hesabımıza ve Görüntü İşleme hizmetlerine bağlanamıyor. Doğru anahtarların ve bağlantı dizelerinin önce Azure İşlevleri uygulamasının yapılandırma ayarlarına eklenmesi gerekir.

  1. Azure portalının üst kısmında işlev araması yapın ve sonuçlardan İşlev Uygulaması'nı seçin.

  2. İşlev Uygulaması ekranında Visual Studio'da oluşturduğunuz İşlev Uygulamasını seçin.

  3. İşlev Uygulamasına genel bakış sayfasında sol gezinti bölmesinde Yapılandırma'yı seçin. Bu, uygulamamız için çeşitli yapılandırma ayarları türlerini yönetebileceğimiz bir sayfa açar. Şimdilik Uygulama Ayarları bölümüyle ilgileniyoruz.

  4. Sonraki adım depolama hesabı adı ve bağlantı dizesi, Görüntü İşleme gizli anahtarı ve Görüntü İşleme uç noktası için ayarlar eklemektir.

  5. Uygulama ayarları sekmesinde + Yeni uygulama ayarı'nı seçin. Görüntülenen açılır öğeye aşağıdaki değerleri girin:

    • Ad: ComputerVisionKey değerini girin.
    • Değer: Daha önce kaydettiğiniz Görüntü İşleme anahtarını yapıştırın.
  6. Bu ayarı uygulamanıza eklemek için Tamam'a tıklayın.

    Azure İşlevi'ne yeni uygulama ayarı eklemeyi gösteren ekran görüntüsü.

  7. Şimdi bu işlemi Görüntü İşleme hizmetimizin uç noktası için aşağıdaki değerleri kullanarak tekrarlayalım:

    • Ad: ComputerVisionEndpoint değerini girin.
    • Değer: Daha önce kaydettiğiniz uç nokta URL'sini yapıştırın.
  8. Aşağıdaki değerleri kullanarak depolama hesabı bağlantısı için bu adımı tekrarlayın:

    • Ad: StorageConnection değerini girin.
    • Değer: Daha önce kaydettiğiniz bağlantı dizesini yapıştırın.
  9. Son olarak, aşağıdaki değerleri kullanarak depolama hesabı adı için bu işlemi bir kez daha yineleyin:

    • Ad: StorageAccountName değerini girin.
    • Değer: Oluşturduğunuz depolama hesabının adını girin.
  10. Bu uygulama ayarlarını ekledikten sonra yapılandırma sayfasının üst kısmındaki Kaydet'i seçtiğinizden emin olun. Kaydetme tamamlandığında, ayarların alındığından emin olmak için Yenile'ye de basabilirsiniz.

Azure işlevimizi farklı hizmetlere bağlamak için gerekli olan tüm ortam değişkenleri artık kullanıma sunmlenmiştir.

Blob Depolama'ya görüntü yükleme

Artık uygulamamızı test etmeye hazırsınız! Kapsayıcıya bir blob yükleyebilir ve görüntüdeki metnin Tablo Depolama'ya kaydedildiğini doğrulayabilirsiniz.

  1. İlk olarak Azure portalının üst kısmında Depolama'yı arayın ve depolama hesabı'nı seçin. Depolama hesabı sayfasında, daha önce oluşturduğunuz hesabı seçin.

  2. Ardından sol gezinti bölmesinde Kapsayıcılar'ı seçin ve daha önce oluşturduğunuz ImageAnalysis kapsayıcısına gidin. Buradan doğrudan tarayıcının içine bir test görüntüsü yükleyebilirsiniz.

    Depolama kapsayıcısına gitmeyi gösteren ekran görüntüsü.

  3. İndirilebilir örnek projenin kökünde images klasörüne dahil edilen birkaç örnek görüntü bulabilir veya kendi resimlerinizden birini kullanabilirsiniz.

  4. ImageAnalysis sayfasının üst kısmında Karşıya Yükle'yi seçin. Açılan açılır öğede, sağ taraftaki klasör simgesini seçerek bir dosya tarayıcısı açın. Karşıya yüklemek istediğiniz görüntüyü seçin ve ardından Karşıya Yükle'yi seçin.

    Depolama kapsayıcısına blob yükleme işlemini gösteren ekran görüntüsü.

  5. Dosya blob kapsayıcınızın içinde görünmelidir. Ardından, karşıya yüklemenin Azure İşlevi'ni tetiklediğini ve görüntüdeki metnin çözümlenip Tablo Depolama'ya düzgün şekilde kaydedildiğini doğrulayabilirsiniz.

  6. Sayfanın en üstündeki içerik haritalarını kullanarak depolama hesabınızda bir düzey yukarı gidin. Sol gezinti bölmesinde Depolama tarayıcısı'nı bulup seçin ve ardından Tablolar'ı seçin.

  7. ImageText tablosu artık kullanılabilir olmalıdır. İçindeki veri satırlarının önizlemesini görüntülemek için tabloya tıklayın. Karşıya yükleme işleminin işlenen görüntü metni için bir giriş görmeniz gerekir. Zaman damgasını kullanarak veya Metin sütununun içeriğini görüntüleyerek bunu doğrulayabilirsiniz.

    Azure Tablo Depolama'da metin girişini gösteren ekran görüntüsü.

Tebrikler! Azure İşlevleri ve Görüntü İşleme kullanılarak Blob Depolama'ya yüklenen bir görüntüyü işlemeyi başardınız.

Kaynakları temizleme

Bu uygulamayı kullanmaya devam etmeyecekseniz, kaynak grubunu kaldırarak oluşturduğunuz kaynakları silebilirsiniz.

  1. Ana gezinti bölmesinden Kaynak grupları'nı seçin
  2. Listeden msdocs-storage-function kaynak grubunu seçin.
  3. Kaynak grubuna genel bakış sayfasının üst kısmındaki Kaynak grubunu sil düğmesini seçin.
  4. Onay iletişim kutusuna msdocs-storage-function kaynak grubu adını girin.
  5. Sil'i seçin. Kaynak grubunu silme işleminin tamamlanması birkaç dakika sürebilir.