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
- Crea un modello OMR e un’immagine del foglio di risposta utilizzando Java
- Eseguire l’operazione OMR sui fogli di risposta a bolle 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.
- Innanzitutto, crea un’istanza della classe OmrEngine.
- Elabora il markup del testo utilizzando il metodo OmrEngine.generateTemplate(String markupPath).
- Salvare il modello e l’immagine OMR utilizzando il metodo GenerationResult.save(String folder, String name).
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.
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.
- Crea un’istanza della classe OmrEngine.
- Caricare il file modello utilizzando il metodo OmrEngine.getTemplateProcessor(String templatePath).
- Elabora l’immagine utilizzando il metodo TemplateProcessor.recognizeImage(String imagePath).
- Ottieni il risultato in formato CSV utilizzando il metodo RecognitionResult.getCsv().
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.