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.Exception under utveckling för att omedelbart visa överträdelser av multival utan att tyst ignorera dem (utlöses endast för frågor med Multiselect inaktiverat).
  • Recalculate() är billigare än att skanna om — använd den när endast igenkänningströskeln behöver ändras.
  • ImageCollection namn ä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 via GenerationResult.ErrorCode/ErrorMessage istället för att höja ett undantag — kontrollera ErrorCode innan du litar på ett genererat resultat.

Vanliga problem

ProblemOrsakÅtgärd
Registrering av en bild två gånger gerImageCollection.Add tillåter inte dubblettnamnKontrollera Contains(name) först, eller använd ett unikt namn per bild
Ett otillåtet flervalsalternativ accepteras tystStandard FormValidationLogic.Ignore utlöser inteSkicka 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/MetodBeskrivning
OmrEngine.GenerateRenderar en mall till en sidavbild + .omr beskrivare
OmrEngine.GetTemplateProcessorLaddar en .omr beskrivare för igenkänning
TemplateProcessor.Recognize / RecognizeFolder / RecalculateIngångspunkter för igenkänning
ImageCollection.Add / Contains / as_dictIn-memory bildregister för markup
FormValidationLogicEnum för valideringsöverträdelsebeteende

Se även

 Svenska