RAG2026-5일6차시 · 문서 로딩 실습10 / 19← 이전목차다음 →MetaContents

6차시. 문서 로딩 실습

7. 실습 ④ — metadata 다듬기

출처: 원본 PDF 06차시_문서로딩실습.pdf 14~15쪽 · 쪽 그림 14쪽 15쪽

기본 metadata에는 파일 경로와 페이지만 들어 있습니다. 여기에 필요한 정보를 직접 추가할수 있습니다.

7-1) 정보 추가하기

📝 문서 분류 정보 붙이기

Python
import os
docs = PyPDFLoader("data/manual.pdf").load()
for d in docs:
    # 파일 이름만 뽑아내기 (경로 제거)
    d.metadata["filename"] = os.path.basename(d.metadata["source"])
    # 사람이 읽는 페이지 번호 (0부터 → 1부터)
    d.metadata["page_no"] = d.metadata["page"] + 1
    # 문서 분류를 직접 붙여주기
    d.metadata["category"] = "제품설명서"

print(docs[0].metadata)
# {'source': 'data/manual.pdf', 'page': 0,
#  'filename': 'manual.pdf', 'page_no': 1,
#  'category': '제품설명서'}

실행 결과 예시 (코드를 읽고 만든 예상 화면입니다. 실제 실행 결과, 특히 모델의 답은 다를 수 있습니다)

출력
{'producer': 'ReportLab PDF Library - (opensource)', 'creator': '(unspecified)', 'creationdate': '2026-09-20T09:07:25+00:00', 'author': '', 'keywords': '', 'moddate': '2026-09-20T09:07:25+00:00', 'subject': '(unspecified)', 'title': '제품 사용 설명서 - 가정용 공기청정기 AP-3300', 'trapped': '/False', 'source': 'data/manual.pdf', 'total_pages': 3, 'page': 0, 'page_label': '1', 'filename': 'manual.pdf', 'page_no': 1, 'category': '제품설명서'}

💡 이 정보가 나중에 어디에 쓰이나요?
filename · page_no
→ 답변에 "인사규정.pdf 1페이지" 라고 출처를 표시할 때
category · dept
→ "인사규정 문서에서만 검색해줘" 같은
조건 검색을 할 때 (11차시에서 배웁니다)
지금 넣어두면 나중에 아주 유용합니다.

7-2) 반복되는 잡음 제거하기

머리말이나 쪽번호가 매 페이지 반복된다면 로딩 직후에 지워주는 것이 좋습니다.

Python
import re

NOISE = [
    "㈜한국주식회사 대외비",
    "본 문서의 무단 배포를 금합니다",
]

for d in docs:
    text = d.page_content
    # ① 목록에 있는 문구를 그대로 지우기
    for n in NOISE:
        text = text.replace(n, "")
    # ② "- 3 -" 같은 쪽번호 패턴 지우기
    #    \d+ = 숫자 하나 이상
    text = re.sub(r"-\s*\d+\s*-", "", text)
    # ③ 빈 줄이 3번 넘게 이어지면 2번으로 줄이기
    text = re.sub(r"\n{3,}", "\n\n", text)
    d.page_content = text.strip()
← 이전 절6차시 · 6. 실습 ③ — 로딩 결과 검증하기다음 절 →6차시 · 8. 실습 ⑤ — 폴더 전체 읽기