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
- Skapa OMR-mall och svarsbladsbild med Java
- Utför OMR-operation på Bubble Answer Sheets 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.
- Skapa först en instans av klassen OmrEngine.
- Bearbeta textuppmärkningen med metoden OmrEngine.generateTemplate(String markupPath).
- Spara OMR-mallen och bilden med metoden GenerationResult.save(String folder, String name).
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.
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.
- Skapa en instans av klassen OmrEngine.
- Ladda mallfilen med metoden OmrEngine.getTemplateProcessor(String templatePath).
- Bearbeta bilden med metoden TemplateProcessor.recognizeImage(String imagePath).
- Få resultatet i CSV-format med metoden RecognitionResult.getCsv().
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.