Wykryj i wyodrębnij zaznaczone obszary ze skanowanych arkuszy przy użyciu Pythona
Otwarto‑źródłowy, darmowy silnik OMR oparty na Pythonie, który obsługuje przetwarzanie OMR. Wspiera przetwarzanie arkuszy OMR, wykrywanie oparte na szablonach oraz obsługę formularzy wielostronicowych i wiele innych.
Co to jest biblioteka PyOMR?
Rozpoznawanie znaków optycznych (OMR) to potężna technologia służąca do przechwytywania danych oznaczonych ręcznie na dokumentach, takich jak ankiety, testy i karty do głosowania. Choć istnieją komercyjne rozwiązania OMR, programiści poszukujący darmowej, otwarto‑źródłowej alternatywy mogą skorzystać z PyOMR, biblioteki Pythona przeznaczonej do przetwarzania OMR. Opracowana przez pattyjogal, PyOMR umożliwia programistom wykrywanie zaznaczonych bąbelków na zeskanowanych formularzach przy użyciu prostego kodu Pythona i standardowych technik przetwarzania obrazu. Obsługuje wykrywanie i wyodrębnianie zaznaczonych obszarów ze skanowanych arkuszy, przetwarzanie formularzy wielokrotnego wyboru, ankiet i ocen, a także dostosowywanie szablonów OMR do różnych zastosowań.
PyOMR to silnik OMR oparty na Pythonie, zaprojektowany do wykrywania wypełnionych znaków na zdefiniowanych formularzach, takich jak arkusze testowe MCQ czy odpowiedzi w ankietach. Wykorzystuje biblioteki takie jak OpenCV do przetwarzania obrazu i zapewnia system oparty na szablonach, umożliwiający określenie oczekiwanych obszarów znaków na arkuszu. Niezależnie od tego, czy jesteś programistą tworzącym system oceniania, nauczycielem automatyzującym ocenianie testów, czy organizacją zbierającą dane z ankiet, PyOMR pozwala włączyć funkcjonalność OMR bezpośrednio do Twojej aplikacji. Dzięki podejściu opartemu na szablonach, wykrywaniu zasilanemu OpenCV i pełnej skryptowalności, jest to idealny wybór dla deweloperów, którzy chcą budować zautomatyzowane narzędzia przetwarzania formularzy bez polegania na usługach zewnętrznych.
Rozpoczęcie pracy z PyOMR
Zalecanym sposobem instalacji biblioteki PyOMR jest użycie GitHub. Proszę użyć poniższego polecenia, aby przeprowadzić płynną instalację
Zainstaluj bibliotekę PyOMR za pośrednictwem GitHub
git clone https://github.com/pattyjogal/pyomr.git
cd pyomr
Zainstaluj obsługiwane biblioteki za pośrednictwem GitHub
pip install opencv-python numpy Możesz pobrać bibliotekę bezpośrednio z GitHub
Automatyczne przetwarzanie wstępne obrazu przy użyciu Pythona
• Biblioteka open source PyOMR zawiera pełne wsparcie dla automatycznego przetwarzania obrazów w aplikacjach Python. Biblioteka zawiera wbudowane funkcje prostowania (Deskewing) w celu korekcji przechylonych skanów, progowania (Thresholding) w celu konwersji do czerni i bieli dla lepszego wykrywania znaków oraz usuwania szumów w celu poprawy dokładności przy niskiej jakości skanach. Ponadto umożliwia narzędziu radzenie sobie z typowymi problemami w zeskanowanych formularzach, takimi jak niejednolitość oświetlenia, niski kontrast lub drobne niewyrównanie. Poniższy przykład kodu pokazuje, jak przetwarzać obrazy w aplikacjach Python.
Jak przetwarzać obraz w aplikacjach 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'}")
Wykrywanie oparte na szablonach przy użyciu Pythona
PyOMR używa szablonu JSON do określenia układu Twojej karty odpowiedzi. Obejmuje to liczbę pytań, liczbę opcji na pytanie, pozycję początkową pierwszej bąbelka, odstępy między wierszami i kolumnami oraz wymiary bąbelków. Dzięki temu system jest bardzo elastyczny i można go ponownie wykorzystać w różnych układach. Oto prosty przykład pokazujący, jak stworzyć szablon JSON określający pozycje bąbelków przy użyciu biblioteki Python.
Jak utworzyć szablon JSON określający pozycje bąbelków i wczytać go w Pythonie?
{
"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")
Obsługa formularzy wielostronicowych przy użyciu Pythona
Biblioteka PyOMR zawiera wsparcie dla obsługi formularzy wielostronicowych w aplikacjach Python. Niezależnie od tego, czy przetwarzasz jednosktronicowe arkusze odpowiedzi, czy wielostronicowe ankiety, PyOMR można skonfigurować do obsługi różnych układów. Zaleca się przy formularzach wielostronicowych przetwarzać każdą stronę osobno: Poniższy przykład kodu pokazuje, jak programiści mogą obsługiwać formularze wielostronicowe w aplikacjach Python.
Jak obsługiwać formularze wielostronicowe za pomocą biblioteki 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)
Radzenie sobie z szumem i przetwarzanie wstępne
Otwarta biblioteka PyOMR zapewnia pełne wsparcie przetwarzania obrazu i usuwania szumów w aplikacjach Python. Biblioteka zawiera przetwarzanie obrazu, takie jak konwersja do odcieni szarości, progowanie i wykrywanie konturów, aby niezawodnie identyfikować zaznaczenia — nawet przy zaszumionych skanach lub niedoskonałym druku.