Phát hiện & Trích xuất các vùng được đánh dấu từ các tờ quét bằng Python

Engine OMR miễn phí dựa trên Python mã nguồn mở hỗ trợ xử lý OMR. Nó hỗ trợ xử lý các tờ OMR, phát hiện dựa trên mẫu và xử lý các biểu mẫu đa trang, v.v.

PyOMR là gì?

Nhận dạng Dấu hiệu Quang học (OMR) là một công nghệ mạnh mẽ được sử dụng để thu thập dữ liệu được người dùng đánh dấu từ các tài liệu như khảo sát, bài kiểm tra và phiếu bầu. Mặc dù đã có các giải pháp OMR thương mại, các nhà phát triển đang tìm kiếm một giải pháp miễn phí, mã nguồn mở có thể tận dụng PyOMR, một thư viện Python được thiết kế cho việc xử lý OMR. Được phát triển bởi pattyjogal, PyOMR cho phép các nhà phát triển phần mềm phát hiện các ô đánh dấu trên các mẫu quét bằng mã Python đơn giản và các kỹ thuật xử lý ảnh tiêu chuẩn. Nó hỗ trợ việc phát hiện và trích xuất các khu vực đã đánh dấu từ các tờ quét, xử lý các biểu mẫu trắc nghiệm, khảo sát và đánh giá, cũng như tùy chỉnh các mẫu OMR cho nhiều trường hợp sử dụng khác nhau.

PyOMR là một công cụ OMR dựa trên Python được thiết kế để phát hiện các dấu đã điền trên các mẫu biểu định trước, chẳng hạn như phiếu kiểm tra trắc nghiệm (MCQ) hoặc phản hồi khảo sát. Nó tận dụng các thư viện như OpenCV để xử lý ảnh và cung cấp một hệ thống dựa trên mẫu để định nghĩa các vùng dấu mong đợi trên phiếu. Dù bạn là nhà phát triển phần mềm xây dựng hệ thống chấm điểm, giáo viên tự động hoá việc đánh giá bài kiểm tra, hay một tổ chức thu thập dữ liệu khảo sát, PyOMR cho phép bạn tích hợp chức năng OMR trực tiếp vào ứng dụng của mình. Với cách tiếp cận dựa trên mẫu, phát hiện nhờ OpenCV và khả năng lập trình đầy đủ, đây là lựa chọn lý tưởng cho các nhà phát triển muốn xây dựng công cụ xử lý biểu mẫu tự động mà không phụ thuộc vào dịch vụ của bên thứ ba.

Previous Next

Bắt đầu với PyOMR

Cách khuyến nghị để cài đặt Thư viện PyOMR là sử dụng GitHub. Vui lòng sử dụng lệnh sau để cài đặt một cách suôn sẻ

Cài đặt Thư viện PyOMR qua GitHub

 git clone https://github.com/pattyjogal/pyomr.git
cd pyomr
 

Cài đặt các Thư viện Hỗ trợ qua GitHub

 pip install opencv-python numpy 

Bạn có thể tải thư viện trực tiếp từ GitHub

Tiền xử lý ảnh tự động bằng Python

• Thư viện mã nguồn mở PyOMR đã bao gồm hỗ trợ đầy đủ cho việc xử lý ảnh tự động trong các ứng dụng Python. Thư viện này cung cấp các hàm tích hợp cho Deskewing để sửa các bản quét lệch, Thresholding để chuyển sang đen trắng nhằm phát hiện dấu hiệu tốt hơn và loại bỏ nhiễu để cải thiện độ chính xác trong các bản quét chất lượng thấp. Hơn nữa, nó cho phép công cụ xử lý các vấn đề thường gặp trong mẫu quét như không đồng nhất ánh sáng, độ tương phản thấp, hoặc lệch nhẹ. Ví dụ mã sau cho thấy cách xử lý ảnh trong các ứng dụng Python.

Cách Xử lý Hình ảnh trong Ứng dụng 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'}")

Phát hiện dựa trên mẫu bằng Python

PyOMR sử dụng mẫu JSON để định nghĩa bố cục của phiếu trả lời của bạn. Điều này bao gồm số câu hỏi, số lựa chọn cho mỗi câu hỏi, vị trí bắt đầu của bong bóng đầu tiên, khoảng cách giữa các hàng và cột và kích thước bong bóng. Điều này làm cho hệ thống rất linh hoạt và có thể tái sử dụng cho các bố cục khác nhau. Dưới đây là một ví dụ đơn giản cho thấy cách tạo mẫu JSON để chỉ định vị trí các bong bóng bằng thư viện Python.

Cách Tạo Mẫu JSON để chỉ định Vị trí Bóng và Tải nó qua 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")

Xử lý biểu mẫu đa trang bằng Python

Thư viện PyOMR đã bao gồm hỗ trợ xử lý các biểu mẫu đa trang trong ứng dụng Python. Cho dù xử lý phiếu trả lời một trang hay các khảo sát đa trang, PyOMR có thể được cấu hình để xử lý các bố cục khác nhau. Đối với các biểu mẫu đa trang, nên xử lý mỗi trang riêng biệt: Ví dụ mã sau đây cho thấy cách các nhà phát triển phần mềm có thể xử lý các biểu mẫu đa trang trong ứng dụng Python.

Cách Xử lý Các Biểu mẫu Nhiều Trang qua Thư viện 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)

Xử lý nhiễu và tiền xử lý

Thư viện mã nguồn mở PyOMR đã cung cấp hỗ trợ đầy đủ cho việc tiền xử lý hình ảnh và xử lý nhiễu trong các ứng dụng Python. Thư viện bao gồm các bước tiền xử lý hình ảnh như chuyển đổi sang thang xám, ngưỡng, và phát hiện đường viền để xác định các dấu hiệu một cách đáng tin cậy — ngay cả khi quét có nhiễu hoặc in ấn không hoàn hảo.

 Tiếng Việt