LangChain - UnstructuredPDFLoader

문건희·2025년 8월 30일
loader = UnstructuredPDFLoader(pdf_path, mode="elements", strategy="hi_res")

model="elements"

  • PDF내 요소 단위(제목, 본문, 리스트, 표 등)로 잘게 나눠 각각을 별도 Document로 돌려줌.
  • model = "single" : PDF전체를 하나의 Document로 변환
  • model = "paged" : 페이지 단위로 Document로 변환

strategy="hi_res"

  • 고정밀(high-resolution)파이프라인을 사용

  • 내부적으로 unstructured라이브러리의 레이아웃감지(딥러닝/컴퓨터비전) + OCR(스캔된 PDF,이미지)을 활용하여 제목/본문/표/리스트 등 블록 수준 구조를 인식.

  • 장점 : 표/리스트/섹션 헤더처럼 문서 구조를 더 정확히 파악

  • 단점 : 느림, 메모리/의존성 요구 높음.

  • 결과적으로 정보 검색(rag)이나 질의응답에서 "문단/표/리스트"등 의미 단위로 청크가 나뉘어 성능이 좋아지는 경우가 많음.

  • strategy="fast"
    : fast: 텍스트 추출 위주(레이아웃 인식은 약함), 빠름

  • ocr_only
    : 무조건 OCR(스캔 위주 문서에 유용, 일반 PDF엔 불리)

documents = loader.load()
  • 실제로 PDF를 읽어 List[Document]를 반환.
  • model="elements" 이므로 각 요소마다 Document한 개
    - doc.page_content : 해당 블록의 텍스트
    • doc.metadata : source(파일 경로), page_number, category, 등등
  • 스캔본/그림만 있는 PDF도 hi_res 덕분에 OCR로 텍스트를 최대한 뽑아냄

0개의 댓글