Оптичне розпізнавання позначок (OMR) часто використовується для перевірки опитувань, анкет та екзаменаційних робіт з кількома варіантами відповідей. Це швидкий і точний спосіб обробки форм. У цій статті ви дізнаєтеся, як створювати шаблони OMR і перевіряти заповнені бланки відповідей за допомогою Java.

Java API для створення шаблонів OMR і виконання операцій OMR

Aspose.OMR for Java – це API оптичного розпізнавання позначок, який може виконувати операції OMR над PNG, GIF, JPEG, TIFF, тощо зображення. API також підтримує створення шаблонів OMR. Ви можете завантажити API безпосередньо з розділу завантажень або встановити його за допомогою наведеної нижче конфігурації 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>

Створіть шаблон OMR і зображення аркуша відповідей за допомогою Java

У цьому розділі ви дізнаєтеся, як створювати файли шаблонів OMR і зображення аркуша відповідей за допомогою простої текстової розмітки. Ми збережемо текстову розмітку у файлі TXT і використаємо її в коді Java для створення шаблону OMR. Нижче наведено текстову розмітку, яку ми будемо використовувати в цьому прикладі для створення шаблону 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________________________________

Тепер, коли у нас готова текстова розмітка, ми виконаємо кроки, наведені нижче, щоб створити шаблон OMR.

У наведеному нижче прикладі коду показано, як створити шаблон OMR за допомогою текстової розмітки за допомогою Java.

// Шляхи вихідного та вихідного каталогу
String sourceDirectory = "SourceDirectory\\OMR\\Generation\\";
String outputDirectory = "OutputDirectory\\";

// Створіть екземпляр класу OmrEngine
OmrEngine engine = new OmrEngine();

// Створіть шаблон за допомогою текстової розмітки
GenerationResult res = engine.generateTemplate(sourceDirectory + "Grid.txt");

// Перевірте на випадок помилок
if (res.getErrorCode() != 0)
{
    System.out.println("ERROR CODE: " + res.getErrorCode());
}

// Збережіть результат генерації: зображення та шаблон .omr
res.save(outputDirectory, "Grid");

Наведений вище код створить файл шаблону OMR і зображення бланка відповідей. Нижче наведено зображення сформованого аркуша відповідей.

Зображення бланка відповідей, згенерованого зразком коду

Зображення бланка відповідей, згенерованого зразком коду

Виконайте операцію OMR на бульбашкових аркушах відповідей за допомогою Java

Після того, як ви зібрали відповіді на створеному аркуші відповідей, ви можете захопити їхні зображення, а потім виконати над ними операції OMR. У цьому прикладі ми виконаємо операцію OMR на двох зображеннях; перший показаний нижче.

Нижче наведено кроки для виконання операції OMR на зображеннях.

Наведений нижче приклад коду показує, як виконувати операцію OMR над зображеннями за допомогою Java.

// Шляхи вихідного та вихідного каталогу
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" };

// Створіть екземпляр класу OmrEngine
OmrEngine engine = new OmrEngine();

// Завантажте файл шаблону
TemplateProcessor templateProcessor = engine.getTemplateProcessor(sourceDirectory + "Sheet.omr");
System.out.println("Template loaded.");

// Переглядайте зображення
for (int i = 0; i < UserImages.length; i++) {

    // Розпізнайте зображення та отримайте результат
    RecognitionResult result = templateProcessor.recognizeImage(sourceDirectory + UserImages[i]);

    // Експортувати результати як рядок CSV
    String csvResult = result.getCsv();

    // Збережіть csv у вихідну папку
    PrintWriter wr = new PrintWriter(new FileOutputStream(outputDirectory + UserImagesNoExt[i] + ".csv"), true);
    wr.println(csvResult);
}

Нижче наведено вихідні дані CSV для першого зображення, створеного вищенаведеним кодом.

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" 

Отримайте безкоштовну ліцензію

Ви можете спробувати API без обмежень щодо оцінювання, надіславши запит на безкоштовну тимчасову ліцензію.

Висновок

У цій статті ви дізналися, як створювати шаблони OMR і зображення бланків відповідей за допомогою Java. Крім того, ви навчилися виконувати операції OMR над зображеннями та отримувати результат у форматі CSV. Aspose.OMR for Java — це надійний API для ваших завдань, пов’язаних з OMR, який ви можете детально вивчити, відвідавши офіційну документацію. Якщо у вас виникли запитання щодо будь-якого аспекту API, зв’яжіться з нами на нашому безкоштовному форумі підтримки.

Дивись також