Optical Mark Recognition (OMR) se často používá ke kontrole průzkumů, dotazníků a zkušebních papírů s možností výběru z více možností. Je to rychlý a přesný způsob zpracování formulářů. V tomto článku se dozvíte, jak vytvářet šablony OMR a kontrolovat vyplněné odpovědní listy pomocí Java.

Java API pro generování šablon OMR a provádění operací OMR

Aspose.OMR for Java je optické rozhraní API pro rozpoznávání značek, které může provádět operace OMR na PNG, GIF, JPEG, TIFF, atd. obrázky. API také podporuje generování šablon OMR. API si můžete buď stáhnout přímo ze sekce ke stažení, nebo jej nainstalovat pomocí následující konfigurace Maven.

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

Vytvořte OMR šablonu a obrázek odpovědního listu pomocí Java

V této části se dozvíte, jak generovat soubory šablon OMR a obrázky odpovědního listu pomocí jednoduchého textového označení. Textové označení uložíme do souboru TXT a použijeme jej v kódu Java k vygenerování šablony OMR. Níže je uvedeno textové označení, které v tomto příkladu použijeme k vygenerování šablony OMR.

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

Nyní, když máme textové označení připravené, vygenerujeme šablonu OMR podle níže uvedených kroků.

Následující ukázkový kód ukazuje, jak vygenerovat šablonu OMR pomocí textového označení v Javě.

// Cesty zdrojového a výstupního adresáře
String sourceDirectory = "SourceDirectory\\OMR\\Generation\\";
String outputDirectory = "OutputDirectory\\";

// Vytvořte instanci třídy OmrEngine
OmrEngine engine = new OmrEngine();

// Vygenerujte šablonu pomocí textového označení
GenerationResult res = engine.generateTemplate(sourceDirectory + "Grid.txt");

// Zkontrolujte v případě chyb
if (res.getErrorCode() != 0)
{
    System.out.println("ERROR CODE: " + res.getErrorCode());
}

// Uložte výsledek generování: obrázek a šablonu .omr
res.save(outputDirectory, "Grid");

Výše uvedený kód vygeneruje soubor šablony OMR a obrázek odpovědního listu. Následuje obrázek vygenerovaného odpovědního listu.

Obrázek odpovědního listu generovaného ukázkovým kódem

Obrázek odpovědního listu generovaného ukázkovým kódem

Proveďte operaci OMR na bublinových odpovědních listech pomocí Java

Poté, co shromáždíte odpovědi na vygenerovaném odpovědním listu, můžete zachytit jejich obrázky a poté s nimi provádět operace OMR. V tomto příkladu provedeme operaci OMR na dvou snímcích; první je zobrazen níže.

Následují kroky k provedení operace OMR na snímcích.

Následující ukázkový kód ukazuje, jak provést operaci OMR na obrázcích pomocí jazyka Java.

// Cesty zdrojového a výstupního adresáře
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" };

// Vytvořte instanci třídy OmrEngine
OmrEngine engine = new OmrEngine();

// Načtěte soubor šablony
TemplateProcessor templateProcessor = engine.getTemplateProcessor(sourceDirectory + "Sheet.omr");
System.out.println("Template loaded.");

// Procházejte obrázky
for (int i = 0; i < UserImages.length; i++) {

    // Rozpoznejte obrázek a získejte výsledek
    RecognitionResult result = templateProcessor.recognizeImage(sourceDirectory + UserImages[i]);

    // Export výsledků jako řetězec csv
    String csvResult = result.getCsv();

    // Uložte csv do výstupní složky
    PrintWriter wr = new PrintWriter(new FileOutputStream(outputDirectory + UserImagesNoExt[i] + ".csv"), true);
    wr.println(csvResult);
}

Následuje výstup CSV pro první obrázek vygenerovaný výše uvedeným kódem.

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" 

Získejte bezplatnou licenci

Rozhraní API můžete vyzkoušet bez omezení hodnocení tím, že požádáte o bezplatnou dočasnou licenci.

Závěr

V tomto článku jste se naučili generovat šablony OMR a obrázky odpovědního listu pomocí Java. Dále jste se naučili, jak provádět operace OMR na snímcích a získat výsledek jako CSV. Aspose.OMR for Java je robustní API pro vaše úkoly související s OMR, které můžete podrobně prozkoumat na oficiální dokumentaci. Máte-li jakékoli dotazy týkající se jakéhokoli aspektu rozhraní API, neváhejte nás kontaktovat na našem bezplatném fóru podpory.

Viz také