Detecteer & Extraheer Gemarkeerde Gebieden van Gescande Bladen via Python
Open Source Gratis Python-gebaseerde OMR-engine die OMR-verwerking ondersteunt. Het ondersteunt het verwerken van OMR-bladen, sjabloongebaseerde detectie & het afhandelen van meerpaginaformulieren en meer.
Wat is PyOMR Librar?
Optical Mark Recognition (OMR) is een krachtige technologie die wordt gebruikt om door mensen gemarkeerde gegevens van documenten zoals enquêtes, toetsen en stembriefjes vast te leggen. Hoewel er commerciële OMR-oplossingen bestaan, kunnen ontwikkelaars die op zoek zijn naar een gratis, open-source alternatief gebruikmaken van PyOMR, een Python-bibliotheek ontworpen voor OMR-verwerking. Ontwikkeld door pattyjogal, stelt PyOMR softwareontwikkelaars in staat om gemarkeerde bubbels op gescande formulieren te detecteren met eenvoudige Python-code en standaard beeldverwerkingstechnieken. Het ondersteunt het detecteren en extraheren van gemarkeerde gebieden van gescande bladen, het verwerken van meerkeuzeformulieren, enquêtes en beoordelingen, evenals het aanpassen van OMR-sjablonen voor verschillende gebruikssituaties.
PyOMR is een op Python gebaseerd OMR‑engine ontworpen om ingevulde vakjes op vooraf gedefinieerde formulieren te detecteren, zoals meerkeuze‑toetsbladen of enquête‑reacties. Het maakt gebruik van bibliotheken zoals OpenCV voor beeldverwerking en biedt een sjabloongebaseerd systeem om verwachte vakgebied‑regio's op het blad te definiëren. Of je nu een softwareontwikkelaar bent die een beoordelingssysteem bouwt, een docent die testevaluaties automatiseert, of een organisatie die enquêtegegevens verzamelt, PyOMR stelt je in staat OMR‑functionaliteit direct in je app te integreren. Met een sjabloongebaseerde aanpak, OpenCV‑aangedreven detectie en volledige scriptbaarheid is het een ideale keuze voor ontwikkelaars die geautomatiseerde formulierverwerkingstools willen bouwen zonder afhankelijk te zijn van diensten van derden.
Aan de slag met PyOMR
De aanbevolen manier om de PyOMR-bibliotheek te installeren is via GitHub. Gebruik alstublieft het volgende commando voor een soepele installatie
Installeer PyOMR-bibliotheek via GitHub
git clone https://github.com/pattyjogal/pyomr.git
cd pyomr
Installeer ondersteunde bibliotheken via GitHub
pip install opencv-python numpy U kunt de bibliotheek direct downloaden van GitHub
Automatische beeldvoorbewerking via Python
• De open‑source PyOMR‑bibliotheek biedt volledige ondersteuning voor automatische beeldverwerking binnen Python‑toepassingen. De bibliotheek bevat ingebouwde functies voor kantcorrectie (Deskewing) om scheve scans te corrigeren, drempelwaarde (Thresholding) om te converteren naar zwart‑wit voor betere markdetectie en ruisverwijdering om de nauwkeurigheid bij scans van lage kwaliteit te verbeteren. Bovendien stelt het gereedschap in staat om veelvoorkomende problemen in gescande formulieren aan te pakken, zoals ongelijke verlichting, laag contrast of kleine uitlijningfouten. Het volgende code‑voorbeeld laat zien hoe afbeeldingen te verwerken binnen Python‑toepassingen.
Hoe verwerk je een afbeelding binnen Python-apps?
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'}")
Sjabloongebaseerde detectie via Python
PyOMR gebruikt een JSON‑sjabloon om de lay-out van uw antwoordblad te definiëren. Dit omvat het aantal vragen, het aantal opties per vraag, de startpositie van de eerste bubbel, de afstand tussen rijen en kolommen en de afmetingen van de bubbels. Dit maakt het systeem zeer flexibel en herbruikbaar voor verschillende lay-outs. Hier is een eenvoudig voorbeeld dat laat zien hoe u met de Python‑bibliotheek een JSON‑sjabloon maakt om bubbelposities te specificeren.
Hoe maak je een JSON-sjabloon om bubbelposities te specificeren & deze via Python te laden?
{
"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")
Behandelen van meerpaginaformulieren via Python
De PyOMR-bibliotheek biedt ondersteuning voor het verwerken van meerpaginaformulieren binnen Python-toepassingen. Of u nu enkelvoudige antwoordbladen of meerpagina‑enquêtes verwerkt, PyOMR kan worden geconfigureerd om verschillende lay-outs aan te kunnen. Het wordt aanbevolen om bij meerpaginaformulieren elke pagina afzonderlijk te verwerken: Het volgende code‑voorbeeld laat zien hoe softwareontwikkelaars meerpaginaformulieren binnen Python-toepassingen kunnen afhandelen.
Hoe ga je om met meerpaginaformulieren via de Python-bibliotheek?
# 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)
Ruisbehandeling en voorbewerking
De open‑source PyOMR-bibliotheek biedt volledige ondersteuning voor beeldvoorbewerking en ruisbehandeling binnen Python-toepassingen. De bibliotheek omvat beeldvoorbewerking zoals conversie naar grijstinten, drempelbepaling en contourdetectie om markeringen betrouwbaar te identificeren — zelfs bij ruisvolle scans of imperfecte afdrukken.