Datautvinning från bilder i Java

Översikt

Optisk markering igenkänning (OMR) är en elektronisk process som underlättar läsning och fångst av data markerad av människor på särskilt utformade dokumentformulär, såsom tester eller enkäter, som inkluderar bubbla- eller fyrkantiga inmatningar ifyllda av användare. Genom att använda datautvinning från bilder i Java kan vi effektivt hantera skannade bilder av dessa enkätformulär, frågeformulär eller provark, vilket gör det möjligt att läsa användarinmatningar programmässigt. Denna artikel kommer att vägleda dig om hur du utför OMR och extraherar data från bilder med Java.

Följande ämnen kommer att behandlas i denna artikel:

  1. Java OMR API för att extrahera data från bild
  2. Datautvinning från bilder i Java
  3. Utför OMR och extrahera data från flera bilder
  4. Extrahera OMR-data med tröskelvärde
  5. Extrahera OMR-data med omberäkning

Java OMR API för att extrahera data från bild

För att utföra OMR-operationer och datautvinning från bilder i Java kommer vi att använda Aspose.OMR för Java API. Detta kraftfulla verktyg möjliggör design, skapande och igenkänning av svarsscheman, tester, MCQ-papper, frågesporter, feedbackformulär, enkäter och röster.

Klassen OmrEngine inom API:t är ansvarig för att skapa mallar och bearbeta bilder. Dess getTemplateProcessor(String templatePath) metod initierar en TemplateProcessor instans anpassad för att hantera mallar och bilder. För att känna igen en bild kan metoden recognizeImage(String imagePath) användas, vilken returnerar alla OMR-element som en instans av RecognitionResult klassen. Genom att använda metoden getCsv() kan du generera en CSV sträng som innehåller igenkänningsresultaten. Dessutom förfinar metoden recalculate(RecognitionResult result, int recognitionThreshold) igenkänningsresultaten med anpassade parametrar.

Vänligen antingen ladda ner JAR av API:t eller lägg till följande pom.xml konfiguration i en Maven-baserad Java-applikation.

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

Datautvinning från bilder i Java

För att genomföra en OMR-operation kräver vi den förberedda OMR-mallfilen (.omr) och bilden av användarfyllda formulär eller ark. Processen för datautvinning från bilder i Java, specifikt med användning av OMR-operationer, involverar följande steg:

  1. Först, skapa en instans av klassen OmrEngine.
  2. Nästa, anropa metoden getTemplateProcessor() och initiera ett TemplateProcessor klassobjekt, där du passerar OMR-mallfilens sökväg som argument.
  3. Därefter, få RecognitionResult objektet genom att anropa metoden recognizeImage() med bildvägen som argument.
  4. Efter det, erhåll igenkänningsresultat som CSV-strängar med hjälp av metoden getCsv().
  5. Slutligen, spara CSV-resultatet som en CSV-fil på den lokala disken.

Följande kodexempel visar hur man utför datautvinning från bilder i Java genom att konvertera OMR-data till CSV-format.

// 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);
Extrahera-data-från-en-bild-i-Java

Utför OMR och extrahera data från en bild i Java.

Vänligen ladda ner OMR-mallen som används i detta blogginlägg.

Utför OMR och extrahera data från flera bilder

Vi kan utföra OMR-operationer på flera bilder och extrahera data i en separat CSV-fil för varje bild, med hjälp av stegen som beskrivits tidigare. För att åstadkomma datautvinning från bilder i Java är det nödvändigt att upprepa steg 3, 4 och 5 för alla bilder individuellt.

Nedan finns ett kodexempel som visar hur man extraherar OMR-data från flera bilder med Java.

// 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);
}
. Listdata, oavsett om den är punktformad eller numrerad, måste förbli helt oförändrad.

Extrahera OMR-data med tröskelvärde i Java

För att utföra optisk markering igenkänning (OMR) operationer i Java, utnyttjar vi ett tröskelvärde mellan 0 och 100 baserat på specifika krav. Detta tröskelvärde, som används vid datautvinning från bilder i Java, dikterar hur strikt API:t kommer att vara i att framhäva svar; ett högre värde ökar strängheten. Att följa stegen som nämns tidigare är avgörande för OMR-behandling med det valda tröskelvärdet. Specifikt, inom steg #3, måste metoden recognizeImage(string, int32) anropas. Denna överlagrade metod kräver bildfilens sökväg och önskat tröskelvärde som sina parametrar.

Följande kodexempel visar hur man utför OMR med ett tröskelvärde med Java:

// 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);

Extrahera OMR-data med omberäkning i Java

När det gäller noggrann datautvinning från bilder i Java, särskilt när det gäller OMR, kan det finnas behov av att omberäkna resultaten med olika tröskelvärden. Genom att konfigurera API:t kan omberäkningen automatiseras genom metoden TemplateProcessor.recalculate(). Denna metod gör det möjligt för flera bildbearbetningsiterationer genom att justera tröskeln tills önskat resultat uppnås. För att framgångsrikt genomföra OMR-operationen med omberäkning, följ stegen nedan:

  1. Först, skapa en instans av klassen OmrEngine.
  2. Nästa, anropa metoden getTemplateProcessor() och initiera ett TemplateProcessor klassobjekt. Den tar OMR-mallfilens sökväg som ett argument.
  3. Därefter, få RecognitionResult objektet genom att anropa metoden recognizeImage() med bildvägen som argument.
  4. Nästa, exportera igenkänningsresultat som en CSV-sträng med hjälp av metoden getCsv().
  5. Sedan, spara CSV-resultatet som en CSV-fil på den lokala disken.
  6. Nästa, anropa metoden recalculate(). Den tar RecognitionResult-objektet och tröskelvärdet som argument.
  7. Efter det, exportera igenkänningsresultat som en CSV-sträng med hjälp av metoden getCsv().
  8. Slutligen, spara CSV-resultatet som en CSV-fil på den lokala disken.

Följande kodexempel visar hur man utför OMR med omberäkningsmetoden med Java:

// 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);
.

Skaffa en gratis licens

Du har möjlighet att skaffa en gratis tillfällig licens för att prova biblioteket utan utvärderingsbegränsningar. Detta är ett utmärkt sätt att utforska funktioner som datautvinning från bilder i Java, vilket gör att du kan utvärdera dess kapabiliteter fullt ut. Listdata nedan förblir oförändrad för din referens:

  1. Biblioteket fungerar effektivt med stora datamängder.
  2. Integration med befintliga system är sömlös.
  3. Data som extraheras är mycket noggrann och tillförlitlig.
  4. Installationsstegen är raka och väldokumenterade.

Slutsats

I denna artikel har vi lärt oss hur man:

  • utför OMR-operation på bilder;
  • extrahera data i CSV-format programmässigt;
  • tillämpar tröskelinställningar vid utförande av OMR på bilder;
  • omberäknar OMR-resultat i en automatiserad process med Java.

Dessutom, när du hanterar datautvinning från bilder i Java, kan du utforska mer om Aspose.OMR för Java API genom att granska dokumentationen. Om du stöter på några problem, tveka inte att kontakta oss på vårt gratis supportforum.

Se även