Übersicht der Funktionen
Übersicht der Funktionen
Aspose.OMR FOSS für Python umfasst drei Ebenen: Entwerfen einer Vorlage, Erzeugen eines Seitenbildes und eines Deskriptors daraus sowie das Erkennen von Markierungen aus einer gescannten Kopie.
Vorlagendesign
Eine Vorlage ist ein Baum von Elementkonfigurationen, dessen Wurzel TemplateConfig ist. Fragetypen umfassen ChoiceBoxConfig (feste Optionsblasen), CheckBoxConfig (beliebige Markierungs-Kästchen), GridConfig und CompositeGridConfig (Ziffern-/Symbol-Matrizen, zu einem Wert zusammengeführt), und AnswerSheetConfig (nummerierte Antwort-Blasen-Matrizen). Layout-Container (BlockConfig, ContainerConfig, PositionedBlockConfig) steuern Rahmen, Spalten und absolute Positionierung. Der gleiche Baum kann aus einer kompakten Text-Markup-DSL anstelle von Python-Objekten erstellt werden.
Generation
OmrEngine.Generate() rendert eine Vorlage zu einem GenerationResult — einem Seitenbild plus einem .omr Deskriptor JSON. MemoryGenerationResult stellt dieselbe Ausgabe als In-Memory-Streams über GetImages()/GetOmr() für Aufrufer bereit, die das Dateisystem nicht berühren wollen.
Recognition
TemplateProcessor.Recognize() liest ein gescanntes Bild gegen die Vorlage, aus der es erstellt wurde. RecognizeFolder() stapelt das über jedes Bild in einem Ordner. Recalculate() bewertet ein bereits erkanntes Ergebnis mit einem anderen Schwellenwert neu, ohne das Quellbild erneut zu lesen. Die Schräglagenkorrektur verwendet Eckreferenzmarken (ReferencePointsSettings).
Ergebnisexport
RecognitionResult exportiert nach CSV, JSON oder XML, jeweils mit einer passenden In-Memory-Stream-Variante (GetCsvAsStream, GetJsonAsStream, GetXmlAsStream).
Schriftsystem- und Überlauf-Enums
Arabic, Hebrew, Persian, Urdu und Bengali Schriftsysteme (neben Western) sowie die LongWordHandling/OverflowAction-Enums sind vorhanden und werden korrekt geparst für API-Treue mit der Aspose.OMR-Oberfläche. Keines davon wird in der Rendering-Engine dieser Version noch berücksichtigt — das Rendering ist ausschließlich LTR/Westlich, und das Überlaufverhalten ist noch nicht konfigurierbar. Beide werden in der Roadmap des Upstreams verfolgt.
Tipps und bewährte Verfahren
- Verwenden Sie die Markup-DSL für einfache Formulare; wechseln Sie zum code-first
TemplateConfig-Baum, wenn Sie programmgesteuerte Kontrolle über die Platzierung von Elementen benötigen. FormValidationLogic.Exceptionzeigt Verstöße gegen Mehrfachauswahl sofort an, anstatt sie stillschweigend zu ignorieren, bei Fragen, bei denen Mehrfachauswahl deaktiviert ist.- Bevorzuge
RecognizeFolder()gegenüber wiederholtenRecognize()-Aufrufen, wenn du einen Stapel von Scans verarbeitest. - Rufe
Recalculate()auf, anstatt erneut zu scannen, wenn du nur eine andere Erkennungsschwelle ausprobieren musst.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
SaveAsPdf() wirft NotImplementedError | PDF-Export ist in dieser Version nicht implementiert | Verwenden Sie Save() für PNG-Ausgabe, oder exportieren Sie die Erkennungsergebnisse als CSV/JSON/XML |
| Eine nicht zulässige Mehrfachauswahl-Antwort wird stillschweigend akzeptiert | Standard FormValidationLogic.Ignore wirft bei Verstößen nicht | Übergebe FormValidationLogic.Exception an GetTemplateProcessor() und stelle sicher, dass das Multiselect der Frage deaktiviert ist |
FAQ
Benötigt die Bibliothek eine GUI oder externe OMR-Hardware?
Nein. Es arbeitet vollständig mit Bilddateien (Scans oder Fotos) unter Verwendung von numpy, opencv-python und Pillow.
Kann ich ein PDF der Vorlage erzeugen?
Nicht in dieser Version — GenerationResult.SaveAsPdf() und MemoryGenerationResult.GetPDF() werfen beide NotImplementedError. Verwende stattdessen die PNG-Ausgabe von Save()/GetImages().
Wie verarbeite ich viele gescannte Formulare auf einmal?
Verwenden Sie TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold), um jedes Bild in einem Ordner in einem Aufruf zu erkennen.
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 | Erkennt ein gescanntes Bild |
TemplateProcessor.RecognizeFolder | Erkennt jedes Bild in einem Ordner |
TemplateProcessor.Recalculate | Bewertet ein Ergebnis mit einem neuen Schwellenwert neu |
RecognitionResult.GetCsv / GetJson / GetXml | Exportiert Erkennungsergebnisse |