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

Optik işaret tanıma (OMR), insanlar tarafından özel bir belge türü üzerinde işaretlenen verilerin okunmasına ve yakalanmasına olanak sağlayan elektronik bir işlemdir. Bu belge formu, kullanıcılar tarafından doldurulan kabarcık veya kare girişlerden oluşan bir test veya anket olabilir. Bu tür anket formları, anketler veya test sayfalarının taranmış görüntüleri üzerinde OMR işlemlerini kolayca yapabilir ve kullanıcı girdilerini programlı olarak okuyabiliriz. Bu yazıda, Java’da OMR gerçekleştirmeyi ve bir görüntüden veri çıkarmayı öğreneceğiz.

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

  1. [Görüntüden Veri Çıkarmak için Java OMR API]]1
  2. Bir Görüntüden Veri Çıkarın
  3. OMR Gerçekleştirin ve Birden Fazla Görüntüden Veri Çıkarın
  4. OMR Verilerini Eşikle Çıkarın
  5. OMR Verilerini Yeniden Hesaplamayla Çıkarın

Görüntüden Veri Çıkarmak için Java OMR API’si

OMR işlemlerini gerçekleştirmek ve desteklenen görüntü formatlarından veri ayıklamak için Aspose.OMR for Java 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.

API’nin OmrEngine sınıfı, şablonun oluşturulmasını ve görüntü işlemeyi işler. Bu sınıfın getTemplateProcessor(String templatePath) yöntemi, şablonları ve görüntüleri işlemek için TemplateProcessor örneğini oluşturur. recognizeImage(String imagePath) yöntemini kullanarak bir görüntüyü tanıyabiliriz. Tüm OMR öğelerini bir RecognitionResult sınıf örneği olarak döndürür. Bu sınıfın getCsv() yöntemi, tanıma sonuçlarını içeren bir CSV dizesi oluşturur. recalculate(RecognitionResult result, int RecognitionThreshold) yöntemi, ince ayarlı parametreler kullanarak tanıma sonucunu günceller.

Lütfen API’nin [JAR’ını15 indirin] veya Maven tabanlı bir Java uygulamasında aşağıdaki pom.xml yapılandırmasını ekleyin.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
     <groupId>com.aspose</groupId>
     <artifactId>aspose-omr</artifactId>
     <version>19.12</version>
</dependency>

Java’daki Bir Görüntüden Veri Çıkarma

OMR işlemini gerçekleştirmek için, hazırlanmış OMR şablonuna (.omr) ve kullanıcı tarafından doldurulmuş formların/tabloların görüntüsüne 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. OMR şablonu dosya yolunu bağımsız değişken olarak alır.
  3. Ardından, bir bağımsız değişken olarak görüntü yolu ile allowImage() 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, Java kullanılarak CSV biçimindeki bir görüntüden OMR verilerinin nasıl çıkarılacağını gösterir.

// Bu kod örneği, bir görüntü üzerinde OMR'nin nasıl gerçekleştirileceğini ve verilerin nasıl çıkarılacağını gösterir
// OMR Şablonu dosya yolu
String templatePath = "C:\\Files\\OMR\\Sheet.omr";

// Görüntü dosyası yolu
String imagePath = "C:\\Files\\OMR\\Sheet1.png";

// 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
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1.csv"), true);
wr.println(csvResult);
Java'da Bir Görüntüden Veri Çıkarma

OMR gerçekleştirin ve Java’da bir görüntüden Veri Çıkarın.

Lütfen bu blog gönderisinde kullanılan OMR şablonunu indirin.

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

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 3, 4 ve 5 numaralı adımları tüm görseller için tek tek tekrarlamamız gerekiyor.

Aşağıdaki kod örneği, Java kullanılarak birden çok görüntüden OMR verilerinin nasıl çıkarılacağını gösterir.

// Bu kod örneği, birden çok görüntüde OMR'nin nasıl gerçekleştirileceğini ve verilerin nasıl çıkarılacağını gösterir
// Çalışma klasörü yolu
String folderPath = "C:\\Files\\OMR\\";

// OMR Şablonu dosya yolu
String templatePath = folderPath + "Sheet.omr";

// Görüntü dosyası yolu
String[] UserImages = new String[] { "Sheet1.png", "Sheet2.png" };

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

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

// Görüntüleri bir döngüde tek tek işleyin
for (int i = 0; i < UserImages.length; i++)
{
    String image = UserImages[i];
    String imagePath = folderPath + image;

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

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

    // CSV dosyasını kaydet
    PrintWriter wr = new PrintWriter(new FileOutputStream(folderPath + "Sheet_" + i + ".csv"), true);
    wr.println(csvResult);
    System.out.println(csvResult);
}

OMR Verilerini Java’da Threshold ile Çıkarın

OMR işlemlerini ihtiyaca göre eşik değeri (0 ile 100 arası) ile gerçekleştirebilmekteyiz. Eşiğin değeri ne kadar yüksek olursa, API’nin yanıtları vurgulamada daha katı olmasını sağlar. 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ş allowImage(string, int32) yöntemini çağırmamız gerekiyor. Argüman olarak görüntü dosyasının yolunu ve eşik değerini alıyor.

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

// Bu kod örneği, therashold ile OMR'nin nasıl gerçekleştirileceğini ve bir görüntüden verilerin nasıl çıkarılacağını gösterir.
// OMR Şablonu dosya yolu
String templatePath = "C:\\Files\\OMR\\Sheet.omr";

// Görüntü dosyası yolu
String imagePath = "C:\\Files\\OMR\\Sheet1.png";

// 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
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1_threshold.csv"), true);
wr.println(csvResult);
System.out.println(csvResult);

Java’da Yeniden Hesaplama ile OMR Verilerini Çıkarın

Bazı durumlarda OMR sonuçlarını farklı eşik değerleri ile yeniden hesaplamamız gerekebilir. Bu amaçla, TemplateProcessor.recalculate() yöntemini kullanarak API’yi 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, bir bağımsız değişken olarak görüntü yolu ile allowImage() yöntemini çağırarak RecognitionResult nesnesini alın.
  4. Ardından, tanıma sonuçlarını getCsv() yöntemini kullanarak bir CSV dizisi olarak dışa aktarın.
  5. Ardından, CSV sonucunu yerel diskte bir CSV dosyası olarak kaydedin.
  6. Ardından, recalculate() yöntemini çağırın. RecognitionResult nesnesini ve eşik değerini argüman olarak alır.
  7. Bundan sonra, tanıma sonuçlarını getCsv() yöntemini kullanarak bir CSV dizesi olarak dışa aktarın.
  8. Son olarak, CSV sonucunu yerel diskte bir CSV dosyası olarak kaydedin.

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

// OMR Şablonu dosya yolu
String templatePath = "C:\\Files\\OMR\\Sheet.omr";

// Görüntü dosyası yolu
String imagePath = "C:\\Files\\OMR\\Sheet1.png";

// 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
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1.csv"), true);
wr.println(csvResult);

// yeniden hesapla
// Burada yeni eşik değeri uygulayabilirsiniz
templateProcessor.recalculate(result, CustomThreshold);

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

// Yeniden hesaplanan sonuç CSV dosyasını kaydet
PrintWriter finalWr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1_recalculated.csv"), true);
finalWr.println(csvResult);

Ücretsiz Lisans Alın

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

Çözüm

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

  • görüntüler üzerinde OMR işlemi gerçekleştirin;
  • CSV formatındaki verileri programlı olarak ayıklayın;
  • görüntülerde OMR gerçekleştirirken eşik ayarı uygulayın;
  • OMR sonuçlarını Java kullanarak bir otomotiv sürecinde yeniden hesaplayın.

Ayrıca, Java’da bir görüntüden veri ayıklamak için belgelemeyi kullanarak Aspose.OMR for Java API hakkında daha fazla bilgi edinebilirsiniz. Herhangi bir belirsizlik durumunda lütfen ücretsiz destek forumumuzda bizimle iletişime geçmekten çekinmeyin.

Ayrıca bakınız