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

Rileva ed Estrai Aree Contrassegnate da Fogli Scansionati tramite Python

Motore OMR gratuito e open source basato su Python che supporta l'elaborazione OMR. Supporta l'elaborazione di fogli OMR, il rilevamento basato su template e la gestione di moduli multi-pagina e altro.

Cos'è la libreria PyOMR?

Il riconoscimento ottico dei segni (OMR) è una tecnologia potente utilizzata per acquisire dati contrassegnati manualmente da documenti come sondaggi, test e schede elettorali. Sebbene esistano soluzioni OMR commerciali, gli sviluppatori che cercano un'alternativa gratuita e open source possono sfruttare PyOMR, una libreria Python progettata per l'elaborazione OMR. Sviluppata da pattyjogal, PyOMR consente agli sviluppatori software di rilevare le bolle contrassegnate su moduli scansionati usando codice Python semplice e tecniche standard di elaborazione delle immagini. Supporta il rilevamento e l'estrazione delle aree contrassegnate da fogli scansionati, l'elaborazione di moduli a scelta multipla, sondaggi e valutazioni, nonché la personalizzazione dei modelli OMR per vari casi d'uso.

PyOMR è un motore OMR basato su Python progettato per rilevare i segni contrassegnati su moduli predefiniti, come schede di test a scelta multipla o risposte a sondaggi. Sfrutta librerie come OpenCV per l'elaborazione delle immagini e fornisce un sistema basato su template per definire le regioni di segno previste sul foglio. Che tu sia uno sviluppatore software che costruisce un sistema di valutazione, un insegnante che automatizza le valutazioni dei test o un'organizzazione che raccoglie dati di sondaggio, PyOMR ti consente di integrare la funzionalità OMR direttamente nella tua app. Con un approccio basato su template, rilevamento potenziato da OpenCV e piena scriptabilità, è una scelta ideale per gli sviluppatori che desiderano creare strumenti di elaborazione automatica dei moduli senza fare affidamento su servizi di terze parti.

Previous Next

Iniziare con PyOMR

Il modo consigliato per installare la libreria PyOMR è utilizzare GitHub. Per favore usa il comando seguente per un'installazione fluida

Installa la libreria PyOMR via GitHub

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

Installa le librerie supportate via GitHub

 pip install opencv-python numpy 

Puoi scaricare la libreria direttamente da GitHub

Preelaborazione automatica delle immagini tramite Python

• La libreria open source PyOMR ha incluso il supporto completo per l'elaborazione automatica delle immagini all'interno delle applicazioni Python. La libreria comprende funzioni integrate per la correzione dell'inclinazione (Deskewing) per correggere scansioni inclinate, la sogliatura (Thresholding) per convertire in bianco e nero per una migliore rilevazione dei segni e la rimozione del rumore per migliorare l'accuratezza nelle scansioni di bassa qualità. Inoltre, consente allo strumento di gestire problemi comuni nei moduli scansionati come incoerenze di illuminazione, basso contrasto o lieve disallineamento. Il seguente esempio di codice mostra come elaborare le immagini all'interno delle applicazioni Python.

Come elaborare un'immagine all'interno delle app 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'}")

Rilevamento basato su template tramite Python

PyOMR utilizza un modello JSON per definire il layout del tuo foglio di risposta. Questo include il numero di domande, il numero di opzioni per domanda, la posizione di partenza della prima bolla, la spaziatura tra righe e colonne e le dimensioni delle bolle. Questo rende il sistema altamente flessibile e riutilizzabile su diversi layout. Ecco un semplice esempio che mostra come creare un modello JSON per specificare le posizioni delle bolle utilizzando la libreria Python.

Come creare un modello JSON per specificare le posizioni delle bolle e caricarlo 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")

Gestione di moduli multi-pagina tramite Python

La libreria PyOMR include il supporto per la gestione di moduli a più pagine all'interno di applicazioni Python. Sia che si tratti di elaborare fogli di risposta a pagina singola o sondaggi a più pagine, PyOMR può essere configurato per gestire layout diversi. Si consiglia, per i moduli a più pagine, di elaborare ogni pagina separatamente: il seguente esempio di codice mostra come gli sviluppatori software possono gestire i moduli a più pagine all'interno di applicazioni Python.

Come gestire moduli multi-pagina tramite la libreria 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)

Gestione del rumore e preelaborazione

La libreria open source PyOMR ha fornito un supporto completo per la preelaborazione delle immagini e la gestione del rumore all'interno delle applicazioni Python. La libreria include la preelaborazione delle immagini, come la conversione in scala di grigi, la sogliatura e il rilevamento dei contorni, per identificare i segni in modo affidabile—anche con scansioni rumorose o stampe imperfette.

 Italiano