Optical Mark Recognition (OMR) används ofta för att kontrollera undersökningar, frågeformulär och flervalsundersökningar. Det är ett snabbt och korrekt sätt att behandla formulär. I den här artikeln kommer du att lära dig hur du skapar OMR-mallar och kontrollerar ifyllda svarsblad med Java.

Java API för att generera OMR-mallar och utföra OMR-operationer

Aspose.OMR for Java är ett optiskt märkesigenkännings-API som kan utföra OMR-operationer på PNG, GIF, JPEG, TIFF, etc. bilder. API:et stöder också generering av OMR-mallar. Du kan antingen ladda ner API direkt från avsnittet downloads eller installera det med följande Maven-konfiguration.

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

Skapa OMR-mall och svarsbladsbild med Java

I det här avsnittet kommer du att lära dig hur du skapar OMR-mallfiler och svarsbladsbilder med hjälp av enkel textmarkering. Vi kommer att lagra textmarkeringen i en TXT-fil och använda den i Java-koden för att generera OMR-mallen. Nedan ges textuppmärkningen som vi kommer att använda i det här exemplet för att generera OMR-mallen.

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

Nu när vi har textuppmärkningen klar kommer vi att följa stegen nedan för att generera OMR-mallen.

Följande exempelkod visar hur man genererar en OMR-mall med hjälp av textmarkering med Java.

// Käll- och utdatakatalogsökvägar
String sourceDirectory = "SourceDirectory\\OMR\\Generation\\";
String outputDirectory = "OutputDirectory\\";

// Skapa en instans av klassen OmrEngine
OmrEngine engine = new OmrEngine();

// Skapa mall med hjälp av textmarkeringen
GenerationResult res = engine.generateTemplate(sourceDirectory + "Grid.txt");

// Kontrollera vid fel
if (res.getErrorCode() != 0)
{
    System.out.println("ERROR CODE: " + res.getErrorCode());
}

// Spara genereringsresultatet: bild och .omr-mall
res.save(outputDirectory, "Grid");

Ovanstående kod genererar en OMR-mallfil och en bild av svarsbladet. Följande är bilden av det genererade svarsbladet.

Bild på svarsbladet som genererats av exempelkoden

Bild på svarsbladet som genererats av exempelkoden

Utför OMR-operation på Bubble Answer Sheets med Java

När du har samlat in svaren på det genererade svarsbladet kan du fånga deras bilder och sedan utföra OMR-operationer på dem. I det här exemplet kommer vi att utföra OMR-operationen på två bilder; den första visas nedan.

Följande är stegen för att utföra OMR-operationer på bilder.

Följande exempelkod visar hur man utför OMR-operationer på bilder med Java.

// Käll- och utdatakatalogvägar
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" };

// Skapa en instans av klassen OmrEngine
OmrEngine engine = new OmrEngine();

// Ladda mallfilen
TemplateProcessor templateProcessor = engine.getTemplateProcessor(sourceDirectory + "Sheet.omr");
System.out.println("Template loaded.");

// Gå igenom bilderna
for (int i = 0; i < UserImages.length; i++) {

    // Känn igen bilden och ta emot resultat
    RecognitionResult result = templateProcessor.recognizeImage(sourceDirectory + UserImages[i]);

    // Exportera resultat som csv-sträng
    String csvResult = result.getCsv();

    // Spara csv till utdatamappen
    PrintWriter wr = new PrintWriter(new FileOutputStream(outputDirectory + UserImagesNoExt[i] + ".csv"), true);
    wr.println(csvResult);
}

Följande är CSV-utdata för den första bilden som genereras av ovanstående kod.

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" 

Skaffa en gratis licens

Du kan prova API utan utvärderingsbegränsningar genom att begära en gratis tillfällig licens.

Slutsats

I den här artikeln har du lärt dig hur du genererar OMR-mallar och svarsbladsbilder med hjälp av Java. Vidare har du lärt dig hur du utför OMR-operationer på bilder och får resultatet som CSV. Aspose.OMR för Java är ett robust API för dina OMR-relaterade uppgifter som du kan utforska i detalj genom att besöka den officiella dokumentationen. Om du har några frågor angående någon aspekt av API:t är du välkommen att kontakta oss på vårt gratis supportforum.

Se även