Jelölt területek felismerése és kinyerése beolvasott lapokról Python segítségével
Nyílt forráskódú ingyenes Python-alapú OMR motor, amely támogatja az OMR feldolgozást. Támogatja az OMR lapok feldolgozását, sablon-alapú felismerést és többoldalas űrlapok kezelését, stb.
Mi a PyOMR könyvtár?
Az optikai jelölésfelismerés (OMR) egy hatékony technológia, amelyet emberi jelölésekkel ellátott adatok rögzítésére használnak olyan dokumentumokból, mint a felmérések, tesztek és szavazólapok. Bár kereskedelmi OMR megoldások léteznek, a fejlesztők, akik ingyenes, nyílt forráskódú alternatívát keresnek, a PyOMR-t használhatják, egy OMR feldolgozásra tervezett Python könyvtárat. A pattyjogal által fejlesztett PyOMR lehetővé teszi a szoftverfejlesztők számára, hogy egyszerű Python kóddal és szabványos képfeldolgozási technikákkal észleljék a beolvasott űrlapokon a megjelölt buborékokat. Támogatja a megjelölt területek felismerését és kinyerését a beolvasott lapokról, a többválaszos űrlapok, felmérések és értékelések feldolgozását, valamint az OMR sablonok testreszabását különféle felhasználási esetekhez.
A PyOMR egy Python-alapú OMR motor, amelyet előre definiált űrlapokon, például feleletválasztós tesztlapokon vagy felmérési válaszokon kitöltött jelölések felismerésére terveztek. Kihasználja az OpenCV-hez hasonló könyvtárakat képfeldolgozáshoz, és sablonalapú rendszert biztosít a várt jelölési területek meghatározásához az űrlapon. Akár szoftverfejlesztő vagy, aki értékelő rendszert épít, tanár, aki automatizálja a tesztek kiértékelését, vagy szervezet, amely felmérési adatokat gyűjt, a PyOMR lehetővé teszi, hogy az OMR funkciót közvetlenül az alkalmazásodba integráld. A sablonalapú megközelítés, az OpenCV-alapú detektálás és a teljes szkriptelhetőség miatt ideális választás azoknak a fejlesztőknek, akik automatizált űrlapfeldolgozó eszközöket szeretnének építeni harmadik fél szolgáltatások nélkül.
Első lépések a PyOMR-rel
A PyOMR könyvtár telepítésének ajánlott módja a GitHub használata. Kérjük, használd a következő parancsot a zökkenőmentes telepítéshez
Telepítse a PyOMR könyvtárat a GitHubon
git clone https://github.com/pattyjogal/pyomr.git
cd pyomr
Telepítse a támogatott könyvtárakat a GitHubon
pip install opencv-python numpy A könyvtárat közvetlenül letöltheted a GitHub oldalról
Automatikus képelőfeldolgozás Python segítségével
• Az nyílt forráskódú PyOMR könyvtár teljes támogatást nyújt az automatikus képfeldolgozáshoz Python alkalmazásokon belül. A könyvtár beépített funkciókat tartalmaz a ferde szkenek korrigálásához (Deskewing), a fekete-fehér konvertáláshoz (Thresholding) a jobb jelölésfelismerés érdekében, valamint a zajeltávolításhoz az alacsony minőségű szkenek pontosságának javítása céljából. Emellett lehetővé teszi az eszköz számára, hogy kezelje a beolvasott űrlapok gyakori problémáit, mint a megvilágítási eltérések, alacsony kontraszt vagy kisebb eltolódás. Az alábbi kódrészlet bemutatja, hogyan lehet képeket feldolgozni Python alkalmazásokban.
Hogyan dolgozzuk fel a képet Python alkalmazásokban?
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'}")
Sablon alapú detektálás Python segítségével
PyOMR egy JSON sablont használ a válaszlap elrendezésének meghatározásához. Ez magában foglalja a kérdések számát, kérdésenkénti lehetőségek számát, az első buborék kezdőpozícióját, a sorok és oszlopok közti távolságot, valamint a buborékok méreteit. Ez a rendszert rendkívül rugalmasá és újrahasználhatóvá teszi különböző elrendezések esetén. Itt egy egyszerű példa, amely bemutatja, hogyan lehet JSON sablont létrehozni a buborékpozíciók meghatározásához Python könyvtár használatával.
Hogyan hozzunk létre JSON sablont a buborékpozíciók megadásához, és töltsük be Pythonon keresztül?
{
"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")
Többoldalas űrlapok kezelése Python segítségével
A PyOMR könyvtár tartalmaz támogatást a többoldalas űrlapok kezelésére Python alkalmazáson belül. Akár egyoldalas válaszlapokat, akár többoldalas felméréseket dolgoz fel, a PyOMR konfigurálható különböző elrendezések kezelésére. Ajánlott a többoldalas űrlapok esetén minden oldalt külön feldolgozni: Az alábbi kódrészlet bemutatja, hogyan kezelhetik a szoftverfejlesztők a többoldalas űrlapokat Python alkalmazásokban.
Hogyan kezeljünk többoldalas űrlapokat a Python könyvtáron keresztül?
# 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)
Zajkezelés és előfeldolgozás
Az nyílt forráskódú PyOMR könyvtár teljes körű támogatást nyújt a képelőfeldolgozásra és a zajkezelésre Python alkalmazásokban. A könyvtár olyan képelőfeldolgozási funkciókat tartalmaz, mint a szürkeárnyalatos átalakítás, a küszöbölés és a kontúrdetektálás, amelyek megbízhatóan azonosítják a jelöléseket – még zajos beolvasások vagy hibás nyomtatás esetén is.