Ç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ızcaMultiselectdevre 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.ImageCollectionadları 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 yerineGenerationResult.ErrorCode/ErrorMessagearacılığıyla raporlar — oluşturulan bir sonuca güvenmeden önceErrorCode‘ı kontrol edin.
Sıkça Karşılaşılan Sorunlar
| Sorun | Neden | Düzeltme |
|---|---|---|
| Bir resmi iki kez kaydetmek hataya neden olur | ImageCollection.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 edilir | Varsayılan FormValidationLogic.Ignore hata oluşturmaz | FormValidationLogic.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öntem | Açıklama |
|---|---|
OmrEngine.Generate | Bir şablonu sayfa görüntüsüne + .omr tanımlayıcısına render eder |
OmrEngine.GetTemplateProcessor | Tanıma için bir .omr tanımlayıcısını yükler |
TemplateProcessor.Recognize / RecognizeFolder / Recalculate | Tanıma giriş noktaları |
ImageCollection.Add / Contains / as_dict | İşaretleme için bellek içi görüntü kayıt defteri |
FormValidationLogic | Doğrulama-ihlal davranışı enum |