Skip to content

Marker-Inc-Korea/KOLongDoc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

141 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KOLongDoc📜

VLM Benchmark for (Very) Long Korean Document😵😵

img

News

2025-05-30: KOLongDoc 데이터셋 공개!🔥🔥

Introduction

오늘날 멀티모달과 RAG에 대한 관심이 높아지면서, 공공업무나 행정업무에 ChatGPT, Claude와 같은 AI가 많이 도입되기 시작했습니다.😎
이러한 흐름에 따라, 해외에는 긴 문서나 복잡한 문서에 대한 여러 벤치마크가 등장하고 있지만 여전히 국내에서는 이러한 데이터셋 및 벤치마크가 부족한 상황입니다.🥲

기존 한국어 VLM의 성능을 측정하기 위한 벤치마크들은 여러가지 목적으로 공개가 되었습니다.🧐🧐

  • KO-VQA: 한국어 문서기반 이해 능력 평가
  • KO-VDC: 한국어 문서 기반 표/도식/그래프에 대한 적절한 설명문 생성 능력 평가
  • KO-OCRAG: 고해상도 한국어 문서 OCR 능력 및 문서에 존재하는 visual information에 대한 text description 생성 능력 평가
  • KOFFVQA: 한국어 이미지 기반 객관적이고 신뢰성 있게 평가하기 위한 free-form VQA 평가
  • KoViDoRe: 한국어 시각 문서 retrieval 능력 평가
  • K-MMBench and K-MMStar: 한국어 기반 이미지에 대한 다양한 시각 이해 및 추론 능력 평가
  • K-DTCBench: 한국어 이미지 기반 표·차트 이해 능력을 다양한 형식(디지털 및 손글씨)에서 이해 능력 평가
  • K-LLAVA-W: 한국어 이미지 기반 실생활 기반 시각 이해 및 질의응답 능력을 평가

위와 같이 다양한 데이터 형식과 이미지/문서를 기반으로 한국어 능력을 평가하고자 하는 움직임은 있었지만, 길이가 긴 고해상도 한국어 문서에 대한 multi-hop VQA를 종합적으로 고려한 데이터셋은 없었습니다.⚠️

✨따라서 저희는 KOLongDoc📄라는 복잡하고 긴 고해상도 한국어 문서에 대한 VLM 벤치마크를 소개합니다.✨
이를 위해, 저희는 한국어 공공기관 문서를 공공데이터포털에서 수집한 후, multi-hop question and answering 문제를 제작하였습니다.😎
KOLongDoc 벤치마크는 총 200문항으로 구성되어 있으며, 복잡한 추론, multi-page understanding, 그리고 long-document understanding에 대한 한국어 능력을 평가할 수 있습니다.⭐

KOLongDoc가 국내외 VLM들이 복잡하고 긴 한국어 공공문서에 대해 얼마나 잘 이해하고 있고, 모델 내부 추론 능력으로 얼마나 정확하게 정답을 도출 해낼 수 있는지에 대하여 측정하는 하나의 벤치마크가 될 것이라고 믿습니다!🤗

Details of Dataset📜

KOLongDoc는 총 100개의 문서를 🌟매우 다양한 도메인🌟에서 수집하였습니다.
각 문서들은 총 2가지 type의 문서들로 구분이 되고, 각 문서마다 2개의 multi-hop QA 문항을 구성하였습니다.

  • Long document: 60 페이지 미만의 문서들 구성되며, 136문항으로 구성됨. (68개의 문서)
  • Super Long document: 60 페이지 이상의 문서들로 구성되며, 64문항으로 구성됨. (32개의 문서)

각 문서들에서 multi-hop QA 문항을 제작한 방법은 다음과 같습니다:

  • gemini-prompt를 통해 각 문서마다 question과 answer를 자동으로 생성합니다.🤖
  • Human verification을 통해, 각 문항의 난이도와 multi-QA 여부를 확인하고, 질문의 퀄리티 향상 및 올바른 답변으로 수정하는 과정을 수행합니다.🧐
  • 마지막으로, 정확한 정량적 평가를 위해서 정답으로 인정되기 위해서 필수적으로 담겨야하는 keyword를 인간이 직접 선별하는 과정을 수행합니다.🧐

완성된 데이터셋의 예시는 아래와 같습니다:

Document name: 인천 해양수질측정망 운영 결과(2024년 3분기).pdf

Question: 붙임 3'의 퇴적물 조사 결과에서 구리 농도가 가장 높은 정점과 아연 농도가 가장 높은 정점의 이름을 각각 찾고, 두 정점 중 총유기탄소(TOC) 함량이 더 낮은 정점의 이름과 그 TOC(%) 값은 무엇인가?

Answer: 구리는 '강화주문도 선착장 앞', 아연은 '영종도 동방' 입니다. TOC 함량이 낮은 것은 '강화주문도 선착장 앞' 이며, 0.458이다.

Keyword: ['강화주문도 선착장', '영종도 동방', 0.458]
Document name: 인사혁신처_국가공무원인재개발원 교육운영계획_20260310.pdf

Question: '영어권 장기국외훈련자과정' 및 '디지털역량교육과정 (3일)'을 수강하고 싶은데, 교육비는 얼마나 들까요? (숫자는 전부 적어주세요. 예시로, 100000원.) 그리고 주변에 국내 A회사에 다니는 공무원 친구가 집에서 재택근무를 하고 시간이 많다는데, 2개의 강좌를 동시에 들을 수 있을까요? ('가능' 또는 '불가능'이라고 답해주세요.)

Answer: 850000, 불가능

Keyword: [850000, '불가능']

KOLongDoc 데이터셋을 통해, 한국어 LLM 및 해외 LLM 등등 다양한 평가를 통해 long multi-page QA에 대한 성능을 평가할 수 있을 것이라 기대합니다🔥🔥.

자세한 평가방식은 다음 섹션을 참고해주세요.

Evaluation🤖

모델 평가는 Accuracy를 기반으로 구성됩니다.🔥
모델 답변 안에서 Keyword에 해당하는 단어들이 얼마나 들어가 있는지 비율을 토대로 평가를 진행하게 됩니다.

예시는 다음과 같습니다🤗:

Question: 붙임 3'의 퇴적물 조사 결과에서 구리 농도가 가장 높은 정점과 아연 농도가 가장 높은 정점의 이름을 각각 찾고, 두 정점 중 총유기탄소(TOC) 함량이 더 낮은 정점의 이름과 그 TOC(%) 값은 무엇인가?

Gemini Answer: 제공된 문서의 '붙임 3. 해양수질측정망 해저퇴적물 조사 결과(2024년 3분기)'(15~16페이지)를 바탕으로 분석한 결과는 다음과 같습니다.

1. **구리(Cu) 농도가 가장 높은 정점:**
   - 정점 21 (강화주문도 선착장 앞): 223.94 mg/kg으로 가장 높습니다.

2. **아연(Zn) 농도가 가장 높은 정점:**
   - 정점 17 (만석부두 앞): 91.99 mg/kg으로 가장 높습니다.

3. **총유기탄소(TOC) 함량 비교:**
   - 정점 21(강화주문도 선착장 앞)의 TOC: 0.458 %
   - 정점 17(만석부두 앞)의 TOC: 0.928 %

두 정점 중 TOC 함량이 더 낮은 곳은 **정점 21(강화주문도 선착장 앞)**이며, 해당 값은 **0.458 %**입니다.

Keyword: ['강화주문도 선착장', '영종도 동방', 0.458]

Accuracy: 약 66.6%
Question: '영어권 장기국외훈련자과정' 및 '디지털역량교육과정 (3일)'을 수강하고 싶은데, 교육비는 얼마나 들까요? (숫자는 전부 적어주세요. 예시로, 100000원.) 그리고 주변에 국내 A회사에 다니는 공무원 친구가 집에서 재택근무를 하고 시간이 많다는데, 2개의 강좌를 동시에 들을 수 있을까요? ('가능' 또는 '불가능'이라고 답해주세요.)

Gemini Answer: 질문에 대한 답변은 다음과 같습니다.

**1. 교육비**
*   **제공된 문서에서는 해당 내용을 찾을 수 없습니다.**
*   문서에 따르면 '영어권 장기국외훈련자과정'의 교육비는 14일 기준 **700000원**으로 명시되어 있으나, 3일만 수강할 경우의 비용 산정 기준은 나와있지 않습니다. 또한, '디지털역량교육과정'은 수십 개의 세부 과정(과정별 **100000원** 또는 **150000원**)으로 나뉘어 있어 어떤 과정을 수강하는지 특정할 수 없기 때문에 정확한 교육비 합산이 불가능합니다.

**2. 동시 수강 가능 여부**
*   **불가능**
*   해당 친구가 공무원 신분이라고 가정하더라도 두 과정을 동시에 수강하는 것은 불가능합니다.
    1.  '영어권 장기국외훈련자과정'의 교육대상은 일반 공무원이 아닌 **'영어권 장기국외훈련 파견 공무원'**으로 엄격히 제한되어 있습니다.
    2.  두 과정 모두 지정된 연수원 등에서 오프라인으로 참석해야 하는 **'집합'** 교육 방식으로 진행되므로, 집에서 재택근무를 하며 동시에 수강할 수 없습니다.

Keyword: [850000, '불가능']

Accuracy: 50%

위와 같은 평가 시스템을 기반으로 총 2가지 버전의 성능평가 테이블을 공유합니다:

  • Hard Version: 0 or 1로 평가하는 방법. (100% 정확도만을 정답으로 인정)
  • Soft Version: 0~1 사이로 평가하는 방법.

그리고 document input type에 따른 모델 능력을 비교하기 위해서 다음과 같이 평가를 진행됩니다:

  • text: pymuPDF 모듈을 활용하여, 텍스트를 전부 추출한 후 모델에 전달
  • image: PDF를 이미지 형식으로 모델에 전달

추가적으로 모델별로 long document와 super long document에 대한 성능을 각각 구분해서 제공했습니다!

  • L-Acc: Long document에 대한 정확도 (60 페이지 미만)
  • SL-Acc: Super Long document에 대한 정확도 (60 페이지 이상)

모든 평가는 max_token: 8192한 개의 A100 80GB GPU를 활용해서 수행했습니다!
자세한 평가는 코드를 참고해주세요!

*High-resolution 및 multi-page를 수많은 VLM들이 제한된 GPU memory 안에서 답변을 처리하지 못하여 OOM 케이스가 많습니다..
*평가를 위한 GPU/API key 지원 및 성능 결과 공유는 언제든지 환영합니다!✨

Results (Hard Ver.)🔥🤖🔥

Input type: Image🖼️

models (input_type) L-Acc SL-Acc Avg. Acc
gemini-3.5-flash (image) 82.35 82.81 82.58
gemini-3.1-pro (image) 71.32 69.94 70.48
gemini-3.1-flash (image) 63.97 67.19 65.58
gemini-2.5-pro (image) 66.91 59.38 63.15
Open-Source
Qwen3.6-27B (image) 8.82 1.56 5.19
Qwen3.5-9B (image) 7.35 1.56 4.46
gemma-4-31B-it (image) OOM OOM OOM
gemma-4-E4B-it (image) 19.11 OOM OOM
gemma-4-E2B-it (image) 12.50 OOM OOM
EXAONE-4.5-33B (image) OOM OOM OOM
Gukbap-Ovis2-16B-VL (image) 6.62 OOM OOM
VARCO-VISION-2.0-14B-HF (image) 0.74 timeout timeout
Bllossom-AICA-5B (image) timeout timeout timeout

L-Acc: Long Document (< 60 pages)
SL-Acc: Super Long Document (> 60 pages)
timeout: It's too slow to test.

Input type: Text📜

models (input_type) L-Acc SL-Acc Avg. Acc
gemini-3.5-flash (text) 69.85 67.19 68.52
gemini-3.1-pro (text) 58.82 64.06 61.44
gemini-3.1-flash (text) 55.15 53.13 54.14
gemini-2.5-pro (text) 64.71 60.94 62.83
Open-Source
Qwen3.6-27B (text) 65.44 OOM OOM
Qwen3.5-9B (text) 60.29 48.44 54.37
gemma-4-31B-it (text) OOM OOM OOM
gemma-4-E4B-it (text) 44.62 OOM OOM
gemma-4-E2B-it (text) OOM OOM OOM
EXAONE-4.5-33B (text) OOM OOM OOM
Gukbap-Ovis2-16B-VL (text) 25.00 7.81 16.41
VARCO-VISION-2.0-14B-HF (text) 13.24 OOM OOM
Bllossom-AICA-5B (text) 9.56 timeout timeout

L-Acc: Long Document (< 60 pages)
SL-Acc: Super Long Document (> 60 pages)

Results (Soft Ver.)🤖

Input type: Image🖼️

models (input_type) L-Acc SL-Acc Avg. Acc
gemini-3.5-flash (image) 91.95 90.34 91.15
gemini-3.1-pro (image) 85.34 81.51 83.43
gemini-3.1-flash (image) 79.63 80.86 80.23
gemini-2.5-pro (image) 82.39 78.91 80.65
Open-Source
Qwen3.6-27B (image) 19.98 16.90 18.44
Qwen3.5-9B (image) 18.44 14.86 16.65
gemma-4-31B-it (image) OOM OOM OOM
gemma-4-E4B-it (image) 35.81 OOM OOM
gemma-4-E2B-it (image) 23.34 OOM OOM
EXAONE-4.5-33B (image) OOM OOM OOM
Gukbap-Ovis2-16B-VL (image) 18.21 OOM OOM
VARCO-VISION-2.0-14B-HF (image) 4.79 timeout timeout
Bllossom-AICA-5B (image) timeout timeout timeout

L-Acc: Long Document (< 60 pages)
SL-Acc: Super Long Document (> 60 pages)
timeout: It's too slow to test.

Input type: Text📜

models (input_type) L-Acc SL-Acc Avg. Acc
gemini-3.5-flash (text) 79.40 74.11 76.76
gemini-3.1-pro (text) 75.29 74.77 75.03
gemini-3.1-flash (text) 72.46 70.69 71.58
gemini-2.5-pro (text) 77.32 75.88 76.60
Open-Source
Qwen3.6-27B (text) 79.08 OOM OOM
Qwen3.5-9B (text) 73.13 68.55 70.84
gemma-4-31B-it (text) OOM OOM OOM
gemma-4-E4B-it (text) 62.88 OOM OOM
gemma-4-E2B-it (text) OOM OOM OOM
EXAONE-4.5-33B (text) OOM OOM OOM
Gukbap-Ovis2-16B-VL (text) 41.81 21.43 31.62
VARCO-VISION-2.0-14B-HF (text) 18.96 OOM OOM
Bllossom-AICA-5B (text) 18.01 timeout timeout

L-Acc: Long Document (< 60 pages)
SL-Acc: Super Long Document (> 60 pages)

Evaluation Code🌟

Setting

추천하는 환경세팅은 아래와 같습니다! (for gemma-4 and EXAONE-4.5-33B)

conda create -n vlm_eval python=3.12 -y

torch 2.6.0+
transformers 5.8.0+
pymuPDF
accelerate

그 다음, 벤치마크 데이터셋을 Markr-AI/KOLongDoc에서 다운 받은 후, 아래의 함수를 활용해서 PDF를 모두 이미지로 추출해야합니다!

# PDF → 이미지 변환 함수
def convert_pdf_to_images(pdf_path, save_dir):
    '''
    pdf_path: PDF 파일이 담겨 있는 폴더 경로와 이름
    save_dir: 이미지를 저장할 폴더 이름
    '''
    os.makedirs(save_dir, exist_ok=True)
    
    images = convert_from_path(pdf_path, dpi=200, poppler_path='./poppler-25.12.0/Library/bin')  # dpi는 필요에 따라 조절
    for i, img in enumerate(images):
        img.save(os.path.join(save_dir, f"{i}.png"), "PNG")

그리고 아래와 같이 경로를 설정해주세요! (custom 가능)

eval.py
eval.sh
function (폴더)
dataset (폴더; create)
├── dataset (PDF 폴더)
    ├── less_60
    └── more_60
├── dataset_image (PDF 이미지 폴더; create)
    ├── less_60
    └── more_60
├── eval (결과저장폴더; create)
├── KLongDocURL_L_ver1.xlsx
└── KLongDocURL_SL_ver1.xlsx

Code

sh eval.sh

huggingface_token 설정 필수! base_model 변수로 VLM 모델 설정~

To-Do list

  • Release dataset
  • Release results
  • Release eval code
  • Release additional results (plan; need more GPU or API key.)

References🌟

LongDocURL
공공데이터포털

About

Long Korean Document을 위한 VLM 벤치마크

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors