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.com4-2) 코드 작성
📝 src/load_text.py
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) 코드 작성」과 이어집니다.
# ============================================================
# 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" 덕분입니다. 빼고 실행해보면 차이를 알 수 있습니다.