Skip to content

객체 인식과 OCR을 활용한 객관·단답식 시험지 채점 AI 소프트웨어 (Yolov8, EasyOCR, tamil-ocr used)

Notifications You must be signed in to change notification settings

Moment-Capture/Point-Checker-Server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

포인트_체커_대문



프로젝트 개요

문제 정의

✔ 종이 기반 시험(PBT)은 수기 채점이나 광학마크인식(OMR)을 활용하여 채점합니다.
✔ 수기 채점은 사람이 직접 채점하여 많은 인력과 시간이 소요되며 부정확합니다.
✔ OMR을 활용한 채점은 별도의 답안지 작성이 필요하여, 답안지 구매 비용을 부담해야 하고 단답식 문항은 채점할 수 없습니다.


솔루션

종이 시험지에 표시된 답안을 객체 인식과 OCR을 활용하여 자동으로 문항을 인식하고 채점하는 AI 채점 소프트웨어를 개발했습니다.


서비스 소개

시험지 양식 적용

시험지_양식_적용_화면

시험지_양식_예시_화면


  • 시험지 원본 파일을 입력받으면 시험지 양식이 적용된 파일을 반환합니다.

채점하기

채점하기_화면

  • 사용자는 시험 정보를 입력하고 응시한 시험지를 스캔한 파일(.pdf)과 답 파일(.xlsx)을 업로드 합니다.
  • ‘채점하기' 버튼을 통해 시험지 채점을 수행하여 채점 결과를 반환합니다.


채점 결과 확인하기

채점_결과_확인_화면

  • 채점 결과는 응시자가 시험지에 작성한 응시자 ID를 추출하여, 각 응시자의 문항별 응답과 정답 여부를 정오표 형태로 출력합니다.
  • 사용자는 해당 데이터를 직접 추가, 수정, 삭제할 수 있으며, 엑셀 파일로 다운로드 할 수 있습니다.


채점 결과 저장하기

채점_결과_저장_화면

  • 채점 결과를 엑셀로 저장했을 때 화면입니다.


실행 방법

서버 구축

1. 리포지토리 클론

git clone https://github.com/Moment-Capture/Point-Checker.git

2. 패키지 설치

xargs sudo apt-get -y install < ./Backend/apt-requirements.txt
  • Python 3.9 이상 환경에서 구동 가능합니다.

2. 라이브러리 설치

pip install -r ./Backend/requirements.txt
  • Python 3.9 이상 환경에서 구동 가능합니다.

3. main.py 실행

python3 app.py

GUI 실행

1. 리포지토리 클론

git clone https://github.com/Moment-Capture/Point-Checker.git

2. 라이브러리 설치

pip install -r ./Frontend/requirements.txt
  • Python 3.9 이상 환경에서 구동 가능합니다.

3. main.py 실행

python main.py

기술 소개

시스템 구조도

시스템 아키텍쳐



  • Tkinter GUI를 통해 사용자와 인터렉션
  • Flask를 통해 서버와 통신
  • Yolov8을 통해 객체 인식
  • EasyOCR, Tamil-OCR을 통해 OCR
  • pandastable로 생성된 엑셀 파일을 출력물로 전달

채점 엔진

채점 플로우




응시자 인식 모델

  • 사전에 적용된 양식을 통해 응시자를 인식합니다.
  • EasyOCR을 통해 사용자 아이디를 추출합니다.


QNA 분류 모델

  • Yolov8으로 각 시험지의 문항 영역을 탐지하고 종류에 맞게 분류합니다.
  • 사용한 라벨: multiple, multiple_cropped, subjective, subjective_cropped, q_mark, s_period, q_period


잘린 QNA 문항 매칭 모델

  • Yolov8으로 잘린 문항을 분류하고, 일치하는 유형을 매칭합니다.
  • 사용한 라벨: front_num, front_1, front_2, front_3, front_4, front_5, back_num, back_1, back_2, back_3, back_4, back_5, etc


객관식 인식 모델

  • Yolov8으로 문항 번호와 선지를 인식합니다.
  • Yolov8 라벨링 결과를 통해 선지를 분류합니다.
  • EasyOCR을 통해 문항 번호를 추출합니다.
  • 사용한 라벨: num, check1, check2, check3, check4, check5


단답식 인식 모델

  • Yolov8으로 문항 번호와 답안을 인식합니다.
  • tamil-ocr을 통해 필기 답안을 인식합니다.
  • EasyOCR을 통해 문항 번호를 추출합니다.
  • 사용한 라벨: num, answer


성능 평가

소요 시간

✔ 1부 30문항 기준 35초
✔ 5부 30문항 기준 207초
✔ 10부 30문항 기준 403초


채점 정확도

✔ 문항 번호 인식 : 98 %
✔ 정답 인식 : 98 %
✔ 최종 인식 : 96 %


기대효과 및 의의

  • 비용 절감 : 답안지 및 시험 채점을 위한 인건비, 시간, 비용을 절감할 수 있습니다.
  • 환경 보호 : 답안지에 사용되는 종이 사용량을 줄여 환경 보호에 기여합니다.
  • 다양한 사람들에게 응시 기회 제공: OMR 작성을 어려워 하는 어린이, 노인, 장애인에게 응시 기회를 제공합니다.


데모 영상

캡스톤 그로쓰 39팀 최종발표 데모 동영상


기술 블로그

<포인트 체커 - 객체 인식과 OCR를 활용한 객관·단답식 시험 채점 AI 소프트웨어> 기술 블로그


레퍼런스

라이브러리

참고 자료