이 글 공유하기

학습에 전혀 쓰지 않은 서식 1,493쪽에서 새 모델을 한 번만 시험했습니다. 미리 등록한 합격선 6개를 모두 통과해 연구 후보로 인정받았지만, 제품으로 내놓기에는 아직 부족하다는 결론입니다. 가중치는 공개하지 않습니다. 어떤 시험지를 만들고, 그 시험지를 만들면서 데이터셋의 어떤 결함을 찾았는지, 합격선마다 무엇이 통과했는지, 아직 확인되지 않은 부분이 어디인지 이 글에서 하나씩 다룹니다.

이 글은 모델 소개가 아니라 평가 보고서입니다. 공개 데이터셋으로 새 모델을 시험해 본 독자라면, 시험지를 만드는 점검 부분부터 읽으면 됩니다.

시험받은 모델은 ThakiOCR A2(세 번째 모델)이고, 비교 대상은 그 앞의 공개 모델 G2M입니다. 앞선 Maxis 글에서 “같은 크기인데 오류가 31% 줄었다”고 소개한 결과가 바로 이 시험에서 나온 것입니다.

ThakiOCR A2: 독립 평가 43,751줄에서 확인한 개선과 남은 한계 개념을 형상화한 이미지 글의 핵심 개념을 형상화했습니다.

쉽게 말하면

학생이 공부한 문제집과 전혀 다른 출판사의 시험지로 시험을 봤습니다. 시험지는 시험 당일까지 봉투에 넣어 두었고 합격선도 미리 적어 두었습니다.

A2는 그 시험에서 이전 모델보다 확실히 잘 봤습니다. 다만 시험지에 원화 기호 문제가 거의 없었고 손글씨처럼 보이는 문서에서는 여전히 실수가 많았습니다. 그래서 “공부 방향은 맞다”까지는 말할 수 있지만 “실무에 투입해도 된다”고는 말할 수 없습니다.

시험지를 어떻게 만들었나

A2는 AI Hub 데이터셋 632의 Training 분할 중 서식 9종, 9,986쪽에서 잘라 낸 369,813개의 줄·단어 이미지로 학습했습니다. 평가는 학습에 한 번도 나오지 않은 서식 3종(은행 거래신청서, 보험 계약 전 알릴 의무사항, 보험차익 세제 관련 안내 확인서)으로 했습니다. 이렇게 하면 모델이 서식 배치를 외워서 맞히는 효과를 걷어 낼 수 있습니다.

평가 세트를 만들면서 데이터셋 자체의 문제도 찾았습니다.

  • 공식 Validation 이미지 936장이 Training 이미지와 바이트 단위로 같았습니다(CRC32와 파일 크기로 대조). Training 안에서도 중복이 2,338장 있었습니다.
  • 그래서 학습 데이터와 클러스터를 공유하는 Validation 2,315쪽을 평가에서 뺐습니다.
  • 최종 봉인 세트와 학습 데이터 사이의 누수는 0건으로 확인했습니다.

공개 데이터셋의 Training과 Validation을 그대로 믿고 평가하면 이런 중복 때문에 점수가 부풀 수 있습니다. 이 점검이 이번 작업에서 얻은 가장 재사용 가치가 높은 결과일 수 있습니다.

flowchart TB
    A["AI Hub 632 원천"] --> B["Training 서식 9종<br/>9,986쪽 · 369,813개 학습 이미지"]
    A --> C["Validation 후보"]
    C --> D["바이트 동일·클러스터 공유 제외<br/>2,315쪽"]
    C --> E["학습에 나온 서식<br/>sealed_seen 999쪽 · 보조 지표"]
    C --> F["학습에 없던 서식 3종<br/>1,493쪽 · 43,751줄 · 봉인"]
    F --> G["게이트 6개 사전등록 후 한 번만 개봉"]

게이트별 결과

비교 대상은 이전 공개 모델 G2M입니다. 두 모델 모두 약 893만 파라미터로 크기가 같습니다.

게이트 무엇을 보나 A2 G2M 결과
S1 봉인 세트 전체 CER 3.34% 4.84% 통과 (비율 0.689)
S2 서식군별 CER 비율 은행 0.651 · 보험 0.727 1.0 기준 통과
S3 숫자 순서 정확 일치 0.894 0.806 통과
S3 날짜 의미 일치 0.867 0.450 통과
S4 원화 금액 의미 일치 (학습 서식 90토큰) 0.556 0.156 통과
S5 개발 세트 평균이 상한 이하 0.0492 상한 0.0541 통과
S6 크기와 CPU 지연 893만 · 13.6ms   통과

S1의 차이에 대해서는 1,493쪽을 단위로 묶은 클러스터 부트스트랩도 돌렸습니다. CER 차이는 −1.51%p이고 95% 신뢰구간은 −1.57%p에서 −1.44%p로, 0을 포함하지 않았습니다. 참고로 첫 공개 모델 A는 같은 세트에서 12.19%였습니다.

봉인 평가에서 G2M과 A2의 숫자·날짜·원화 금액 정확도

학습은 B200 GPU 한 장에서 40,000스텝, 배치 128로 약 2.16 GPU시간이 걸렸습니다.

숫자를 읽는 법

의미 일치와 원문 일치는 다릅니다. 날짜 의미 일치는 연도 숫자열, 월, 일이 같으면 맞은 것으로 봅니다. 구분 기호와 공백은 무시합니다. ‘2024. 3. 5’와 ‘2024.03.05’는 의미로는 같지만 원문으로는 다릅니다. 업무에서 날짜를 값으로 쓴다면 의미 일치가 맞는 지표이고 원문을 그대로 보존해야 한다면 원문 일치를 따로 봐야 합니다.

원문 일치 지표의 정의를 감사 중에 바로잡았습니다. A2 보고서의 원문 일치는 정답 문자열이 예측 안에 들어 있기만 하면 맞힌 것으로 셌습니다. 그래서 ‘₩1,000’이 더 긴 예측 ‘₩1,0005’ 안에 있어도 맞은 것이 됩니다. 재현성을 위해 A2 보고서의 값은 그대로 두고 다음 평가부터는 토큰이 정확히 같은지 보는 지표를 대표값으로 씁니다. 이 글의 표는 의미 일치와 CER만 실었습니다.

못 믿을 부분

원화 기호는 이 시험으로 판단할 수 없습니다. 학습에 없던 서식 3종에는 원화 기호가 들어간 행이 하나도 없었습니다. S4의 90토큰은 전부 학습에 나온 서식(sealed_seen)에서 나왔고 대부분 전각 원화 기호 ₩였습니다. 반각 원화 기호 ₩가 들어간 행은 봉인 세트 전체에 2개뿐이라 따로 평가할 수 없었습니다. 즉 “처음 보는 서식에서 원화 금액을 잘 읽는다”는 근거는 아직 없습니다.

손글씨형 문서는 여전히 약합니다. 손으로 쓴 것처럼 보이는 유형의 CER은 7.2%로 G2M의 15.8%보다 좋아졌지만 인쇄체 줄보다 여전히 약 두 배 높습니다.

마스킹 숫자는 개선되지 않았습니다. ‘**-1234’처럼 일부를 가린 숫자는 9.7%로 G2M의 10.0%와 사실상 같습니다.

한 번의 학습, 한 데이터셋 계열입니다. 서식은 처음 봤지만 같은 데이터셋 안의 금융 서식입니다. 촬영본이나 다른 기관 서식에 대해서는 말할 수 없습니다.

판정과 다음 단계

판정은 두 층입니다. 연구 측면에서는 A2_GO입니다. 학습 데이터를 실제 서식으로 바꾼 방향이 처음 보는 서식에서도 효과가 있다는 근거가 생겼습니다. 제품 측면에서는 NO_GO이고 공개하지 않습니다(NO_RELEASE). 원화 기호 근거가 학습 서식에만 있고 손글씨형과 마스킹 숫자가 업무에 쓸 수준이 아니기 때문입니다.

다음 단계는 다른 데이터셋 계열에서 만든 외부 평가 세트입니다. 처음 보는 서식에서 원화 기호와 마스킹 숫자가 충분히 들어간 행을 모아야 이 두 질문에 답할 수 있습니다.

A2가 제품이 되더라도 OCR 결과를 그대로 업무에 반영하지는 않습니다. 작은 모델과 큰 모델을 어떻게 나눠 배치할지는 Metis 글에서, 틀릴 수 있는 결과를 어떻게 검증하고 승인받을지는 Paxis 글에서 다룹니다.

참고

  • A2 가중치는 비공개입니다. 이 글은 평가 결과 보고이며 모델 공개나 사용 안내가 아닙니다.
  • 앞선 결과: Maxis 글
  • 공개된 이전 모델: ThakiOCR A, ThakiOCR G2M
  • 평가 데이터: AI Hub 데이터셋 632(공식 명칭: 금융업 특화 문서 OCR 데이터). 원본과 잘라 낸 이미지는 재배포하지 않습니다.
  • AI Hub 데이터 이용 조건: AI Hub FAQ
  • 성능이 최고 수준이라고 주장하지 않습니다.

이 글 공유하기

태그: document-ai, 평가, korean, ocr, preregistration, thakiocr

카테고리:

업데이트: