Виявлення та витяг позначених ділянок зі сканованих листів за допомогою Python

Безкоштовний OMR‑двигун з відкритим кодом на Python, який підтримує обробку OMR. Він підтримує обробку OMR‑листів, виявлення за шаблоном та обробку багатосторінкових форм тощо.

Що таке PyOMR Library?

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

PyOMR — це OMR‑двигун на базі Python, призначений для виявлення заповнених позначок у заздалегідь визначених формах, таких як аркуші тестів з варіантними питаннями (MCQ) або відповіді на опитування. Він використовує бібліотеки, такі як OpenCV, для обробки зображень і надає систему на основі шаблонів для визначення очікуваних областей позначок на аркуші. Незалежно від того, чи ви розробник програмного забезпечення, який створює систему оцінювання, викладач, який автоматизує оцінювання тестів, чи організація, що збирає дані опитувань, PyOMR дозволяє інтегрувати функціональність OMR безпосередньо у ваш додаток. Завдяки підходу на основі шаблонів, виявленню за допомогою OpenCV та повній скриптованості, це ідеальний вибір для розробників, які хочуть створювати інструменти автоматичної обробки форм без використання сторонніх сервісів.

Previous Next

Початок роботи з PyOMR

Рекомендований спосіб встановлення бібліотеки PyOMR — використання GitHub. Будь ласка, скористайтеся наступною командою для плавної інсталяції

Встановити бібліотеку PyOMR через GitHub

 git clone https://github.com/pattyjogal/pyomr.git
cd pyomr
 

Встановити підтримувані бібліотеки через GitHub

 pip install opencv-python numpy 

Ви можете завантажити бібліотеку безпосередньо з GitHub

Автоматичне попереднє оброблення зображень за допомогою Python

• Відкрита бібліотека PyOMR включає повну підтримку автоматичної обробки зображень у Python‑застосунках. Бібліотека містить вбудовані функції для вирівнювання (Deskewing) з метою виправлення нахилених сканів, порогової обробки (Thresholding) для перетворення в чорно‑біле з метою кращого розпізнавання позначок та видалення шуму для підвищення точності при скануванні низької якості. Крім того, інструмент дозволяє справлятися з типовими проблемами сканованих форм, такими як нерівномірне освітлення, низький контраст або незначне зміщення. Нижче наведено приклад коду, який показує, як обробляти зображення у Python‑застосунках.

Як обробити зображення у Python‑додатках?

from omr import omr_engine

# File paths
template_path = "config.json"
image_path = "answer_sheet.jpg"

# Run the OMR process
results = omr_engine.process_image(image_path, template_path)

# Output the results
for i, response in enumerate(results, 1):
    print(f"Q{i}: {response if response else 'No mark detected'}")

Виявлення на основі шаблонів за допомогою Python

PyOMR використовує JSON‑шаблон для визначення розташування вашого листа відповідей. Це включає кількість питань, кількість варіантів на питання, початкову позицію першої бульбашки, відстані між рядками та стовпцями і розміри бульбашок. Це робить систему надзвичайно гнучкою та повторно використовуваною в різних макетах. Ось простий приклад, який показує, як створити JSON‑шаблон для вказання позицій бульбашок за допомогою бібліотеки Python.

Як створити шаблон JSON для вказання позицій бульбашок & Завантажити його за допомогою Python?

{
  "bubbles": [
    {"question": "Q1", "options": ["A", "B", "C", "D"], "coords": [100, 150, 30, 30]},
    {"question": "Q2", "options": ["A", "B", "C", "D"], "coords": [100, 200, 30, 30]}
  ],
  "reference_marks": [[50, 50], [500, 50], [50, 700]]
}
#Load template
omr.load_template("template.json")

Обробка багатосторінкових форм за допомогою Python

Бібліотека PyOMR включає підтримку обробки багатосторінкових форм у Python‑додатках. Незалежно від того, чи обробляються односторінкові листи відповідей, чи багатосторінкові опитування, PyOMR можна налаштувати для роботи з різними макетами. Рекомендується для багатосторінкових форм обробляти кожну сторінку окремо: наступний приклад коду показує, як розробники програмного забезпечення можуть працювати з багатосторінковими формами у Python‑додатках.

Як обробляти багатосторінкові форми за допомогою бібліотеки Python?

# for multi-page forms, process each page separately:

for page in omr.multi_page_scan("multi_page_form.pdf"):
    page.preprocess()
    answers = page.read_answers()
    print(answers)

Обробка шуму та попереднє оброблення

Відкрита бібліотека PyOMR забезпечує повну підтримку попередньої обробки зображень та усунення шуму у Python‑додатках. Бібліотека включає попередню обробку зображень, таку як перетворення в градації сірого, порогова обробка та виявлення контурів, щоб надійно розпізнавати позначки — навіть при шумних сканах або недосконалому друку.

 Українська