1. Ürünler
  2.   Aspose.OMR
  3.   Aspose.OMR FOSS for Python

Python için Aspose.OMR FOSS

OMR cevap kağıtları tasarlayın ve taranmış görüntülerden işaretlenmiş baloncukları Python içinde tanıyın — ücretsiz, açık kaynaklı ve MIT lisanslı.

Optik İşaret Tanıma için Açık Kaynak Python Kütüphanesi

Aspose.OMR FOSS for Python ücretsiz, açık kaynaklı bir kütüphanedir ve OMR (optik işaret tanıma) formları — çoktan seçmeli cevap kağıtları, onay kutusu formları ve anketler — tasarlamayı ve taranmış ya da fotoğraflanmış bir görüntüden yanıtlayanın doldurduğu işaretleri tanımayı sağlar.
It targets developers automating exam grading, survey tabulation, or form-based data collection in pure Python, built on nothing more exotic than numpy, opencv-python, and Pillow.
Tek bir OmrEngine tüm iş akışını kapsar — Generate() bir şablonu, ChoiceBoxConfig, CheckBoxConfig, GridConfig ve AnswerSheetConfig gibi öğelerden oluşan bir TemplateConfig ağacından kod-ilk yaklaşımla ya da kompakt bir metin-işaretleme DSL’sinde yazarak, bir sayfa görüntüsü ve bir .omr tanımlayıcısına dönüştürür; GetTemplateProcessor() bu tanımlayıcıyı geri yükleyerek yeni taramaları Recognize() veya RecognizeFolder() ile tanır ve sonuçları CSV, JSON veya XML formatlarında dışa aktarılabilir olarak döndürür.
Kütüphane MIT lisanslıdır ve tek bir pip komutuyla kurulur (aşağıya bakın); erken bir sürümdür (v0.1.0, Development Status: Alpha) ve tam Aspose.OMR yüzeyinin temel, oluşturma ve tanıma katmanlarını kapsar — bu sürümde yalnızca LTR/Western renderlama bulunur, RTL yazı sistemleri ve tam taşma yönetimi üst yol haritasında takip edilmekte ancak henüz uygulanmamıştır.
Kurumsal ürün ailesi için Aspose.OMR — Enterprise Product Family adresine bakın.

OMR Formlarını Tasarla ve Oluştur

  • Code-first templates: TemplateConfig, PageConfig ve öğe yapılandırmaları (ChoiceBoxConfig, CheckBoxConfig, GridConfig, CompositeGridConfig, AnswerSheetConfig) sayfadaki her alanı tanımlar.
  • Markup DSL: kompakt bir metin biçimi (?choicebox=... / &choicebox) nesneleri elle oluşturmak zorunda kalmadan aynı yapıları oluşturur.
  • Writing-system enums: Arabic, Hebrew, Persian, Urdu, Bengali ve Western, API doğruluğu ve Aspose.OMR yüzeyi için mevcuttur; bu sürümün render’ı yalnızca LTR/Western’dir — RTL render’ı henüz uygulanmadı.
  • Overflow enums: LongWordHandling ve OverflowAction alt sınıfları (Clip, NoClip, Wrap) doğru şekilde ayrıştırılır ve doğrulanır, ancak bu sürümün render’ı henüz bunları dikkate almaz — gerçek taşma davranışı henüz yapılandırılabilir değildir.
  • Checkbox and choice groups: CheckBoxConfig ve ChoiceBoxConfig çoklu seçim destekler; TemplateProcessor başına bir kez ayarlanan FormValidationLogic, Multiselect devre dışı bırakılmış bir soruya birden fazla işaret gelirse hata yükseltebilir.

Nerede Aspose.OMR FOSS Kullanılabilir

  • Sınavlar ve quizler: çoktan seçmeli cevap kağıtları oluşturun ve otomatik notlandırma için doldurulmuş balonları tanıyın.
  • Anketler ve formlar: büyük ölçekli yanıt toplama için AnswerSheetConfig ile numaralı cevap-kağıdı matrisleri oluşturun.
  • Veri giriş ızgaraları: GridConfig ve CompositeGridConfig, sayısal veya özel simge girişlerini tek bir birleştirilmiş değer olarak yakalar.
  • Yazdırılabilir çıktı: Save() , daha sonra tanıma için kullanılan .omr tanımlayıcısının yanında hazır yazdırılabilir bir PNG sayfası yazar.
  • Toplu işlem hatları: RecognizeFolder() , taramaların tüm klasörünü tek bir çağrıda işler.

İşaretleri Tanı ve Sonuçları Dışa Aktar

  • Durumsuz motor: OmrEngine.Generate() bir GenerationResult üretir (sayfa görüntüsü + .omr şablonu JSON); GetTemplateProcessor() o şablonu yükleyerek yeni taramaları tanır.
  • Birden fazla dışa aktarma formatı: RecognitionResult CSV, JSON veya XML formatına dışa aktarır, her biri uygun bir akış varyantıyla.
  • Bellek içi sonuçlar da: MemoryGenerationResult oluşturulan görüntüleri GetImages()/GetOmr() aracılığıyla bellek içi akışlar olarak sunar — disk I/O gerekmez.
  • Eğrilik giderme ve yeniden kalibrasyon: tanıma, köşe referans işaretlerinden tarama eğriliğini düzeltir ve Recalculate() yeniden tarama yapmadan farklı bir eşik uygular.
  • Gömülü görüntüler: ImageCollection işaretlemenin, adla bellek içi görüntü baytlarını referans almasını sağlar, dosya sistemi dönüşlerini önler.

Geliştirici Deneyimi

Aspose.OMR FOSS for Python tek bir pip komutuyla kurulur (aşağıdaki Hızlı Başlangıç örneğine bakınız). API üç nesne etrafında döner — OmrEngine, bir TemplateConfig ağacı (veya işaretleme DSL’si) ve TemplateProcessor — bu nesneler tüm oluştur → tarama → tanıma → dışa aktarma iş akışını kapsar.

Kütüphane yalnızca numpy, opencv-python ve Pillow‘a bağımlıdır — derlemek için yerel OMR ikili dosyaları yoktur. MIT lisanslıdır, GitHub’da barındırılır ve şu anda tam Aspose.OMR yüzeyinin temel, oluşturma ve tanıma katmanlarını kapsayan erken bir v0.1.0 sürümündedir.

Form Oluştur ve Tarama Yanıtlarını Tanı

Bir şablon oluşturun (veya yükleyin), oluşturulan sayfa görüntüsünü ve .omr tanımlayıcısını kaydedin, ardından taranmış bir kopyayı tanıyın ve sonuçları CSV olarak dışa aktarın.

git clone https://github.com/aspose-omr-foss/Aspose.OMR-FOSS-for-Python.git
cd Aspose.OMR-FOSS-for-Python
pip install -e .
from omr.api import OmrEngine, FormValidationLogic
engine = OmrEngine()
gen = engine.Generate("final-exam.txt")          # or a code-first TemplateConfig
gen.Save("out", "final-exam")                    # -> out/final-exam.png + out/final-exam.omr
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)
result = processor.Recognize("scan.png")         # -100 = auto-calibrated threshold
print(result.GetCsv())                           # also GetJson() / GetXml()

İşaretlemeden Çoktan Seçmeli Soru Oluştur

text-markup DSL, kod-öncelikli API ile aynı öğe ağacını oluşturur. Burada ?choicebox=... bir choice-box sorusu açar, bir sonraki satır seçeneklerini listeler ve &choicebox onu kapatır — Generate() bir .Template JSON tanımlayıcısını döndürür ve doğrudan inceleyebilirsiniz.

import json
from omr.api import OmrEngine
markup = [
    "?choicebox=Rate it",
    "(1) Poor (2) Fair (3) Good",
    "&choicebox",
]
engine = OmrEngine()
result = engine.Generate(markup)
desc = json.loads(result.Template)
cb = desc["Pages"][0]["Elements"][0]
print([b["Value"] for b in cb["Fields"][0]["Bubbles"]])  # ['Poor', 'Fair', 'Good']

Sıkça Sorulan Sorular

Aspose.OMR FOSS for Python için lisans modeli nedir?

MIT Lisansı altında dağıtılmaktadır — kullanmak, değiştirmek ve dağıtmak ücretsizdir, ticari ürünler dahil olmak üzere, ancak orijinal telif hakkı bildirimini eklemek şartıyla.

Hangi Python sürümleri ve bağımlılıkları gereklidir?

Python 3.10 veya daha yeni bir sürüm, pip tarafından otomatik olarak kurulan üç bağımlılıkla — numpy, opencv-python ve Pillow. Yerel OMR donanımı veya harici hizmetler gerekmez.

Oluşturulan şablonu PDF olarak dışa aktarabilir miyim?

Bu sürümde yok. GenerationResult.SaveAsPdf() ve MemoryGenerationResult.GetPDF() her ikisi de NotImplementedError hatası verir. Bunun yerine Save() veya GetImages()‘den PNG çıktısını kullanın.

Tanıma sonuçlarını hangi formatlarda dışa aktarabilirim?

RecognitionResult CSV, JSON veya XML biçimlerine GetCsv(), GetJson() ve GetXml() aracılığıyla dışa aktarır; her biri eşleşen bir bellek içi akış varyantına sahiptir.

İngilizce dışındaki dilleri destekliyor mu?

Henüz render için değil. Şablon katmanı, Aspose.OMR yüzeyiyle uyum sağlamak amacıyla Arapça, İbranice, Farsça, Urduca ve Bengalce yazı sistemlerini tanımlar, ancak bu sürümün render motoru sadece LTR/Western’dır — RTL render ve yerel rakam tipografisi üst akış yol haritasında, henüz uygulanmadı.

Çoklu seçim yanıt doğrulaması destekleniyor mu?

Evet, Multiselect devre dışı bırakılmış sorular için. FormValidationLogic.Exception’ı GetTemplateProcessor()’a geçirin; böyle bir soru birden fazla işaret aldığında yükseltir; varsayılan, Ignore, sessizce kabul eder. GlobalPageSettings.Multiselect varsayılan olarak etkindir.

  

Destek ve Öğrenme Kaynakları

 Türkçe