Der Kern API
Der Kern API
omr.api ist die kleine Oberfläche, mit der der meiste Code interagiert: OmrEngine, TemplateProcessor, ImageCollection und das FormValidationLogic Enum.
OmrEngine
OmrEngine ist eine zustandslose Fabrik. Generate(source, settings) akzeptiert eine Markup-DSL-Quelle oder einen TemplateConfig Baum und gibt ein GenerationResult zurück. GetTemplateProcessor(templateSource, validationLogic) lädt einen zuvor gespeicherten .omr Dateipfad und gibt ein gebundenes TemplateProcessor zurück; eine Stream-Quelle hingegen nimmt ein Textkodierungs-Argument vor der Validierungslogik entgegen.
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
Steuert das Verhalten der Engine, wenn eine Vorlagen-Validierungsregel — wie eine Mehrfachauswahl-Einschränkung — während der Erkennung verletzt wird: Ignore (Standard) akzeptiert die Verletzung stillschweigend, Exception löst einen Fehler aus, und undefined ist der Nullwert des Enums. Die Prüfung gilt nur für Fragen, deren Multiselect deaktiviert ist; GlobalPageSettings.Multiselect ist standardmäßig aktiviert.
TemplateProcessor
Recognize(source, recognitionThreshold) erkennt ein gescanntes Bild. RecognizeFolder(folderPath, recognitionThreshold) erkennt jedes Bild in einem Ordner in einem Aufruf. Recalculate(result, recognitionThreshold) bewertet ein bereits erkanntes Ergebnis mit einem anderen Schwellenwert neu, ohne das Quellbild erneut zu lesen.
ImageCollection
Eine append-only, case-sensitive Map von einem Namen zu rohen Bildbytes. Add(name, image) registriert ein Bild, Contains(name) prüft, ob ein Name bereits registriert ist, Count meldet, wie viele registriert sind, und as_dict() gibt die zugrunde liegende Map zurück. Markup kann ein registriertes Bild per Namen (?image=<name>) anstelle eines Dateisystempfads referenzieren.
from omr.api import ImageCollection
images = ImageCollection()
with open("logo.png", "rb") as f:
images.Add("logo.png", f.read())Tipps und bewährte Verfahren
- Übergebe
FormValidationLogic.Exceptionwährend der Entwicklung, um Verstöße gegen Mehrfachauswahl sofort sichtbar zu machen, anstatt sie stillschweigend zu ignorieren (wird nur bei Fragen ausgelöst, bei denenMultiselectdeaktiviert ist). Recalculate()ist günstiger als ein erneutes Scannen — verwende es, wenn nur der Erkennungs-Schwellenwert geändert werden muss.- Die Namen von
ImageCollectionsind case-sensitive; das doppelte Registrieren desselben Namens löst einen Fehler aus, anstatt stillschweigend zu überschreiben. Generate()meldet die meisten Fehler überGenerationResult.ErrorCode/ErrorMessageanstatt sie auszulösen — prüfeErrorCode, bevor du einem generierten Ergebnis vertraust.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| Registrieren eines Bildes zweimal wirft | ImageCollection.Add erlaubt keine doppelten Namen | Prüfen Sie zuerst Contains(name), oder verwenden Sie einen eindeutigen Namen pro Bild |
| Eine nicht erlaubte Mehrfachauswahl-Antwort wird stillschweigend akzeptiert | Standard FormValidationLogic.Ignore löst nicht aus | Übergebe FormValidationLogic.Exception an GetTemplateProcessor() und stelle sicher, dass das Multiselect der Frage deaktiviert ist |
FAQ
Ist OmrEngine sicher, um es über mehrere Vorlagen hinweg wiederzuverwenden?
Ja — es ist zustandslos; jeder Generate()/GetTemplateProcessor()-Aufruf ist unabhängig.
Wie erkenne ich einen ganzen Ordner mit Scans auf einmal?
Rufen Sie TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) auf, anstatt Recognize() selbst zu schleifen.
API Reference Zusammenfassung
| Klasse/Methode | Beschreibung |
|---|---|
OmrEngine.Generate | Rendert eine Vorlage zu einem Seitenbild + .omr-Deskriptor |
OmrEngine.GetTemplateProcessor | Lädt einen .omr-Deskriptor zur Erkennung |
TemplateProcessor.Recognize / RecognizeFolder / Recalculate | Erkennungseinstiegspunkte |
ImageCollection.Add / Contains / as_dict | Speicherinterne Bildregistrierung für Markup |
FormValidationLogic | Enum für das Validierungsverletzungsverhalten |