
생성형 AI(GenAI)가 정보 생산과 소비 방식을 급격히 변화시키는 시대에 우리는 살고 있습니다. 그러나 이 강력한 기술은 정확한 데이터를 대량으로 필요로 합니다. 현재 대규모 언어 모델(LLM)은 접근성이 좋고 풍부한 HTML 웹페이지에서 주로 학습되고 있지만, 모든 중요한 정보가 HTML 형태로 존재하는 것은 아닙니다.
수백만 개의 PDF 문서들 속에는 사실, 수치, 방정식, 법률 및 규정 등 AI에게 매우 유용한 데이터가 담겨 있습니다. 하지만 PDF에서 이러한 데이터를 추출하는 것은 여전히 큰 도전 과제입니다. 이 글에서는 LlamaIndex의 LlamaParse를 통해 PDF 문서에서 정보를 쉽게 추출하는 방법을 알아보겠습니다.
PDF 파싱의 어려움
HTML과 달리 PDF는 원래 인쇄 문서의 시각적 모양을 보존하기 위해 만들어졌습니다. 구조적 메타데이터를 인코딩하는 기능이 나중에 추가되었지만, 이 과정은 복잡하고 번거로운 경우가 많습니다.
더 큰 문제는 PDF를 생성하는 많은 애플리케이션들이 구조적 메타데이터를 잘못 포함시키는 경우가 많다는 점입니다. 예를 들어, Adobe InDesign에서 생성된 PDF는 종종 페이지의 읽기 순서를 디자이너가 작업한 요소 순서를 기준으로 설정하기도 합니다.
LlamaParse란 무엇인가?
LlamaParse는 복잡한 문서를 파싱하고 LLM 애플리케이션을 위한 깔끔한 데이터로 변환하는 생성형 AI 기반 파싱 플랫폼입니다. 이 도구는 LLM 애플리케이션 구축을 위한 오픈소스 데이터 조율 프레임워크인 LlamaIndex와 통합되어 있습니다.
LlamaParse의 주요 장점:
✅ 다양한 비정형 파일 유형(.pdf, .pptx, .docx, .xlsx, .html, jpeg 등) 파싱 ✅ 내장된 표를 텍스트 및 반정형 표현으로 정확하게 파싱 ✅ 이미지와 다이어그램에서 데이터 추출 ✅ 자연어 명령을 통한 출력 맞춤 설정
LlamaParse를 사용하는 이점
일반 PDF 파서나 수동 방식으로도 PDF 데이터를 추출할 수 있지만, LlamaParse를 사용하면 다음과 같은 이점이 있습니다:
- LLM 지능을 활용하여 데이터 추출에 필요한 시간과 노력을 대폭 감소
- 다양한 소스에서 데이터를 해방시켜 생성형 AI 애플리케이션에 사용 가능한 데이터 볼륨 증가
- 비정형 데이터를 구조화된 데이터로 변환
LlamaParse로 PDF에서 정보 추출하기
LlamaParse는 UI(LlamaCloud), API 또는 다양한 언어 SDK를 통해 사용할 수 있습니다. 여기서는 Python을 사용한 몇 가지 특징을 살펴보겠습니다.
시작하기: LlamaIndex 및 LlamaParse 설치
먼저 Python 가상 환경을 만들고 필요한 패키지를 설치합니다:
pip install llama-index
pip install llama-parse
API 키 설정
LlamaCloud 계정을 만들고 API 키를 생성해야 합니다.

API 키를 생성한 후 환경 변수로 설정하는 것이 좋습니다:
export LLAMA_CLOUD_API_KEY='yourkey12345....'
LlamaParse와 Python으로 첫 PDF 파싱하기
간단한 예제로 Nasdaq-100과 S&P 500의 투자 수익을 비교하는 2페이지 보고서를 파싱해 보겠습니다:
from llama_parse import LlamaParse
parser = LlamaParse(
# api_key="llx-...", # 환경 변수를 설정하지 않았다면 여기에 API 키를 입력
result_type="markdown", # "markdown"과 "text" 중 선택 가능
)
file_name = "./NDX-vs-SPX_2 pager.pdf"
extra_info = {"file_name": file_name}
with open(f"./{file_name}", "rb") as f:
# 파일 객체를 전달할 때 extra_info에 file_name 키를 제공해야 함
documents = parser.load_data(f, extra_info=extra_info)
# 출력을 파일에 저장
with open("output.md", "w", encoding="utf-8") as f:
for doc in documents:
f.write(doc.text)
차트와 그래프에서 데이터 추출하기
기본 모드에서는 그래프와 같은 복잡한 요소의 처리를 건너뛰지만, 다음과 같이 설정을 변경하여 고급 파싱 모드를 활성화할 수 있습니다:
parser = LlamaParse(
result_type="markdown",
extract_charts=True,
auto_mode=True,
auto_mode_trigger_on_image_in_page=True,
auto_mode_trigger_on_table_in_page=True,
)
이렇게 설정하면 문서의 차트와 그래프도 표 형태로 추출됩니다. 예를 들어:
Industry (ICB) Breakdown
| Industry | Nasdaq-100 Industry (ICB) Weights | S&P 500 Industry (ICB) Weights |
|----------|-----------------------------------|--------------------------------|
| Technology | 55% | 22% |
| Consumer Services | 25% | 14% |
| Health Care | 8% | 13% |
...
파싱 모드에 대한 자세한 내용과 LlamaParse 자동 모드로 파싱 비용을 최적화하는 방법에 대해 더 알아볼 수 있습니다.
PDF 파싱 세부 조정하기
LlamaParse는 다양한 방법으로 파싱 과정을 조정할 수 있는 기능을 제공합니다.
출력 번역하기
스페인어 문서를 영어로 번역하여 저장해야 할 경우 다음과 같이 LLM에 전달되는 프롬프트를 사용자 정의할 수 있습니다:
parser = LlamaParse(
result_type="markdown",
user_prompt="If the input is not in English, translate the output into English."
)
파싱 범위 제한/타겟팅
특정 페이지만 파싱하고 싶을 때:
parser = LlamaParse(
target_pages="0,10,12,22-33"
)
문서의 헤더나 푸터를 무시하고 싶을 때:
parser = LlamaParse(
bbox_top=0.1,
bbox_bottom=0.05
)
데이터를 벡터 데이터베이스에 저장하기
추출한 데이터를 Elasticsearch와 같은 벡터 데이터베이스에 저장할 수도 있습니다. 이를 위해서는 OpenAI 및 Elastic Cloud에서 API 키를 얻고 몇 가지 추가 종속성을 설치해야 합니다:
from llama_index.vector_stores.elasticsearch import ElasticsearchStore
from llama_index.core.node_parser import SimpleNodeParser
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core import VectorStoreIndex, StorageContext
es_store = ElasticsearchStore(
index_name="llama-parse-docs",
es_cloud_id=es_cloud_id, # 배포 페이지에서 찾을 수 있음
es_api_key=es_api_key, # Kibana(Security -> API Keys)에서 API 키 생성
)
node_parser = SimpleNodeParser()
nodes = node_parser.get_nodes_from_documents(documents)
storage_context = StorageContext.from_defaults(vector_store=es_store)
index = VectorStoreIndex(
nodes=nodes,
storage_context=storage_context,
embed_model=OpenAIEmbedding(api_key=openai_api_key),
)
결론: AI 시대의 문서 데이터 활용
LlamaParse는 PDF 및 기타 비정형 데이터 파싱을 그 어느 때보다 쉽고 효율적으로 만들어줍니다. 이는 생성형 AI 애플리케이션에 사용 가능한 데이터를 기하급수적으로 증가시키면서, 개발자들이 데이터 추출과 파싱에 시간을 낭비하지 않고 혁신에 집중할 수 있게 합니다.
특히 국내 기업들이 보유한 수많은 PDF 형태의 보고서, 매뉴얼, 법률 문서들을 생성형 AI 솔루션에 통합하고자 하는 이들에게 LlamaParse는 매우 유용한 도구가 될 것입니다. 지금 바로 LlamaParse를 시작하고 하루에 최대 1000페이지를 무료로 파싱해 보세요.
기술적 시사점
PDF 문서에서 데이터를 추출하는 것은 기업의 AI 전략에서 중요한 부분이지만, 종종 간과되는 영역입니다. LlamaParse와 같은 도구의 등장은 AI 개발 과정에서 데이터 전처리 단계를 크게 간소화할 수 있음을 보여줍니다.
특히 한국 기업과 기관에서는 수많은 내부 문서와 보고서가 PDF 형태로 존재하며, 이들이 가진 귀중한 데이터를 AI 시스템에 활용하는 것이 중요한 과제입니다. LlamaParse를 통한 효율적인 데이터 추출은 기업 내부 지식 관리 시스템을 구축하고, 더 정확한 AI 기반 의사결정을 지원하는 데 기여할 수 있을 것입니다.
참고자료: Parsing PDFs with LlamaParse: a how-to guide — LlamaIndex
답글 남기기