OCR

수식 OCR의 오류 대응: 인식률 개선 대신 검수 체계를 설계한 근거

2026. 06. 03

프리딕션에서 지학사 수학 문제집을 디지털화하며 복합 수식의 OCR 오류를 만났습니다. 인식률을 올리는 대신 오류를 빨리 찾아 고치는 반자동 검수 체계를 만든 선택에 대한 기록입니다.

프로젝트 배경

소속
프리딕션 (Client: 지학사)
프로젝트
수학 문제 데이터베이스화 · OCR 검수 시스템
기간
2020.12 ~ 2021.03
담당
프론트 · AI/데이터 겸임 (개발·기획 9명 + 라벨러 30명+)

지학사의 수학 문제집을 대규모로 디지털화하는 사업의 일부로, OCR 결과의 품질을 관리하는 검수 시스템을 개발한 프로젝트입니다. 수식·기호·문항 구조가 복잡한 수학 문제 특성상 인식 오류가 빈번했기 때문에, 인식 성능 자체를 높이는 것이 아니라 오류를 빠르게 찾아 고치는 운영용 검수 체계를 만드는 것이 과제였습니다.

OCR데이터품질QA파이프라인컴퓨터비전데이터구조화

1. 배경: 인식률만으로는 납품할 수 없는 작업

프리딕션에서 지학사의 수학 문제집을 대규모로 디지털화하는 프로젝트를 맡았습니다. 스캔된 이미지에서 문제를 뽑아내 텍스트와 수식으로 바꾸고, 구조화된 데이터로 저장하는 작업입니다.

수학은 OCR 입장에서 최악의 대상입니다. 일반 문서는 글자만 읽으면 되지만, 수학 문제에는 분수와 루트와 첨자가 위아래로 겹쳐 있고, 그림과 보기가 섞여 있으며, 같은 기호가 문맥에 따라 다른 의미를 갖습니다.

게다가 결과물은 단순 텍스트가 아니라 KaTeX 문법이어야 했습니다. 화면에서 수식으로 다시 렌더링되어야 하기 때문입니다. 분수 하나를 잘못 읽으면 문제 자체가 성립하지 않습니다.

2. 문제 정의: 복합 수식의 인식 오류

초기 인식 결과를 검토해보니 오류가 상당했습니다. 유형도 다양했습니다.

  • 분수의 분자와 분모가 뒤바뀌거나 경계가 잘못 잡힘
  • 지수와 첨자가 일반 문자로 인식됨
  • 스캔 품질 차이로 같은 기호가 다르게 읽힘
  • 그림 영역이 텍스트로 잘못 처리됨

문제는 이 오류가 오류로 끝나지 않는다는 점이었습니다. 이 데이터는 추천 알고리즘의 입력이 됩니다. 문제 데이터가 틀리면 학생에게 잘못된 문추천되고, 그러면 서비스를 떠납니다. 데이터 품질이 서비스 품질로 직결되는 구조였습니다.

3. 기술적 난점

핵심 딜레마가 있었습니다. 인식 성능을 완벽하게 만드는 것은 현실적이지 않았습니다.

수학 수식 OCR은 그 자체로 난제입니다. 모델을 개선하려면 대량의 학습 데이터가 필요한데, 그 데이터를 만들려면 사람이 정답을 달아야 합니다. 다만 정답을 다는 작업이 바로 지금 병목인 검수 작업입니다. 닭과 달걀 문제였습니다.

시간도 한정되어 있었습니다. 모델 성능을 몇 퍼센트 올리는 데 몇 달을 쓰는 동안, 디지털화해야 할 문제집은 그대로 쌓여 있습니다.

4. 대안 검토

1안. 인식 모델 성능을 끌어올린다

데이터를 모으고 모델을 개선해 오류 자체를 줄입니다.

  • 장점: 근본적입니다. 성공하면 검수 부담이 줄어듭니다.
  • 단점: 시간이 오래 걸리고 100%는 불가능합니다. 99%를 달성해도 1만 문항이면 100개가 틀립니다. 검수는 결국 필요합니다.

2안. 전량 수작업으로 검수합니다

사람이 전부 확인하고 고칩니다.

  • 장점: 품질이 확실합니다.
  • 단점: 규모가 커지면 감당이 안 됩니다. 그리고 사람이 모니터를 오래 보면 집중력이 떨어져 오히려 놓칩니다.

3안. 검수 자체를 빠르고 정확하게 만든다

오류를 없애는 대신, 오류를 빨리 찾아 고치는 시스템을 만듭니다.

  • 장점: 즉시 효과가 나고 규모에 대응됩니다. 검수 과정에서 나오는 교정 데이터가 모델 개선에도 쓰입니다.
  • 단점: 검수 도구를 직접 만들어야 합니다.

5. 설계 결정 및 근거

3안을 골랐습니다. 판단의 기준은 이것이었습니다. 결국 검수는 필요합니다.

인식률을 아무리 올려도 상용 데이터베이스를 만들려면 검증 단계가 반드시 들어갑니다. 그렇다면 없앨 수 없는 그 단계를 최적화하는 것이 투자 대비 효과가 크다고 봤습니다. 그리고 검수 시스템이 있으면 거기서 나오는 교정 데이터를 모델 학습에 다시 쓸 수 있으니, 1안으로 가는 길도 함께 열립니다.

오류 탐지 인터페이스 설계

가장 먼저 한 일은 검수자가 무엇을 봐야 하는지 명확하게 만드는 것이었습니다.

기존 방식은 원본 이미지와 인식 결과 텍스트를 나란히 놓고 사람이 대조하는 것이었습니다. 이는 느리고 놓치기 쉽습니다. 특히 긴 수식에서 어디가 틀렸는지 찾는 데 시간이 다 갔습니다.

이에 따라 문항과 수식을 좌표(Bounding Box) 단위로 시각화했습니다. 인식 결과가 원본 이미지의 어느 영역에서 나온 것인지 화면에 표시하고, 그 옆에 렌더링된 수식을 보여줬습니다. 검수자는 이미지와 렌더링 결과를 시각적으로 비교만 하면 됐습니다. 텍스트를 읽고 해석할 필요가 없어진 것입니다.

분수와 루트와 첨자처럼 난이도가 높은 영역은 화면 구조를 따로 최적화했습니다. 오류가 자주 나는 곳에 검수자의 시선이 자연스럽게 가도록 배치했습니다.

3단계 반자동 검수 파이프라인

검수를 한 덩어리로 두지 않고 단계로 나눴습니다.

① 룰 기반 자동 보정 → ② 프롬프트 기반 교정 → ③ 작업자 수동 검수
   (반복 오류 자동 처리)   (애매한 케이스)        (최종 확인)

1단계가 핵심이었습니다. 오류 로그를 분석해보니 같은 유형이 반복되고 있었습니다. 특정 기호가 항상 같은 방식으로 잘못 읽히는 패턴이 있었습니다. 이러한 유형은 사람이 처리할 필요가 없습니다. 휴리스틱 규칙으로 자동 보정하게 만들었습니다.

이렇게 하니 사람에게 도달하는 건은 자동으로 처리할 수 없는 것들만 남았습니다. 검수자가 지루한 반복 작업 대신 실제 판단이 필요한 일에 집중할 수 있게 됐습니다.

전처리를 통한 인식 편차 축소

검수 부담을 줄이는 또 하나의 방법은 입력 품질을 균일하게 만드는 것이었습니다.

스캔본은 폰트도, 배경 노이즈도, 해상도도 제각각이었습니다. 같은 수식인데 스캔 상태에 따라 인식 결과가 달라졌습니다. OpenCV로 노이즈를 제거하고 명암을 보정하는 전처리를 넣어 편차 자체를 줄였습니다. 그리고 데이터 증강을 적용해 다양한 조건에 대응하도록 했습니다.

여기에 검수 과정에서 쌓인 교정 데이터를 학습에 반영했습니다. 검수 시스템이 곧 학습 데이터 생성기 역할을 했습니다.

6. 실험 결과

항목결과
AI OCR 정확도96% (자체 테스트 기준, KaTeX 변환)
검수 방식전량 수작업 → 3단계 반자동
반복 오류룰 기반 자동 보정으로 처리
적용 범위상용 데이터베이스 구축에 실제 운영 적용

정확도 96%는 전처리와 증강, 그리고 검수에서 나온 교정 데이터를 학습에 반영한 결과입니다. 검수 시스템을 만들었더니 모델 성능도 함께 올라간 것이 흥미로운 부분이었습니다.

여기서 확보한 데이터 품질 관리 체계는 이후 자체 OCR 고도화와 다른 플랫폼의 검수 체계로 이어졌습니다.

7. 결론 및 시사점

모델 성능과 운영 시스템은 양자택일이 아닙니다. 초기에는 "인식률을 올릴 것인가, 검수를 개선할 것인가"로 문제를 봤습니다. 실제로는 검수 시스템을 만든 것이 학습 데이터를 만들어내면서 인식률까지 올렸습니다. 사람이 고친 기록은 그 자체로 정답 데이터입니다. 이를 회수하는 구조를 만들면 두 가지를 동시에 얻습니다.

AI가 틀린다는 전제로 시스템을 설계하는 게 낫습니다. 96%는 좋은 숫자지만 4%는 틀립니다. 그 4%가 어디인지 빨리 찾아 고칠 수 있느냐가 상용 서비스의 품질을 결정했습니다. 완벽한 모델을 기다리는 것보다, 틀렸을 때의 처리 경로를 먼저 만드는 것이 현실적이었습니다.

반복되는 오류는 사람이 아니라 규칙이 처리해야 합니다. 검수자가 같은 유형의 오류를 하루 종일 고치고 있다면 그건 시스템 설계의 실패입니다. 오류 로그를 분석해 패턴을 찾고 자동화하는 것이, 검수 인원을 늘리는 것보다 확실한 해법이었습니다.