Översikt över funktioner
Funktionsöversikt
Aspose.OMR FOSS för Python täcker tre lager: att designa en mall, generera en sidbild och beskrivning från den, samt känna igen markeringar från en skannad kopia.
Malldesign
En mall är ett träd av elementkonfigurationer rotat vid TemplateConfig. Frågeelement inkluderar ChoiceBoxConfig (fast alternativbubblor), CheckBoxConfig (valfri-markering kryssrutor), GridConfig och CompositeGridConfig (siffra-/symbolmatriser sammanslagna till ett värde), och AnswerSheetConfig (numrerade svarbubbla-matriser). Layoutbehållare (BlockConfig, ContainerConfig, PositionedBlockConfig) styr kanter, kolumner och absolut positionering. Samma träd kan byggas från ett kompakt text-markup DSL istället för Python-objekt.
Generation
OmrEngine.Generate() renderar en mall till en GenerationResult — en sidbild plus en .omr beskrivare JSON. MemoryGenerationResult exponerar samma utdata som minnesströmmar via GetImages()/GetOmr() för anropare som inte vill röra filsystemet.
Recognition
TemplateProcessor.Recognize() läser en skannad bild mot den mall den skapades från. RecognizeFolder() batchar det över varje bild i en mapp. Recalculate() omvärderar ett redan igenkänt resultat med ett annat tröskelvärde utan att läsa om källbilden. De-skew-korrigering använder hörnreferensmarkeringar (ReferencePointsSettings).
Resultatexport
RecognitionResult exporterar till CSV, JSON eller XML, var och en med en motsvarande variant i minnesström (GetCsvAsStream, GetJsonAsStream, GetXmlAsStream).
Skrivsystem och Översvämningsenum
Arabic, Hebrew, Persian, Urdu och Bengali skriftsystem (tillsammans med Western), samt LongWordHandling/OverflowAction-enum, finns och parsas korrekt för API-fidelitet med Aspose.OMR-ytan. Ingen av dem stöds ännu av denna releases renderingsmotor — rendering är LTR/Western-only, och översvämningsbeteende är ännu inte konfigurerbart. Båda följs upp i den överordnade färdplanen.
Tips och bästa praxis
- Använd markup-DSL för enkla formulär; byt till den kodförst
TemplateConfig-trädet när du behöver programmatisk kontroll över elementplacering. FormValidationLogic.Exceptionvisar omedelbart överträdelser av flervalsval istället för att tyst ignorera dem, för frågor där flervalsval är inaktiverat.- Föredra
RecognizeFolder()framför att själv loopaRecognize()-anrop när du bearbetar en batch av skanningar. - Anropa
Recalculate()istället för att skanna om när du bara behöver testa ett annat igenkänningströskelvärde.
Vanliga problem
| Problem | Orsak | Åtgärd |
|---|---|---|
SaveAsPdf() genererar NotImplementedError | PDF-export är inte implementerad i den här versionen | Använd Save() för PNG-utdata, eller exportera igenkänningsresultat som CSV/JSON/XML |
| Ett otillåtet flervalsalternativ accepteras tyst | Standard FormValidationLogic.Ignore ger inte fel vid överträdelser | Skicka FormValidationLogic.Exception till GetTemplateProcessor(), och se till att frågans Multiselect är inaktiverad |
FAQ
Kräver biblioteket någon GUI eller extern OMR-hårdvara?
Nej. Det fungerar helt och hållet från bildfiler (skanningar eller foton) med hjälp av numpy, opencv-python och Pillow.
Kan jag generera en PDF av mallen?
Inte i den här versionen — GenerationResult.SaveAsPdf() och MemoryGenerationResult.GetPDF() kastar båda NotImplementedError. Använd PNG-utdata från Save()/GetImages() istället.
Hur bearbetar jag många skannade formulär på en gång?
Använd TemplateProcessor.RecognizeFolder(folderPath, recognitionThreshold) för att känna igen varje bild i en mapp i ett anrop.
API Reference Sammanfattning
| Klass/Metod | Beskrivning |
|---|---|
OmrEngine.Generate | Renderar en mall till en sidavbild + .omr beskrivning |
OmrEngine.GetTemplateProcessor | Laddar en .omr beskrivning för igenkänning |
TemplateProcessor.Recognize | Känner igen en skannad bild |
TemplateProcessor.RecognizeFolder | Känner igen varje bild i en mapp |
TemplateProcessor.Recalculate | Omvärderar ett resultat med ett nytt tröskelvärde |
RecognitionResult.GetCsv / GetJson / GetXml | Exporterar igenkänningsresultat |