
Огляд
Оптичне розпізнавання позначок (OMR) - це електронний процес, який полегшує читання та захоплення даних, позначених людьми на спеціально розроблених формах документів, таких як тести або опитування, які містять бульбашкові або квадратні вводи, заповнені користувачами. Використовуючи витяг даних з зображень у Java, ми можемо ефективно обробляти відскановані зображення цих форм опитувань, анкет або тестових аркушів, що робить можливим програмне читання введень користувачів. Ця стаття проведе вас через те, як виконати OMR та витягти дані з зображень за допомогою Java.
У цій статті будуть розглянуті наступні теми:
- Java OMR API для витягнення даних з зображення
- Витяг даних з зображень у Java
- Виконати OMR та витягти дані з кількох зображень
- Витяг даних OMR з порогом
- Витяг даних OMR з перерахунком
Java OMR API для витягнення даних з зображення
Щоб виконати OMR операції та витягнення даних з зображень у Java, ми будемо використовувати Aspose.OMR для Java API. Цей потужний інструмент дозволяє проектувати, створювати та розпізнавати аркуші відповідей, тести, MCQ документи, вікторини, форми відгуків, опитування та бюлетені.
Клас OmrEngine у API відповідає за створення шаблонів та обробку зображень. Його метод getTemplateProcessor(String templatePath) ініціалізує екземпляр TemplateProcessor, який призначено для обробки шаблонів та зображень. Щоб розпізнати зображення, можна використовувати метод recognizeImage(String imagePath), який повертає всі елементи OMR у вигляді екземпляра класу RecognitionResult. Використовуючи метод getCsv(), ви можете згенерувати рядок CSV, що містить результати розпізнавання. Додатково, метод recalculate(RecognitionResult result, int recognitionThreshold) уточнює результати розпізнавання із настроюваними параметрами.
Будь ласка, або завантажте JAR API, або додайте наступну конфігурацію pom.xml у Java-додатку на базі Maven.
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-omr</artifactId>
<version>19.12</version>
</dependency>
Витяг даних з зображень у Java
Щоб виконати OMR операцію, нам потрібен підготовлений файл шаблону OMR (.omr) та зображення заповнених форм користувачами або аркушів. Процес витягнення даних з зображень у Java, зокрема, за допомогою OMR операцій, включає такі кроки:
- Спочатку створіть екземпляр класу OmrEngine.
- Далі викликайте метод getTemplateProcessor() та ініціалізуйте об’єкт класу TemplateProcessor, передавши шлях до файлу шаблону OMR як аргумент.
- Потім отримайте об’єкт RecognitionResult, викликавши метод recognizeImage() з шляхом до зображення як аргументом.
- Після цього отримайте результати розпізнавання у вигляді рядків CSV, використовуючи метод getCsv().
- Нарешті, збережіть результат CSV як файл CSV на локальному диску.
Наступний кодовий приклад демонструє, як виконати витяг даних з зображень у Java, перетворивши дані OMR у формат CSV.
// This code example demonstrates how to perform OMR on an image and extract data | |
// OMR Template file path | |
String templatePath = "C:\\Files\\OMR\\Sheet.omr"; | |
// Image file path | |
String imagePath = "C:\\Files\\OMR\\Sheet1.png"; | |
// Initialize OMR Engine | |
OmrEngine engine = new OmrEngine(); | |
// Get template processor | |
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath); | |
// Recognize image | |
RecognitionResult result = templateProcessor.recognizeImage(imagePath); | |
// Get results in CSV | |
String csvResult = result.getCsv(); | |
// Save CSV file | |
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1.csv"), true); | |
wr.println(csvResult); |

Виконати OMR та витягти дані з зображення у Java.
Будь ласка, завантажте шаблон OMR, використаний у цьому блозі.
Виконати OMR та витягти дані з кількох зображень
Ми можемо виконати OMR операції на кількох зображеннях та витягнути дані у окремий файл CSV для кожного з них, використовуючи кроки, описані раніше. Щоб виконати витяг даних з зображень у Java, необхідно повторити кроки 3, 4 та 5 для всіх зображень окремо.
Нижче наведено кодовий приклад, що демонструє, як витягти дані OMR з кількох зображень за допомогою Java.
// This code example demonstrates how to perform OMR on multiple images and extract data | |
// Working folder path | |
String folderPath = "C:\\Files\\OMR\\"; | |
// OMR Template file path | |
String templatePath = folderPath + "Sheet.omr"; | |
// Image file path | |
String[] UserImages = new String[] { "Sheet1.png", "Sheet2.png" }; | |
// Initialize OMR Engine | |
OmrEngine engine = new OmrEngine(); | |
// Get template processor | |
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath); | |
// Process images one by one in a loop | |
for (int i = 0; i < UserImages.length; i++) | |
{ | |
String image = UserImages[i]; | |
String imagePath = folderPath + image; | |
// Recognize image | |
RecognitionResult result = templateProcessor.recognizeImage(imagePath); | |
// Get results in CSV | |
String csvResult = result.getCsv(); | |
// Save CSV file | |
PrintWriter wr = new PrintWriter(new FileOutputStream(folderPath + "Sheet_" + i + ".csv"), true); | |
wr.println(csvResult); | |
System.out.println(csvResult); | |
} |
Витягнути дані OMR з порогом у Java
Щоб виконати операції оптичного розпізнавання позначок (OMR) у Java, ми використовуємо значення порогу від 0 до 100 на основі конкретних вимог. Це значення порогу, використане в витягненні даних з зображень у Java, визначає, наскільки суворо API буде підкреслювати відповіді; вищий показник підвищує строгість. Дотримання раніше зазначених кроків є важливим для OMR обробки з обраним порогом. Зокрема, на етапі #3 необхідно викликати метод recognizeImage(string, int32). Цей перевантажений метод вимагає шлях до файлу зображення та бажане значення порогу як параметри.
Наступний кодовий приклад демонструє, як виконати OMR з використанням значення порогу за допомогою Java:
// This code example demonstrates how to perform OMR with therashold and extract data from an image | |
// OMR Template file path | |
String templatePath = "C:\\Files\\OMR\\Sheet.omr"; | |
// Image file path | |
String imagePath = "C:\\Files\\OMR\\Sheet1.png"; | |
// Threshold value | |
int CustomThreshold = 40; | |
// Initialize OMR Engine | |
OmrEngine engine = new OmrEngine(); | |
// Get template processor | |
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath); | |
// Recognize image | |
RecognitionResult result = templateProcessor.recognizeImage(imagePath, CustomThreshold); | |
// Get results in CSV | |
String csvResult = result.getCsv(); | |
// Save CSV file | |
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1_threshold.csv"), true); | |
wr.println(csvResult); | |
System.out.println(csvResult); |
Витягнути дані OMR з перерахунком у Java
Коли справа доходить до точного витягнення даних з зображень у Java, особливо щодо OMR, може виникнути необхідність перерахувати результати, використовуючи різні значення порогу. Налаштувавши API, перерахунок можна автоматизувати через метод TemplateProcessor.recalculate(). Цей підхід дозволяє проводити кілька ітерацій обробки зображень, налаштовуючи поріг, поки не буде досягнуто бажаного результату. Щоб успішно виконати OMR операцію з перерахунком, дотримуйтесь наступних кроків:
- Спочатку створіть екземпляр класу OmrEngine.
- Далі викликайте метод getTemplateProcessor() та ініціалізуйте об’єкт класу TemplateProcessor. Він приймає шлях до файлу шаблону OMR як аргумент.
- Потім отримайте об’єкт RecognitionResult, викликавши метод recognizeImage() з шляхом до зображення як аргументом.
- Далі експортуйте результати розпізнавання як рядок CSV, використовуючи метод getCsv().
- Потім збережіть результат CSV як файл CSV на локальному диску.
- Далі викликайте метод recalculate(). Він приймає об’єкт RecognitionResult та значення порогу як аргументи.
- Після цього експортуйте результати розпізнавання як рядок CSV, використовуючи метод getCsv().
- Нарешті, збережіть результат CSV як файл CSV на локальному диску.
Наступний кодовий приклад демонструє як виконати OMR з методом перерахунку за допомогою Java:
// OMR Template file path | |
String templatePath = "C:\\Files\\OMR\\Sheet.omr"; | |
// Image file path | |
String imagePath = "C:\\Files\\OMR\\Sheet1.png"; | |
// Threshold value | |
int CustomThreshold = 40; | |
// Initialize OMR Engine | |
OmrEngine engine = new OmrEngine(); | |
// Get template processor | |
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath); | |
// Recognize image | |
RecognitionResult result = templateProcessor.recognizeImage(imagePath, CustomThreshold); | |
// Get results in CSV | |
String csvResult = result.getCsv(); | |
// Save CSV file | |
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1.csv"), true); | |
wr.println(csvResult); | |
// Recalculate | |
// You may apply new threshold value here | |
templateProcessor.recalculate(result, CustomThreshold); | |
// Get recalculated results in CSV | |
csvResult = result.getCsv(); | |
// Save recalculated resultant CSV file | |
PrintWriter finalWr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1_recalculated.csv"), true); | |
finalWr.println(csvResult); |
Отримати безкоштовну ліцензію
У вас є можливість отримати безкоштовну тимчасову ліцензію для тестування бібліотеки без обмежень на оцінку. Це чудовий спосіб дослідити такі функції, як витяг даних з зображень у Java, дозволяючи вам повністю оцінити її можливості. Список даних нижче залишається незмінним для вашої зручності:
- Бібліотека працює ефективно з великими обсягами даних.
- Інтеграція з існуючими системами безперебійна.
- Витягнуті дані є дуже точними та надійними.
- Кроки з установки є простими та добре задокументованими.
Висновок
У цій статті ми дізналися, як:
- виконати OMR операцію на зображеннях;
- програмно витягати дані у формат CSV;
- застосовувати налаштування порогу під час виконання OMR на зображеннях;
- перераховувати результати OMR у автоматизованому процесі за допомогою Java.
Додатково, коли справа доходить до витягнення даних з зображень у Java, ви можете дізнатися більше про API Aspose.OMR для Java, переглянувши документацію. Якщо у вас виникнуть будь-які проблеми, будь ласка, не соромтеся звертатися до нас на нашому безкоштовному форумі підтримки.