Aracılığıyla paylaş


Öğretici: Azure Functions ve Blob Storage içeren bir dosyayı karşıya yükleme ve analiz etme

Bu öğreticide, bir görüntüyü Azure Blob Storage'a nasıl yükleyeceğinizi ve ardından Azure Functions ve Computer Vision kullanarak nasıl işleyeceğinizi öğreniyorsunuz. Ayrıca bu işlemin bir parçası olarak Azure İşlev tetikleyicilerini ve bağlamalarını nasıl uygulayacağınızı da öğrenirsiniz. Bu hizmetler birlikte, metin içeren karşıya yüklenen bir görüntüyü analiz eder, içindeki metni ayıklar ve daha sonra analiz veya başka amaçlarla metni bir veritabanı satırında depolar.

Azure Blob Storage, Microsoft'un bulut için yüksek düzeyde ölçeklenebilir nesne depolama çözümüdür. Blob Storage görüntüleri ve belgeleri depolamak, medya dosyalarını akışa almak, yedekleme ve arşiv verilerini yönetmek ve çok daha fazlası için tasarlanmıştır. overview sayfasında Blob Storage hakkında daha fazla bilgi edinebilirsiniz.

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

Bu eğitimde şunları öğreniyorsunuz:

  • Görüntüleri ve dosyaları Blob Storage'a yükleme
  • Azure Functions kullanarak Blob Storage'a yüklenen verileri işlemek için bir olay tetikleyicisi kullanma
  • Bir görüntüyü analiz etmek için Döküm Araçları'nı kullanma
  • Azure İşlev çıkış bağlamalarını kullanarak Tablo Depolama'ya veri yazma

Prerequisites

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

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

Azure portalında 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 üstteki + 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 benzersiz olmalıdır, bu nedenle adın arkasına msdocsstoragefunction123 gibi sayılar 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 bir depolama hesabı oluşturmayı gösteren bir ekran görüntüsü.

  4. Alttaki Review + Create öğesini seçin ve Azure girdiğiniz bilgileri doğrular. Ayarlar doğrulandıktan sonra Create öğesini seçin ve 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ı seçeneğini seçin. Slayt dışarısı panelinde bir Görüntü analizi adıgirin ve Genel erişim düzeyinin Blob (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 al

Son adım, depolama hesabı için bağlantı dizesini 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 anahtarı daha sonra kullanmak üzere bir yere yapıştırın. Daha sonra kullanmak üzere depolama hesabı adını msdocsstoragefunction not etmeyi unutmayın.

    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 gereklidir.

Computer Vision hizmetini oluşturma

Ardından, karşıya yüklenen dosyalarımızı işleyen Computer Vision hizmet hesabını oluşturun. Computer Vision, Döküm Araçları'nın bir parçasıdır ve görüntülerden veri ayıklamaya yönelik çeşitli özellikler sunar. Computer Vision hakkında daha fazla bilgiyi overview sayfası üzerinde edinebilirsiniz.

  1. Portalın üst kısmındaki arama çubuğunda Bilgisayar'ı arayın ve Bilgisayar görüsü etiketli sonucu seçin.

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

  3. Create Computer Vision 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 bir Bilgisayarla Görme hizmeti oluşturmayı gösteren bir 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 Create öğesini seçin ve Azure Computer Vision hizmetini sağlamaya başlar ve bu işlem biraz zaman alabilir.

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

Anahtarları alma

Ardından, Azure İşlev uygulamamızda kullanılacak Computer Vision hizmetinin gizli anahtar ve uç nokta URL'sini bulmamız gerekir.

  1. Computer Vision genel bakış sayfasında Keys ve Endpoint'i 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.

    Bir Computer Vision servisi için Anahtarlar ve URL Uç Noktası'nın nasıl alınıp alınabileceğini gösteren ekran görüntüsü.

Örnek projeyi indirme ve yapılandırma

Bu öğreticide kullanılan Azure İşlevinin kodu this 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 Computer Vision hizmetine bağlanmak için ortam değişkenlerini alır
  • Karşıya yüklenen dosyayı blob parametresi olarak kabul eder
  • Computer Vision hizmetini kullanarak blobu analiz eder
  • Çıkış bağlamalarını kullanarak çözümlenen görüntü metnini 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, Run yöntem imzasının öznitelikleri kullanılarak uygulanan Tetikleyici ve Çıkış bağlamalarını kullanır.

Table özniteliği iki parametre kullanır. İlk parametre, işlev 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 parametresi, Azure işlevimizin erişebilmesi için ortam değişkenlerinden bir Tablo Depolama bağlantı dizesi çeker.

BlobTrigger özniteliği, işlevimizi Blob Storage'daki karşıya yükleme olayına bağlamak için kullanılır ve blobu Run işlevine yükler. Blob tetikleyicisinin kendine ait iki parametresi vardır: biri karşıya yüklemeleri izlemek için blob kapsayıcısının adı, diğeri ise depolama hesabımızın bağlantı dizesi içindir.

// 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, depolama hesabı connection string ve Computer Vision anahtarı gibi ortam değişkenlerinden temel yapılandırma değerlerini de alır. Bu ortam değişkenlerini dağıtıldıktan sonra Azure İşlev ortamımıza ekleyeceğiz.

ProcessImage işlevi, adlı AnalyzeImageikinci bir yöntem de kullanır. Bu kod, Computer Vision hesabımızın URL Uç Noktasını ve Anahtarını kullanarak bu sunucuya görüntümüzü işleme isteğinde bulunur. İstek, yöntemdeki çıkış bağlaması kullanılarak Tablo Depolama'ya yazılan görüntüde Run bulunan metnin tümünü döndürü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ırılıyor

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 İşlev kodu yerel olarak çalıştırılsa da, herhangi bir yerel öykünücü kullanmak yerine Azure üzerindeki canlı hizmetlere bağlanır.

{
    "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 Functions'a dağıtın

Artık Visual Studio kullanarak uygulamamızı Azure dağıtmaya hazırsınız. Ayrıca Azure Functions uygulamasını dağıtım işleminin bir parçası olarak Azure'da da oluşturabilirsiniz.

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

  2. Publish iletişim kutusunda Azure'ı seçin ve İleri'i 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)'i seçin ve ardından yeniden Next seçin.

     Belirli bir dağıtım hedefi olarak Azure Functions seçmeyi 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 benzeri 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 Storage: Daha önce oluşturduğunuz depolama hesabını seçin.

    Azure'de yeni bir Function App oluşturmayı gösteren bir ekran görüntüsü.

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

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

  8. Azure İşlevini dağıtmanın son adımı, ekranın sağ üst kısmındaki Publish seçmektir. İşlevin yayımlanması da birkaç dakika sürebilir. İşlem tamamlandıktan sonra uygulamanız Azure üzerinde çalışır.

Hizmetleri bağlama

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

  1. Azure portalının üst kısmında function araması yapın ve sonuçlardan Function Uygulaması seçin.

  2. Function 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çerek uygulamamız için çeşitli yapılandırma ayarlarını yönetebileceğimiz bir sayfa açın. Şimdilik Uygulama Ayarları bölümüyle ilgileniyoruz.

  4. Sonraki adım, depolama hesabı adımız ve bağlantı dizesi, Computer Vision gizli anahtarı ve Computer Vision 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.
    • Value: Daha önce kaydettiğiniz Computer Vision anahtarı yapıştırın.
  6. Bu ayarı uygulamanıza eklemek için Tamam'ı seçin.

    Azure Function'a yeni bir uygulama ayarı eklemeyi gösteren bir ekran görüntüsü.

  7. Şimdi aşağıdaki değerleri kullanarak bu işlemi Computer Vision hizmetimizin uç noktası için yineleyelim:

    • 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.
    • Value: Daha önce kaydettiğiniz connection string 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 tüm ortam değişkenleri artık mevcuttur.

Blob Storage'a görüntü yükleme

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

  1. İlk olarak, Azure portalının üst kısmında Storage araması yapın ve storage account öğesini 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 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 İşlevini tetiklediğini ve görüntüdeki metnin çözümlenip Tablo Depolama'ya düzgün şekilde kaydedildiğini doğrulayabilirsiniz.

  6. Sayfanın üst kısmındaki gezinti izlerini kullanarak depolama hesabınızda bir seviye yukarı çıkın. 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 tabloda öğesini seçin. Yüklediğimiz işlenmiş görüntü metni için bir girdi görmeniz gerekir. Zaman damgasını kullanarak veya Metin sütununun içeriğini görüntüleyerek bunu doğrulayabilirsiniz.

    Azure Table Storage'da bir metin girişini gösteren ekran görüntüsü.

Congratulations! Azure Functions ve Computer Vision kullanarak Blob Storage 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 gezintiden 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.