
Vue d’ensemble
Êtes-vous à la recherche d’une bibliothèque OMR Java efficace et riche en fonctionnalités ? Souhaitez-vous identifier des marques optiques dans des images scannées ? Découvrez Aspose.OMR pour Java, une bibliothèque de classes Java conçue pour des solutions SDK de Reconnaissance de Marques Optiques dans des applications basées sur Java. Voici un aperçu rapide des fonctionnalités de cette API Java, démontrant comment elle peut être utilisée pour reconnaître des marques optiques à travers divers formats d’image et obtenir des données marquées par des humains provenant de sondages, de questionnaires ou de tests comportant des QCM.
Créer dynamiquement un modèle OMR en utilisant la bibliothèque OMR Java
Aspose.OMR pour Java offre une suite complète de fonctionnalités allant de la création de modèles OMR à la reconnaissance de marques optiques pour la capture de données. Ce SDK de Reconnaissance de Marques Optiques prend en charge la génération de fichiers ou d’images de modèles OMR à partir de simple balisage texte. Pour générer le modèle, vous pouvez passer le balisage texte à l’API, permettant la création automatique de modèles. Voici un exemple de balisage texte pour un modèle OMR :
?text=Nom__________________________________ Date____________
?grid=ID
sections_count=8
#Quelle est la fonction principale d'Aspose.OMR ?
() OCR () Capturer les données marquées par des humains
() Il n'y a pas de fonction principale () Améliorer les images
#Aspose.OMR peut-il également traiter des photos ?
() Oui, en effet ! () Non
#Aspose.OMR est disponible sur n'importe quelle plateforme, car il est :
() Code multiplateforme () Service cloud
#Aspose.OMR fonctionne avec tous types de formulaires OMR : tests, examens, questionnaires, sondages, etc.
() Oui, en effet ! () Non
#D'excellents résultats de reconnaissance peuvent être obtenus uniquement pour des bulles remplies au moins pour :
() 40% () 60% () 75% () 98%
#Faut-il marquer chaque question sur la page ?
(Oui) Oui, cela aidera beaucoup ! (Non) Non
#Évaluez votre préférence de 0 à 9 avec "0" étant la préférence pour la performance
et "9" étant la préférence pour la flexibilité.
(0) (1) (2) (3) (4) (5) (6) (7) (8) (9)
#J'ai trouvé Aspose OMR être un outil utile. (5 - fortement d'accord, 1 - fortement en désaccord)
(5) (4) (3) (2) (1)
?text= Section de feuille de réponses
?answer_sheet=QuestionsPrincipales
elements_count=10
columns_count=5
?text=Signature________________________________
Vous pouvez enregistrer ce balisage texte dans un fichier texte avec une extension .txt. Une fois cela fait, la génération du modèle suit ces étapes :
- Créez un objet OmrEngine.
- Appelez la méthode OmrEngine.generateTemplate() qui accepte le chemin du fichier texte de balisage.
- Enregistrez le modèle en utilisant la méthode GenerationResult.save.
Voici comment un extrait de code en Java montre la génération de modèle à partir du balisage texte.
String outputDirectory = "GenerationResult"; | |
String[] GenerationMarkups = new String[] { "Sheet.txt", "Grid.txt", "AsposeTest.txt" }; | |
String[] GenerationMarkupsNoExt = new String[] { "Sheet", "Grid", "AsposeTest" }; | |
OmrEngine engine = new OmrEngine(); | |
for (int i = 0; i < GenerationMarkups.length; i++) | |
{ | |
// call template generation providing path to the txt file with markup | |
GenerationResult res = engine.generateTemplate(GenerationMarkups[i]); | |
// check in case of errors | |
if (res.getErrorCode() != 0) | |
{ | |
System.out.println("ERROR CODE: " + res.getErrorCode()); | |
} | |
// save generation result: image and .omr template | |
res.save(outputDirectory, GenerationMarkupsNoExt[i]); | |
} |
Sortie

Reconnaissance de Marques Optiques (OMR) dans les Images en utilisant Java
Pour effectuer une Reconnaissance de Marques Optiques (OMR) sur des images, vous n’avez besoin que de deux composants : le modèle OMR préparé (.omr) et les formulaires ou feuilles remplis par l’utilisateur que vous souhaitez analyser. Avec le soutien du SDK de Reconnaissance de Marques Optiques, l’API facilite OMR pour divers formats d’image, y compris :
Les étapes pour effectuer OMR sur des images sont les suivantes :
- Créez un objet OmrEngine.
- Créez un objet TemplateProcessor et initialisez-le avec le chemin du modèle OMR.
- Reconnaissez les images en utilisant la méthode TemplateProcessor.recognizeImage() et obtenez les résultats au format CSV ou JSON.
Ci-dessous est un exemple de code démontrant comment reconnaître des marques optiques dans des images en utilisant Java.
String[] UserImages = new String[] { "Sheet1.jpg", "Sheet2.jpg" }; | |
String[] UserImagesNoExt = new String[] { "Sheet1", "Sheet2" }; | |
String outputDirectory = "Result"; | |
String templatePath = "Sheet.omr"; | |
// initialize engine and get template processor providing path to the .omr file | |
OmrEngine engine = new OmrEngine(); | |
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath); | |
System.out.println("Template loaded."); | |
// images loop | |
for (int i = 0; i < UserImages.length; i++) { | |
// path to the image to be recognized | |
String imagePath = UserImages[i]; | |
System.out.println("Processing image: " + imagePath); | |
// recognize image and receive result | |
RecognitionResult result = templateProcessor.recognizeImage(imagePath); | |
// export results as csv string | |
String csvResult = result.getCsv(); | |
String json = result.getJson(); | |
// save csv to the output folder | |
PrintWriter wr = new PrintWriter(new FileOutputStream(UserImagesNoExt[i] + ".csv"), true); | |
wr.println(csvResult); | |
} |
Utiliser un Seuil de Reconnaissance Personnalisé pour OMR
Vous pouvez également affiner les résultats OMR en définissant un seuil personnalisé entre 0 et 100 lors de l’utilisation du SDK de Reconnaissance de Marques Optiques. Augmenter le seuil rend l’API plus stricte dans la reconnaissance des réponses. Les valeurs de seuil peuvent être définies dans la méthode TemplateProcessor.recognizeImage() comme deuxième paramètre, comme montré dans l’exemple de code Java suivant.
String[] UserImages = new String[] { "Sheet1.jpg", "Sheet2.jpg" }; | |
String[] UserImagesNoExt = new String[] { "Sheet1", "Sheet2" }; | |
String outputDirectory = "Result"; | |
String templatePath = "Sheet.omr"; | |
int customThreshold = 40; | |
// initialize engine and get template processor providing path to the .omr file | |
OmrEngine engine = new OmrEngine(); | |
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath); | |
System.out.println("Template loaded."); | |
// images loop | |
for (int i = 0; i < UserImages.length; i++) { | |
// path to the image to be recognized | |
String imagePath = UserImages[i]; | |
System.out.println("Processing image: " + imagePath); | |
// recognize image and receive result | |
RecognitionResult result = templateProcessor.recognizeImage(imagePath, customThreshold); | |
// export results as csv string | |
String csvResult = result.getCsv(); | |
String json = result.getJson(); | |
// save csv to the output folder | |
PrintWriter wr = new PrintWriter(new FileOutputStream(UserImagesNoExt[i] + ".csv"), true); | |
wr.println(csvResult); | |
} |
Recalculer les Résultats OMR en utilisant le SDK de Reconnaissance de Marques Optiques
Dans certains cas, vous pourriez vouloir recalculer les résultats OMR en utilisant différentes valeurs de seuil. Au lieu d’invoquer à plusieurs reprises TemplateProcessor.recognizeImage(), vous pouvez améliorer l’efficacité du traitement des images en configurant l’API pour le recalcul automatique avec la méthode TemplateProcessor.recalculate() fournie par le SDK de Reconnaissance de Marques Optiques. L’exemple de code suivant démontre comment mettre en œuvre le recalcul des résultats OMR.
String[] UserImages = new String[] { "Sheet1.jpg", "Sheet2.jpg" }; | |
String[] UserImagesNoExt = new String[] { "Sheet1", "Sheet2" }; | |
String outputDirectory = "Result"; | |
String templatePath = "Sheet.omr"; | |
// init engine and get template processor | |
OmrEngine engine = new OmrEngine(); | |
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath); | |
System.out.println("Template loaded."); | |
// Set custom threshold to use in recalculation | |
// this value is in range (0 to 100) | |
// represents the percentage of required black pixels on bubble image to be recognized | |
// i.e. the lower the value - the less black pixels required for bubble to be counted as filled and vice versa | |
int CustomThreshold = 40; | |
// images loop | |
for (int i = 0; i < UserImages.length; i++) | |
{ | |
String image = UserImages[i]; | |
String imagePath = image; | |
System.out.println("Processing image: " + imagePath); | |
// recognize image | |
RecognitionResult result = templateProcessor.recognizeImage(imagePath); | |
// get export csv string | |
String stringRes = result.getCsv(); | |
// save csv to output folder | |
String outputName = UserImagesNoExt[i] + ".csv"; | |
PrintWriter wr = new PrintWriter(new FileOutputStream(outputName), true); | |
wr.println(stringRes); | |
System.out.println("Export done. Path: " + outputName); | |
// recalculate recognition results with custom threshold | |
templateProcessor.recalculate(result, CustomThreshold); | |
// get export csv string | |
stringRes = result.getCsv(); | |
// save recalculated results | |
outputName = UserImagesNoExt[i] + "_recalculated.csv"; | |
wr = new PrintWriter(new FileOutputStream(outputName), true); | |
wr.println(stringRes); | |
System.out.println("Recalculated result export done. Path: " + outputName); | |
System.out.println(); | |
} |
Si vous avez des questions ou avez besoin d’aide concernant notre bibliothèque OMR Java, n’hésitez pas à nous contacter sur notre forum.