Öğretici: Azure İşlevleri ve Blob Depolama ile bir dosyayı karşıya yükleme ve analiz etme
Bu öğreticide, Azure İşlevleri ve Görüntü İşleme kullanarak bir görüntüyü karşıya yükleyip Azure Blob Depolama ve 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 daha sonra analiz etmek veya başka amaçlarla metni 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:
- Blob Depolama'ya görüntü ve dosya 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
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Visual Studio 2022 yüklü.
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’ında oturum açın.
Portalın üst kısmındaki arama çubuğunda Depolama araması yapın ve Depolama hesapları etiketli sonucu seçin.
Depolama hesapları sayfasında sol üstteki + Oluştur'u seçin.
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-function
girin ve ardından Tamam'ı seçin. - Depolama hesabı adı: değerini
msdocsstoragefunction
girin. Depolama hesabı adı Azure genelinde benzersiz olmalıdır, bu nedenle adındanmsdocsstoragefunction123
sonra 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.
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
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.
Gezinti panelinde Kapsayıcılar'ı seçin.
Kapsayıcılar sayfasında üstteki + Kapsayıcı'yı 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. Daha sonra, Oluştur'u seçin.
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ı dizesi almaktır.
Sol gezinti panelinde Erişim Tuşları'nı seçin.
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.
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 hizmet hesabını oluşturun. Görüntü İşleme, Azure yapay zeka hizmetlerinin bir parçasıdır ve görüntülerden veri ayıklamaya yönelik çeşitli özellikler sunar. genel bakış sayfasında Görüntü İşleme hakkında daha fazla bilgi edinebilirsiniz.
Portalın üst kısmındaki arama çubuğunda Bilgisayar'ı arayın ve Görüntü işleme etiketli sonucu seçin.
Görüntü işleme sayfasında + Oluştur'u seçin.
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ı
msdocscomputervision
girin. - 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
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.
İşlem tamamlandığında Kaynağa Git'i seçin.
Anahtarları alma
Ardından, Azure İşlevi uygulamamızda kullanılacak Görüntü İşleme hizmetinin gizli anahtar ve uç nokta URL'sini bulmamız gerekir.
Görüntü İşleme genel bakış sayfasında Anahtarlar ve Uç Nokta'yı seçin.
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.
Ö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
- Çı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 anlamanız 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ş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
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, depolama hesabı bağlantı dizesi ve Görüntü İşleme 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 İşlevi ortamımıza ekleyeceğiz.
ProcessImage
işlevi, aşağıda görülen adlı AnalyzeImage
ikinci bir yöntemi de kullanır. Bu kod, Görüntü İşleme 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, görüntüde bulunan metnin tümünü döndürür ve ardından yöntemdeki çı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ı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 İş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 dağıtma
Artık Visual Studio kullanarak uygulamamızı Azure'a dağıtmaya hazırsınız. Azure İşlevleri uygulamasını Azure'da dağıtım işleminin bir parçası olarak aynı anda da oluşturabilirsiniz.
Başlamak için ProcessImage proje düğümünü sağ seçip Yayımla'yı seçin.
Yayımla iletişim kutusunda Azure'ı ve ardından İleri'yi seçin.
Sonraki ekranda Azure İşlev Uygulaması (Windows) veya Azure İşlev Uygulaması (Linux) seçeneğini belirleyin ve sonra yeniden İleri'yi seçin.
İş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.
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.
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.
İşlem tamamlandıktan sonra, iletişim kutusu iş akışını kapatmak için Son'u seçin.
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ı dizesi önce Azure İşlevleri uygulamasının yapılandırma ayarlarına eklenmesi gerekir.
Azure portalının üst kısmında işlev araması yapın ve sonuçlardan İşlev Uygulaması'nı seçin.
İşlev Uygulaması ekranında Visual Studio'da oluşturduğunuz İşlev Uygulamasını seçin.
İş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.
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.
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.
Bu ayarı uygulamanıza eklemek için Tamam'a tıklayın.
Şimdi aşağıdaki değerleri kullanarak bu işlemi Görüntü İşleme 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.
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ı dizesi yapıştırın.
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.
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 yerinde.
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 ardından görüntüdeki metnin Tablo Depolama'ya kaydedildiğini doğrulayabilirsiniz.
İ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.
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.
İndirilebilir örnek projenin kökünde images klasörüne dahil edilen birkaç örnek görüntü bulabilir veya kendi resimlerinizden birini kullanabilirsiniz.
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.
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.
Sayfanın üst kısmındaki 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.
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üklememizin işlenen 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.
Tebrikler! Azure İşlevleri ve Görüntü İşleme kullanarak 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.
- Ana gezintiden Kaynak grupları'nı seçin
- Listeden
msdocs-storage-function
kaynak grubunu seçin. - Kaynak grubuna genel bakış sayfasının üst kısmındaki Kaynak grubunu sil düğmesini seçin.
- Onay iletişim kutusuna msdocs-storage-function kaynak grubu adını girin.
- Sil seçeneğini belirleme. Kaynak grubunu silme işleminin tamamlanması birkaç dakika sürebilir.