1. Productos
  2.   OMR
  3.   Python
  4.   PyOMR
 
  

Detectar y extraer áreas marcadas de hojas escaneadas mediante Python

Motor OMR gratuito y de código abierto basado en Python que soporta el procesamiento OMR. Soporta el procesamiento de hojas OMR, detección basada en plantillas y manejo de formularios multipágina, entre otras cosas.

¿Qué es PyOMR Librar?

El reconocimiento óptico de marcas (OMR) es una tecnología poderosa utilizada para capturar datos marcados por humanos en documentos como encuestas, pruebas y boletas. Aunque existen soluciones OMR comerciales, los desarrolladores que buscan una alternativa gratuita y de código abierto pueden aprovechar PyOMR, una biblioteca Python diseñada para el procesamiento OMR. Desarrollada por pattyjogal, PyOMR permite a los desarrolladores de software detectar burbujas marcadas en formularios escaneados usando código Python sencillo y técnicas estándar de procesamiento de imágenes. Soporta la detección y extracción de áreas marcadas de hojas escaneadas, el procesamiento de formularios de opción múltiple, encuestas y evaluaciones, así como la personalización de plantillas OMR para diversos casos de uso.

PyOMR es un motor OMR basado en Python diseñado para detectar marcas rellenadas en formularios predefinidos, como hojas de examen de opción múltiple o respuestas de encuestas. Aprovecha bibliotecas como OpenCV para el procesamiento de imágenes y proporciona un sistema basado en plantillas para definir las regiones de marcas esperadas en la hoja. Ya seas un desarrollador de software que construye un sistema de calificación, un docente que automatiza la evaluación de pruebas, o una organización que recopila datos de encuestas, PyOMR te permite integrar la funcionalidad OMR directamente en tu aplicación. Con un enfoque basado en plantillas, detección impulsada por OpenCV y plena capacidad de script, es una opción ideal para desarrolladores que desean crear herramientas automatizadas de procesamiento de formularios sin depender de servicios de terceros.

Previous Next

Primeros pasos con PyOMR

La forma recomendada de instalar la biblioteca PyOMR es usando GitHub. Por favor, utiliza el siguiente comando para una instalación sin problemas

Instalar la biblioteca PyOMR vía GitHub

 git clone https://github.com/pattyjogal/pyomr.git
cd pyomr
 

Instalar bibliotecas compatibles vía GitHub

 pip install opencv-python numpy 

Puedes descargar la biblioteca directamente desde GitHub

Preprocesamiento automático de imágenes mediante Python

• La biblioteca de código abierto PyOMR ha incluido soporte completo para el procesamiento automático de imágenes dentro de aplicaciones Python. La biblioteca incluye funciones integradas para Deskewing (corrección de inclinación) para corregir escaneos inclinados, Thresholding (umbralizado) para convertir a blanco y negro y mejorar la detección de marcas, y eliminación de ruido para mejorar la precisión en escaneos de baja calidad. Además, permite que la herramienta maneje problemas comunes en formularios escaneados, como inconsistencias de iluminación, bajo contraste o desalineación menor. El siguiente ejemplo de código muestra cómo procesar imágenes dentro de aplicaciones Python.

¿Cómo procesar una imagen dentro de aplicaciones 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'}")

Detección basada en plantillas mediante Python

PyOMR utiliza una plantilla JSON para definir el diseño de su hoja de respuestas. Esto incluye el número de preguntas, el número de opciones por pregunta, la posición inicial de la primera burbuja, el espaciado entre filas y columnas y las dimensiones de las burbujas. Esto hace que el sistema sea altamente flexible y reutilizable en diferentes diseños. Aquí hay un ejemplo sencillo que muestra cómo crear una plantilla JSON para especificar la posición de las burbujas usando la biblioteca Python.

¿Cómo crear una plantilla JSON para especificar posiciones de burbujas y cargarla mediante 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")

Manejo de formularios multipágina mediante Python

La biblioteca PyOMR incluye soporte para manejar formularios de varias páginas dentro de aplicaciones Python. Ya sea procesando hojas de respuestas de una sola página o encuestas de varias páginas, PyOMR puede configurarse para manejar diferentes diseños. Se recomienda, para formularios de varias páginas, procesar cada página por separado: el siguiente ejemplo de código muestra cómo los desarrolladores de software pueden manejar formularios de varias páginas dentro de aplicaciones Python.

¿Cómo manejar formularios de varias páginas mediante la 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)

Manejo de ruido y preprocesamiento

La biblioteca de código abierto PyOMR ha proporcionado soporte completo para el preprocesamiento de imágenes y el manejo de ruido dentro de aplicaciones Python. La biblioteca incluye preprocesamiento de imágenes como conversión a escala de grises, umbralizado y detección de contornos para identificar marcas de manera fiable, incluso con escaneos ruidosos o impresiones imperfectas.

 Español