Riconoscimento dei segni OMR tramite il VintaSoft Forms Processing .NET Plug-in

Categoria blog: Forms processing.NET

28.07.2025

Nel mondo odierno, in cui il numero di moduli cartacei ed elettronici è nell'ordine di milioni - dai questionari ai moduli d'esame e alle schede elettorali - la necessità di una loro elaborazione rapida e accurata aumenta ogni anno. Uno degli strumenti chiave per l'automazione di questi processi è diventato il riconoscimento ottico dei segni (OMR).

OMR (Optical Mark Recognition) è una tecnologia che consente al software di registrare e analizzare la presenza o l'assenza di segni speciali (solitamente segni di spunta, quadrati o cerchi pieni) in posizioni predeterminate su documenti cartacei o elettronici. Ciò consente l'elaborazione rapida di grandi quantità di dati senza input manuale, riducendo al minimo gli errori e velocizzando i flussi di lavoro.


Breve storia della nascita e dello sviluppo dell'OMR

La tecnologia di riconoscimento ottico dei segni iniziò a svilupparsi nella seconda metà del XX secolo, quando si presentò il problema di automatizzare l'elaborazione di un gran numero di moduli, questionari e fogli d'esame simili. I primi sistemi industriali apparvero negli Stati Uniti per le esigenze degli istituti scolastici, dove i test di massa degli studenti richiedevano un calcolo accelerato e affidabile dei risultati.

Nelle prime fasi di sviluppo dell'OMR, venivano utilizzate apparecchiature speciali: scanner con grandi fotosensori che registravano aree ombreggiate sulla carta (bolle o rettangoli pieni). Ciò consentiva una significativa riduzione del tempo necessario per verificare le risposte rispetto alla verifica manuale e rendeva l'analisi dei dati più oggettiva.

La tecnologia si è successivamente evoluta con il passaggio all'elaborazione digitale delle immagini. Con l'avvento dei personal computer e dei software, l'OMR è diventato disponibile indipendentemente dal tipo di scanner o stampante. Ciò ha aperto opportunità di applicazione su larga scala in ambito aziendale, educativo, governativo, ovunque fosse richiesta l'elaborazione rapida e accurata di grandi volumi di documenti standard.

Oggi, le moderne soluzioni OMR consentono di automatizzare il lavoro non solo con moduli cartacei, ma anche con documenti elettronici, integrando le tecnologie OMR in piattaforme digitali unificate. Ciò garantisce una flessibilità, una produttività e una qualità dei dati finali ancora maggiori.


Come funziona l'OMR e dove viene applicato

L'OMR si basa sul principio di selezionare aree da contrassegnare su un modulo (ad esempio, in un questionario o in un test) e di scansionarle automaticamente utilizzando un software speciale.Ciò consente:

OMR inizia con la creazione di un modello di modulo speciale con aree designate per i voti. Una volta che il modulo è compilato e scansionato (o ricevuto elettronicamente), il software analizza l'immagine, determina la posizione e i confini di ciascuna zona OMR e registra i voti assegnati dall'utente.

L'intero processo si compone di diverse fasi tecnologiche:

Dove viene utilizzato:

OMR viene utilizzato in tutti i settori in cui è necessario digitalizzare rapidamente e accuratamente grandi flussi di dati cartacei o elettronici simili.


Quali sono le caratteristiche del VintaSoft Forms Processing .NET Plug-in per OMR

Le soluzioni moderne per il riconoscimento delle etichette non sono solo veloci, ma anche flessibili nella configurazione. Uno dei leader tecnologici in questo settore è VintaSoft Forms Processing .NET Plug-in.

Questo SDK offre supporto completo per l'identificazione e l'allineamento automatizzati dei moduli, il riconoscimento ottico dei segni e il riconoscimento dei campi di testo e codici a barre. Le caratteristiche principali includono:


Perché le aziende scelgono OMR con VintaSoft

Per le aziende, elaborare un gran numero di questionari, test o moduli standard non è solo un compito che richiede precisione, ma anche un motivo per ottimizzare i processi aziendali. L'utilizzo del VintaSoft Forms Processing .NET Plug-in consente di:


Vista tecnologica: Come funziona l'OMR in VintaSoft

Durante il funzionamento, il software determina innanzitutto a quale modello appartiene l'immagine della forma ricevuta, la allinea e solo successivamente inizia ad analizzare i campi OMR. Questa architettura consente di elaborare le forme anche se sono state scansionate con modifiche di rotazione, offset o scala.

I modelli di modulo vengono creati utilizzando sia codice che editor visuali all'interno di applicazioni WinForms o WPF. Lo sviluppatore può personalizzare il tipo e l'aspetto dei campi OMR, espandere l'architettura per le proprie attività e formati di documento.

Il riconoscimento ottico dei segni (OMR) è uno standard moderno per l'elaborazione rapida e affidabile di documenti cartacei ed elettronici di grandi dimensioni. Con il VintaSoft Forms Processing .NET Plug-in, il processo diventa flessibile, accurato, integrabile in qualsiasi sistema aziendale e pienamente conforme ai requisiti della trasformazione digitale.


Ecco un codice C# che mostra come identificare e riconoscere un modulo compilato che contiene i marchi OMR:
/// <summary>
/// Recognizes the form with OMR fields.
/// </summary>
/// <param name="formRecognitionManager">The form recognition manager.</param>
/// <param name="image">The image.</param>
public static void RecognizeFormWithOmrFields(
    Vintasoft.Imaging.FormsProcessing.FormRecognitionManager formRecognitionManager,
    Vintasoft.Imaging.VintasoftImage image)
{
    // if your form template contains OCR fields,
    // make sure OCR engine manager is initialized before recognition
    // (otherwise recognition will return null (Nothing)),
    // see OCR field recognition examples

    // recognize filled form in an image
    Vintasoft.Imaging.FormsProcessing.FormRecognitionResult recognitionResult = 
        formRecognitionManager.Recognize(image);

    // get the result of image comparison
    Vintasoft.Imaging.FormsProcessing.TemplateMatching.ImageImprintCompareResult imageCompareResult =
        recognitionResult.TemplateMatchingResult.ImageCompareResult;
    // if result is not reliable
    if (!imageCompareResult.IsReliable)
    {
        // matching template is not found
        System.Console.WriteLine("Matching template is not found.");
    }
    else
    {
        // get recognized page
        Vintasoft.Imaging.FormsProcessing.FormRecognition.FormPage recognizedPage = 
            recognitionResult.RecognizedPage;
        // get form field count
        if (recognizedPage.Items.Count == 0)
        {
            System.Console.WriteLine("No form fields were recognized.");
        }
        else
        {
            System.Console.WriteLine(string.Format(
                "Recognized form field count: {0}",
                recognizedPage.Items.Count));
            // for each recognized form field
            foreach (Vintasoft.Imaging.FormsProcessing.FormRecognition.FormField recognizedField in recognizedPage.Items)
            {
                if (recognizedField is Vintasoft.Imaging.FormsProcessing.FormRecognition.Omr.OmrField)
                {
                    Vintasoft.Imaging.FormsProcessing.FormRecognition.Omr.OmrField omrField = 
                        (Vintasoft.Imaging.FormsProcessing.FormRecognition.Omr.OmrField)recognizedField;
                    // write field info
                    System.Console.WriteLine(string.Format(
                        "  OMR field: name: {0}; state: {1}; confidence: {2:F1}%",
                        omrField.Name,
                        omrField.State,
                        omrField.Confidence * 100));
                }
            }
        }
    }
}