Nucleul API
Nucleul API
omr.api este suprafața mică cu care interacționează cea mai mare parte a codului: OmrEngine, TemplateProcessor, ImageCollection și enum-ul FormValidationLogic.
OmrEngine
OmrEngine este o fabrică fără stare. Generate(source, settings) acceptă o sursă markup-DSL sau un TemplateConfig tree și returnează un GenerationResult. GetTemplateProcessor(templateSource, validationLogic) încarcă un .omr file path salvat anterior și returnează un TemplateProcessor legat; o sursă de flux, în schimb, primește un argument de codare a textului înainte de logica de validare.
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
Controlează comportamentul motorului când o regulă de validare a șablonului — cum ar fi o constrângere multi-select — este încălcată în timpul recunoașterii: Ignore (implicit) acceptă în tăcere încălcarea, Exception ridică, și undefined este valoarea zero a enum-ului. Verificarea se aplică doar întrebărilor ale căror Multiselect este dezactivat; GlobalPageSettings.Multiselect este implicit activat.
TemplateProcessor
Recognize(source, recognitionThreshold) recunoaște o singură imagine scanată. RecognizeFolder(folderPath, recognitionThreshold) recunoaște fiecare imagine dintr-un folder într-un singur apel. Recalculate(result, recognitionThreshold) recalculează un rezultat deja recunoscut cu un prag diferit, fără a reîncărca imaginea sursă.
ImageCollection
O hartă numai de adăugare, sensibilă la majuscule/minuscule, de la un nume la octeți brut de imagine. Add(name, image) înregistrează o imagine, Contains(name) verifică dacă un nume este deja înregistrat, Count raportează câte sunt înregistrate și as_dict() returnează harta de bază. Markup-ul poate face referire la o imagine înregistrată prin nume (?image=<name>) în loc de o cale de sistem de fișiere.
from omr.api import ImageCollection
images = ImageCollection()
with open("logo.png", "rb") as f:
images.Add("logo.png", f.read())Sfaturi și cele mai bune practici
- Transmite
FormValidationLogic.Exceptionîn timpul dezvoltării pentru a afișa încălcările de selecție multiplă imediat, în loc să le ignore silențios (se declanșează doar pentru întrebările cuMultiselectdezactivat). Recalculate()este mai ieftin decât re-scanearea — folosește-l când este necesar să se schimbe doar pragul de recunoaștere.- Numele
ImageCollectionsunt sensibile la majuscule/minuscule; înregistrarea aceluiași nume de două ori generează o eroare în loc să suprascrie silențios. Generate()raportează majoritatea erorilor prinGenerationResult.ErrorCode/ErrorMessageîn loc să le arunce — verificăErrorCodeînainte de a avea încredere într-un rezultat generat.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
| Înregistrarea unei imagini de două ori ridică | ImageCollection.Add nu permite nume duplicate | Verificați mai întâi Contains(name), sau folosiți un nume unic pentru fiecare imagine |
| Un răspuns multi-select nepermis este acceptat în tăcere | Valoarea implicită FormValidationLogic.Ignore nu ridică | Transmite FormValidationLogic.Exception către GetTemplateProcessor() și asigură-te că Multiselect întrebării este dezactivat |
FAQ
Este OmrEngine sigur să fie reutilizat în mai multe șabloane?
Da — este fără stare; fiecare Generate()/GetTemplateProcessor() apel este independent.
Cum recunosc un întreg dosar de scanări simultan?
Apelă TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) în loc să iterezi Recognize() manual.
API Reference Rezumat
| Clasă/Metodă | Descriere: |
|---|---|
OmrEngine.Generate | Redă un șablon într-o imagine de pagină + descriptor .omr |
OmrEngine.GetTemplateProcessor | Încarcă un descriptor .omr pentru recunoaștere |
TemplateProcessor.Recognize / RecognizeFolder / Recalculate | Puncte de intrare pentru recunoaștere |
ImageCollection.Add / Contains / as_dict | Registru de imagini în memorie pentru markup |
FormValidationLogic | Enum de comportament pentru încălcarea validării |