Kärnan API
Kärnan API
omr.api är den lilla ytan som mest kod interagerar med: OmrEngine, TemplateProcessor, ImageCollection och FormValidationLogic enum.
OmrEngine
OmrEngine är en stateless fabrik. Generate(source, settings) accepterar en markup-DSL källa eller ett TemplateConfig träd och returnerar en GenerationResult. GetTemplateProcessor(templateSource, validationLogic) laddar en tidigare sparad .omr filväg och returnerar en bunden TemplateProcessor; en strömkälla tar istället ett text-kodningsargument innan valideringslogiken.
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
Styr motorns beteende när en mallvalideringsregel — såsom ett multi-select constraint — bryts under igenkänning: Ignore (standard) accepterar tyst överträdelsen, Exception höjer ett fel, och undefined är enumens nollvärde. Kontrollen gäller endast frågor vars Multiselect är inaktiverad; GlobalPageSettings.Multiselect är som standard aktiverad.
TemplateProcessor
Recognize(source, recognitionThreshold) känner igen en skannad bild. RecognizeFolder(folderPath, recognitionThreshold) känner igen varje bild i en mapp i ett anrop. Recalculate(result, recognitionThreshold) omvärderar ett redan igenkänt resultat med ett annat tröskelvärde, utan att läsa om källbilden igen.
ImageCollection
En skrivskyddad, skiftlägeskänslig karta från ett namn till råa bildbytes. Add(name, image) registrerar en bild, Contains(name) kontrollerar om ett namn redan är registrerat, Count rapporterar hur många som är registrerade, och as_dict() returnerar den underliggande kartan. Markup kan referera till en registrerad bild med namn (?image=<name>) istället för en filsystemssökväg.
from omr.api import ImageCollection
images = ImageCollection()
with open("logo.png", "rb") as f:
images.Add("logo.png", f.read())Tips och bästa praxis
- Ange
FormValidationLogic.Exceptionunder utveckling för att omedelbart visa överträdelser av multival utan att tyst ignorera dem (utlöses endast för frågor medMultiselectinaktiverat). Recalculate()är billigare än att skanna om — använd den när endast igenkänningströskeln behöver ändras.ImageCollectionnamn är skiftlägeskänsliga; att registrera samma namn två gånger ger ett fel istället för att tyst skriva över.Generate()rapporterar de flesta fel viaGenerationResult.ErrorCode/ErrorMessageistället för att höja ett undantag — kontrolleraErrorCodeinnan du litar på ett genererat resultat.
Vanliga problem
| Problem | Orsak | Åtgärd |
|---|---|---|
| Registrering av en bild två gånger ger | ImageCollection.Add tillåter inte dubblettnamn | Kontrollera Contains(name) först, eller använd ett unikt namn per bild |
| Ett otillåtet flervalsalternativ accepteras tyst | Standard FormValidationLogic.Ignore utlöser inte | Skicka FormValidationLogic.Exception till GetTemplateProcessor() och se till att frågans Multiselect är inaktiverad |
FAQ
Är OmrEngine säkert att återanvända i flera mallar?
Ja — den är tillståndslös; varje Generate()/GetTemplateProcessor()-anrop är oberoende.
Hur identifierar jag en hel mapp med skanningar på en gång?
Anropa TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) i stället för att loopa Recognize() själv.
API Reference Sammanfattning
| Klass/Metod | Beskrivning |
|---|---|
OmrEngine.Generate | Renderar en mall till en sidavbild + .omr beskrivare |
OmrEngine.GetTemplateProcessor | Laddar en .omr beskrivare för igenkänning |
TemplateProcessor.Recognize / RecognizeFolder / Recalculate | Ingångspunkter för igenkänning |
ImageCollection.Add / Contains / as_dict | In-memory bildregister för markup |
FormValidationLogic | Enum för valideringsöverträdelsebeteende |