논문 리뷰

LMDX(2024.06): Language Model-based Document Information Extraction and Localization

cch8ii 2026. 3. 21. 03:01
논문 링크: https://arxiv.org/abs/2309.10952
 

LMDX: Language Model-based Document Information Extraction and Localization

Large Language Models (LLM) have revolutionized Natural Language Processing (NLP), improving state-of-the-art and exhibiting emergent capabilities across various tasks. However, their application in extracting information from visually rich documents, whic

arxiv.org

 

 


기존 방법론과 한계

LLM은 하루가 지나면 지날수록 점점 더 무서운 성능을 보이고 있다. 처음엔 아주 간단한 질문에 답변하는 어시스턴트 수준이었다면 이젠 모델 스스로 생각하고 추론하고, .. Agent가 생겨나기 시작한 것도 LLM의 발전이 기반이 되어 시작된 것이다. 

 

그렇다면 LLM에게 우리가 일상에서 많이 사용하는 다양한 모양의 문서를 그대로 준다면 당연히 잘 알아듣지 않을까? 

안타깝게도 그렇지 못하다. 실제로 약 며칠 전에 카카오에서 진행한 AI Top 100에서는 다양한 이미지, pdf 스캔본을 주고 AI를 활용해 문제를 풀게끔 했다. LLM이 다 할 수 있다면 이러한 대회는 애초에 열리지 않았을 것이다.

출처: https://abbyy.mintlify.app/ko/vantage/documentation/advanced-designer/use-cases/extracting-from-docs

이러한 문서들을 반정형 문서라고 하는데 시각적으로 풍부한 정보를 가지고 있는 문서로부터 정보를 추출하는 데엔 LLM이 완벽하지 못하다. LLM이 문서를 읽는 것과 사람이 문서를 보는 것이 전혀 다른 일이기 때문이다. 

사람은 이러한 반정형 문서를 볼 때 텍스트만 읽는 게 아니라 전체적인 위치, 표의 선, 칸의 위치, 글자 크기, 색 등등 시각적인 단서 전체를 함께 해석한다. 하지만 LLM은 기본적으로 토큰 시퀀스를 다루는 모델이기 때문에 문서의 의미를 이해하기 위해선 이러한 풍부한 시각 구조가 어느 정도 텍스트로 변환이 되어야 이해할 수 있는데 이 과정에서 정보 손실이 많이 생기게 된다. 

또한 우리가 일상 속에서 사용하는 반정형 문서의 종류만 해도 수도 없이 많은데 LLM은 많이 본 정형적인 문서는 잘할 수 있어도 너무 복잡한, 학습과정에서 많이 보지 못한 문서에서는 성능이 급격히 떨어질 수 있다. 그 외에도 글시가 너무 흐릿하거나 그러면 LLM이 파악하기 힘들다는 문제 등등이 있다. 

 

본 논문에서는 LLM에 Document Information Extraction을 맡기기 어려운 장애물을 다음과 같이 언급한다. 

1. 고품질 추출에 결정적인 LLM 내부 레이아웃 인코딩 부재

2. 예측된 엔티티를 문서 내에서 위치시킬 수 있게 해주는 Grounding 메커니즘의 부재

 

결국 반정형 문서에서 정보를 추출하려면 ① 단일 엔티티, 반복 엔티티, 계층적 엔티티를 고품질로 추출할 수 있어야 하고 동시에 ② 그러한 엔티티를 문서 내 위치 시킬 수 있어야 한다는 의미이다. (+ 논문에서는 ③ 최대한 학습 데이터 없이 간으하게끔 해야 한다고 주장한다.)

기존 방법들은 이 세가지 조건을 만족하지 못했지만 LMDX는 만족한다고 자랑하는 표

 

Information Extraction

일단 LMDX를 알기 전 IE(Information Extraction)를 어떻게 진행하는지 간단하게 알아야 한다.

 

일단 IE에서 해야 하는 것은 다음과 같다. 

1. 값을 뽑아야 하고

2. 문서 어디에 있는지 알아야 한다. 

3. 또한 계층 구조도 다뤄야 하며

4. 새로운 문서, 처음 보는 스키마에도 적용이 가능해야 한다. 

 

이러한 IE는 크게 2가지 방식으로 정의할 수 있다.

1. NER처럼 푸는 방법

① OCR로 문서 글자를 읽고 ② 읽힌 텍스트에서 필요한 엔티티를 찾는다. 

즉, 문서 내에 여러 텍스트들이 있으면 각 토큰에 태그를 붙이는 방식이다. 각 토큰에 라벨을 할당하는 방식처럼 되기 때문에 문서 어디에 있었는지 알기 쉽고 토큰 단위이기 땜누에 위치 정보와도 잘 연결되는 장점이 있다. 하지만 보통 중첩되거나 계층적인 구조는 표현이 조금 어렵다고 한다. 

 

2. sequence generation으로 푸는 방법

이 방법은 모델이 문서를 보고 그냥 JSON 형태로 출력을 생성하는 것이다. 

이렇게 한다면 계층형 엔티티는 자연스럽게 출력이 되어서 계층적인 구조를 잘 표현할 수 있고 JSON 같이 구조화된 출력이 쉽다는 장점이 존재한다. 하지만 값은 뽑아도 문서 어디에 있었는지 바로 알기가 조금 어렵게 된다. 

 

 

LMDX

LMDX는 어떻게 LLM을 가지고 Information Extraction과 Localization을 잘 할 수 있게 한 것일까?

 

위에서 이야기한 IE 방식 중 LMDX는 기본적으로 sequence generation 방식이지만 coordinate tokens를 넣어서 생성 방식의 장점(계층 구조) + NER 방식의 장점(위치 추적) 을 같이 가져간다는 특징을 가진다.

 

좀 자세히 살펴보면 LMDX 파이프라인은 chunking, prompt generation, inference, decoding 4단계로 나뉜다. 

 

(이후부터는 자세한 설명을 위해 위 그림 1처럼 대상 추출 스키마를 정의하고 시작한다. 두 개의 리프 엔티티 유형 retailer와 subtotal, 그리고 product_id와 product_price로 구성된 하나의 계층적 엔티티 유형 line_item을 포함한다.)

 

1. Chunking

문서는 수백 페이지에 이를 수 있기 때문에 모든 LLM이 전체 문서를 프롬프트 안에 담을 수 있도록 문서를 document chunk로 나눈다. 

먼저 문서를 개별 페이지로 나눈 다음, 이 chunk를 포함하는 프롬프트가 LLM의 최대 입력 토큰 길이보다 작아질 때까지 마지막 줄 구간을 반복적으로 제거하고 이렇게 제거된 줄들을 새로운 문서 페이지로 묶고.. 하는 단계를 반복한다. 총 N개의 chunk를 얻게 되면 2단계로 넘어간다. 

2. Prompt Generation

N개의 chunk를 입력으로 받아서 각 chunk에 대한 프롬프트를 생성한다. 프롬프트는 document representation, description of the task, 그리고 추출할 엔티티들을 담고 있는 target schema representation으로 구성된다.

 

여기서 document representation을 보면 LLM에게 문서를 어떻게 전달하는지 알 수 있다. 

일단 문서의 내용은 OCR로 추출된 텍스트가 여러 조각으로 나누어지고 각 조각에는 그에 해당하는 좌표가 포함된다. 그 후 ㅣ 텍스트와 좌표가 다음과 같은 형식으로 연결된다. 

<segment text> XX|YYsegment

 

좌표는 문서 내 좌표 (X, Y) 값을 정규화한 후 이를 B개의 버킷으로 나누어 토큰으로 변환한다. 즉, 문서의 좌표 정보를 토큰으로 변환해 LLM에게 전달한다. 

(논문에서 2개의 좌표 [xcenter, ycenter] 와 버킷 수는 양자화된 버킷 100개가 가장 효과적이라고 밝혔다.)

 

task 설명은 모델이 무엇을 해야 하는지 간단히 알려주고 문서에서 어떤 정보를 추출해야 하는지 파악할 수 있게 한다. 

From the document, extract the text values and tags of the following entities:

 

다음 target schema representation의 경우 구조화된 JSON 형태로 표현되며 key는 추출할 엔티티 유형이고, value는 그것의 출현 형태(단일 또는 복수)와 하위 엔티티(계층적 엔티티의 경우)에 대응한다.

{"foo": "", 
 "bar": [{"baz": []}]}

예를 들어, {"foo": "", "bar": [{"baz": []}]}는 LLM이 foo 유형의 엔티티는 단 하나만 추출해야 하고 각각이 여러 개의 baz 유형 엔티티를 가질 수 있는 bar 유형의 다수의 계층적 엔티티를 추출해야 함을 의미한다.

 

3. Inference

이렇게 모델에게 집어넣었다면 이제 LLM이 JSON 형태로 뭔가를 출력했을 것이다. 본 논문에서는 N개의 프롬프트를 사용해 LLM에서 추론을 수행한다. 각 프롬프트에 대해서 Top-k sampling을 사용해 LLM으로부터 K개의 답변을 샘플링하는 것이다. (총 N * K 개의 답변이 생성된다. / 여기서 N은 문서 수) 

 

이 출력은 미리 모델에게 입력으로 주었던 target schema representation과 구조가 일치해야 한다.

Apple Store가 두 개의 줄에 나누어져 있으면:
Apple 38|05segment1
Store 40|06segment2

만약 하나의 엔티티가 여러 텍스트 조각으로 나뉘어져 있어도 좌표가 포함되어 있기 때문에 모델이 위치를 추적할 수 있다. 

또한 만약 누락된 엔티티가 있다면 이는 null이나 [] 빈 리스트로 채워진다. 

4. Decoding

여기선 LLM의 답변을 엔티티와 그 위치로 파싱한다. 

일단 처음엔 JSON 객체로 파싱하고 나서 정답 스키마에 없는, 예측된 엔티티의 경우 버려진다. 또한 각 예측 텍스트에 대해서 좌표 검증을 통해 본 문서에서 실제 그 위치에 그 텍스트가 있는지 검증한다. 만약 검증이 실패할 경우 Hallucination으로 보고 제거한다. 

K 번 샘플링한 답변을 다수결로 예측값을 병합하고 계층형 엔티티의 경우 해당 트리 구조는 관계를 유지하기 위 하나의 예측에서 나온 것을 그대로 사용하고 나머지 하위 엔티티들은 마찬가지로 다수결로 병합한다. 

 

Evaluation

LMDX는 PaLM 2-S, Gemini Pro 두 개의 LLM을 활용해서 평가를 진행했다. 

일단 finetuning을 아예 안 한 건 아니고 Base Entity Extractor 모델을 finetinong 해 LMDX의 추출 방법에 맞게 훈련시킨 다음 Zero-shot 평가에서 훈련 데이터와 겹치지 않는 새로운 문서와 스키마를 사용해 성능을 측정했다고 한다. 

 

사용한 벤치마크는 VRDU (Visually Rich Document Understanding), CORD (Consolidated Receipt Dataset)를 사용했으며 실제로 모든 데이터셋에서 우수한 성능을 얻었다. 

 

 

VRDU 결과 중 가장 먼저 Zero-shot 설정을 보면 다른 LLM baseline 보다 더 높은 품질을 보이는 것을 알 수 있고 10개의 학습 문서만으로도 최고 성능을 찍는다. 

 

CORD 벤치마크에서도 좋은 성능을 보인다. 여기서도 Zero-shot 이 좋은 성능을 보임을 알 수 있따. 

그렇다면 Localization은 잘 될까? 위 표를 보면 다른 모델들보다 월등히 잘 되는 Localization을 볼 수 있다. 

 

논문에서는 Ablation study도 함께 수행해서 각 구성 요소가 성능에 미치는 영향을 평가했다. 

실제로 위 표를 보면 coordinate tokens를 사용하지 않으면 14.98% 성능 저하가 발생하는 것으로 보아 좌표가 성능에 매우 중요한 역할을 한다는 것을 알 수 잇고, 다른 것들도 다 성능 향상에 중요한 역할을 했다는 것을 알 수 있다. 

또한 마지막으로 In-context learning과 finetuning을 비교한 실험 결과, Nearest Neighbors 방식의 In-context learning이 성능이 가장 좋음을 알 수 있었다. 

 

Conclusion

결국 LMDX는 시각적으로 정보가 풍부한 문서에서 정보 추출을 위해 얼마나 LLM을 잘 활용하는지 보여주는 방법론이다. coordinate token과 디코딩 전략을 통해 LMDX는 단일, 반복, 계층적 엔티티를 고품질로 추출하면서 문서 내에서 해당 엔티티를 localize할 수 있게 한다.