1. Produkter
  2.   Aspose.OMR
  3.   Aspose.OMR FOSS for Python

Aspose.OMR FOSS för Python

Designa OMR-svarsblad och identifiera markerade bubblor från skannade bilder i Python — gratis, öppen källkod och MIT-licensierad.

Open-Source Python Bibliotek för optisk markigenkänning

Aspose.OMR FOSS for Python är ett gratis, öppen källkod-bibliotek för att designa OMR (optical mark recognition)-formulär — flervals svarspapper, kryssruteformulär och undersökningar — och känna igen de markeringar som en respondent fyller i från en skannad eller fotograferad bild. Det riktar sig till utvecklare som automatiserar provbetyg, enkät-tabellering eller formulärbaserad datainsamling i ren Python, byggt på inget mer exotiskt än numpy, opencv-python och Pillow. En enda OmrEngine täcker hela arbetsflödet — Generate() omvandlar en mall, byggd kodförst från ett TemplateConfig-träd av element som ChoiceBoxConfig, CheckBoxConfig, GridConfig och AnswerSheetConfig, eller skriven i ett kompakt text-markup-DSL, till en sidbild plus en .omr-beskrivare; GetTemplateProcessor() laddar tillbaka den beskrivaren för att känna igen nya skanningar med Recognize() eller RecognizeFolder(), och returnerar resultat som kan exporteras till CSV, JSON eller XML. Biblioteket är licensierat under MIT och installeras med ett enda pip-kommando (se nedan); det är en tidig version (v0.1.0, Development Status: Alpha) som täcker grunden, generering och igenkänningslagren i hela Aspose.OMR-ytan — rendering i denna version är endast LTR/Västlig, med RTL-skriftsystem och full overflow-hantering som följs på upstream-roadmapen men ännu inte implementeras. För företagsproduktfamiljen, se Aspose.OMR — Enterprise Product Family.

Designa och generera OMR-formulär

  • Kod-först-mallar: TemplateConfig, PageConfig, och elementkonfigurationer (ChoiceBoxConfig, CheckBoxConfig, GridConfig, CompositeGridConfig, AnswerSheetConfig) beskriver varje fält på sidan.
  • Markup DSL: ett kompakt textformat (?choicebox=... / &choicebox) bygger samma strukturer utan att skapa objekt för hand.
  • Skrivsystem-enum: Arabic, Hebrew, Persian, Urdu, Bengali och Western finns för API trohet med Aspose.OMR ytan; den här versionens renderare är endast LTR/Western — RTL-rendering är ännu inte implementerad.
  • Översvämnings-enum: LongWordHandling och OverflowAction-subklasserna (Clip, NoClip, Wrap) parsas och valideras korrekt, men den här versionens renderare hedrar dem ännu inte — faktiskt översvämningsbeteende är ännu inte konfigurerbart.
  • Kryssrutor och valgrupper: CheckBoxConfig och ChoiceBoxConfig stödjer multival; FormValidationLogic, som sätts en gång per TemplateProcessor, kan ge ett fel om en fråga med Multiselect inaktiverat får mer än ett markering.

Var Aspose.OMR FOSS kan användas

  • Examina och frågesporter: generera flervals svarsscheman och känna igen ifyllda bubblor för automatiserad bedömning.
  • Undersökningar och formulär: bygg numrerade svarsschemamatriser med AnswerSheetConfig för storskalig svarssamling.
  • Datainmatningsrutnät: GridConfig och CompositeGridConfig fångar numeriska eller anpassade symbolinmatningar som ett sammanslaget värde.
  • Utskriftsbart resultat: Save() skriver en klar-för-utskrift PNG-sida tillsammans med .omr-beskrivaren som används för senare igenkänning.
  • Batch-pipelines: RecognizeFolder() behandlar en hel mapp med skanningar i ett anrop.

Känn igen markeringar och exportera resultat

  • Stateless motor: OmrEngine.Generate() producerar ett GenerationResult (sidbild + .omr-mall JSON); GetTemplateProcessor() laddar den mallen för att känna igen nya skanningar.
  • Flera exportformat: RecognitionResult exporterar till CSV, JSON eller XML, var och en med en motsvarande strömvariant.
  • Resultat i minnet också: MemoryGenerationResult exponerar genererade bilder som minnesströmmar via GetImages()/GetOmr() — ingen disk-I/O krävs.
  • De-skew och omkalibrering: igenkänning korrigerar skanningens snedvridning från hörnreferensmärken, och Recalculate() applicerar ett annat tröskelvärde utan att skanna om.
  • Inbäddade bilder: ImageCollection låter markup referera till bildbytes i minnet via namn, vilket undviker filsystemets rundresor.

Utvecklarupplevelse

Aspose.OMR FOSS for Python installeras med ett enkelt pip-kommando (se Quick Start-exemplet nedan). API fokuserar på tre objekt — OmrEngine, ett TemplateConfig-träd (eller markup-DSL-en), och TemplateProcessor — som täcker hela flödet generera → skanna → känna igen → exportera.

Biblioteket är endast beroende av numpy, opencv-python och Pillow — inga inhemska OMR-binärfiler att kompilera. Det är licensierat under MIT, finns på GitHub och är för närvarande i ett tidigt v0.1.0-släpp som täcker grunden, generering- och igenkänningslagren i hela Aspose.OMR-ytan.

Skapa ett formulär och känna igen skannade svar

Bygg (eller läs in) en mall, spara den genererade sidbilden och .omr-beskrivaren, och sedan känna igen en skannad kopia och exportera resultaten som CSV.

git clone https://github.com/aspose-omr-foss/Aspose.OMR-FOSS-for-Python.git
cd Aspose.OMR-FOSS-for-Python
pip install -e .
from omr.api import OmrEngine, FormValidationLogic
engine = OmrEngine()
gen = engine.Generate("final-exam.txt")          # or a code-first TemplateConfig
gen.Save("out", "final-exam")                    # -> out/final-exam.png + out/final-exam.omr
processor = engine.GetTemplateProcessor("out/final-exam.omr", FormValidationLogic.Ignore)
result = processor.Recognize("scan.png")         # -100 = auto-calibrated threshold
print(result.GetCsv())                           # also GetJson() / GetXml()

Skapa en flervalsfråga från markup

Text-markup-DSL-en bygger samma elementträd som den kod-först API. Här öppnar ?choicebox=... en choice-box-fråga, nästa rad listar dess alternativ, och &choicebox stänger den — Generate() returnerar en .Template JSON-beskrivare som du kan inspektera direkt.

import json
from omr.api import OmrEngine
markup = [
    "?choicebox=Rate it",
    "(1) Poor (2) Fair (3) Good",
    "&choicebox",
]
engine = OmrEngine()
result = engine.Generate(markup)
desc = json.loads(result.Template)
cb = desc["Pages"][0]["Elements"][0]
print([b["Value"] for b in cb["Fields"][0]["Bubbles"]])  # ['Poor', 'Fair', 'Good']

Vanliga Frågor

Vad är licensmodellen för Aspose.OMR FOSS for Python?

Den distribueras under MIT-licensen — fri att använda, modifiera och distribuera, även i kommersiella produkter, under förutsättning att originalupphovsrättsmeddelandet inkluderas.

Vilka Python-versioner och beroenden krävs?

Python 3.10 eller senare, med tre beroenden som installeras automatiskt av pip — numpy, opencv-python och Pillow. Ingen inbyggd OMR-hårdvara eller externa tjänster krävs.

Kan jag exportera den genererade mallen som en PDF?

Inte i den här releasen. GenerationResult.SaveAsPdf() och MemoryGenerationResult.GetPDF() kastar båda NotImplementedError. Använd PNG-utdata från Save() eller GetImages() istället.

Vilka format kan jag exportera igenkänningsresultat till?

RecognitionResult exporterar till CSV, JSON eller XML via GetCsv(), GetJson() och GetXml(), var och en med en matchande variant av minnesström.

Stöder det språk förutom engelska?

Inte ännu för rendering. Malllagret definierar arabiska, hebreiska, persiska, urdu och bengaliska skriftsystem för att bevara Aspose.OMR-ytan, men denna versionens renderingsmotor är endast LTR/Western — RTL rendering och native-digit typesetting finns på den upstream-roadmapen, men har ännu inte implementerats.

Stöds validering av flervals-svar?

Ja, för frågor som är konfigurerade med Multiselect inaktiverat. Skicka FormValidationLogic.Exception till GetTemplateProcessor() för att kasta när en sådan fråga får mer än en markering; standardvärdet, Ignore, accepterar det tyst. GlobalPageSettings.Multiselect är som standard aktiverat.

  

Stöd och Lärande Resurser

 Svenska