Il riconoscimento ottico del segno (OMR) viene spesso utilizzato per controllare sondaggi, questionari e documenti d’esame a scelta multipla. È un modo rapido e preciso di elaborare i moduli. In questo articolo imparerai come creare modelli OMR e controllare i fogli di risposta compilati utilizzando Java.

API Java per la generazione di modelli OMR e l’esecuzione di operazioni OMR

Aspose.OMR per Java è un’API di riconoscimento del marchio ottico in grado di eseguire operazioni OMR su PNG, GIF, JPEG, TIFF, ecc. immagini. L’API supporta anche la generazione di modelli OMR. Puoi scaricare l’API direttamente dalla sezione download o installarla utilizzando la seguente configurazione Maven.

<repositories>
    <repository>
        <id>AsposeJavaAPI</id>
        <name>Aspose Java API</name>
        <url>http://repository.aspose.com/repo/</url>
    </repository>
</repositories>
<dependency>
	<groupId>com.aspose</groupId>
	<artifactId>aspose-omr</artifactId>
	<version>19.12</version>
	<classifier>jdk6</classifier>
</dependency>

<dependency>
	<groupId>com.aspose</groupId>
	<artifactId>aspose-omr</artifactId>
	<version>19.12</version>
	<classifier>javadoc</classifier>
</dependency>

Crea un modello OMR e un’immagine del foglio di risposta utilizzando Java

In questa sezione imparerai come generare file modello OMR e immagini del foglio delle risposte utilizzando un semplice markup di testo. Memorizziamo il markup del testo in un file TXT e lo utilizzeremo nel codice Java per generare il modello OMR. Di seguito è riportato il markup del testo che utilizzeremo in questo esempio per generare il modello OMR.

?text=Name__________________________________ Date____________

?grid=ID
	sections_count=8
#What is Aspose.OMR main function?
	() OCR () Capture human-marked data
	() There is no main function () Enhance images
#Can Aspose.OMR process not only scans, but also photos?
	() Yes, indeed! () No
#Aspose.OMR is available on any platform, because it is:
	() Cross-platform code () Cloud service
#Aspose.OMR works with any kind of OMR forms: tests, exams, questionnaires, surveys, etc.
	() Yes, indeed! () No
#Excellent recognition results can be achieved only for filled bubbles at least for:
	() 40% () 60% () 75% () 98%
#Do you have to mark up every question on the page?
	(Yes) Yes, that will help a lot! (No) No
#Rate your preference from 0 to 9 with "0" being preference towards performance
and "9" being preference towards flexibility.
	(0) (1) (2) (3) (4) (5) (6) (7) (8) (9)
#I found aspose omr to be a useful tool. (5 - strongly agree, 1 - strongly disagree)
	(5) (4) (3) (2) (1)

?text= Answer sheet section
?answer_sheet=MainQuestions
	elements_count=10
	columns_count=5

?text=Sign________________________________

Ora che abbiamo il markup del testo pronto, seguiremo i passaggi indicati di seguito per generare il modello OMR.

Il codice di esempio seguente mostra come generare un modello OMR utilizzando il markup del testo con Java.

// Percorsi della directory di origine e di output
String sourceDirectory = "SourceDirectory\\OMR\\Generation\\";
String outputDirectory = "OutputDirectory\\";

// Crea un'istanza della classe OmrEngine
OmrEngine engine = new OmrEngine();

// Genera modello usando il markup del testo
GenerationResult res = engine.generateTemplate(sourceDirectory + "Grid.txt");

// Controllare in caso di errori
if (res.getErrorCode() != 0)
{
    System.out.println("ERROR CODE: " + res.getErrorCode());
}

// Salva il risultato della generazione: immagine e modello .omr
res.save(outputDirectory, "Grid");

Il codice sopra genererà un file modello OMR e un’immagine del foglio delle risposte. Quella che segue è l’immagine del foglio delle risposte generato.

Immagine del foglio delle risposte generato dal codice di esempio

Immagine del foglio delle risposte generato dal codice di esempio

Eseguire l’operazione OMR sui fogli di risposta a bolle utilizzando Java

Dopo aver raccolto le risposte sul foglio delle risposte generato, è possibile acquisire le loro immagini e quindi eseguire operazioni OMR su di esse. In questo esempio, eseguiremo l’operazione OMR su due immagini; il primo è mostrato di seguito.

Di seguito sono riportati i passaggi per eseguire l’operazione OMR sulle immagini.

Il codice di esempio seguente mostra come eseguire l’operazione OMR sulle immagini utilizzando Java.

// Percorsi della directory di origine e di output
String sourceDirectory = "SourceDirectory\\OMR\\";
String outputDirectory = "OutputDirectory\\";

String TemplateName = "Sheet.omr";
String[] UserImages = new String[] { "Sheet1.jpg", "Sheet2.jpg" };
String[] UserImagesNoExt = new String[] { "Sheet1", "Sheet2" };

// Crea un'istanza della classe OmrEngine
OmrEngine engine = new OmrEngine();

// Carica il file modello
TemplateProcessor templateProcessor = engine.getTemplateProcessor(sourceDirectory + "Sheet.omr");
System.out.println("Template loaded.");

// Scorri le immagini
for (int i = 0; i < UserImages.length; i++) {

    // Riconosci l'immagine e ricevi il risultato
    RecognitionResult result = templateProcessor.recognizeImage(sourceDirectory + UserImages[i]);

    // Esporta i risultati come stringa csv
    String csvResult = result.getCsv();

    // Salva csv nella cartella di output
    PrintWriter wr = new PrintWriter(new FileOutputStream(outputDirectory + UserImagesNoExt[i] + ".csv"), true);
    wr.println(csvResult);
}

Quello che segue è l’output CSV per la prima immagine generata dal codice sopra.

Element Name,Value,
MainQuestions1,"A"
MainQuestions2,"B"
MainQuestions3,"D"
MainQuestions4,"C"
MainQuestions5,"C"
MainQuestions6,"A"
MainQuestions7,"B"
MainQuestions8,"B"
MainQuestions9,"C"
MainQuestions10,"B"
MainQuestions11,"D"
MainQuestions12,"A"
MainQuestions13,"C"
MainQuestions14,"B"
MainQuestions15,"D"
MainQuestions16,"A"
MainQuestions17,"C"
MainQuestions18,"B"
MainQuestions19,"A"
MainQuestions20,"A"
MainQuestions21,"A"
MainQuestions22,"C"
MainQuestions23,"D"
MainQuestions24,"B"
MainQuestions25,"A"
MainQuestions26,"C"
MainQuestions27,"B"
MainQuestions28,"D"
MainQuestions29,"C"
MainQuestions30,"A"
MainQuestions31,"C"
MainQuestions32,"B"
MainQuestions33,"D"
MainQuestions34,"A"
MainQuestions35,"C"
MainQuestions36,"B"
MainQuestions37,"D"
MainQuestions38,"C"
MainQuestions39,"B"
MainQuestions40,"A"
MainQuestions41,"D"
MainQuestions42,"C"
MainQuestions43,"B"
MainQuestions44,"A"
MainQuestions45,"C"
MainQuestions46,"B"
MainQuestions47,"D"
MainQuestions48,"C"
MainQuestions49,"A"
MainQuestions50,"C"
MainQuestions51,"B"
MainQuestions52,"D"
MainQuestions53,"B"
MainQuestions54,"C"
MainQuestions55,"B"
MainQuestions56,"A"
MainQuestions57,"C"
MainQuestions58,"B"
MainQuestions59,"D"
MainQuestions60,"B"
MainQuestions61,"A"
MainQuestions62,"C"
MainQuestions63,"B"
MainQuestions64,"D"
MainQuestions65,"C"
MainQuestions66,"B"
MainQuestions67,"A"
MainQuestions68,"C"
MainQuestions69,"B"
MainQuestions70,"D"
MainQuestions71,"C"
MainQuestions72,"B"
MainQuestions73,"B"
MainQuestions74,"A"
MainQuestions75,"C"
MainQuestions76,"B"
MainQuestions77,"D"
MainQuestions78,"D"
MainQuestions79,"C"
MainQuestions80,"B"
ID,"27860000" 

Ottieni una licenza gratuita

Puoi provare l’API senza limitazioni di valutazione richiedendo una licenza temporanea gratuita.

Conclusione

In questo articolo, hai imparato come generare modelli OMR e immagini di fogli di risposta utilizzando Java. Inoltre, hai imparato come eseguire operazioni OMR sulle immagini e ottenere il risultato come CSV. Aspose.OMR per Java è una solida API per le tue attività relative a OMR che puoi esplorare in dettaglio visitando la documentazione ufficiale. In caso di domande su qualsiasi aspetto dell’API, non esitare a contattarci nel nostro forum di supporto gratuito.

Guarda anche