De Core API

De Kern API

omr.api is het kleine oppervlak waarmee de meeste code interacteert: OmrEngine, TemplateProcessor, ImageCollection en de FormValidationLogic enum.


OmrEngine

OmrEngine is een stateloze fabriek. Generate(source, settings) accepteert een markup-DSL bron of een TemplateConfig boom en retourneert een GenerationResult. GetTemplateProcessor(templateSource, validationLogic) laadt een eerder opgeslagen .omr bestandspad en retourneert een gebonden TemplateProcessor; een stream-bron neemt in plaats daarvan een tekst-codering argument vóór de validatielogica.

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

Bepaalt het gedrag van de engine wanneer een sjabloon-validatieregel — zoals een multi-selectie-beperking — wordt geschonden tijdens herkenning: Ignore (standaard) accepteert de schending stilzwijgend, Exception gooit een fout, en undefined is de nulwaarde van de enum. De controle geldt alleen voor vragen waarvan Multiselect is uitgeschakeld; GlobalPageSettings.Multiselect staat standaard ingeschakeld.

TemplateProcessor

Recognize(source, recognitionThreshold) herkent één gescande afbeelding. RecognizeFolder(folderPath, recognitionThreshold) herkent elke afbeelding in een map in één oproep. Recalculate(result, recognitionThreshold) herberekent een al herkende resultaat met een andere drempel, zonder de bronafbeelding opnieuw te lezen.

ImageCollection

Een alleen-toevoegende, hoofdlettergevoelige map van een naam naar ruwe afbeeldingsbytes. Add(name, image) registreert een afbeelding, Contains(name) controleert of een naam al geregistreerd is, Count rapporteert hoeveel er zijn geregistreerd, en as_dict() geeft de onderliggende map terug. Markup kan een geregistreerde afbeelding refereren bij naam (?image=<name>) in plaats van een bestandssysteempad.

from omr.api import ImageCollection

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

Tips en best practices

  • Geef FormValidationLogic.Exception door tijdens ontwikkeling om multi-select overtredingen onmiddellijk zichtbaar te maken in plaats van ze stilletjes te negeren (wordt alleen geactiveerd voor vragen met Multiselect uitgeschakeld).
  • Recalculate() is goedkoper dan opnieuw scannen — gebruik het wanneer alleen de herkenningsdrempel moet worden aangepast.
  • Namen in ImageCollection zijn hoofdlettergevoelig; het registreren van dezelfde naam twee keer veroorzaakt een fout in plaats van stilletjes te overschrijven.
  • Generate() rapporteert de meeste fouten via GenerationResult.ErrorCode/ErrorMessage in plaats van een fout te werpen — controleer ErrorCode voordat je een gegenereerd resultaat vertrouwt.

Veelvoorkomende problemen

ProbleemOorzaakOplossing
Het registreren van een afbeelding twee keer veroorzaaktImageCollection.Add staat geen dubbele namen toeControleer eerst Contains(name), of gebruik een unieke naam per afbeelding
Een niet-toegestaan multi-select antwoord wordt stilzwijgend geaccepteerdStandaard FormValidationLogic.Ignore veroorzaakt geen foutGeef FormValidationLogic.Exception door aan GetTemplateProcessor(), en zorg ervoor dat de Multiselect van de vraag is uitgeschakeld

FAQ

Is OmrEngine veilig om opnieuw te gebruiken in meerdere sjablonen?

Ja — het is stateless; elke Generate()/GetTemplateProcessor()-aanroep is onafhankelijk.

Hoe herken ik in één keer een hele map met scans?

Roep TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) aan in plaats van zelf Recognize() te herhalen.


API Reference Samenvatting

Klasse/MethodeBeschrijving
OmrEngine.GenerateRendert een template naar een pagina-afbeelding + .omr descriptor
OmrEngine.GetTemplateProcessorLaadt een .omr descriptor voor herkenning
TemplateProcessor.Recognize / RecognizeFolder / RecalculateHerkenningsingangspunten
ImageCollection.Add / Contains / as_dictIn-memory afbeeldingsregister voor markup
FormValidationLogicValidatie-schending gedrag enum

Zie ook

 Nederlands