Обнаружение и извлечение отмеченных областей со сканированных листов с помощью Python
Открытый бесплатный OMR‑движок на Python, поддерживающий обработку OMR. Он поддерживает обработку листов OMR, детекцию на основе шаблонов и работу с многостраничными формами и т.д.
Что такое PyOMR Librar?
Оптическое распознавание отметок (OMR) — мощная технология, используемая для захвата данных, отмеченных человеком, из документов, таких как опросы, тесты и бюллетени. Хотя существуют коммерческие решения OMR, разработчики, ищущие бесплатную открытое‑исходную альтернативу, могут воспользоваться PyOMR, библиотекой Python, предназначенной для обработки OMR. Разработанная pattyjogal, PyOMR позволяет разработчикам программного обеспечения обнаруживать отмеченные пузырьки на отсканированных формах с помощью простого кода Python и стандартных методов обработки изображений. Она поддерживает обнаружение и извлечение отмеченных областей со сканированных листов, обработку форм с множественным выбором, опросов и оценок, а также настройку шаблонов OMR для различных сценариев использования.
PyOMR — это основанный на Python движок OMR, предназначенный для обнаружения заполненных отметок на предопределённых формах, таких как листы тестов с множественным выбором (MCQ) или ответы на опросы. Он использует библиотеки, такие как OpenCV, для обработки изображений и предоставляет систему на основе шаблонов для определения ожидаемых областей отметок на листе. Будь вы разработчиком программного обеспечения, создающим систему оценивания, учителем, автоматизирующим проверку тестов, или организацией, собирающей данные опросов, PyOMR позволяет интегрировать функциональность OMR непосредственно в ваше приложение. Благодаря шаблонному подходу, обнаружению на базе OpenCV и полной скриптируемости, это идеальный выбор для разработчиков, желающих создавать инструменты автоматической обработки форм без обращения к сторонним сервисам.
Начало работы с 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‑приложений. Библиотека включает предобработку изображений, такую как преобразование в градации серого, пороговая обработка и обнаружение контуров, чтобы надёжно определять отметки — даже при шумных сканах или неидеальной печати.