없는 칸은 비워 둔다: 문서 필드 추출을 평가하는 법
문서 이미지에서 요청한 필드만 JSON 으로 돌려주는 2B 모델 Dharma Field Extractor 의 설계와 회사 자체 벤치마크의 핵심 조건을 정리하고, 없는 필드를 null 로 돌려주는지 재는 평가가 법률 문서 업무에서 왜 중요한지 살펴봅니다.
초록 Dharma-AI 는 2026년 11월 4일 Hugging Face 블로그에 문서 이미지에서 요청한 필드만 뽑아 JSON 으로 돌려주는 20억 매개변수 모델 Field Extractor 를 소개했습니다. 스키마 없이 찾을 수 있는 필드를 모두 돌려주는 방식과, 필드 이름과 타입을 지정한 스키마를 채우는 방식이 있고, 문서에 없는 필드를 물으면 값을 지어내지 않고 null 을 돌려준다고 합니다. 회사가 만든 벤치마크(546개 문서, 1,638건)에서 이 모델은 0.834점으로 비교한 범용 프런티어 설정보다 높았고 비용은 약 6~147배 낮았다고 적었습니다. 이 칼럼은 그 수치가 어떤 조건에서 나왔는지, 특히 일부러 없는 필드를 섞은 시험 설계를 짚고, 법률 문서에서 필드를 뽑을 때 무엇을 재야 하는지 살펴봅니다.
계약서에서 당사자와 기간, 위약금을 뽑아 시스템에 넣는 일은 법률 업무에서 흔합니다. 이때 중요한 실패 유형 가운데 하나는 문서에 없는 값을 그럴듯하게 채워 넣는 것입니다. 빈칸이었다면 사람이 다시 볼 텐데, 채워진 값은 그대로 다음 단계로 넘어갈 수 있기 때문입니다. Dharma-AI 의 글은 OCR 이 페이지의 글자를 모두 주지만 어느 문자열이 어떤 필드인지는 알려 주지 않는다는 데서 출발합니다. 그래서 필드를 직접 돌려주는 모델을 만들었고, 시험에 문서에 없는 필드를 일부러 섞었습니다. 다만 원문이 공개한 학습 데이터 설명에는 법률 문서가 명시돼 있지 않고, 계약서는 활용 예시로만 나옵니다. 이 글은 원문이 보여 준 것과, 법률 문서로 옮길 때 따로 재야 할 것을 나눠 봅니다.
핵심 기술 개념
스키마 지정 추출(schema-directed extraction)
필드 이름과 타입(문자열·숫자·참거짓)을 미리 정해 주고 그 모양대로 값을 채우게 하는 방식입니다. 원문에 따르면 같은 키로 돌려주고 여분 필드를 붙이지 않습니다.
없는 필드(phantom field)
문서에 실제로는 없는 항목을 스키마에 일부러 넣은 것입니다. 모델이 값을 지어내는지, 비워 두는지를 재기 위해 시험에 섞습니다. 원문은 이런 필드에 null 을 돌려주는 것을 목표로 삼았습니다.
필드 단위 F1
뽑아야 할 필드와 실제로 뽑은 필드를 경로(표 안의 위치 포함)로 대응시켜 맞힌 정도를 잰 값입니다. 원문은 여기에 맞은 값의 문자열 유사도와 유효한 JSON 비율을 곱해 최종 점수를 만들었습니다.
기술 심층 분석
페이지가 아니라 필드를 돌려준다
원문은 OCR 과 필드 추출을 구분합니다. OCR 은 페이지의 글자를 원래 형식대로 돌려주므로 계약서를 처음부터 끝까지 읽을 때는 맞지만, 의료 의뢰서에서 어느 문자열이 검사 종류이고 어느 것이 날짜인지, 송장에서 어느 숫자가 합계인지는 알려 주지 않습니다. 그 대응을 맞추는 코드를 누군가 따로 써야 합니다. Field Extractor 는 문서 이미지와 함께 '찾을 수 있는 것 전부' 또는 '정확한 스키마'를 받아 타입이 붙은 JSON 을 돌려줍니다. 송장이면 품목마다 수량과 금액을 담은 순서 있는 목록과 합계가 함께 오고, 신분증이면 시스템이 이미 쓰는 필드 이름으로 값이 옵니다. 원문은 문서 종류마다 따로 미세조정하지 않고 같은 체크포인트 하나로 처리한다고 적었습니다. 모델은 20억 매개변수 OCR 모델 DharmaOCR-LITE v1.1 위에 LoRA 어댑터를 학습한 것이고, 학습 예제는 43,384건입니다.
일부러 없는 필드를 섞은 시험
이 글에서 가장 눈여겨볼 대목은 벤치마크 설계입니다. 546개 문서마다 세 시나리오를 돌려 1,638건을 만들었습니다. 스키마 없이 모든 필드를 뽑는 경우, 실재하는 필드만 일부 지정한 경우, 그리고 일부러 없는 필드를 섞은 스키마를 준 경우입니다. 세 번째 시나리오가 있어야 모델이 빈칸을 지어내는지, null 로 두는지를 잴 수 있습니다. 점수는 필드 단위 F1 에 맞은 값의 레벤슈타인 유사도와 유효한 JSON 비율을 곱한 값입니다. 다만 원문은 세 시나리오별 점수나 없는 필드에서 null 을 돌려준 비율을 따로 공개하지 않았습니다. 그래서 '지어내지 않는다'는 성질이 얼마나 지켜졌는지는 종합 점수만으로는 알 수 없고, 쓰려는 쪽이 따로 재야 합니다.
수치가 나온 조건
원문은 이 모델이 0.834점으로, 비교한 범용 프런티어 설정 가운데 가장 가까운 Claude Opus 5(0.816)부터 가장 먼 GPT-5.6 Luna(0.741)까지 모두 앞섰다고 적었습니다. 비용은 약 6배(GPT-5.6 Luna)에서 약 147배(GPT-5.6 Sol)까지 낮았다고 합니다. 그러나 두 쪽의 계산 방식이 다릅니다. 프런티어 쪽은 추론 토큰을 포함한 쪽당 평균 입력·출력 토큰에 각 회사의 공시 가격을 곱했고 추론 수준은 low 로 두었으며(Claude Opus 5 는 쉬운 쪽에서 추론을 건너뛸 수 있는 adaptive effort), 자기 모델은 L40S GPU 한 장을 시간당 2.24달러로 잡은 GPU 시간입니다. 원문 스스로 이것은 판매가가 아니고 자체 호스팅 비용은 하드웨어와 물량, 지연 요구에 따라 달라진다고 밝혔습니다. 또 이 벤치마크는 모델을 만든 회사가 설계하고 돌린 것이므로, 다른 문서나 다른 기준에서도 같은 차이가 나는지는 별도의 확인이 필요합니다.
법률 문서로 옮길 때 남는 질문
원문이 밝힌 학습 데이터는 영어 다분야 공개 문서, 포르투갈어 브라질 실문서, 소량의 다른 언어 문서이고, 종류로는 영수증·상업송장·서식·은행 명세·신분증·합성 문서를 예로 듭니다. 이 설명에 계약서나 소송 서류는 명시돼 있지 않고, 그런 문서는 전작 OCR 모델의 대상과 활용 예시로 나올 뿐입니다. 학습에 쓰지 않은 공개 데이터셋 SROIE·FUNSD 의 예시도 영수증과 서식입니다. 그래서 한국어 계약서에서 당사자·기간·위약금 같은 필드를 뽑을 때 같은 성능이 나온다고 볼 근거는 이 글에 없습니다. 법률 문서에서는 같은 이름의 항목이 조항마다 다른 뜻을 갖거나, 값이 표가 아니라 문장 속에 들어 있는 경우가 많습니다. 옮겨 쓰려면 자기 문서로 세 시나리오를 다시 만들고, 특히 없는 필드에 null 을 돌려주는 비율을 따로 재야 합니다.
기술적 트레이드오프
긴장 관계 범위가 정해진 일에 맞춰 학습한 작은 모델은 싸고 빠를 수 있지만, 학습한 문서 종류 밖에서는 성능을 보장받기 어렵고 직접 운영하는 부담이 생깁니다.
실무적 해소 자기 문서로 만든 시험에서 맞힌 값, 지어낸 값, 비워 둔 값을 나눠 재고, 지어낸 값이 나오는 문서 유형은 사람이 확인하는 단계로 돌리는 편이 현실적입니다. 종합 점수 하나로 고르지 않는 것이 중요합니다. 직접 운영할지 API 를 쓸지는 물량과 지연 요구, 운영 인력까지 함께 놓고 판단해야 하며, 원문의 비용 비교도 그 조건 안에서만 성립합니다.
이 주장이 틀리는 조건
반증 조건 본 칼럼의 주장, 곧 필드 추출은 없는 필드를 비워 두는지까지 따로 재야 한다는 주장은 다음 관측으로 약해질 수 있습니다. 자기 문서로 만든 시험에서, 여러 모델과 문서 유형에 걸쳐 종합 점수만으로 없는 필드에 대한 오류율을 미리 정한 허용 오차 안에서 예측할 수 있다면, 별도 측정의 추가 효용은 작다는 근거가 됩니다. 또 지어낸 값이 다음 단계의 검증에서 거의 모두 걸러진다면, 별도 측정은 여전히 필요하더라도 그 개선의 우선순위는 낮아질 수 있습니다.
법마디 OS에 적용한다면
법마디 OS 는 답변 속 조문과 판례 인용을 law.go.kr 원문과 대조해 확인되지 않은 인용은 내보내지 않도록 설계돼 있고, Field Extractor 는 쓰지 않습니다. '없으면 지어내지 않는다'는 원칙은 오늘의 판례 지면에도 적용하고 있습니다. 사람이 직접 고른 법리·OX 문항·키워드를 지정할 때, 지정한 문장이 국가법령정보센터 판결요지·판시사항 원문에 글자 그대로 있을 때만 쓰고 하나라도 없으면 지정 전체를 버리고 원문에서 자동으로 뽑은 문장으로 돌아가게 했습니다. 다만 이런 문자열 대조는 인용이 원문에 있는지를 확인할 뿐, 원문에 있는 판시 물음을 규범처럼 잘못 쓰는 것 같은 의미상의 오류까지 잡지는 못합니다. 그래서 의미와 문맥은 별도의 게이트와 사람의 검토로 따로 확인합니다.
기술적 함의
- 필드 추출 모델은 맞힌 값뿐 아니라 문서에 없는 값을 지어내지 않고 비워 두는지를 따로 재야 한다. 없는 필드를 포함한 평가 사례로 직접 측정하는 것이 가장 분명하다.
- 회사가 직접 만든 벤치마크의 점수와 비용 비교는 그 계산 조건과 함께 읽어야 한다. 원문도 비용 수치가 판매가가 아니라고 밝혔다.
- 학습한 문서 종류 밖으로 옮길 때는 자기 문서로 시험을 다시 만들어야 한다. 이 모델의 공개된 학습 데이터 설명에 법률 문서는 명시돼 있지 않다.
"추출 모델을 믿을 수 있게 만드는 것은 많이 채우는 능력이 아니라, 문서에 없는 칸을 비워 두는 습관을 시험으로 확인할 수 있는가입니다."