Mengesan & Mengekstrak Kawasan Bertanda dari Lembaran Imbas melalui Python
Enjin OMR percuma berasaskan Python sumber terbuka yang menyokong pemprosesan OMR. Ia menyokong pemprosesan Lembaran OMR, Pengesanan Berasaskan Templat & Pengendalian Borang Berbilang Halaman, dan sebagainya.
Apakah PyOMR Library?
Pengiktirafan Tanda Optik (OMR) ialah teknologi yang kuat digunakan untuk menangkap data yang ditandakan oleh manusia daripada dokumen seperti tinjauan, ujian, dan undi. Walaupun terdapat penyelesaian OMR komersial, pemaju yang mencari alternatif percuma dan sumber terbuka boleh memanfaatkan PyOMR, sebuah perpustakaan Python yang direka untuk pemprosesan OMR. Dibangunkan oleh pattyjogal, PyOMR membolehkan pemaju perisian mengesan gelembung yang ditandakan pada borang yang diimbas menggunakan kod Python yang mudah dan teknik pemprosesan imej standard. Ia menyokong pengesanan dan pengekstrakan kawasan yang ditandakan daripada helaian yang diimbas, memproses borang pilihan berganda, tinjauan, dan penilaian serta menyesuaikan templat OMR untuk pelbagai kes penggunaan.
PyOMR ialah enjin OMR berasaskan Python yang direka untuk mengesan tanda yang diisi pada borang pra-tetapkan, seperti helaian ujian MCQ atau respons tinjauan. Ia memanfaatkan perpustakaan seperti OpenCV untuk pemprosesan imej dan menyediakan sistem berasaskan templat untuk menentukan kawasan tanda yang dijangka pada helaian. Sama ada anda seorang pembangun perisian yang membina sistem penilaian, seorang guru yang mengautomasi penilaian ujian, atau sebuah organisasi yang mengumpul data tinjauan, PyOMR membolehkan anda menyambungkan fungsi OMR secara langsung ke dalam aplikasi anda. Dengan pendekatan berasaskan templat, pengesanan berkuasa OpenCV, dan kebolehskripan penuh, ia merupakan pilihan ideal bagi pembangun yang ingin membina alat pemprosesan borang automatik tanpa bergantung pada perkhidmatan pihak ketiga.
Mula Menggunakan PyOMR
Cara yang disyorkan untuk memasang Perpustakaan PyOMR ialah menggunakan GitHub. Sila gunakan perintah berikut untuk pemasangan yang lancar
Pasang Perpustakaan PyOMR melalui GitHub
git clone https://github.com/pattyjogal/pyomr.git
cd pyomr
Pasang Perpustakaan yang Disokong melalui GitHub
pip install opencv-python numpy Anda boleh memuat turun perpustakaan secara langsung dari GitHub
Pra-pemprosesan Imej Automatik melalui Python
• Pustaka sumber terbuka PyOMR telah menyertakan sokongan lengkap untuk pemprosesan imej automatik dalam aplikasi Python. Pustaka ini menyertakan fungsi terbina dalam untuk Penyesuaian (Deskewing) bagi membetulkan imbasan yang condong, Penapisan (Thresholding) untuk menukar kepada hitam putih bagi pengesanan tanda yang lebih baik dan penyingkiran hingar untuk meningkatkan ketepatan dalam imbasan berkualiti rendah. Selain itu, ia membolehkan alat ini menangani isu umum dalam borang yang diimbas seperti ketidakkonsistenan pencahayaan, kontras rendah, atau penyelarasan kecil. Contoh kod berikut menunjukkan cara memproses imej dalam aplikasi Python.
Bagaimana Memproses Imej dalam Aplikasi 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'}")
Pengesanan Berasaskan Templat melalui Python
PyOMR menggunakan templat JSON untuk menentukan susun atur helaian jawapan anda. Ini termasuk bilangan soalan, bilangan pilihan bagi setiap soalan, kedudukan permulaan gelembung pertama, jarak antara baris dan lajur serta dimensi gelembung. Ini menjadikan sistem sangat fleksibel dan boleh digunakan semula merentasi susun atur yang berbeza. Berikut ialah contoh mudah yang menunjukkan cara membuat templat JSON untuk menentukan kedudukan gelembung menggunakan pustaka Python.
Bagaimana Membuat Templat JSON untuk menentukan Kedudukan Gelembung & Memuatkannya melalui 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")
Pengendalian Borang Berbilang Halaman melalui Python
Pustaka PyOMR menyertakan sokongan untuk mengendalikan borang berbilang halaman dalam aplikasi Python. Sama ada memproses helaian jawapan satu halaman atau tinjauan berbilang halaman, PyOMR boleh dikonfigurasikan untuk mengendalikan susun atur yang berbeza. Disarankan untuk borang berbilang halaman, proses setiap halaman secara berasingan: Contoh kod berikut menunjukkan bagaimana pembangun perisian dapat mengendalikan borang berbilang halaman dalam aplikasi Python.
Bagaimana Mengendalikan Borang Berbilang Halaman melalui Perpustakaan 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)
Pengendalian Hingar dan Pra-pemprosesan
Pustaka sumber terbuka PyOMR telah menyediakan sokongan lengkap untuk pra-pemprosesan imej dan pengendalian hingar dalam aplikasi Python. Pustaka ini termasuk pra-pemprosesan imej seperti penukaran skala kelabu, penapisan ambang, dan pengesanan kontur untuk mengenal pasti tanda dengan boleh dipercayai—walaupun dengan imbasan yang bising atau percetakan yang tidak sempurna.