C# kullanarak OMR gerçekleştirin ve Veri Çıkarın

Optik işaret tanıma (OMR), özel türde bir belge formunda işaretlenen verilerin okunmasına ve yakalanmasına olanak tanır. Bu belge formu, kullanıcılar tarafından doldurulan balon veya kare girişlerden oluşan bir test veya anket olabilir. .NET uygulamalarında bu tür anket formlarının veya test sayfalarının taranmış görüntüleri üzerinde OMR işlemlerini kolayca gerçekleştirebilir ve kullanıcı girişlerini programlı olarak okuyabiliriz. Bu yazıda, C# kullanarak OMR gerçekleştirmeyi ve veri çıkarmayı öğreneceğiz.

Bu yazıda aşağıdaki konular ele alınacaktır:

OMR Gerçekleştirmek ve Veri Çıkarmak için C# OMR API’si

OMR işlemlerini gerçekleştirmek ve görüntülerden veri dışa aktarmak için Aspose.OMR for .NET API kullanacağız. Cevap kağıtları, testler, MCQ kağıtları, sınavlar, geri bildirim formları, anketler ve oy pusulaları tasarlamanıza, oluşturmanıza ve tanımanıza olanak tanır. Lütfen API’nin DLL’sini indirin veya NuGet kullanarak kurun.

PM> Install-Package Aspose.OMR

OMR Gerçekleştirme ve Görüntüden Veri Çıkarma

Bir görüntü üzerinde OMR işlemi gerçekleştirmek için, hazırlanmış OMR şablonuna (.omr) ve üzerinde OMR gerçekleştirmek için görüntüye (kullanıcı tarafından doldurulan formlar/tablolar) ihtiyacımız var. Bir görüntü üzerinde OMR işlemi gerçekleştirebilir ve aşağıda verilen adımları izleyerek verileri çıkarabiliriz:

  1. İlk olarak, OmrEngine sınıfının bir örneğini oluşturun.
  2. Ardından, GetTemplateProcessor() yöntemini çağırın ve TemplateProcessor sınıf nesnesini başlatın. Bağımsız değişken olarak OMR şablonu dosya yolunu alır.
  3. Ardından, bağımsız değişken olarak görüntü yolu ile RecognizeImage() yöntemini çağırarak RecognitionResult nesnesini alın.
  4. Bundan sonra, GetCsv() yöntemini kullanarak tanıma sonuçlarını CSV dizeleri olarak alın.
  5. Son olarak, CSV sonucunu yerel diskte bir CSV dosyası olarak kaydedin.

Aşağıdaki kod örneği, bir görüntüde OMR’nin nasıl gerçekleştirileceğini ve C# kullanılarak CSV biçiminde verilerin nasıl çıkarılacağını gösterir.

// OMR Şablonu dosya yolu
string templatePath = @"D:\Files\OMR\Sheet.omr";

// Görüntü dosyası yolu
string imagePath = @"D:\Files\OMR\Sheet1.jpg";

// OMR Motorunu Başlat
OmrEngine engine = new OmrEngine();

// Şablon işlemciyi al
TemplateProcessor templateProcessor = engine.GetTemplateProcessor(templatePath);

// Resmi tanı
RecognitionResult result = templateProcessor.RecognizeImage(imagePath);

// Sonuçları CSV olarak alın
string csvResult = result.GetCsv();

// CSV dosyasını kaydet
File.WriteAllText(@"D:\Files\OMR\Sheet1.csv", csvResult);
OMR Gerçekleştirme ve Görüntülerden Veri Çıkarma

OMR gerçekleştirin ve görüntülerden Veri Çıkarın.

Yukarıdaki kod örneğinde kullanılan OMR şablonu buradan indirilebilir.

OMR Gerçekleştirin ve Birden Fazla Görüntüden Veri Çıkarın

Birden çok görüntü üzerinde OMR işlemleri gerçekleştirebilir ve daha önce bahsedilen adımları izleyerek her görüntü için ayrı bir CSV dosyasında veri çıkarabiliriz. Ancak tüm görseller için 3, 4 ve 5 numaralı adımları tek tek tekrarlamamız gerekiyor.

Aşağıdaki kod örneği, birden çok görüntüde OMR’nin nasıl gerçekleştirileceğini ve C# kullanılarak CSV biçiminde verilerin nasıl çıkarılacağını gösterir.

// OMR Şablonu dosya yolu
string templatePath = @"D:\Files\OMR\Sheet.omr";

// Görüntüler klasörü dosya yolu
string imageFolderPath = @"D:\Files\OMR\";

// Çıkış dizini yolu
string outputPath = @"D:\Files\OMR\";

// İşlenecek görüntüler
string[] UserImages = new string[] { "Sheet1.jpg", "Sheet2.jpg" };

// OMR Motorunu Başlat
OmrEngine engine = new OmrEngine();

// Şablon işlemciyi al
TemplateProcessor templateProcessor = engine.GetTemplateProcessor(templatePath);

// Görüntüleri tek tek işleyin
for (int i = 0; i < UserImages.Length; i++)
{
    string imagePath = Path.Combine(imageFolderPath, UserImages[i]);
    
    // Resmi tanı
    RecognitionResult result = templateProcessor.RecognizeImage(imagePath);
    
    // Sonuçları CSV olarak alın
    string csvResult = result.GetCsv();

    // CSV dosyasını kaydet
    File.WriteAllText(Path.Combine(outputPath, Path.GetFileNameWithoutExtension(UserImages[i]) + ".csv"), csvResult);
}

API ayrıca, OMR işlemi sırasında görüntüde bulunan tüm barkodları algılamak ve tanımak için işlevsellik sağlar. OMR işleminin varsayılan özelliğidir. Daha önce bahsedilen adımları takip ederek OMR işlemlerini gerçekleştirebilir ve barkodları tanıyabiliriz.

Eşikli OMR Sonuçlarını Alın

Görüntüler üzerinde OMR işlemleri gerçekleştirirken eşik değeri uygulayabiliriz. Eşiğin değeri, gereksinimlere bağlı olarak 0 ile 100 arasında olabilir. Eşik değeri ne kadar yüksek olursa, API yanıtları vurgulama konusunda daha katı hale gelir. OMR’yi eşikle gerçekleştirmek için lütfen daha önce belirtilen adımları izleyin. Ancak, sadece 3. adımda aşırı yüklenmiş RecognizeImage(string, int32) yöntemini çağırmamız gerekiyor. Argüman olarak imaj dosyasının yolunu ve eşik değerini alıyor.

Aşağıdaki kod örneği, C# kullanarak eşik değeriyle OMR’nin nasıl gerçekleştirileceğini gösterir.

// OMR Şablonu dosya yolu
string templatePath = @"D:\Files\OMR\Sheet.omr";

// Görüntü dosyası yolu
string imagePath = @"D:\Files\OMR\Sheet1.jpg";

// Eşik değeri
int CustomThreshold = 40;

// OMR Motorunu Başlat
OmrEngine engine = new OmrEngine();

// Şablon işlemciyi al
TemplateProcessor templateProcessor = engine.GetTemplateProcessor(templatePath);

// Resmi tanı
RecognitionResult result = templateProcessor.RecognizeImage(imagePath, CustomThreshold);

// Sonuçları CSV olarak alın
string csvResult = result.GetCsv();

// CSV dosyasını kaydet
File.WriteAllText(@"D:\Files\OMR\Sheet1_threshold.csv", csvResult);

Yeniden Hesaplamalı OMR İşlemi

Bazı durumlarda OMR sonuçlarını farklı eşik değerleri ile yeniden hesaplamamız gerekebilir. Bu amaçla, API’yi TemplateProcessor.recalculate() yöntemini kullanarak otomatik olarak yeniden hesaplama yapacak şekilde yapılandırabiliriz. İstenen sonucu elde etmek için eşik ayarını değiştirerek bir görüntünün birden çok kez işlenmesini sağlar. Aşağıda verilen adımları takip ederek yeniden hesaplama ile OMR işlemini gerçekleştirebiliriz:

  1. İlk olarak, OmrEngine sınıfının bir örneğini oluşturun.
  2. Ardından, GetTemplateProcessor() yöntemini çağırın ve TemplateProcessor sınıf nesnesini başlatın. OMR şablonu dosya yolunu bağımsız değişken olarak alır.
  3. Ardından, Kronometre nesnesini başlatın ve zamanlayıcıyı başlatın.
  4. Ardından, bağımsız değişken olarak görüntü yolu ile RecognizeImage() yöntemini çağırarak RecognitionResult nesnesini alın.
  5. Ardından, zamanlayıcıyı durdurun ve tanıma sonuçlarını GetCsv() yöntemini kullanarak bir CSV dizisi olarak dışa aktarın.
  6. Ardından, CSV sonucunu yerel diskte bir CSV dosyası olarak kaydedin.
  7. Ardından, Restart() yöntemini kullanarak zamanlayıcıyı yeniden başlatın.
  8. Ardından, Recalculate() yöntemini çağırın. RecognitionResult nesnesini ve eşik değerini argüman olarak alır.
  9. Bundan sonra zamanlayıcıyı durdurun ve tanıma sonuçlarını GetCsv() yöntemini kullanarak bir CSV dizisi olarak dışa aktarın.
  10. Son olarak, CSV sonucunu yerel diskte bir CSV dosyası olarak kaydedin.

Aşağıdaki kod örneği, C# kullanarak yeniden hesaplama yöntemiyle OMR’nin nasıl gerçekleştirileceğini gösterir.

// OMR Şablonu dosya yolu
string templatePath = @"D:\Files\OMR\Sheet.omr";

// Görüntü dosyası yolu
string imagePath = @"D:\Files\OMR\Sheet1.jpg";

// Eşik değeri
int CustomThreshold = 40;

// OMR Motorunu Başlat
OmrEngine engine = new OmrEngine();

// Şablon işlemciyi al
TemplateProcessor templateProcessor = engine.GetTemplateProcessor(templatePath);

// Performans ölçümü için zamanlayıcı
Stopwatch sw = Stopwatch.StartNew();

// Resmi tanı
RecognitionResult result = templateProcessor.RecognizeImage(imagePath, CustomThreshold);

sw.Stop();

// Sonuçları CSV olarak alın
string csvResult = result.GetCsv();

// CSV dosyasını kaydet
File.WriteAllText(@"D:\Files\OMR\Sheet1.csv", csvResult);

sw.Restart();

// yeniden hesapla
templateProcessor.yeniden hesapla(result, CustomThreshold);
sw.Stop();

// CSV'de yeniden hesaplanan sonuçları alın
csvResult = result.GetCsv();

// Yeniden hesaplanan sonuç CSV dosyasını kaydet
File.WriteAllText(@"D:\Files\OMR\Sheet1_yeniden hesaplad.csv", csvResult);

Ücretsiz Lisans Alın

Kitaplığı değerlendirme sınırlamaları olmadan denemek için ücretsiz bir geçici lisans alabilirsiniz.

Çözüm

Bu makalede, şunların nasıl yapılacağını öğrendik:

  • C# kullanarak görüntüler üzerinde OMR işlemi gerçekleştirin ve verileri CSV biçiminde çıkarın;
  • görüntülerde OMR gerçekleştirirken eşik ayarı uygulayın;
  • OMR sonuçlarını bir otomotiv sürecinde programlı olarak yeniden hesaplayın.

Ayrıca, belgeleri kullanarak Aspose.OMR for .NET API hakkında daha fazla bilgi edinebilirsiniz. Herhangi bir belirsizlik durumunda, lütfen forumda bizimle iletişime geçmekten çekinmeyin.

Ayrıca bakınız