LiteParse: 로컬에서 PDF와 문서를 빠르고 가볍게 파싱하는 오픈소스 도구

LiteParse 소개

문서를 LLM이나 RAG 파이프라인에 넣으려면, 먼저 PDF 같은 원본을 깨끗한 텍스트와 구조로 바꾸는 파싱 단계가 필요합니다. 이때 많은 파싱 도구가 클라우드 API나 별도의 LLM 기능에 의존하는데, LiteParse는 그런 의존성 없이 "fast and light" 만을 목표로 삼은 독립형 오픈소스 PDF 파싱 도구입니다. 모든 처리가 내 컴퓨터에서 로컬로 이뤄집니다.

LiteParse는 PDFium을 이용해 텍스트의 공간 정보를 살린 파싱(spatial text parsing)을 수행하며, 각 텍스트에 바운딩 박스(bounding box) 좌표를 함께 제공합니다. 즉, 어떤 글자가 페이지의 어느 위치에 있었는지까지 보존하기 때문에, 표나 다단 레이아웃처럼 위치가 의미를 갖는 문서에서 유용합니다. 이 프로젝트는 LlamaIndex(run-llama)가 공개했습니다.

다만 제작팀은 한계도 분명히 밝히고 있습니다. 밀집된 표, 다단 레이아웃, 차트, 손글씨, 스캔 PDF처럼 복잡한 문서에서는 로컬 파싱의 한계에 부딪힐 수 있으며, 이런 경우에는 클라우드 기반 상용 서비스인 LlamaParse가 더 나은 결과를 준다고 안내합니다. LiteParse는 어디까지나 가볍고 빠른 로컬 파싱에 초점을 맞춘 도구입니다.

LiteParse의 처리 구조

LiteParse는 PDF뿐 아니라 DOCX, XLSX, PPTX, 이미지를 입력으로 받습니다. PDF가 아닌 포맷은 먼저 LibreOffice나 ImageMagick으로 변환한 뒤, PDFium으로 텍스트를 추출합니다. 이어 필요한 영역에만 선택적으로 OCR을 적용하고, 네이티브 텍스트와 OCR 결과를 병합한 다음, 그리드 투영(grid projection)으로 공간 레이아웃을 재구성합니다.

이 과정의 결과는 텍스트와 바운딩 박스가 담긴 구조화 JSON, 레이아웃이 보존된 평문 텍스트, 그리고 페이지 스크린샷의 세 가지 형태로 출력됩니다. 코어는 Rust로 작성되어 있고, Node.js/TypeScript(napi-rs), Python(PyO3), 브라우저(WASM, wasm-bindgen) 바인딩과 CLI로 제공되어 여러 환경에서 같은 엔진을 사용할 수 있습니다.

LiteParse의 OCR과 출력

OCR 시스템은 세 가지 방식을 제공합니다. 별도 설정 없이 라이브러리에 함께 묶여 있는 Tesseract 를 그대로 쓸 수 있고, EasyOCR이나 PaddleOCR, 직접 만든 서버 같은 외부 OCR을 HTTP로 연결할 수도 있습니다. 이를 위해 OCR_API_SPEC.md에 단순하고 명확한 OCR API 규격이 정의되어 있어, 원하는 OCR 엔진을 표준 인터페이스로 끼워 넣을 수 있습니다.

스크린샷 생성 기능도 함께 제공됩니다. 텍스트만으로는 담기 어려운 시각적 정보를 LLM 에이전트가 활용할 수 있도록, 페이지를 고화질 이미지로 렌더링합니다. 출력은 JSON과 텍스트 형식을 지원하며, JSON에는 각 텍스트의 위치를 나타내는 바운딩 박스 정보가 포함됩니다.

LiteParse 설치 및 사용법

원하는 언어의 패키지 관리자로 설치하며, WASM을 제외한 모든 버전은 동일한 lit CLI를 함께 제공합니다.

npm i @llamaindex/liteparse      # Node.js / TypeScript
pip install liteparse            # Python
cargo install liteparse          # Rust (CLI)

CLI 사용법은 설치 방식과 무관하게 동일합니다. 기본 파싱부터 JSON 출력, 특정 페이지 지정, 디렉토리 일괄 처리, 스크린샷 생성까지 한 명령으로 처리할 수 있습니다.

# 기본 파싱
lit parse document.pdf

# JSON 형식으로 특정 페이지만 파싱
lit parse document.pdf --format json -o output.json --target-pages "1-5,10"

# 디렉토리 전체 일괄 파싱
lit batch-parse ./input-directory ./output-directory

# 페이지 스크린샷 생성 (DPI 지정)
lit screenshot document.pdf --dpi 300 -o ./screenshots

코딩 에이전트에서는 스킬로도 추가할 수 있습니다.

npx skills add run-llama/llamaparse-agent-skills --skill liteparse

LiteParse의 라이선스

LiteParse는 Apache 2.0 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

:books: LiteParse 문서 사이트

:github: LiteParse 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다!
텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: