Détecter et extraire les zones marquées des feuilles numérisées via Python
Moteur OMR gratuit et open source basé sur Python qui prend en charge le traitement OMR. Il supporte le traitement des feuilles OMR, la détection basée sur des modèles et la gestion des formulaires multi‑pages, etc.
Qu'est-ce que PyOMR Librar ?
La reconnaissance optique de marques (OMR) est une technologie puissante utilisée pour capturer les données marquées manuellement à partir de documents tels que des enquêtes, des tests et des bulletins de vote. Bien que des solutions OMR commerciales existent, les développeurs à la recherche d’une alternative gratuite et open source peuvent exploiter PyOMR, une bibliothèque Python conçue pour le traitement OMR. Développée par pattyjogal, PyOMR permet aux développeurs de logiciels de détecter les bulles marquées sur des formulaires numérisés en utilisant du code Python simple et des techniques de traitement d’image standard. Elle prend en charge la détection et l’extraction des zones marquées à partir de feuilles numérisées, le traitement de formulaires à choix multiples, d’enquêtes et d’évaluations ainsi que la personnalisation de modèles OMR pour divers cas d’utilisation.
PyOMR est un moteur OMR basé sur Python conçu pour détecter les marques remplies sur des formulaires prédéfinis, tels que les feuilles de test à choix multiples ou les réponses à des enquêtes. Il exploite des bibliothèques comme OpenCV pour le traitement d'images et fournit un système basé sur des modèles pour définir les zones de marques attendues sur la feuille. Que vous soyez développeur logiciel construisant un système de notation, enseignant automatisant l'évaluation des tests, ou organisation collectant des données d'enquête, PyOMR vous permet d'intégrer directement la fonctionnalité OMR dans votre application. Avec une approche basée sur des modèles, une détection alimentée par OpenCV et une scriptabilité complète, c’est un choix idéal pour les développeurs qui souhaitent créer des outils de traitement automatisé de formulaires sans dépendre de services tiers.
Premiers pas avec PyOMR
La méthode recommandée pour installer la bibliothèque PyOMR est d'utiliser GitHub. Veuillez utiliser la commande suivante pour une installation fluide
Installer la bibliothèque PyOMR via GitHub
git clone https://github.com/pattyjogal/pyomr.git
cd pyomr
Installer les bibliothèques prises en charge via GitHub
pip install opencv-python numpy Vous pouvez télécharger la bibliothèque directement depuis GitHub
Prétraitement automatique d'images via Python
• La bibliothèque open source PyOMR inclut une prise en charge complète du traitement automatique d'images dans les applications Python. La bibliothèque comprend des fonctions intégrées de redressement (Deskewing) pour corriger les scans inclinés, de seuillage (Thresholding) pour convertir en noir et blanc afin d'améliorer la détection des marques, et de suppression du bruit pour améliorer la précision des scans de faible qualité. De plus, elle permet à l'outil de gérer les problèmes courants des formulaires numérisés tels que les incohérences d'éclairage, le faible contraste ou un léger désalignement. L'exemple de code suivant montre comment traiter les images dans les applications Python.
Comment traiter une image dans les applications 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'}")
Détection basée sur des modèles via Python
PyOMR utilise un modèle JSON pour définir la disposition de votre feuille de réponses. Cela comprend le nombre de questions, le nombre d'options par question, la position de départ de la première bulle, l'espacement entre les lignes et les colonnes ainsi que les dimensions des bulles. Cela rend le système très flexible et réutilisable pour différents agencements. Voici un exemple simple montrant comment créer un modèle JSON pour spécifier les positions des bulles à l'aide de la bibliothèque Python.
Comment créer un modèle JSON pour spécifier les positions des bulles et le charger 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")
Gestion des formulaires multi-pages via Python
La bibliothèque PyOMR inclut le support du traitement des formulaires multi‑pages dans les applications Python. Que ce soit pour le traitement de feuilles de réponses d’une seule page ou d’enquêtes multi‑pages, PyOMR peut être configuré pour gérer différentes mises en page. Il est recommandé, pour les formulaires multi‑pages, de traiter chaque page séparément : l’exemple de code suivant montre comment les développeurs peuvent gérer les formulaires multi‑pages dans les applications Python.
Comment gérer les formulaires multi-pages via la bibliothèque 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)
Gestion du bruit et prétraitement
La bibliothèque open source PyOMR offre un support complet du prétraitement d’images et de la gestion du bruit dans les applications Python. La bibliothèque comprend le prétraitement d’images tel que la conversion en niveaux de gris, le seuillage et la détection de contours pour identifier les marques de manière fiable — même avec des numérisations bruyantes ou une impression imparfaite.