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