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.Exception während der Entwicklung, um Verstöße gegen Mehrfachauswahl sofort sichtbar zu machen, anstatt sie stillschweigend zu ignorieren (wird nur bei Fragen ausgelöst, bei denen Multiselect deaktiviert ist).
  • Recalculate() ist günstiger als ein erneutes Scannen — verwende es, wenn nur der Erkennungs-Schwellenwert geändert werden muss.
  • Die Namen von ImageCollection sind case-sensitive; das doppelte Registrieren desselben Namens löst einen Fehler aus, anstatt stillschweigend zu überschreiben.
  • Generate() meldet die meisten Fehler über GenerationResult.ErrorCode/ErrorMessage anstatt sie auszulösen — prüfe ErrorCode, bevor du einem generierten Ergebnis vertraust.

Häufige Probleme

ProblemUrsacheLösung
Registrieren eines Bildes zweimal wirftImageCollection.Add erlaubt keine doppelten NamenPrüfen Sie zuerst Contains(name), oder verwenden Sie einen eindeutigen Namen pro Bild
Eine nicht erlaubte Mehrfachauswahl-Antwort wird stillschweigend akzeptiertStandard 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/MethodeBeschreibung
OmrEngine.GenerateRendert eine Vorlage zu einem Seitenbild + .omr-Deskriptor
OmrEngine.GetTemplateProcessorLädt einen .omr-Deskriptor zur Erkennung
TemplateProcessor.Recognize / RecognizeFolder / RecalculateErkennungseinstiegspunkte
ImageCollection.Add / Contains / as_dictSpeicherinterne Bildregistrierung für Markup
FormValidationLogicEnum für das Validierungsverletzungsverhalten

Siehe auch

 Deutsch