Откриване и извличане на маркирани области от сканирани листове чрез Python

Отворен безплатен OMR двигател, базиран на Python, който поддържа OMR обработка. Той поддържа обработка на OMR листове, откриване въз основа на шаблони и работа с многостранни формуляри и др.

Какво е PyOMR Librar?

Оптичното разпознаване на марки (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 приложения. Библиотеката включва предварителна обработка на изображения като конвертиране в нюанси на сивото, прагово разделяне и откриване на контури, за да идентифицира маркировките надеждно — дори при шумни сканирания или несъвършено печатане.

 Български