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.Exceptiondoor tijdens ontwikkeling om multi-select overtredingen onmiddellijk zichtbaar te maken in plaats van ze stilletjes te negeren (wordt alleen geactiveerd voor vragen metMultiselectuitgeschakeld). Recalculate()is goedkoper dan opnieuw scannen — gebruik het wanneer alleen de herkenningsdrempel moet worden aangepast.- Namen in
ImageCollectionzijn hoofdlettergevoelig; het registreren van dezelfde naam twee keer veroorzaakt een fout in plaats van stilletjes te overschrijven. Generate()rapporteert de meeste fouten viaGenerationResult.ErrorCode/ErrorMessagein plaats van een fout te werpen — controleerErrorCodevoordat je een gegenereerd resultaat vertrouwt.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Het registreren van een afbeelding twee keer veroorzaakt | ImageCollection.Add staat geen dubbele namen toe | Controleer eerst Contains(name), of gebruik een unieke naam per afbeelding |
| Een niet-toegestaan multi-select antwoord wordt stilzwijgend geaccepteerd | Standaard FormValidationLogic.Ignore veroorzaakt geen fout | Geef 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/Methode | Beschrijving |
|---|---|
OmrEngine.Generate | Rendert een template naar een pagina-afbeelding + .omr descriptor |
OmrEngine.GetTemplateProcessor | Laadt een .omr descriptor voor herkenning |
TemplateProcessor.Recognize / RecognizeFolder / Recalculate | Herkenningsingangspunten |
ImageCollection.Add / Contains / as_dict | In-memory afbeeldingsregister voor markup |
FormValidationLogic | Validatie-schending gedrag enum |