Витяг даних з зображень у Java

Огляд

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

У цій статті будуть розглянуті наступні теми:

  1. Java OMR API для витягнення даних з зображення
  2. Витяг даних з зображень у Java
  3. Виконати OMR та витягти дані з кількох зображень
  4. Витяг даних OMR з порогом
  5. Витяг даних 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 операцій, включає такі кроки:

  1. Спочатку створіть екземпляр класу OmrEngine.
  2. Далі викликайте метод getTemplateProcessor() та ініціалізуйте об’єкт класу TemplateProcessor, передавши шлях до файлу шаблону OMR як аргумент.
  3. Потім отримайте об’єкт RecognitionResult, викликавши метод recognizeImage() з шляхом до зображення як аргументом.
  4. Після цього отримайте результати розпізнавання у вигляді рядків CSV, використовуючи метод getCsv().
  5. Нарешті, збережіть результат 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);
Extract-Data-from-an-Image-in-Java

Виконати 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 операцію з перерахунком, дотримуйтесь наступних кроків:

  1. Спочатку створіть екземпляр класу OmrEngine.
  2. Далі викликайте метод getTemplateProcessor() та ініціалізуйте об’єкт класу TemplateProcessor. Він приймає шлях до файлу шаблону OMR як аргумент.
  3. Потім отримайте об’єкт RecognitionResult, викликавши метод recognizeImage() з шляхом до зображення як аргументом.
  4. Далі експортуйте результати розпізнавання як рядок CSV, використовуючи метод getCsv().
  5. Потім збережіть результат CSV як файл CSV на локальному диску.
  6. Далі викликайте метод recalculate(). Він приймає об’єкт RecognitionResult та значення порогу як аргументи.
  7. Після цього експортуйте результати розпізнавання як рядок CSV, використовуючи метод getCsv().
  8. Нарешті, збережіть результат 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, дозволяючи вам повністю оцінити її можливості. Список даних нижче залишається незмінним для вашої зручності:

  1. Бібліотека працює ефективно з великими обсягами даних.
  2. Інтеграція з існуючими системами безперебійна.
  3. Витягнуті дані є дуже точними та надійними.
  4. Кроки з установки є простими та добре задокументованими.

Висновок

У цій статті ми дізналися, як:

  • виконати OMR операцію на зображеннях;
  • програмно витягати дані у формат CSV;
  • застосовувати налаштування порогу під час виконання OMR на зображеннях;
  • перераховувати результати OMR у автоматизованому процесі за допомогою Java.

Додатково, коли справа доходить до витягнення даних з зображень у Java, ви можете дізнатися більше про API Aspose.OMR для Java, переглянувши документацію. Якщо у вас виникнуть будь-які проблеми, будь ласка, не соромтеся звертатися до нас на нашому безкоштовному форумі підтримки.

Дивіться також