1. 제품
  2.   OMR
  3.   Python
  4.   PyOMR
 
  

파이썬을 통해 스캔된 시트에서 표시된 영역 감지 및 추출

오픈 소스 무료 파이썬 기반 OMR 엔진으로 OMR 처리를 지원합니다. OMR 시트 처리, 템플릿 기반 감지 및 다중 페이지 양식 처리 등을 지원합니다.

PyOMR 라이브러리는 무엇인가요?

광학 마크 인식(OMR)은 설문조사, 시험, 투표용지와 같은 문서에서 사람이 표시한 데이터를 캡처하는 강력한 기술입니다. 상용 OMR 솔루션이 존재하지만, 무료 오픈소스 대안을 찾는 개발자는 OMR 처리를 위해 설계된 파이썬 라이브러리인 PyOMR을 활용할 수 있습니다. pattyjogal이 개발한 PyOMR은 간단한 파이썬 코드와 표준 이미지 처리 기술을 사용하여 스캔된 양식에서 표시된 버블을 감지하도록 소프트웨어 개발자를 지원합니다. 이 라이브러리는 스캔된 시트에서 표시된 영역을 감지하고 추출하며, 객관식 양식, 설문조사 및 평가를 처리하고 다양한 사용 사례에 맞게 OMR 템플릿을 맞춤 설정하는 기능을 지원합니다.

PyOMR은 MCQ 시험지나 설문 응답과 같은 미리 정의된 양식에서 채워진 표시를 감지하도록 설계된 파이썬 기반 OMR 엔진입니다. 이미지 처리를 위해 OpenCV와 같은 라이브러리를 활용하고, 양식에서 예상되는 표시 영역을 정의하는 템플릿 기반 시스템을 제공합니다. 채점 시스템을 구축하는 소프트웨어 개발자이든, 시험 평가를 자동화하는 교사이든, 설문 데이터를 수집하는 조직이든, PyOMR은 OMR 기능을 직접 애플리케이션에 연결할 수 있게 해줍니다. 템플릿 기반 접근 방식, OpenCV 기반 감지 및 완전한 스크립트 가능성을 갖춘 PyOMR은 타사 서비스에 의존하지 않고 자동 양식 처리 도구를 만들고자 하는 개발자에게 이상적인 선택입니다.

Previous Next

PyOMR 시작하기

PyOMR 라이브러리를 설치하는 권장 방법은 GitHub를 이용하는 것입니다. 원활한 설치를 위해 다음 명령을 사용하십시오.

GitHub를 통해 PyOMR 라이브러리 설치

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

GitHub를 통해 지원 라이브러리 설치

 pip install opencv-python numpy 

라이브러리를 직접 GitHub에서 다운로드할 수 있습니다.

Python을 통한 자동 이미지 전처리

• 오픈 소스 PyOMR 라이브러리는 파이썬 애플리케이션 내에서 자동 이미지 처리를 완벽히 지원합니다. 이 라이브러리는 기울어진 스캔을 교정하는 Deskewing 기능, 마크 인식을 위한 흑백 변환을 위한 Thresholding 기능, 저품질 스캔의 정확도를 높이는 노이즈 제거 기능을 내장하고 있습니다. 또한 조명 불균형, 낮은 대비, 약간의 정렬 오류와 같은 스캔된 양식의 일반적인 문제들을 처리할 수 있습니다. 다음 코드 예제는 파이썬 애플리케이션에서 이미지를 처리하는 방법을 보여줍니다.

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 템플릿을 만드는 간단한 예시입니다.

버블 위치를 지정하는 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 애플리케이션 내에서 이미지 전처리 및 노이즈 처리를 완벽하게 지원합니다. 이 라이브러리는 그레이스케일 변환, 임계값 설정, 컨투어 감지와 같은 이미지 전처리를 포함하여, 잡음이 많은 스캔이나 인쇄가 불완전한 경우에도 표시를 신뢰성 있게 식별합니다.

 한국인