RAG

[RAG] Upstage Document Parse 리뷰 및 테스트

moonzoo 2025. 3. 18. 17:14

제가 예전에 작성한 글에 이번 글에서 언급되는 것들이 있어서 링크 함께 전달드리겠습니다.

 

Document Layout Analysis 글

https://mz-moonzoo.tistory.com/55

 

[Computer Vision] Document Layout Analysis (feat. OCR)

1. Document Layout Analysis? 사람이 문서를 읽을 때에는 어떤 부분이 제목인지, 표는 어떻게 읽어야하는지, 이미지 아래에 작게 들어간 글자는 캡션이라고 이해하는 것 등 문서 내 정보에 대해 자연스

mz-moonzoo.tistory.com

 

 

PDFLoader 비교글

https://mz-moonzoo.tistory.com/73

 

[RAG] Document Loader 비교 (feat. PDF, Markdown 변환)

0. Document Loader (PDF)RAG를 하려면 수 많은 Raw Data들을 파싱해야 합니다.Raw Data들 중에서도 가장 범용적으로 사용되는 파일은 PDF이기 때문에, 이번 글에서는 PDF 파일에서 한글을 추출해내는 것이 중

mz-moonzoo.tistory.com

 

TextSplitter 비교 글

https://mz-moonzoo.tistory.com/85

 

[RAG] TextSplitter 비교 및 중요성 (feat. CharacterTextSplitter, RecursiveCharacterText

0. TextSplitterRAG는 대규모 언어 모델(LLM)이 외부 지식을 사용하여 응답을 생성하는 구조입니다. 이때, 검색(retrieval) 단계에서 문서를 효율적으로 검색하기 위해 문서를 적절한 크기로 분할해야 합

mz-moonzoo.tistory.com

 

 

0. 개요

이전 글에서 TextSplitter를 비교해봤는데, 좀 복잡한 PDF 파일로 테스트를 해보면 여전히 오픈소스로는 한계점이 있다는 것을 확인했습니다. 의미가 있는 단위로 문단(Paragraph)을 분할한 "Semantic Chunking"이 가상 이상적인 Chunking 전략이나, 문서마다 형식이 다르기 때문에 현재까지의 기술로는 일반화하여 사용하기에 어려움이 있기 때문입니다.

 

그 이유는 원문 텍스트 추출의 한계와 Semantic Chunking 기술의 한계에 있습니다.

원문 텍스트 추출의 한계는 다음과 같습니다.

1. 가장 중요한 원문 텍스트를 파싱하는 PDFLoader부터 PDF 구조를 일반화하여 가져오지 못한다는 점이고,

2. 이중 표, 세로선이 없는 표 등 테이블을 추출하고 정보를 유지한 채로 파싱하는 것이 어렵다는 점.

3. 이미지 기반 PDF 역시 다양한 레이아웃 구조를 고려하여 파싱하는 것이 어렵다는 점.

 

Semantic Chunking 기술의 한계는

이전 글에서 언급했듯이, 트랜스포머 구조의 한계가 있으며 각 문서 도메인 마다 어떤 문장부터 어떤 문장까지가 의미있다고 묶을 수 있는지를 판단하는 기준이 다른 점도 문제가 될 수 있습니다.

트랜스포머라 하면 문서가 크면 클수록 컨텍스트도 길어져 계산량 역시 엄청 오른다는 문제도 있겠네요.

 

아무튼 위와 같은 한계로 아직까지는 일반화된 PDFLoader와 TextSplitter은 없다고 말씀드렸었는데, 아직 Upstage Document Parse 테스트는 하지 않아서 이번 기회에 간단히 리뷰해보려합니다.


1. 전통적 PDF 파싱의 구조적 한계

기존 PDF 처리 시스템은 좌표 기반 렌더링 방식의 본질적 특성으로 인해 복잡한 레이아웃 해석에 취약했습니다. 특히 이중 컬럼 형식의 학술 논문이나 계층적 테이블 구조를 포함한 비즈니스 문서 처리 시 문맥 유지가 어려웠으며, 이는 정보 추출의 정확도를 크게 저하시키는 요인으로 작용했습니다. PyPDFLoader와 같은 전통적 도구들은 페이지 단위의 텍스트 추출에 집중함으로써 시각적 요소와 구조 정보를 상실하는 문제가 지속적으로 제기되어 왔습니다.

 

이러한 기술적 한계는 메타데이터 처리 능력에서도 두드러졌습니다. UnstructuredPDFLoader는 레이아웃 좌표와 요소 속성 정보를 제공하지만 처리 속도가 현저히 느린 반면, fitz 라이브러리는 속도는 빠르나 메타데이터 지원이 미흡했습니다. 문서의 시각적 구조와 의미적 맥락을 동시에 보존하는 기술의 부재가 PDF 파싱의 과제로 남아 있었습니다.

 

2. 딥러닝 기반 접근법의 등장

그러나, 최근 컴퓨터 비전과 자연어 처리 기술의 융합은 문서 분석 분야에 새로운 도전을 가능하게 했습니다. LayoutLM 및 Donut 모델과 같은 멀티모달 아키텍처의 등장으로 텍스트 콘텐츠와 시각적 레이아웃 정보의 통합 분석이 가능해졌으며, 이는 테이블 인식 정확도를 60% 대에서 80% 대까지 향상시킨 결정적 계기가 되었습니다. 그러나 오픈소스 기반 모델들의 경우 상용 서비스 수준의 성능과 확장성을 확보하는 데 여전히 기술적 장벽이 존재했습니다. 이러한 문제로 Upstage는 Document AI를 집중적으로 연구 했습니다.

 

3. Document Parse

Document Parse는 과거 'Layout Analyzer' 또는 'Layout Analysis'라는 이름으로 알려졌던 문서 분석 기술이 발전한 형태입니다. 기존 OCR(Optical Character Recognition) 기술이 단순히 글자만 인식하는 데 그쳤다면, Document Parse는 문서의 구조를 자동으로 이해하고 각 요소들이 어떤 맥락에서 배치되어 있는지 파악할 수 있습니다.

 

업스테이지가 2024년 10월 공개한 OCR 모델 'Document Parse'는 기존 PDF 처리 기술의 한계를 극복하기 위해 개발된 문서 분석 솔루션입니다. 이 기술은 복잡한 레이아웃과 테이블을 포함한 다양한 문서 형식을 HTML 및 마크다운 형식으로 정확하게 변환하며, LLM과의 효율성을 극대화 하고자 한 것이 특징입니다.

 

4. Upstage Document Parse 구조 및 특징

Document Parse의 핵심 기술은 계층적 주의(Hierarchical Attention) 메커니즘을 기반으로 한 문서 구조 분석 엔진에 있습니다. 이 시스템은 문서를 페이지 → 섹션 → 블록 → 요소의 4계층으로 분해하여 분석하며, 각 계층 간의 공간적 관계를 그래프 신경망(Graph Neural Network)으로 모델링합니다. 특히 테이블 구조 인식을 위해 개발된 TEDS(Table Structure Recognition Score) 알고리즘은 94.16점의 정확도를 달성하여 기존 솔루션 대비 8% 이상 향상된 성능을 보여주었습니다.

 

문서 요소 검출 (Element Detection)

Document Parse는 문서에서 Header(문서에서 반복되는 상단 글자), Footer(문서에서 반복되는 하단 글자), Paragraph, Caption(이미지, 테이블 등의 캡션), Table(표 인식), Image(이미지, 그래프) 등을 인식하여 개별적으로 추출할 수 있습니다. 특히 여러 열과 표, 차트가 함께 존재하는 복잡한 레이아웃에서도 요소별 인식이 가능하여 정확한 데이터 추출을 지원합니다.

 

문맥 기반 순서 정렬 (Context-aware Serialization)

기존 OCR 기술이 문서의 구조와 관계없이 텍스트만을 인식하여 한 줄로 읽어내는 한계가 있었다면, Document Parse는 사람이 문서를 인식하듯 문맥에 맞게 글자를 읽는 순서대로 데이터를 추출합니다. 이를 통해 텍스트 추출 후 적용해야 했던 복잡한 데이터 전처리 작업들을 생략할 수 있게 되었습니다.

 

요소 간 관계 추출 (Relation Extraction)

Document Parse는 표와 캡션, 그림과 캡션 사이의 관계를 탐지하는 기능을 제공합니다. 이는 표나 그림을 인식하면 해당 요소에 대한 설명이 캡션으로 라벨링되어, 텍스트만 추출하더라도 전체 문서의 맥락을 이해하기 쉽게 만들어 줍니다.

 

다양한 문서 형식 지원 및 출력 옵션

DOCX, PDF, PPTX, PNG 등 업무에 사용하는 9종의 문서 처리가 가능하며, 수식 인식 및 이미지 추출과 같은 고급 기능도 제공합니다. 또한 처리된 결과는 HTML이나 Markdown과 같은 구조화된 텍스트 형식으로 출력되어 대규모 언어 모델(LLM)에 즉시 활용할 수 있으며, RAG 시스템의 토큰 효율성을 40% 이상 개선하였습니다.

 

특히 테이블 데이터의 경우 <table> 태그 대신 Markdown 파이프 테이블 형식으로 변환하여 LLM의 이해도를 높인 것이 특징입니다. (이전에 리뷰한 Pymupdf4llm, Llamaparse 등도 이러한 이유에서 Markdown 포맷을 지원합니다.)

실제 금융 보고서 분석 사례에서 Document Parse는 표 내 숫자 데이터의 정확한 위치 보존을 통해 LLM의 수치 추론 정확도를 72%에서 89%로 향상시켰습니다. 이는 기존 PDF 로더들이 표 데이터를 평문화하는 과정에서 발생하는 구조적 정보 손실 문제를 최소화 했다는 것을 의미하겠네요.

 


5. Upstage Document Parse 코드 테스트 

현재 공개된 PDFLoader 중 성능이 좋다고 알려진 Upstage DocumentParse이기 때문에 당연히 쉬운 PDF로 실험해보는 것은 의미가 없을 거 같아서, 이전 글에서 모든 PDFLoader가 실패했던 PDF 문서로 테스트해보겠습니다.

 

PDF 이미지

 

 

변환 결과

page_content='# BC GLOBAL PREMIUM
PROMOTION- • 본 프로모션은 명시된 프로모션 기간 종료 후 내용 변경, 중단 등이 발생할 수 있습니다.
- • 프로모션 종료기간 이후의 내용은 BC카드 VIP 홈페이지에서 확인 하시기 바랍니다.
- • BC카드 VIP홈페이지 : vip.bccard.com
BC GLOBAL
Contents제휴 호텔/공항 발레파킹 서비스
제휴 호텔 F&B, 객실 할인 서비스
공항 라운지 서비스BC Global Premium
Promotion제휴 호텔/공항
발레파킹 서비스프로모션 기간 : 2018.01.01~2018.12.31※ 프로모션 기간 종료 후 프로모션 내용 변경, 종료 등은 BC카드
VIP 홈페이지에서 확인 하시기 바랍니다.
BC카드 VIP홈페이지 : vip.bccard.com프로모션 내용|  | 호텔 발레파킹 : BLISS BC GLOBAL카드로 제휴 호텔 이용 시 무료 발레파킹/주차비 지원 |
| --- | --- |
|  | 공항 발레파킹 : BLISS BC GLOBAL카드로 제휴 공항 이용 시 무료 발레파킹 제공. 단, 주차비는 고객 부담 |
이용방법| 구분 | 내용 |
| --- | --- |
| 호텔 | • 호텔 현관에서 도어맨에게 발렛파킹 요청 |
| 호텔 | • 차량 인수 시 도어맨에게 주차티켓과 카드 제시 |
| 호텔 | • 도어맨이 소지한 단말기를 통해 서비스 이용 가능 여부 확인 후 서비스 제공 |
| 인천공항 T1 | • 주차 시 |
| 인천공항 T1 | 1. 인천공항 제1여객터미널 발렛 전용차로 및 발렛 안내표지판을 따라 3층 출국층 승용차 도로 진입 |
| 인천공항 T1 | 2. 안내표지판을 따라서 지상단기주차장 C구역으로 이동 |
| 인천공항 T1 | 3. 오렌지맨 주차요원에 차량 상태 점검 후 차량 열쇠 인도 및 차량 접수증 수령 • 출차 시 |
| 인천공항 T1 | 1. 차량보관증에 명기되어 있는 인수장(단기 주차장 지하 3층 동,서편)으로 이동 하여 차량보관증 및 BLISS BC GLOBAL 카드 제시 후, 주차권과 차량열쇠 인수 |
| 인천공항 T1 | 2. 추차장 출차 시 주차요금 정산 |
| 인천공항 T2 | • 주차 시 |
| 인천공항 T2 | 1. 인천공항 제2여객터미널 발렛 전용차로 및 발렛 안내표지판을 따라 단 기 주차장 도로로 진입 |
| 인천공항 T2 | 2. 단기 주차장 지하 1층 서편 주차구역 110~112번으로 이동 |
| 인천공항 T2 | 3. 오렌지맨 주차요원에 차량 상태 점검 후 차량키 인도 및 차량 접수증(알림톡, SMS 발송) 수령 |
| 인천공항 T2 | • 출차 시 |
| 인천공항 T2 | 1. 차량접수증(알림톡, SMS)에 명기되어 있는 인수장(단기 주차장 지하1층 동편 주차구역 210번 앞)으로 이동하여 차량 접수증 및 BLISS BC GLOBAL 카드로 승인 후, 차량 열쇠 인수 |
| 인천공항 T2 | 2. 주차장 출차 시 주차요금 정산 (단, 발렛요금 정산 후 주차요금 사전 결제 가능) |
| 김포공항 국내선 | • 주차 시 |
| 김포공항 국내선 | 1. 국내선 청사 출발층 2층 고가 위 오렌지맨에게 카드 제시 |
| 김포공항 국내선 | 2. 차량열쇠 인도 및 차량보관증 수령 |
| 김포공항 국내선 | • 출차 시 |
| 김포공항 국내선 | 1. 차량보관증에 있는 연락처로 차량 출차 요청 |
| 김포공항 국내선 | 2. 국내선 도착 1층의 주차대행 요금정산소에서 주차요금 정산 후 차량 인수 |
| 김포공항 국제선 | • 주차 시 |
| 김포공항 국제선 | 1. 김포공항 국제선 청사 출발층 2층 고가 위 진입 대기 중인 오렌지맨에게 BLISS BC GLOBAL 카드 제시 |
| 김포공항 국제선 | 2. 차량 상태 점검 후 차량 인도 및 보관증 수령 • 출차 시 |
| 김포공항 국제선 | 1. 도착 후 차량 보관증에 있는 연락처로 차량 출차 요청 |
| 김포공항 국제선 | 2. 국제선 도착 1층 국가 행사 전용주차장 요금정산소에서 주차요금 정산 후 차량 인수 |
이용조건- • BLISS BC GLOBAL카드에 한함
- • 주차비 관련 유의사항
- - 공항 : 발레파킹 비용만 무료 적용이며, 주차비용은 별도 정산필요
- - 호텔 : 1일 3시간 주차비 무료. 3시간 초과 시 초과금액은
- 고객이 별도 부담
4• 서비스 이용시점 기준 전월 1일 ~ 말일까지 국내신판 이용실적
이 30만원 이상 시 서비스 가능- - 서비스 제공조건 산정 시 제세공과금(국세, 지방세 등), 상품권
- (선불카드 포함) 구입 및 충전금액은 제외
- - 카드 수령일로부터 익월 말일까지는 이용실적 관계없이
- 서비스를 제공
- - 이용실적은 본인카드, 가족카드 합산 없이 각각 별도로 체크
• 제휴 호텔/공항 발레파킹 통합 월 3회 서비스 제공- - 이용횟수 초과 시 고객이 비용을 별도로 부담해야 함
- • 일부 호텔의 경우 해당 호텔 객실/식음료업장 결제 영수증 지참
- 시에만 서비스 제공
- • 국가행사, 국제행사, 전시 및 각종행사, 성수기, 명절기간, 만차
- 등의 경우 서비스 이용이 제한될 수 있음
이용대상 제휴 호텔 / 공항구분 지역 제휴 호텔/공항|  |  |  |
| --- | --- | --- |
| 호텔 | 서울/ 경기 | 콘래드호텔, 그랜드힐튼호텔, 르메르디앙(구 리 츠칼튼), 플라자호텔, 쉐라톤 서울 디큐브시티, 반얀트리 서울(호텔), MVL 호텔 킨텍스, 노보텔 앰버서더 강남, 노보텔앰버서더 독산, 코트야드 메리어트 타임스퀘어, 여의도 메리어트, 팔래스 호텔, 메이필드 호텔, 라마다 서울, 서울 그랜드 앰버서더, 베스트웨스턴가든호텔, 그랜드 하얏 트 인천 |
|  | 강원 | 하이원리조트강원랜드 호텔, 하이원리조트컨벤션 호텔 |
|  | 전남 | MVL 호텔 여수 |
|  | 대구 | 대구 그랜드호텔, 대구 인터불고호텔(대구점) |
|  | 부산 | 해운대 그랜드 |
|  | 경남 | 시티세븐풀만앰버서더 |
| 공항 |  | 인천공항(T1, T2), 김포공항(국내선, 국제선) |
※ 본 서비스는 서비스 제휴사와 계약/약관 개정 및 도산 등의 사유로 일부
변경 또는 중단 될 수 있습니다.5BC Global Premium
Promotion제휴 호텔 F&B,
객실 할인 서비스프로모션 기간2018.01.01~2018.12.31※ 프로모션 기간 종료 후 프로모션 내용 변경, 종료 등은 BC카드
VIP 홈페이지에서 확인 하시기 바랍니다.
BC카드 VIP홈페이지 : vip.bccard.com프로모션 내용- • BLISS BC GLOBAL 카드로 제휴 호텔 이용 시 F&B(식음료장)
- 및 객실 할인 지원
- - 국내 특급호텔 F&B 할인서비스 (5%~20% 식음료 할인)
- - 국내 특급호텔 객실 할인 서비스
이용방법- • 제휴 호텔 F&B 이용 및 객실 결제 시 BLISS BC GLOBAL 카드
- 로 할인 적용 요청
유의사항- • 서비스 대상 특급호텔, 상세 이용조건 및 유의사항은 BC카드
- VIP홈페이지에서 확인하시기 바랍니다.
- - BC카드 VIP 홈페이지 : vip.bccard.com
6공항 라운지
서비스프로모션 기간2018.01.01~2018.12.31※ 프로모션 기간 종료 후 프로모션 내용 변경, 종료 등은 BC카드
VIP 홈페이지에서 확인 하시기 바랍니다.
BC카드 VIP홈페이지 : vip.bccard.com프로모션 내용• BLISS BC GLOBAL카드로 제휴 공항라운지 이용 시 입장 비용 지원이용방법- • 공항 라운지 직원에게 BLISS BC GLOBAL카드 제시 후 라운지
- 무료 서비스 요청
- • 직원이 단말기를 통해 서비스 이용 가능 여부 확인 후 라운지
- 무료 제공
이용조건- • BLISS BC GLOBAL카드에 한함
- • 본인에 한하여 제공되며 동반자의 경우 고객 부담
- • 서비스 이용시점 기준 전월 1일 ~ 말일까지 국내신판실적이
- 30만원 이상 시 서비스 가능
- 서비스 제공조건 산정 시 제세공과금(국세, 지방세 등),- 상품권(선불카드 포함) 구입 및 충전금액은 제외
- - 카드 수령일로부터 익월 말일까지는 이용실적 관계없이
- 서비스를 제공
- - 이용실적은 본인카드, 가족카드 합산 없이 각각 별도로 체크
- • 연 3회에 한하여 제공
- - 이용횟수 초과 시 고객이 비용을 별도로 부담해야 함
이용대상 제휴 공항라운지| 구분 | 대상 |
| --- | --- |
| 인천공항(터미널 1) | 스카이허브 라운지, 마티나 라운지 |
| 인천공항(터미널 2) | 마티나 라운지, SPC라운지, 라운지L |
| 김포공항(국제선) | 스카이허브 라운지 |
7기준일 2018.09.20여신금융협회 심의필 제 2018-C1a-11812호
준법감시인 심의필 제 2018-4373호(2018.09.20) 출급번호 CW614 게시기한(2019.09.19)단기카드대출(현금서비스)'

 

해당 문서는 이중표는 아니지만

1. 세로선이 없는 표 (이러한 경우 "인천공항 주차시 T1 1. 인천공항"과 같이 구조적 정보가 손실됩니다.)

2. 헤더가 표 바깥에 존재함.

3. 이중 단락. (제주 호텔/공항 발레파킹 서비스가 좌측 상단에 존재.)

이러한 이유로 모든 PDFLoader가 파싱에 실패한 PDF 문서입니다. (사실 그 밑 페이지에 더 심한 것도 있습니다.)

 

결과를 보시면 아시겠지만 호텔 발레파킹, 공항 발레파킹이 표로 파싱됐고, 이용방법의 표 역시 헤더가 잘못 파싱된 것을 확인하실 수 있습니다. (그래도 이 문서치곤 잘 살린편이라고 생각하긴 합니다.)

 

결론은 Upstage Document Parse 역시 일반화하여 사용할 수 는 없으며, 아직까지 PDF에서 온전히 정보를 추출하는 것은 도메인에 맞게 커스터마이징 하는 과정이 필수적입니다. 단, Upstage Document Parse는 해당 문서 정보 추출이 실패했을 뿐 다른 문서에서는 충분히 힘을 보일 수 있을 것이라고 생각합니다.

 

여러 PDFLoader를 통해 변환하고자 하는 문서 샘플을 변환해보시고, 아래 기준으로 자신에게 가장 적절한 PDFLoader를 선정하세요.

 

1. 내가 갖고 있는 문서 중 주로 파싱해야하는 문서를 잘 변환하는지?

-> 예를 들어, 전체 문서 중 상품설명서가 90%면 해당 문서를 잘 변환하는 것이 가장 중요하기 때문입니다.)

 

2. 그리고 파싱이 제대로 안된 PDF 문서는 어떤 원인이 있는지?

-> 이를 파악하고 좌표 기반으로 레이아웃 텍스트를 재정렬하거나, 세로선이 없는 테이블은 세로선을 긋고 파싱하는 등 예외처리가 필요합니다.

 

이러한 방법으로 해결하고자 하는 상황에 맞게 활용하는 것이 지금으로선 최선인 듯 합니다.

 


6. 결론

사실 어려운 문서로 테스트 해본 것이여서 "Upstage Document Parse도 못한다"라는 글처럼 보일 수도 있지만... 예시로 사용한 문서에 한해서 다른 PDFLoader에 비해 구조를 가장 잘 유지했다고 보이기도 합니다. 

 

그러나, Upstage Document Parse가 가장 좋다는 것은 아니고 각자 상황을 고려하여 직접 테스트 해보시고 가장 적절한 PDFLoader를 선택하시길 추천드립니다.

 

사실 Markdown 포맷으로 변환하는 이유는 LLM(대형 언어 모델)이 구조화된 텍스트 형태의 데이터를 잘 이해하여 정확도를 높일 수 있기 때문입니다.

반면, LLM 이외의 다른 머신러닝 모델이나 수치적 계산 작업에서는 Markdown 포맷으로 변환하는 것이 크게 중요하지 않을 수 있습니다. 예를 들어, 사람이 구조화된 PDF 파일을 보면 한눈에 파악하기 쉽지만, 컴퓨터는 PDF 파일을 직접 시각적으로 보는 것이 아니라 내부적으로 숫자나 텍스트를 추출하여 계산하고 판단하기 때문입니다.

즉, Markdown 포맷이 LLM에게 효율적인 이유는 LLM이 Markdown 형식 데이터를 많이 학습했기 때문입니다. Markdown 자체가 특별히 컴퓨터에 최적화된 구조라기보다는, 인터넷과 다양한 문서에서 널리 사용되어 LLM이 익숙하게 다룰 수 있는 형태이기 때문입니다.

 

그러므로 문서에서 텍스트를 추출하거나 데이터를 전처리하는 별도의 모델이나 방식을 직접 개발하는 경우라면, 반드시 Markdown 형식을 사용할 필요는 없습니다. 예를 들어 PDF에서 바로 텍스트를 추출할 수 있는 PDFLoader와 같은 도구를 사용하거나, 상황과 목적에 맞는 다른 데이터 처리 방식을 선택하는 것이 더 효율적일 수 있습니다.