Optical Mark Recognition (OMR) jest często używany do sprawdzania ankiet, kwestionariuszy i dokumentów egzaminacyjnych wielokrotnego wyboru. Jest to szybki i dokładny sposób przetwarzania formularzy. W tym artykule dowiesz się, jak tworzyć szablony OMR i sprawdzać wypełnione arkusze odpowiedzi za pomocą Javy.

Java API do generowania szablonów OMR i wykonywania operacji OMR

Aspose.OMR for Java to interfejs API rozpoznawania znaków optycznych, który może wykonywać operacje OMR na plikach PNG, GIF, JPEG, TIFF, itp. obrazy. API obsługuje również generowanie szablonów OMR. Możesz pobrać API bezpośrednio z sekcji pliki do pobrania lub zainstalować je, korzystając z poniższej konfiguracji Mavena.

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

Utwórz szablon OMR i obraz arkusza odpowiedzi za pomocą języka Java

W tej sekcji dowiesz się, jak generować pliki szablonów OMR i obrazy arkuszy odpowiedzi za pomocą prostych znaczników tekstowych. Przechowamy znaczniki tekstowe w pliku TXT i użyjemy ich w kodzie Java do wygenerowania szablonu OMR. Poniżej podano znaczniki tekstowe, których użyjemy w tym przykładzie do wygenerowania szablonu 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________________________________

Teraz, gdy mamy gotowe znaczniki tekstowe, wykonamy poniższe kroki, aby wygenerować szablon OMR.

Poniższy przykładowy kod pokazuje, jak wygenerować szablon OMR przy użyciu znaczników tekstowych w języku Java.

// Ścieżki katalogu źródłowego i wyjściowego
String sourceDirectory = "SourceDirectory\\OMR\\Generation\\";
String outputDirectory = "OutputDirectory\\";

// Utwórz instancję klasy OmrEngine
OmrEngine engine = new OmrEngine();

// Wygeneruj szablon za pomocą znaczników tekstowych
GenerationResult res = engine.generateTemplate(sourceDirectory + "Grid.txt");

// Sprawdź w przypadku błędów
if (res.getErrorCode() != 0)
{
    System.out.println("ERROR CODE: " + res.getErrorCode());
}

// Zapisz wynik generowania: obraz i szablon .omr
res.save(outputDirectory, "Grid");

Powyższy kod wygeneruje plik szablonu OMR i obraz arkusza odpowiedzi. Poniżej znajduje się obraz wygenerowanego arkusza odpowiedzi.

Obraz arkusza odpowiedzi wygenerowany przez przykładowy kod

Obraz arkusza odpowiedzi wygenerowany przez przykładowy kod

Wykonaj operację OMR na arkuszach odpowiedzi w dymkach przy użyciu języka Java

Po zebraniu odpowiedzi na wygenerowanym arkuszu odpowiedzi możesz przechwycić ich obrazy, a następnie wykonać na nich operacje OMR. W tym przykładzie wykonamy operację OMR na dwóch obrazach; pierwszy pokazano poniżej.

Poniżej przedstawiono kroki wykonywania operacji OMR na obrazach.

Poniższy przykładowy kod pokazuje, jak wykonać operację OMR na obrazach przy użyciu języka Java.

// Ścieżki katalogu źródłowego i wyjściowego
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" };

// Utwórz instancję klasy OmrEngine
OmrEngine engine = new OmrEngine();

// Załaduj plik szablonu
TemplateProcessor templateProcessor = engine.getTemplateProcessor(sourceDirectory + "Sheet.omr");
System.out.println("Template loaded.");

// Przejrzyj obrazy w pętli
for (int i = 0; i < UserImages.length; i++) {

    // Rozpoznaj obraz i odbierz wynik
    RecognitionResult result = templateProcessor.recognizeImage(sourceDirectory + UserImages[i]);

    // Eksportuj wyniki jako ciąg znaków csv
    String csvResult = result.getCsv();

    // Zapisz csv w folderze wyjściowym
    PrintWriter wr = new PrintWriter(new FileOutputStream(outputDirectory + UserImagesNoExt[i] + ".csv"), true);
    wr.println(csvResult);
}

Poniżej przedstawiono dane wyjściowe CSV dla pierwszego obrazu wygenerowanego przez powyższy 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" 

Uzyskaj bezpłatną licencję

Możesz wypróbować interfejs API bez ograniczeń ewaluacyjnych, prosząc o bezpłatną licencję tymczasową.

Wniosek

W tym artykule nauczyłeś się generować szablony OMR i obrazy arkuszy odpowiedzi za pomocą języka Java. Ponadto nauczyłeś się wykonywać operacje OMR na obrazach i uzyskiwać wynik w postaci pliku CSV. Aspose.OMR for Java to solidny interfejs API do zadań związanych z OMR, który możesz szczegółowo zbadać, odwiedzając oficjalną dokumentację. Jeśli masz jakiekolwiek pytania dotyczące dowolnego aspektu interfejsu API, skontaktuj się z nami na naszym bezpłatnym forum pomocy technicznej.

Zobacz też