rag-vietnamese / src /loader.py
thaidinhz1's picture
Week 1: minimal RAG pipeline - loader, chunker, embedder, vector store, CLI
02ce710
Raw History Blame
1.18 kB
from pathlib import Path
from pypdf import PdfReader
def load_pdf(file_path: str) -> list[dict]:
"""Đọc PDF, trả về list các trang với text + metadata."""
path = Path(file_path)
reader = PdfReader(str(path))
pages = []
for i, page in enumerate(reader.pages):
text = page.extract_text() or ""
text = text.strip()
if not text:
continue
pages.append({
"text": text,
"metadata": {
"source": path.name,
"page": i + 1,
"total_pages": len(reader.pages),
}
})
return pages
def load_folder(folder_path: str) -> list[dict]:
"""Đọc tất cả PDF trong thư mục."""
folder = Path(folder_path)
all_pages = []
pdf_files = list(folder.glob("*.pdf"))
print(f"Tìm thấy {len(pdf_files)} file PDF")
for pdf_path in pdf_files:
try:
pages = load_pdf(str(pdf_path))
all_pages.extend(pages)
print(f" Loaded: {pdf_path.name} ({len(pages)} trang)")
except Exception as e:
print(f" Lỗi {pdf_path.name}: {e}")
return all_pages