El reconocimiento óptico de marcas (OMR) se usa con frecuencia para verificar encuestas, cuestionarios y exámenes de opción múltiple. Es una forma rápida y precisa de procesar formularios. En este artículo, aprenderá cómo crear plantillas OMR y verificar las hojas de respuestas completas usando Java.
- API de Java para generar plantillas OMR y realizar operaciones OMR
- Cree una plantilla OMR y una imagen de hoja de respuestas usando Java
- Realice la operación OMR en hojas de respuestas de burbujas usando Java
API de Java para generar plantillas OMR y realizar operaciones OMR
Aspose.OMR for Java es una API de reconocimiento óptico de marcas que puede realizar operaciones OMR en PNG, GIF, JPEG, TIFF, etc imágenes. La API también admite la generación de plantillas OMR. Puede descargar la API directamente desde la sección descargas o instalarla usando la siguiente configuración de 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>
Cree una plantilla OMR y una imagen de hoja de respuestas usando Java
En esta sección, aprenderá a generar archivos de plantilla OMR e imágenes de hojas de respuestas utilizando un marcado de texto simple. Almacenaremos el marcado de texto en un archivo TXT y lo usaremos en el código Java para generar la plantilla OMR. A continuación se muestra el marcado de texto que usaremos en este ejemplo para generar la plantilla 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________________________________
Ahora que tenemos listo el marcado de texto, seguiremos los pasos que se indican a continuación para generar la plantilla OMR.
- En primer lugar, cree una instancia de la clase OmrEngine.
- Procese el marcado de texto con el método OmrEngine.generateTemplate(String markupPath).
- Guarde la plantilla y la imagen de OMR con el método GenerationResult.save(String folder, String name).
El siguiente código de muestra muestra cómo generar una plantilla OMR usando marcado de texto con Java.
// Rutas de directorio de origen y salida
String sourceDirectory = "SourceDirectory\\OMR\\Generation\\";
String outputDirectory = "OutputDirectory\\";
// Crear una instancia de la clase OmrEngine
OmrEngine engine = new OmrEngine();
// Generar plantilla utilizando el marcado de texto
GenerationResult res = engine.generateTemplate(sourceDirectory + "Grid.txt");
// Comprobar en caso de errores
if (res.getErrorCode() != 0)
{
System.out.println("ERROR CODE: " + res.getErrorCode());
}
// Guarde el resultado de la generación: imagen y plantilla .omr
res.save(outputDirectory, "Grid");
El código anterior generará un archivo de plantilla OMR y una imagen de la hoja de respuestas. La siguiente es la imagen de la hoja de respuestas generada.
Realice la operación OMR en hojas de respuestas de burbujas usando Java
Una vez que haya recopilado las respuestas en la hoja de respuestas generada, puede capturar sus imágenes y luego realizar operaciones OMR en ellas. En este ejemplo, realizaremos la operación OMR en dos imágenes; el primero se muestra a continuación.
Los siguientes son los pasos para realizar la operación OMR en las imágenes.
- Cree una instancia de la clase OmrEngine.
- Cargue el archivo de plantilla usando el método OmrEngine.getTemplateProcessor(String templatePath).
- Procese la imagen usando el método TemplateProcessor.recognizeImage(String imagePath).
- Obtenga el resultado en formato CSV usando el método RecognitionResult.getCsv().
El siguiente código de muestra muestra cómo realizar la operación OMR en imágenes usando Java.
// Rutas de directorio de origen y salida
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" };
// Crear una instancia de la clase OmrEngine
OmrEngine engine = new OmrEngine();
// Cargue el archivo de plantilla
TemplateProcessor templateProcessor = engine.getTemplateProcessor(sourceDirectory + "Sheet.omr");
System.out.println("Template loaded.");
// Bucle a través de las imágenes
for (int i = 0; i < UserImages.length; i++) {
// Reconocer imagen y recibir resultado
RecognitionResult result = templateProcessor.recognizeImage(sourceDirectory + UserImages[i]);
// Exportar resultados como cadena csv
String csvResult = result.getCsv();
// Guardar csv en la carpeta de salida
PrintWriter wr = new PrintWriter(new FileOutputStream(outputDirectory + UserImagesNoExt[i] + ".csv"), true);
wr.println(csvResult);
}
La siguiente es la salida CSV para la primera imagen generada por el código anterior.
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"
Obtenga una licencia gratis
Puede probar la API sin limitaciones de evaluación solicitando una licencia temporal gratuita.
Conclusión
En este artículo, ha aprendido a generar plantillas OMR e imágenes de hojas de respuestas utilizando Java. Además, aprendió cómo realizar operaciones OMR en imágenes y obtener el resultado como CSV. Aspose.OMR for Java es una API robusta para sus tareas relacionadas con OMR que puede explorar en detalle visitando la documentación oficial. Si tiene alguna pregunta sobre cualquier aspecto de la API, no dude en comunicarse con nosotros en nuestro foro de soporte gratuito.