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

6차시. 문서 로딩 실습

4. 실습 ① — 텍스트 파일 읽기

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

가장 단순한 것부터 시작합니다. 먼저 실습용 파일을 만듭시다.

4-1) 실습 파일 준비

프로젝트 폴더 안에 data 폴더를 만들고, 그 안에 notice.txt 파일을 다음 내용으로 저장하세요.

출력
[고객 안내문]

1. 환불 규정
상품 수령 후 7일 이내에 환불을 신청하실 수 있습니다.
단순 변심의 경우 왕복 배송비는 고객 부담입니다.

2. 교환 규정
상품 불량의 경우 30일 이내에 교환이 가능합니다.
이 경우 배송비는 당사가 부담합니다.

3. 고객센터
운영 시간은 평일 09:00 ~ 18:00 입니다.
전화 1588-0000 / 이메일 help@example.com

4-2) 코드 작성

📝 src/load_text.py

Python
from langchain_community.document_loaders import TextLoader

# encoding을 반드시 지정하세요 — 한글 깨짐 방지
loader = TextLoader("data/notice.txt", encoding="utf-8")
docs = loader.load()

print("문서 개수 :", len(docs))
print("본문 길이 :", len(docs[0].page_content), "글자")
print()
print("--- 본문 앞 100자 ---")
print(docs[0].page_content[:100])
print()
print("--- 메타데이터 ---")
print(docs[0].metadata)

실습 코드 · 06/load_text.py

실습 코드: 실습/src/06/load_text.py · 위의 원본 PDF 6차시 8쪽 「4-2) 코드 작성」과 이어집니다.

Python
# ============================================================
# 6차시 | PPT: 06차시_문서로딩실습.pptx
# 역할: PDF를 페이지 단위 Document로 읽기
# 입력: ../../data/notice.pdf
# 출력: 페이지 수, 첫 페이지 본문, metadata
# 흐름:
#   notice.pdf
#     -> PyPDFLoader.load()
#     -> 페이지마다 Document 1개
#     -> print
# ============================================================
# 파일 이름은 load_text.py이지만, 아래 코드는 텍스트가 아니라 PDF를 읽습니다.
# Document: 페이지 1장의 본문(page_content)과 부가 정보(metadata)를 담는 객체
# metadata: 만든 프로그램, 파일 경로(source), 쪽 번호(page) 같은 딕셔너리

# pip install pypdf
from langchain_community.document_loaders import PyPDFLoader

# 로더는 "어떤 파일을 읽을지"만 기억합니다. 실제로 읽는 것은 load()를 부를 때입니다.
# 경로는 실행 위치(실습/src/06) 기준입니다.
loader = PyPDFLoader(
    "../../data/notice.pdf"
)

# PDF는 쪽마다 Document가 됩니다. notice.pdf는 1쪽이라 길이는 1입니다.
documents = loader.load()
print(f"문서 길이 => {len(documents)}")
print()
# 결과는 리스트라서 [0]으로 첫 쪽을 꺼낸 뒤 본문 칸을 봅니다.
print(f"문서 내용 =>\n {documents[0].page_content}")
print()
# source(경로)와 page(0부터 세는 쪽 번호)가 출처 표시에 쓰일 꼬리표입니다.
print(f"메타 =>\n {documents[0].metadata}")

실행 결과 샘플 (교안 기록. API 키가 필요한 코드는 키 없이 맞춘 예시이고, 모델의 답은 실행할 때마다 달라집니다)

출력
===== 실행 결과 샘플 =====
실행: cd 실습/src/06
      python load_text.py
문서 길이 => 1

문서 내용 =>
 고객 안내문
1. 환불 규정
상품 수령 후 7 일 이내에 환불을 신청하실 수 있습니다.
단순 변심의 경우 왕복 배송비는 고객 부담입니다.
2. 교환 규정
상품 불량의 경우 30 일 이내에 교환이 가능합니다.
이 경우 배송비는 당사가 부담합니다.
3. 고객센터
운영 시간은 평일 09:00 ~ 18:00 입니다.
전화 1588-0000 / 이메일 help@example.com

메타 =>
 {'producer': 'LibreOffice 24.2', 'creator': 'Writer', 'creationdate': '2026-09-03T06:20:59+00:00', 'author': 'Un-named', 'source': '../../data/notice.pdf', 'total_pages': 1, 'page': 0, 'page_label': '1'}

코드 해설

PDF를 페이지 단위 Document로 읽기입니다. 입력은 ../../data/notice.pdf이고, 출력은 페이지 수, 첫 페이지 본문, metadata입니다.

주석에 적힌 흐름입니다.

출력
notice.pdf
-> PyPDFLoader.load()
-> 페이지마다 Document 1개
-> print

코드 앞에서 고정해 두는 말입니다.

  • 파일 이름은 load_text.py이지만, 아래 코드는 텍스트가 아니라 PDF를 읽습니다.
  • Document: 페이지 1장의 본문(page_content)과 부가 정보(metadata)를 담는 객체
  • metadata: 만든 프로그램, 파일 경로(source), 쪽 번호(page) 같은 딕셔너리

함수로 나누지 않고 위에서 아래로 실행됩니다.

  • documents = loader.load() — PDF는 쪽마다 Document가 됩니다. notice.pdf는 1쪽이라 길이는 1입니다.

파일 맨 아래 실행 결과 샘플 주석은 실행되지 않습니다. 화면 출력은 다음 절에 다시 적어 두었습니다.

4-3) 실행 결과

출력
문서 개수 : 1
본문 길이 : 213 글자

--- 본문 앞 100자 ---
[고객 안내문]

1. 환불 규정
상품 수령 후 7일 이내에 환불을 신청하실 수 있습니다.
단순 변심의 경우 왕복 배송비는 고객 부담입니다.

--- 메타데이터 ---
{'source': 'data/notice.txt'}

💡 여기서 확인할 것
① 문서 개수가 1개입니다
TXT 파일은 통째로 하나의 Document가 됩니다.
PDF와 다른 점이니 기억해두세요.
② metadata에 source만 있습니다
TXT는 페이지 개념이 없어서 파일 경로만 들어갑니다.
③ 한글이 안 깨졌습니다
encoding="utf-8" 덕분입니다. 빼고 실행해보면 차이를 알 수 있습니다.

← 이전 절6차시 · 3. 문서 형식별 로더 알아보기다음 절 →6차시 · 5. 실습 ② — PDF 읽기