La reconnaissance optique de marques (OMR) est fréquemment utilisée pour vérifier les enquêtes, les questionnaires et les épreuves à choix multiples. C’est un moyen rapide et précis de traiter les formulaires. Dans cet article, vous apprendrez à créer des modèles OMR et à vérifier les feuilles de réponses remplies à l’aide de Java.

API Java pour générer des modèles OMR et effectuer des opérations OMR

Aspose.OMR for Java est une API de reconnaissance optique de marques qui peut effectuer des opérations OMR sur PNG, GIF, JPEG, TIFF, etc. images. L’API prend également en charge la génération de modèles OMR. Vous pouvez soit télécharger l’API directement depuis la section downloads ou l’installer à l’aide de la configuration Maven suivante.

<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>

Créer un modèle OMR et une image de feuille de réponses à l’aide de Java

Dans cette section, vous apprendrez à générer des fichiers modèles OMR et des images de feuilles de réponses à l’aide d’un simple balisage de texte. Nous allons stocker le balisage de texte dans un fichier TXT et l’utiliser dans le code Java pour générer le modèle OMR. Vous trouverez ci-dessous le balisage de texte que nous utiliserons dans cet exemple pour générer le modèle 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________________________________

Maintenant que le balisage de texte est prêt, nous allons suivre les étapes ci-dessous pour générer le modèle OMR.

L’exemple de code suivant montre comment générer un modèle OMR à l’aide d’un balisage de texte avec Java.

// Chemins des répertoires source et de sortie
String sourceDirectory = "SourceDirectory\\OMR\\Generation\\";
String outputDirectory = "OutputDirectory\\";

// Créer une instance de la classe OmrEngine
OmrEngine engine = new OmrEngine();

// Générer un modèle à l'aide du balisage de texte
GenerationResult res = engine.generateTemplate(sourceDirectory + "Grid.txt");

// Vérifier en cas d'erreurs
if (res.getErrorCode() != 0)
{
    System.out.println("ERROR CODE: " + res.getErrorCode());
}

// Enregistrez le résultat de la génération : image et modèle .omr
res.save(outputDirectory, "Grid");

Le code ci-dessus générera un fichier de modèle OMR et une image de la feuille de réponses. Voici l’image de la feuille de réponses générée.

Image de la feuille de réponses générée par l'exemple de code

Image de la feuille de réponses générée par l’exemple de code

Effectuer une opération OMR sur des feuilles de réponses à bulles à l’aide de Java

Après avoir collecté les réponses sur la feuille de réponses générée, vous pouvez capturer leurs images, puis effectuer des opérations OMR sur celles-ci. Dans cet exemple, nous allons effectuer l’opération OMR sur deux images ; le premier est illustré ci-dessous.

Voici les étapes pour effectuer une opération OMR sur les images.

L’exemple de code suivant montre comment effectuer une opération OMR sur des images à l’aide de Java.

// Chemins des répertoires source et de sortie
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" };

// Créer une instance de la classe OmrEngine
OmrEngine engine = new OmrEngine();

// Charger le fichier modèle
TemplateProcessor templateProcessor = engine.getTemplateProcessor(sourceDirectory + "Sheet.omr");
System.out.println("Template loaded.");

// Boucle à travers les images
for (int i = 0; i < UserImages.length; i++) {

    // Reconnaître l'image et recevoir le résultat
    RecognitionResult result = templateProcessor.recognizeImage(sourceDirectory + UserImages[i]);

    // Exporter les résultats sous forme de chaîne csv
    String csvResult = result.getCsv();

    // Enregistrer csv dans le dossier de sortie
    PrintWriter wr = new PrintWriter(new FileOutputStream(outputDirectory + UserImagesNoExt[i] + ".csv"), true);
    wr.println(csvResult);
}

Voici la sortie CSV pour la première image générée par le code ci-dessus.

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" 

Obtenez une licence gratuite

Vous pouvez essayer l’API sans limitation d’évaluation en demandant une licence temporaire gratuite.

Conclusion

Dans cet article, vous avez appris à générer des modèles OMR et des images de feuilles de réponses à l’aide de Java. De plus, vous avez appris à effectuer des opérations OMR sur des images et à obtenir le résultat au format CSV. Aspose.OMR for Java est une API robuste pour vos tâches liées à l’OMR que vous pouvez explorer en détail en visitant la documentation officielle. Si vous avez des questions concernant n’importe quel aspect de l’API, n’hésitez pas à nous contacter sur notre forum d’assistance gratuit.

Voir également