Detectați și extrageți zonele marcate din foi scanate prin Python
Motor OMR gratuit, open source, bazat pe Python, care suportă procesarea OMR. Suportă procesarea foilor OMR, detectarea bazată pe șabloane și gestionarea formularelor pe mai multe pagini și altele.
Ce este PyOMR Librar?
Recunoașterea marcajelor optice (OMR) este o tehnologie puternică utilizată pentru a captura date marcate de oameni din documente precum sondaje, teste și buletine de vot. Deși există soluții OMR comerciale, dezvoltatorii care caută o alternativă gratuită și open-source pot utiliza PyOMR, o bibliotecă Python concepută pentru procesarea OMR. Dezvoltată de pattyjogal, PyOMR permite dezvoltatorilor de software să detecteze bulele marcate pe formularele scanate utilizând cod Python simplu și tehnici standard de procesare a imaginilor. Aceasta suportă detectarea și extragerea zonelor marcate din foi scanate, procesarea formularelor cu întrebări cu răspunsuri multiple, sondajelor și evaluărilor, precum și personalizarea șabloanelor OMR pentru diverse cazuri de utilizare.
PyOMR este un motor OMR bazat pe Python, conceput pentru a detecta marcajele completate pe formulare predefinite, cum ar fi fișe de teste MCQ sau răspunsuri la sondaje. Folosește biblioteci precum OpenCV pentru procesarea imaginilor și oferă un sistem bazat pe șabloane pentru a defini regiunile de marcaj așteptate pe fișă. Indiferent dacă ești dezvoltator de software care construiește un sistem de notare, profesor care automatizează evaluarea testelor sau o organizație care colectează date din sondaje, PyOMR îți permite să integrezi funcționalitatea OMR direct în aplicația ta. Cu o abordare bazată pe șabloane, detectare alimentată de OpenCV și scriptabilitate completă, este o alegere ideală pentru dezvoltatori care doresc să creeze instrumente automate de procesare a formularelor fără a se baza pe servicii terțe.
Începerea cu PyOMR
Cea mai recomandată metodă de instalare a bibliotecii PyOMR este prin GitHub. Vă rugăm să utilizați comanda următoare pentru o instalare fără probleme
Instalați biblioteca PyOMR prin GitHub
git clone https://github.com/pattyjogal/pyomr.git
cd pyomr
Instalați bibliotecile suportate prin GitHub
pip install opencv-python numpy Puteți descărca biblioteca direct de pe GitHub
Preprocesare automată a imaginilor prin Python
• Biblioteca open source PyOMR a inclus suport complet pentru procesarea automată a imaginilor în aplicații Python. Biblioteca include funcții încorporate pentru corectarea înclinării (Deskewing) pentru a corecta scanările înclinate, pragarea (Thresholding) pentru a converti în alb și negru pentru o detectare mai bună a marcajelor și eliminarea zgomotului pentru îmbunătățirea acurateței în scanări de calitate scăzută. În plus, permite instrumentului să gestioneze probleme comune în formularele scanate, cum ar fi inconsistențele de iluminare, contrastul scăzut sau alinierea ușor incorectă. Exemplul de cod de mai jos arată cum să procesați imaginile în aplicații Python.
Cum să procesați imaginea în aplicații Python?
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'}")
Detecție bazată pe șabloane prin Python
PyOMR folosește un șablon JSON pentru a defini aspectul foii de răspunsuri. Acesta include numărul de întrebări, numărul de opțiuni per întrebare, poziția de start a primei bule, spațierea dintre rânduri și coloane și dimensiunile bulelor. Acest lucru face sistemul foarte flexibil și reutilizabil în diferite layout-uri. Iată un exemplu simplu care arată cum să creați un șablon JSON pentru a specifica pozițiile bulelor utilizând biblioteca Python.
Cum să creați un șablon JSON pentru a specifica pozițiile bulelor & încărcați-l prin 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")
Gestionarea formularelor multi-pagină prin Python
Biblioteca PyOMR include suport pentru gestionarea formularelor pe mai multe pagini în cadrul aplicațiilor Python. Indiferent dacă procesezi foi de răspuns cu o singură pagină sau sondaje pe mai multe pagini, PyOMR poate fi configurată să gestioneze diferite aranjamente. Se recomandă, pentru formularele pe mai multe pagini, să procesezi fiecare pagină separat: Exemplul de cod de mai jos arată cum dezvoltatorii de software pot gestiona formularele pe mai multe pagini în aplicații Python.
Cum să gestionați formularele pe mai multe pagini prin biblioteca Python?
# 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)
Gestionarea zgomotului și preprocesare
Biblioteca open source PyOMR a oferit suport complet pentru preprocesarea imaginilor și gestionarea zgomotului în aplicațiile Python. Biblioteca include preprocesarea imaginilor, cum ar fi conversia în tonuri de gri, binarizarea și detectarea contururilor, pentru a identifica marcajele în mod fiabil — chiar și în cazul scanărilor zgomotoase sau al tipăririi imperfecte.