Oppdag og ekstraher merkede områder fra skannede ark via Python
Åpen kildekode gratis Python-basert OMR-motor som støtter OMR-behandling. Den støtter behandling av OMR-ark, malbasert deteksjon og håndtering av flersidige skjemaer og så videre.
Hva er PyOMR-biblioteket?
Optisk merkegjenkjenning (OMR) er en kraftig teknologi som brukes til å fange opp menneskelig merkede data fra dokumenter som undersøkelser, tester og stemmesedler. Selv om kommersielle OMR‑løsninger finnes, kan utviklere som leter etter et gratis, åpen‑kildekodealternativ dra nytte av PyOMR, et Python‑bibliotek designet for OMR‑behandling. Utviklet av pattyjogal, gjør PyOMR det mulig for programvareutviklere å oppdage merkede bobler på skannede skjemaer ved hjelp av enkel Python‑kode og standard bildebehandlingsteknikker. Det støtter oppdagelse og uttrekk av merkede områder fra skannede ark, behandling av flervalgsskjemaer, undersøkelser og vurderinger, samt tilpasning av OMR‑maler for ulike bruksområder.
PyOMR er en Python-basert OMR-motor designet for å oppdage utfylte merker på forhåndsdefinerte skjemaer, som flervalgstestsider eller spørreundersøkelsesrespons. Den utnytter biblioteker som OpenCV for bildebehandling og tilbyr et malbasert system for å definere forventede merkeregioner på arket. Enten du er en programvareutvikler som bygger et vurderingssystem, en lærer som automatiserer testvurderinger, eller en organisasjon som samler inn undersøkelsesdata, gjør PyOMR det mulig å integrere OMR-funksjonalitet direkte i appen din. Med en malbasert tilnærming, OpenCV-drevet deteksjon og full skriptbarhet, er det et ideelt valg for utviklere som ønsker å bygge automatiserte skjema-behandlingsverktøy uten å stole på tredjepartstjenester.
Kom i gang med PyOMR
Den anbefalte måten å installere PyOMR-biblioteket på er via GitHub. Vennligst bruk følgende kommando for en smidig installasjon
Installer PyOMR-biblioteket via GitHub
git clone https://github.com/pattyjogal/pyomr.git
cd pyomr
Installer støttede biblioteker via GitHub
pip install opencv-python numpy Du kan laste ned biblioteket direkte fra GitHub
Automatisk bildeforbehandling via Python
• Det åpne kildekodebiblioteket PyOMR har inkludert full støtte for automatisk bildebehandling i Python‑applikasjoner. Biblioteket har innebygde funksjoner for Deskewing for å korrigere tildekkede skanninger, Thresholding for å konvertere til svart‑hvitt for bedre merkedeteksjon og støyfjerning for å forbedre nøyaktigheten i lavkvalitets‑skanninger. Videre gjør det verktøyet i stand til å håndtere vanlige problemer i skannede skjemaer som lys‑inkonsistenser, lav kontrast eller mindre feiljustering. Følgende kodeeksempel viser hvordan man behandler bilder i Python‑applikasjoner.
Hvordan behandle bilde i Python‑apper?
from omr import omr_engine
# File paths
template_path = "config.json"
image_path = "answer_sheet.jpg"
# Run the OMR process
results = omr_engine.process_image(image_path, template_path)
# Output the results
for i, response in enumerate(results, 1):
print(f"Q{i}: {response if response else 'No mark detected'}")
Maler-basert deteksjon via Python
PyOMR bruker en JSON‑mal for å definere oppsettet av svararket ditt. Dette inkluderer antall spørsmål, antall svaralternativer per spørsmål, startposisjonen til den første boblen, avstanden mellom rader og kolonner samt bobledimensjonene. Dette gjør systemet svært fleksibelt og gjenbrukbart på tvers av ulike oppsett. Her er et enkelt eksempel som viser hvordan man lager en JSON‑mal for å spesifisere bobleposisjoner ved hjelp av Python‑biblioteket.
Hvordan lage en JSON‑mal for å spesifisere boble‑posisjoner og laste den inn via Python?
{
"bubbles": [
{"question": "Q1", "options": ["A", "B", "C", "D"], "coords": [100, 150, 30, 30]},
{"question": "Q2", "options": ["A", "B", "C", "D"], "coords": [100, 200, 30, 30]}
],
"reference_marks": [[50, 50], [500, 50], [50, 700]]
}
#Load template
omr.load_template("template.json")
Håndtering av flersidige skjemaer via Python
PyOMR-biblioteket har inkludert støtte for håndtering av flersidige skjemaer i Python-applikasjoner. Enten du behandler enkeltsidige svarark eller flersidige undersøkelser, kan PyOMR konfigureres til å håndtere ulike oppsett. Det anbefales for flersidige skjemaer å behandle hver side separat: Følgende kodeeksempel viser hvordan programvareutviklere kan håndtere flersidige skjemaer i Python-applikasjoner.
Hvordan håndtere flersidige skjemaer via Python‑biblioteket?
# for multi-page forms, process each page separately:
for page in omr.multi_page_scan("multi_page_form.pdf"):
page.preprocess()
answers = page.read_answers()
print(answers)
Støyhåndtering og forbehandling
Det åpne kildekodebiblioteket PyOMR har gitt full støtte for bildeforbehandling og støyhåndtering i Python-applikasjoner. Biblioteket inkluderer bildeforbehandling som konvertering til gråtoner, terskling og konturdeteksjon for pålitelig å identifisere merker – selv med støyende skanninger eller ufullstendig utskrift.