, ,

[문서 탐지] 시험지 OCR에서 TP/FP/FN 계산 기준 — 전체 객체 수 보존 관점

결론 — “전체 객체 수 보존”이 핵심 기준이다

시험지 OCR에서 TP/FP/FN을 계산할 때 가장 중요한 원칙은:

“총합 문제 수가 일치되어야 정확하다”

부분 검출을 성공으로 인정하고, 전체 객체 수가 보존되는지를 기준으로 평가하면 혼란이 해소된다.

예시: GT(정답) = 문제 10개, 해설 0개

모델이 문제 9개를 정확히 찾고, 문제 1개를 “해설”로 잘못 분류한 경우:

클래스 TP FP FN 해석
문제 9 1 0 9개 정확 탐지 + 1개를 해설로 잘못 분류(FP)
해설 0 0 1 실제 해설 0개인데, 문제 1개가 해설로 빠져나감(FN)

검증: 전체 객체 수 = TP + FN = 9 + 0 + 0 + 1 = 10 ✓ (GT와 일치)

이 관점에서 보면:

  • 문제 클래스 FP(잘못 찾은 것) = 해설 클래스 FN(찾지 못한 것)
  • 한쪽의 FP는 다른 쪽의 FN으로 이동한 것이다
  • 전체 합이 보존되므로 평가 체계가 일관적

“전체 객체 수 보존” 관점이 시험지 OCR에 적합한 이유

시험지 OCR은 단순 Detection(박스 찾기)이 아니라 문서 구조 복원이다. 핵심 목표는:

  • 문제가 몇 개인지 정확히 파악
  • 각 문제의 지문·선택지·해설이 올바르게 연결
  • 읽기 순서가 보존

따라서 “박스를 몇 개 맞혔는가?”보다 “전체 문제 수가 일치하는가?”가 더 중요한 지표다.

관점 질문 적합한 상황
Detection 관점 박스를 몇 개 맞혔나? 일반 Object Detection (YOLO 등)
구조 복원 관점 전체 문제 수가 맞는가? 시험지 OCR, 문서 AI

문제 상황 — “이어지는 문단”을 하나로 볼 것인가?

시험지에서 하나의 문제 지문이:

  • 왼쪽 컬럼에서 시작되고
  • 오른쪽 컬럼으로 이어지는 경우

이때 핵심 질문:

이어지는 문단을 하나의 객체로 볼 것인가? 아니면 두 개의 객체로 볼 것인가?

이 기준이 정해지지 않으면 TP/FP/FN 계산 자체가 불가능하다.


평가 이전에 결정해야 할 것: Annotation Policy(라벨링 정책)

TP/FP/FN을 계산하기 전에 “무엇을 하나의 객체로 정의할 것인가?”를 먼저 고정해야 한다.

방식 1: 시각적 블록 기준 (Visual Block Detection)

규칙 장점 단점
화면상 분리된 박스 = 각각 별도 객체 Detection 모델에 적합, 좌표 기반 평가 단순, Annotation 쉬움 의미론적으로 같은 문단이 분리됨

예: 왼쪽 문단 + 오른쪽 이어진 문단 = 객체 2개

방식 2: 논리적 문단 기준 (Logical Paragraph)

규칙 장점 단점
논리적으로 이어지는 문단 = 하나의 객체 문서 구조 복원에 적합, 읽기 순서 보존 Annotation 복잡, 모델 학습 어려움

예: 컬럼 넘어 이어지는 문단 = 객체 1개

목적별 권장 기준

목적 권장 기준
일반 Object Detection 시각 블록 기준
OCR 문서 복원 논리 문단 기준
LayoutLM / Donut 논리 구조 기준
시험지 OCR 논리 구조 기준

시험지 OCR에서 논리 구조 기준이 중요한 이유

시험지 OCR은 단순 Detection보다 다음이 더 중요하기 때문:

  • 문제 구조 복원
  • 지문 연결
  • 해설 연결
  • 읽기 순서
  • 검색/토큰화

즉: “읽을 수 있게 복원되었는가?”가 핵심이다.

권장 객체 정의

객체 정의
문제 번호 개별
선택지 개별
문제 지문 이어지는 문단 포함 → 하나
해설 문단 단위 또는 전체 → 하나

부분 검출(Partial Detection) 처리 방식

문단 전체를 찾지는 못했지만 일부는 검출된 경우:

방식 기준 판정
Strict 문단 전체 복원 실패 FN
Lenient 일부라도 충분히 검출 TP
Coverage (권장) 검출 영역 / GT 영역 ≥ 0.7 TP (미만이면 FN)

본 프로젝트에서는 Coverage 기준(부분 검출 성공 인정)을 채택한다. 이유:

  • 컬럼을 넘는 문단에서 70% 이상 검출되면 구조 복원에 충분
  • 전체 객체 수 보존 원칙과 자연스럽게 양립

Confusion Matrix — 클래스별 계산 예시

상황: GT = 문제 10개, 해설 0개

모델 결과: 문제 9개 정확 탐지, 문제 1개를 해설로 잘못 분류

GT \ Pred 문제 해설
문제 9 (TP) 1 (misclass)
해설 0 0

문제 클래스 기준

  • TP = 9: 문제를 문제로 정확히 탐지
  • FP = 1: 문제가 아닌 것(해설)을 문제로 예측한 경우… 가 아니라, 여기서는 문제를 해설로 잘못 분류한 것이므로 FP가 아님
  • 정정: FP = 0 (해설을 문제로 잘못 찾은 경우 없음)
  • FN = 1: 문제인데 찾지 못함 (해설로 빠져나감)

해설 클래스 기준

  • TP = 0: 실제 해설이 없으므로
  • FP = 1: 문제인데 해설로 잘못 예측
  • FN = 0: 실제 해설이 없으므로 놓칠 것도 없음

전체 객체 수 검증

문제: TP(9) + FN(1) = 10 ✓ (GT 문제 수와 일치)
해설: TP(0) + FN(0) = 0  ✓ (GT 해설 수와 일치)
전체 탐지 수: 문제 TP(9) + 해설 FP(1) = 10 ✓ (보존)

Detection 평가와 구조 복원 평가는 분리해야 한다

시험지 OCR에서는 평가를 두 레이어로 나누는 것이 실무적이다:

Layer 1: Detection Metric

박스 단위의 엄밀한 평가:

  • TP / FP / FN
  • IoU (Intersection over Union)
  • Precision / Recall / F1

Layer 2: Structural Reconstruction Metric

문서 복원 품질 평가:

Metric 의미
Problem Count Accuracy 문제 수 일치 여부
Explanation Count Accuracy 해설 수 일치 여부
Paragraph Recovery 문단 복원율
Reading Order Accuracy 읽기 순서 정확도

핵심: 글자 하나 OCR 틀림보다 문제 하나 누락이 훨씬 치명적이다. 따라서 총 문제 수 consistency를 별도 지표로 관리해야 한다.


추천하는 최종 파이프라인

1단계 — Detection

시각 박스 검출 (YOLO, Faster R-CNN 등)

2단계 — Merge

다음 조건을 만족하면 병합:

  • 동일 클래스
  • 읽기 순서 연결
  • 컬럼 연결
  • 거리 threshold 이하

3단계 — Logical Region 평가

최종적으로 논리 객체 기준으로 평가:

  • 문제 지문 1개 (이어진 문단 포함)
  • 해설 1개
  • 전체 객체 수 보존 확인

정리

원칙 내용
객체 정의 논리 구조 기준 (이어지는 문단 = 1개)
부분 검출 Coverage ≥ 70%이면 TP
핵심 검증 전체 객체 수 보존 (GT 수 = TP + FN)
평가 분리 Detection Metric + Structural Reconstruction Metric
최우선 지표 총 문제 수 일치 (Problem Count Accuracy)

결론: “박스를 몇 개 맞혔는가?”보다 “문서를 얼마나 읽을 수 있게 복원했는가?”가 시험지 OCR의 진짜 평가 기준이다. 그리고 그 출발점은 “전체 객체 수가 보존되는가?”이다.


실측 채점 결과

전체 채점 진행 결과 - TP/FP/FN, Precision, Recall, F1
전체 채점 진행 결과 (채점된 페이지: 856 / 938, Macro F1: 0.497)

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다