Wie man mit dem API in Python arbeitet

Wie man mit dem API in Python arbeitet

Aspose.OMR FOSS für die öffentliche API von Python (omr.api) ist bewusst klein: OmrEngine, TemplateProcessor, ImageCollection und FormValidationLogic. Dieser Leitfaden zeigt, wie sie in einem generate-and-recognize-Workflow zusammenpassen.

Schritt-für-Schritt-Anleitung

Schritt 1: Paket installieren

git clone https://github.com/aspose-omr-foss/Aspose.OMR-FOSS-for-Python.git
cd Aspose.OMR-FOSS-for-Python
pip install -e .
python -c "import omr; print('Aspose.OMR FOSS for Python is ready.')"

Schritt 2: Erforderliche Klassen importieren

from omr.api import OmrEngine, FormValidationLogic

Schritt 3: Vorlage generieren und speichern

engine = OmrEngine()
gen = engine.Generate("final-exam.txt")
gen.Save("out", "final-exam")

Schritt 4: Laden Sie die Vorlage zur Erkennung

Verwenden Sie FormValidationLogic.Exception anstelle des Standardwerts Ignore, wenn Sie möchten, dass bei Fragen mit deaktivierter Mehrfachauswahl ein Verstoß ausgelöst wird, anstatt dass er stillschweigend akzeptiert wird.

processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Exception)

Schritt 5: Erkennen und Exportieren

result = processor.Recognize("scan.png")
print(result.GetCsv())

Häufige Probleme und Lösungen

FormValidationLogic.Exception wirft nie, selbst bei einer mehrfach markierten Frage. Die Prüfung wird nur ausgelöst bei einer Frage mit Multiselect deaktiviert; GlobalPageSettings.Multiselect ist standardmäßig aktiviert, also stelle sicher, dass sie für die erwartete Einzelwahl-Frage ausdrücklich deaktiviert ist.

Ich muss viele Scans gleichzeitig erkennen. Verwende TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) statt Aufruf von Recognize() in einer Schleife.

Ich habe ein Bild unter einem Namen registriert, der bereits verwendet wurde. ImageCollection.Add überschreibt nicht — prüfen Contains(name) zuerst, oder verwenden Sie einen eindeutigen Namen pro Bild.

Häufig gestellte Fragen

Ist OmrEngine sicher, über mehrere Vorlagen hinweg wiederzuverwenden?

Ja — es ist zustandslos.

Wie kann ich ein Ergebnis mit einem anderen Schwellenwert neu bewerten, ohne erneut zu scannen?

Rufen Sie TemplateProcessor.Recalculate(result, recognitionThreshold) auf.

Wie bette ich ein im Speicher befindliches Bild in Markup ein, anstatt es von der Festplatte zu lesen?

Registrieren Sie es bei ImageCollection.Add(name, image_bytes) und verweisen Sie dann im Markup darauf als ?image=<name>.

Siehe auch

 Deutsch