이 글 공유하기

아래 수치는 개발용 세트에서 잰 진단값이며 독립 검증 전이라 공식 성능이 아닙니다. 모델은 공개하지 않았습니다. 개발용 세트는 이전 모델을 고를 때 이미 쓴 데이터라서 여기서 나온 숫자로는 최종 성능을 판정할 수 없습니다.

학습을 더 하지 않고 두 어댑터를 부품 단위로 결합했습니다. 이미지를 읽는 쪽의 어댑터만 옮긴 조합이 개발용 세트에서 단어 글자 오류율 4.80%, 손글씨 글자 오류율 9.78%를 기록했고 표 구조 진단도 통과했습니다. 하지만 사전등록한 독립 평가 데이터가 기준에 못 미쳐 공개를 보류했습니다. 성능이 나빠서 멈춘 것이 아니라 평가할 데이터가 부족해서 멈췄습니다.

아래에서는 개발(Dev) 세트를 Dev로, 단어 단위 글자 오류율을 Word CER로, 이미지를 읽는 쪽 어댑터를 Vision LoRA(비전 LoRA)로 적습니다.

Vision LoRA만 결합했더니 Dev CER 4.80%: 표 구조를 지킨 ThakiOCR-KO-v2 진단 실험 개념을 형상화한 이미지 글의 핵심 개념을 형상화했습니다.

쉽게 말하면

글씨를 읽는 사람을 눈과 머리로 나눠 보겠습니다. 한 사람(M1)은 표를 정확하게 옮겨 적지만 흘려 쓴 손글씨에 약합니다. 다른 사람(M2)은 손글씨를 더 잘 읽지만 표를 옮길 때 칸을 틀리게 나누는 일이 있습니다.

이번 실험은 M1의 머리는 그대로 두고 M2의 안경만 빌려 씌운 것과 같습니다. 그 결과 손글씨는 더 잘 읽고 표 구조는 흐트러지지 않았습니다. 다만 이 시험은 두 사람이 이미 풀어 본 문제지로 친 것이라, 처음 보는 문제지로 다시 확인해야 합니다. 그 새 문제지를 아직 충분히 모으지 못했습니다.

어떤 문제를 풀려고 했나

ThakiOCR-KO-v1을 고를 때 후보가 둘 있었습니다. 두 후보 모두 OvisOCR3(Apache-2.0)를 바탕 모델로 LoRA 미세조정을 했습니다.

  • M1: 언어 디코더에만 LoRA를 붙였습니다. 평가 전용으로 따로 보관한 봉인 세트의 표 50개에서 구조 일치율 1.00을 기록해 표 구조를 지켰습니다. 사전등록 규칙에 따라 KO-v1로 공개됐습니다.
  • M2: 디코더 LoRA에 더해 비전 인코더 LoRA와 머저(비전 특징을 언어 모델 입력으로 바꾸는 부분)까지 학습했습니다. 손글씨 오류가 통계적으로 유의하게 줄었지만 봉인 표 50개의 구조 일치율이 0.80으로 떨어져 사전에 정한 구조 기준을 통과하지 못했습니다.

그래서 이런 질문이 남았습니다. M2의 손글씨 개선이 어느 부품에서 왔는지, 그리고 그 부품만 가져오면 표 구조를 지킬 수 있는지입니다.

무엇을 결합했나

추가 학습은 하지 않았습니다. 두 어댑터의 가중치를 부품(디코더 · 비전 · 머저) 단위로 옮겨 세 가지 조합을 만들었습니다. 원본 어댑터는 읽기 전용으로 두었습니다.

flowchart TB
    subgraph SRC["원본 어댑터(읽기 전용)"]
        M1D["M1 디코더 LoRA<br/>step 5250"]
        M2V["M2 비전 LoRA<br/>step 1500"]
        M2G["M2 머저"]
    end
    M1D --> A["v2a<br/>M1 디코더 + M2 비전 + M2 머저"]
    M2V --> A
    M2G --> A
    M1D --> VL["v2a_vl<br/>M1 디코더 + M2 비전<br/>머저는 바탕 모델 그대로"]
    M2V --> VL
    M1D --> MG["v2a_mg<br/>M1 디코더 + M2 머저<br/>비전은 바탕 모델 그대로"]
    M2G --> MG

v2a를 주 조합으로, v2a_vl과 v2a_mg를 하나씩 뺀 부품 하나씩만 옮긴 비교 조합(ablation)으로 사전등록했습니다. 결합이 제대로 됐는지는 코드로 확인했습니다. 원본 어댑터의 해시와 학습 기록이 일치하는지, 두 어댑터의 LoRA 설정(rank, alpha 등)과 디코더 키 집합·형태가 같은지, 결합 뒤 학습 가능한 파라미터가 0개인지, 병합한 가중치의 부품별 해시가 원본과 같은지를 봤습니다. 확정한 v2a_vl은 디코더 LoRA 모듈 96개와 비전 LoRA 모듈 48개로 구성되며 머저 변경분은 없습니다. 어댑터 크기는 35.0MB입니다.

왜 Vision LoRA만 남겼나

세 조합을 같은 잡, 같은 디코딩 조건(그리디, 최대 64토큰, 배치 1)에서 돌려 비교했습니다. 결과는 사전에 정해 둔 네 가지 판정 중 하나로 분류했습니다.

조합 구성 사전등록 판정 손글씨 개선 전이 표 구조 읽기 순서
v2a M1 디코더 + M2 비전 + M2 머저 A (전이·구조 유지) 충족 유지 유지
v2a_vl M1 디코더 + M2 비전 A (전이·구조 유지) 충족 유지 유지
v2a_mg M1 디코더 + M2 머저 D (악화) 미충족 미유지 실패

머저만 옮긴 v2a_mg는 오류가 오히려 늘었고 읽기 순서 진단도 실패했습니다. 비전 LoRA를 포함한 두 조합은 모두 통과했으며 그중 v2a_vl이 오류율이 가장 낮았습니다. 사전 결정 규칙(“v2a_vl이 구조 진단을 통과하면 독립 평가 1순위 후보로 삼는다”)에 따라 v2a_vl을 단일 주 후보로 확정했습니다.

이 비교로 알 수 있는 것은 부품 수준의 진단까지입니다. 손글씨 개선은 M2의 비전 LoRA를 따라왔습니다. M2에서 보인 표 구조 하락은 M1 디코더를 쓴 조합에서는 나타나지 않았습니다. 그렇다고 M2 디코더가 구조 하락의 유일한 원인이라는 뜻은 아닙니다. 비전·디코더·머저 사이의 상호작용 가능성이 남아 있습니다.

Dev 진단 결과

Dev 세트는 2,400문항이며 출처별로 600문항씩입니다. 다만 이 세트는 KO-v1 후보를 고를 때 이미 썼습니다. 그래서 여기 나온 숫자는 진단용이며 최종 판정이나 공개 근거가 되지 않습니다. 같은 Dev 문항에서 바탕 모델 OvisOCR3의 CER은 25.28%였습니다(KO-v1 선정 잡에서 측정).

Dev 출처 (각 600문항) v2a v2a_vl v2a_mg
AI 허브 105 야외 촬영 6.57% 5.84% 9.56%
AI 허브 605 손글씨 4.51% 3.83% 9.26%
AI 허브 91 손글씨 (작성자 15명) 11.66% 9.78% 20.77%
AI 허브 91 인쇄체 1.40% 1.30% 2.39%

네 출처를 합쳐 계산한 v2a_vl의 전체 Word CER(pooled)은 4.80%입니다. 손글씨 개선이 결합 모델로 옮겨왔는지는 문항 단위 쌍체 부트스트랩과 91 손글씨 작성자 단위 부트스트랩의 95% 신뢰구간으로 판정했습니다. v2a_vl은 두 조건을 모두 충족했습니다.

표 구조 진단은 무엇을 쟀나

비전 쪽을 바꾸면 글자는 잘 읽어도 표의 칸 나눔이나 읽기 순서가 무너질 수 있습니다. 그래서 KO-v1 선정 때와 같은 항목·같은 허용폭으로, 바탕 모델과 함께 같은 잡에서 측정했습니다.

  • 봉인 표 구조 일치율(structure_em): 봉인 세트의 표 50개에서 셀·병합·머리글 구조가 정답과 정확히 같은 비율입니다. 이 항목에는 0.96이라는 별도 하한도 함께 걸었습니다.
  • TEDS: 표를 트리로 보고 정답과의 편집 거리로 유사도를 잽니다.
  • 읽기 순서: 순서 상관(tau)과 포함률(coverage)이 바탕 모델보다 0.01 넘게 떨어지면 실패입니다.
  • KDoc-OCRBench-V2 통과율: 표 문항과 전체 문항의 통과율이 바탕 모델보다 0.02 넘게 떨어지면 실패입니다.
항목 (v2a_vl) 바탕 모델 v2a_vl 허용폭 결과
봉인 표 structure_em 0.98 1.00 0.04 통과
봉인 표 TEDS 0.9992 0.9916 0.02 통과
읽기 순서 tau 0.9976 0.9944 0.01 통과
읽기 순서 coverage 0.9982 0.9968 0.01 통과
KDoc 표 통과율 0.5199 0.5571 0.02 통과
KDoc 전체 통과율 0.5806 0.5999 0.02 통과

오류 유형과 한계

  • 손글씨가 여전히 가장 어렵습니다. 출처별로 보면 91 손글씨의 CER(9.78%)이 인쇄체(1.30%)의 일곱 배 이상입니다. 91 손글씨 Dev는 작성자가 15명뿐이라 새 작성자에게 일반화되는지는 알 수 없습니다.
  • 표 문항의 상당수는 여전히 실패합니다. KDoc 표 통과율 0.5571은 표 문항 열 개 중 네 개 이상을 통과하지 못한다는 뜻입니다. 바탕 모델보다 나빠지지 않았다는 진단이지, 표 인식이 충분하다는 뜻이 아닙니다.
  • TEDS는 조금 내려갔습니다. 바탕 모델 0.9992에서 0.9916으로 0.0075 낮아졌고 허용폭 안입니다.
  • Word 크롭 모델입니다. 페이지 전체 OCR 모델이 아니며 이번 진단도 그런 주장을 하지 않습니다.
  • 재현 일치율의 원인이 확정되지 않았습니다. M1·M2를 다시 돌렸을 때 학습 당시 예측과 문항이 일치한 비율은 0.99167과 0.99333으로 기준 0.97을 넘었지만, 차이가 BF16 비결정성 때문이라는 것은 아직 가설입니다.
  • Dev 재사용: 앞에서 말했듯 모든 수치가 이미 쓴 데이터에서 나왔습니다.

왜 공개를 보류했나

규칙은 결과 전에 정했고, 바꾸지 않습니다

최종 판정용 독립 평가 규칙은 결과를 보기 전에 사전등록하고 고정했습니다. 수집 순서는 “고정 규칙으로 수집 → 코드로 중복 검사 → 코드로 정답 생성 → 평가 목록(매니페스트) 해시 고정 → 그다음에 후보 모델을 한 번만 실행”입니다. 매니페스트를 고정하기 전에는 어떤 후보 모델도 평가 페이지에 돌리지 않습니다. 기준에 못 미쳤을 때 규칙을 느슨하게 하거나 수집 기간을 늘리지 않는다는 것도 미리 정해 두었습니다.

독립 문서 평가(I-DOC): 표 페이지와 템플릿이 모자랐습니다

공공누리 1유형이나 CC BY 4.0으로 공개된 문서 가운데 HWPX·DOCX·LaTeX 원문 표가 있는 문서만 대상으로 삼았습니다. 기존 평가에 쓴 발행처·템플릿은 뺐습니다.

요건 기준 확보 결과
표 페이지 150쪽 이상 93쪽 미달
표가 있는 템플릿 15종 이상 9종 미달
문서 40건 이상 183건 충족

150쪽이라는 기준에는 이유가 있습니다. 봉인 표 50개에서 구조 일치율 0.96(48/50)이 나와도 Wilson 95% 하한은 약 0.86에 그쳐 의미 있는 판정이 어렵습니다. 권리를 확인한 문서 242건에서 1,330쪽을 검토했습니다. 정답을 만들 수 있는 페이지는 451쪽이었습니다. 기존 평가 세트와 겹치는 14쪽과 템플릿당 상한(표 페이지 20쪽)을 넘은 49쪽을 빼니 388쪽이 남았습니다. 그중 표 페이지는 93쪽이었습니다. 가장 큰 탈락 사유는 원문 표가 여러 페이지에 걸쳐 있는 경우였습니다(2,752건). 한 페이지에 표의 일부만 있으면 그 페이지의 정답 표 구조를 원문에서 확정할 수 없기 때문입니다.

독립 손글씨 평가(I-HW): 작성자 ID 조건을 채울 원천이 없었습니다

손글씨는 학습과 Dev에 한 번도 나오지 않은 작성자의 글씨로 평가해야 새 작성자에 대한 일반화를 잴 수 있습니다. 그래서 명시적인 작성자 ID가 필요합니다.

  • AI 허브 91: 작성자 ID는 있지만 137명 전원이 이미 학습이나 Dev에 쓰여 새 작성자가 없습니다.
  • AI 허브 605, 81, 71301: 라벨에 나이·성별 같은 속성만 있고 작성자 ID가 없습니다.

나이·성별 조합이나 파일 이름을 작성자 ID 대신 쓰지 않습니다. 같은 사람인지 검증할 수 없는 가정이기 때문입니다.

기존 데이터를 다시 쓰지 않는 이유

Dev 2,400문항과 봉인 표 세트는 KO-v1 후보를 고를 때 이미 썼습니다. 그 데이터로 다시 판정하면 이미 본 문제에 맞춰 고른 결과를 성능으로 착각할 수 있습니다. 그래서 다음 행동은 금지로 정했습니다.

  • 추가 학습(V2-B/C)
  • 평가·정답 규칙 완화(예: 여러 페이지에 걸친 표 규칙)
  • 기존 학습·Dev 데이터를 독립 평가로 재사용
  • 모델이나 평가 세트 다시 고르기

이 상태는 성능 NO-GO가 아닙니다. 공식 독립 평가를 한 번도 돌리지 않았으므로 성능이 나쁘다는 판정도 내릴 수 없습니다. 공식 상태는 INDEPENDENT_EVAL_DATA_INSUFFICIENT(독립 평가 데이터 부족), RELEASE_HOLD(공개 보류)입니다.

다음 단계

독립 문서·손글씨 평가 데이터를 확보한 뒤 같은 규칙으로 평가합니다. 확정한 v2a_vl 파일과 디코딩 설정은 바꾸지 않습니다.

지금 쓸 수 있는 모델

이 후보는 공개하지 않았기 때문에 다운로드와 추론 코드는 없습니다. 지금 내려받아 쓸 수 있는 한국어 OCR 모델은 ThakiOCR-KO-v1 글에서 설치와 추론 방법까지 확인할 수 있습니다. ThakiOCR 모델 전체는 OCR 허브에 모아 두었습니다.

온프레미스와 기술 문의

ThakiCloud는 고객이 통제하는 환경에서 모델을 학습하고(Maxis), 서비스하고(Metis), 업무에 연결하는(Paxis) 플랫폼을 만듭니다. 이번 실험도 사전등록, 큐 기반 GPU 잡, 해시 검증을 같은 절차로 거쳤습니다. 문서 OCR 도입이나 기술 문의는 ThakiCloud에서 받습니다.

관련 글

데이터 출처

  • AI 허브(AI-Hub) 데이터셋: 다양한 형태의 한글 문자 OCR(91), 대용량 손글씨 OCR(605), 야외 실제 촬영 한글 이미지(105). 집계 수치만 싣고 원본·샘플은 싣지 않았습니다. 데이터는 신청자 본인 내부 이용에 한하며 재배포하지 않습니다.
  • 바탕 모델: ATH-MaaS/OvisOCR3 (Apache-2.0)
  • 표 진단: KDoc-OCRBench-V2(평가 전용)

이 글 공유하기

태그: handwriting, korean, lora, ocr, preregistration, table-structure, thakiocr

카테고리: ,

업데이트: