6차시. 문서 로딩 실습
7. 실습 ④ — metadata 다듬기
출처: 원본 PDF 06차시_문서로딩실습.pdf 14~15쪽 · 쪽 그림 14쪽 15쪽
기본 metadata에는 파일 경로와 페이지만 들어 있습니다. 여기에 필요한 정보를 직접 추가할수 있습니다.
7-1) 정보 추가하기
📝 문서 분류 정보 붙이기
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) 반복되는 잡음 제거하기
머리말이나 쪽번호가 매 페이지 반복된다면 로딩 직후에 지워주는 것이 좋습니다.
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()