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

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.

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.

Imagen de la hoja de respuestas generada por el código de muestra

Imagen de la hoja de respuestas generada por el código de muestra

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.

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.

Ver también