Çekirdek API

Çekirdek API

omr.api, kodun çoğunluğunun etkileşimde bulunduğu küçük yüzeydir: OmrEngine, TemplateProcessor, ImageCollection ve FormValidationLogic enumu.


OmrEngine

OmrEngine, durum içermeyen bir fabrikadır. Generate(source, settings), bir markup-DSL kaynağını veya bir TemplateConfig ağacını kabul eder ve bir GenerationResult döndürür. GetTemplateProcessor(templateSource, validationLogic), daha önce kaydedilmiş bir .omr dosya yolunu yükler ve bağlanmış bir TemplateProcessor döndürür; bir akış kaynağı ise doğrulama mantığından önce bir metin kodlaması argümanı alır.

from omr.api import OmrEngine, FormValidationLogic

engine = OmrEngine()
gen = engine.Generate("final-exam.txt")
gen.Save("out", "final-exam")
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)

FormValidationLogic

Şablon doğrulama kuralı — örneğin çoklu seçim kısıtlaması — tanıma sırasında ihlal edildiğinde motor davranışını kontrol eder: Ignore (varsayılan) ihlali sessizce kabul eder, Exception hata fırlatır ve undefined enumun sıfır değeridir. Kontrol yalnızca Multiselect devre dışı bırakılmış sorulara uygulanır; GlobalPageSettings.Multiselect varsayılan olarak etkinleştirilir.

TemplateProcessor

Recognize(source, recognitionThreshold) bir taranmış görüntüyü tanır. RecognizeFolder(folderPath, recognitionThreshold) bir klasördeki tüm görüntüleri tek bir çağrıda tanır. Recalculate(result, recognitionThreshold) kaynak görüntüyü yeniden okumadan, farklı bir eşikle zaten tanınmış bir sonucu yeniden puanlar.

ImageCollection

İsme göre ham görüntü baytlarına ekleme-yalnız, büyük/küçük harf duyarlı bir harita. Add(name, image) bir görüntüyü kaydeder, Contains(name) bir ismin zaten kaydedilip kaydedilmediğini kontrol eder, Count kaç tane kaydedildiğini raporlar ve as_dict() arka plan haritasını döndürür. İşaretleme, bir dosya sistemi yolu yerine kayıtlı bir görüntüyü isimle (?image=<name>) referans alabilir.

from omr.api import ImageCollection

images = ImageCollection()
with open("logo.png", "rb") as f:
    images.Add("logo.png", f.read())

İpuçları ve En İyi Uygulamalar

  • Geliştirme sırasında FormValidationLogic.Exception‘ı geçin, çoklu seçim ihlallerini sessizce yok saymak yerine hemen ortaya çıkarmak için (yalnızca Multiselect devre dışı bırakılmış sorularda tetiklenir).
  • Recalculate(), yeniden taramaktan daha ucuzdur — yalnızca tanı eşik değeri değişmesi gerektiğinde kullanın.
  • ImageCollection adları büyük/küçük harf duyarlıdır; aynı ismi iki kez kaydetmek sessizce üzerine yazmak yerine bir hata oluşturur.
  • Generate(), hataların çoğunu yükseltmek yerine GenerationResult.ErrorCode/ErrorMessage aracılığıyla raporlar — oluşturulan bir sonuca güvenmeden önce ErrorCode‘ı kontrol edin.

Sıkça Karşılaşılan Sorunlar

SorunNedenDüzeltme
Bir resmi iki kez kaydetmek hataya neden olurImageCollection.Add yinelenen adlara izin vermezÖnce Contains(name)‘i kontrol edin, ya da her resim için benzersiz bir ad kullanın
İzin verilmeyen çoklu seçim yanıtı sessizce kabul edilirVarsayılan FormValidationLogic.Ignore hata oluşturmazFormValidationLogic.Exception‘ı GetTemplateProcessor()‘e gönder ve sorunun Multiselect‘ının devre dışı bırakıldığından emin ol

FAQ

OmrEngine birden fazla şablonda yeniden kullanmak güvenli mi?

Evet — durum bilgisi taşımaz; her Generate()/GetTemplateProcessor() çağrısı bağımsızdır.

Tüm tarama klasörünü bir kerede nasıl tanıyabilirim?

TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) çağırın, kendiniz Recognize() döngüsü oluşturmak yerine.


API Reference Özeti

Sınıf/YöntemAçıklama
OmrEngine.GenerateBir şablonu sayfa görüntüsüne + .omr tanımlayıcısına render eder
OmrEngine.GetTemplateProcessorTanıma için bir .omr tanımlayıcısını yükler
TemplateProcessor.Recognize / RecognizeFolder / RecalculateTanıma giriş noktaları
ImageCollection.Add / Contains / as_dictİşaretleme için bellek içi görüntü kayıt defteri
FormValidationLogicDoğrulama-ihlal davranışı enum

Ayrıca Bakınız

 Türkçe