
Überblick
Optische Markierungserkennung (OMR) ist ein elektronischer Prozess, der das Lesen und Erfassen von Daten erleichtert, die von Personen auf speziell gestalteten Dokumentenformularen, wie Tests oder Umfragen, markiert werden, die Blasen- oder Quadrat-Eingaben enthalten, die von Benutzern ausgefüllt werden. Durch die Verwendung von Datenextraktion aus Bildern in Java können wir gescannte Bilder dieser Umfrageformulare, Fragebögen oder Testsheets effizient verarbeiten, sodass es möglich ist, die Benutzer-Eingaben programmatisch zu lesen. Dieser Artikel wird Ihnen zeigen, wie Sie OMR durchführen und Daten aus Bildern mit Java extrahieren.
Die folgenden Themen werden in diesem Artikel behandelt:
- Java OMR API zur Extraktion von Daten aus Bildern
- Datenextraktion aus Bildern in Java
- OMR durchführen und Daten aus mehreren Bildern extrahieren
- OMR-Daten mit Schwellenwert extrahieren
- OMR-Daten mit Neuberechnung extrahieren
Java OMR API zur Extraktion von Daten aus Bildern
Um OMR-Operationen durchzuführen und Daten aus Bildern in Java zu extrahieren, verwenden wir die Aspose.OMR für Java API. Dieses leistungsstarke Tool ermöglicht das Entwerfen, Erstellen und Erkennen von Antwortbögen, Tests, MCQ-Papieren, Quizzen, Feedback-Formularen, Umfragen und Stimmzetteln.
Die OmrEngine-Klasse innerhalb der API ist verantwortlich für das Erstellen von Vorlagen und das Verarbeiten von Bildern. Ihre getTemplateProcessor(String templatePath)-Methode initialisiert eine TemplateProcessor-Instanz, die für die Verarbeitung von Vorlagen und Bildern geeignet ist. Um ein Bild zu erkennen, kann die recognizeImage(String imagePath)-Methode verwendet werden, die alle OMR-Elemente als Instanz der RecognitionResult-Klasse zurückgibt. Mit der getCsv()-Methode können Sie einen CSV-String generieren, der die Erkennungsergebnisse enthält. Darüber hinaus verfeinert die recalculate(RecognitionResult result, int recognitionThreshold)-Methode die Erkennungsergebnisse mit angepassten Parametern.
Bitte laden Sie entweder die JAR der API herunter oder fügen Sie die folgende pom.xml-Konfiguration in einer Maven-basierten Java-Anwendung hinzu.
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-omr</artifactId>
<version>19.12</version>
</dependency>
Datenextraktion aus Bildern in Java
Um eine OMR-Operation durchzuführen, benötigen wir die vorbereitete OMR-Vorlagendatei (.omr) und das Bild der vom Benutzer ausgefüllten Formulare oder Blätter. Der Prozess der Datenextraktion aus Bildern in Java, insbesondere unter Verwendung von OMR-Operationen, umfasst die folgenden Schritte:
- Zuerst erstellen Sie eine Instanz der OmrEngine-Klasse.
- Als nächstes rufen Sie die getTemplateProcessor()-Methode auf und initialisieren ein TemplateProcessor-Klassenobjekt, indem Sie den Pfad zur OMR-Vorlagendatei als Argument übergeben.
- Dann erhalten Sie das RecognitionResult-Objekt, indem Sie die recognizeImage()-Methode mit dem Bildpfad als Argument aufrufen.
- Danach erhalten Sie die Erkennungsergebnisse als CSV-Strings mit der getCsv()-Methode.
- Schließlich speichern Sie das CSV-Ergebnis als CSV-Datei auf der lokalen Festplatte.
Das folgende Codebeispiel zeigt, wie Sie Daten aus Bildern in Java extrahieren, indem Sie OMR-Daten in das CSV-Format umwandeln.
// This code example demonstrates how to perform OMR on an image and extract data | |
// OMR Template file path | |
String templatePath = "C:\\Files\\OMR\\Sheet.omr"; | |
// Image file path | |
String imagePath = "C:\\Files\\OMR\\Sheet1.png"; | |
// Initialize OMR Engine | |
OmrEngine engine = new OmrEngine(); | |
// Get template processor | |
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath); | |
// Recognize image | |
RecognitionResult result = templateProcessor.recognizeImage(imagePath); | |
// Get results in CSV | |
String csvResult = result.getCsv(); | |
// Save CSV file | |
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1.csv"), true); | |
wr.println(csvResult); |

OMR durchführen und Daten aus einem Bild in Java extrahieren.
Bitte laden Sie die OMR-Vorlage herunter, die in diesem Blogbeitrag verwendet wurde.
OMR durchführen und Daten aus mehreren Bildern extrahieren
Wir können OMR-Operationen auf mehreren Bildern durchführen und Daten in einer separaten CSV-Datei für jedes einzelne extrahieren, indem wir die zuvor beschriebenen Schritte befolgen. Um Daten aus Bildern in Java zu extrahieren, ist es notwendig, die Schritte 3, 4 und 5 für jedes Bild einzeln zu wiederholen.
Nachfolgend finden Sie ein Codebeispiel, das zeigt, wie OMR-Daten aus mehreren Bildern mit Java extrahiert werden.
// This code example demonstrates how to perform OMR on multiple images and extract data | |
// Working folder path | |
String folderPath = "C:\\Files\\OMR\\"; | |
// OMR Template file path | |
String templatePath = folderPath + "Sheet.omr"; | |
// Image file path | |
String[] UserImages = new String[] { "Sheet1.png", "Sheet2.png" }; | |
// Initialize OMR Engine | |
OmrEngine engine = new OmrEngine(); | |
// Get template processor | |
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath); | |
// Process images one by one in a loop | |
for (int i = 0; i < UserImages.length; i++) | |
{ | |
String image = UserImages[i]; | |
String imagePath = folderPath + image; | |
// Recognize image | |
RecognitionResult result = templateProcessor.recognizeImage(imagePath); | |
// Get results in CSV | |
String csvResult = result.getCsv(); | |
// Save CSV file | |
PrintWriter wr = new PrintWriter(new FileOutputStream(folderPath + "Sheet_" + i + ".csv"), true); | |
wr.println(csvResult); | |
System.out.println(csvResult); | |
} |
OMR-Daten mit Schwellenwert in Java extrahieren
Um optische Markierungserkennung (OMR)-Operationen in Java durchzuführen, verwenden wir einen Schwellenwert zwischen 0 und 100, der auf spezifischen Anforderungen basiert. Dieser Schwellenwert, der bei der Datenextraktion aus Bildern in Java verwendet wird, bestimmt, wie streng die API beim Hervorheben von Antworten ist; ein höherer Wert erhöht die Strenge. Es ist wichtig, die zuvor genannten Schritte für die OMR-Verarbeitung mit dem gewählten Schwellenwert einzuhalten. Insbesondere muss innerhalb von Schritt #3 die Methode recognizeImage(string, int32) aufgerufen werden. Diese überladene Methode erfordert den Bilddateipfad und den gewünschten Schwellenwert als Parameter.
Das folgende Codebeispiel zeigt, wie man OMR mit einem Schwellenwert in Java durchführt:
// This code example demonstrates how to perform OMR with therashold and extract data from an image | |
// OMR Template file path | |
String templatePath = "C:\\Files\\OMR\\Sheet.omr"; | |
// Image file path | |
String imagePath = "C:\\Files\\OMR\\Sheet1.png"; | |
// Threshold value | |
int CustomThreshold = 40; | |
// Initialize OMR Engine | |
OmrEngine engine = new OmrEngine(); | |
// Get template processor | |
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath); | |
// Recognize image | |
RecognitionResult result = templateProcessor.recognizeImage(imagePath, CustomThreshold); | |
// Get results in CSV | |
String csvResult = result.getCsv(); | |
// Save CSV file | |
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1_threshold.csv"), true); | |
wr.println(csvResult); | |
System.out.println(csvResult); |
OMR-Daten mit Neuberechnung in Java extrahieren
Beim Umgang mit präziser Datenextraktion aus Bildern in Java, insbesondere im Hinblick auf OMR, kann es erforderlich sein, die Ergebnisse mit unterschiedlichen Schwellenwerten neu zu berechnen. Durch die Konfiguration der API kann die Neuberechnung automatisiert über die Methode TemplateProcessor.recalculate() erfolgen. Dieser Ansatz ermöglicht mehrere Verarbeitungsdurchläufe von Bildern, indem der Schwellenwert angepasst wird, bis das gewünschte Ergebnis erreicht ist. Um die OMR-Operation mit Neuberechnung erfolgreich durchzuführen, befolgen Sie die folgenden Schritte:
- Zuerst erstellen Sie eine Instanz der OmrEngine-Klasse.
- Als nächstes rufen Sie die getTemplateProcessor()-Methode auf und initialisieren ein TemplateProcessor-Klassenobjekt. Es nimmt den Pfad zur OMR-Vorlagendatei als Argument.
- Dann erhalten Sie das RecognitionResult-Objekt, indem Sie die recognizeImage()-Methode mit dem Bildpfad als Argument aufrufen.
- Als nächstes exportieren Sie die Erkennungsergebnisse als CSV-String mit der getCsv()-Methode.
- Danach speichern Sie das CSV-Ergebnis als CSV-Datei auf der lokalen Festplatte.
- Als nächstes rufen Sie die recalculate()-Methode auf. Sie nimmt das RecognitionResult-Objekt und den Schwellenwert als Argumente.
- Danach exportieren Sie die Erkennungsergebnisse erneut als CSV-String mit der getCsv()-Methode.
- Schließlich speichern Sie das CSV-Ergebnis als CSV-Datei auf der lokalen Festplatte.
Das folgende Codebeispiel zeigt, wie man OMR mit der Neuberechnungsmethode in Java durchführt:
// OMR Template file path | |
String templatePath = "C:\\Files\\OMR\\Sheet.omr"; | |
// Image file path | |
String imagePath = "C:\\Files\\OMR\\Sheet1.png"; | |
// Threshold value | |
int CustomThreshold = 40; | |
// Initialize OMR Engine | |
OmrEngine engine = new OmrEngine(); | |
// Get template processor | |
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath); | |
// Recognize image | |
RecognitionResult result = templateProcessor.recognizeImage(imagePath, CustomThreshold); | |
// Get results in CSV | |
String csvResult = result.getCsv(); | |
// Save CSV file | |
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1.csv"), true); | |
wr.println(csvResult); | |
// Recalculate | |
// You may apply new threshold value here | |
templateProcessor.recalculate(result, CustomThreshold); | |
// Get recalculated results in CSV | |
csvResult = result.getCsv(); | |
// Save recalculated resultant CSV file | |
PrintWriter finalWr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1_recalculated.csv"), true); | |
finalWr.println(csvResult); |
Holen Sie sich eine kostenlose Lizenz
Sie haben die Möglichkeit, eine kostenlose temporäre Lizenz zu erhalten, um die Bibliothek ohne Evaluierungsbeschränkungen auszuprobieren. Dies ist eine großartige Möglichkeit, Funktionen wie die Datenextraktion aus Bildern in Java zu erkunden und die Möglichkeiten vollständig zu bewerten. Die nachstehenden Listendaten bleiben unverändert zu Ihrer Information:
- Die Bibliothek arbeitet effizient mit großen Datenmengen.
- Die Integration in bestehende Systeme ist nahtlos.
- Die extrahierten Daten sind sehr genau und zuverlässig.
- Die Installationsschritte sind einfach und gut dokumentiert.
Fazit
In diesem Artikel haben wir gelernt, wie man:
- OMR-Operationen auf Bildern durchführt;
- Daten programmatisch im CSV-Format extrahiert;
- Schwellenwerteinstellungen bei der Durchführung von OMR auf Bildern anwendet;
- OMR-Ergebnisse in einem automatisierten Prozess mit Java neu berechnet.
Darüber hinaus können Sie, wenn Sie mit der Datenextraktion aus Bildern in Java umgehen, mehr über die Aspose.OMR für Java API erfahren, indem Sie die Dokumentation überprüfen. Wenn Sie auf Probleme stoßen, können Sie uns gerne in unserem kostenlosen Supportforum kontaktieren.