Aigenthix/Graph_RAG
0
1"""PDF document processor"""2 3import PyPDF24import logging5from typing import Dict, Any6 7logger = logging.getLogger(__name__)8 9 10class PDFProcessor:11 """Processor for PDF documents"""12 13 @staticmethod14 def extract_text(file_path: str) -> str:15 """Extract text from PDF file"""16 text = []17 try:18 with open(file_path, "rb") as pdf_file:19 pdf_reader = PyPDF2.PdfReader(pdf_file)20 num_pages = len(pdf_reader.pages)21 22 for page_num in range(num_pages):23 page = pdf_reader.pages[page_num]24 page_text = page.extract_text()25 text.append(page_text)26 27 extracted_text = "\n".join(text)28 logger.info(f"Extracted text from PDF: {num_pages} pages")29 return extracted_text30 except Exception as e:31 logger.error(f"Failed to extract text from PDF: {e}")32 raise33 34 @staticmethod35 def get_metadata(file_path: str) -> Dict[str, Any]:36 """Extract metadata from PDF"""37 try:38 with open(file_path, "rb") as pdf_file:39 pdf_reader = PyPDF2.PdfReader(pdf_file)40 metadata = pdf_reader.metadata41 42 return {43 "num_pages": len(pdf_reader.pages),44 "title": metadata.title if metadata else None,45 "author": metadata.author if metadata else None,46 }47 except Exception as e:48 logger.error(f"Failed to extract metadata from PDF: {e}")49 return {"num_pages": 0}50 