"""PDF document processor""" import PyPDF2 import logging from typing import Dict, Any logger = logging.getLogger(__name__) class PDFProcessor: """Processor for PDF documents""" @staticmethod def extract_text(file_path: str) -> str: """Extract text from PDF file""" text = [] try: with open(file_path, "rb") as pdf_file: pdf_reader = PyPDF2.PdfReader(pdf_file) num_pages = len(pdf_reader.pages) for page_num in range(num_pages): page = pdf_reader.pages[page_num] page_text = page.extract_text() text.append(page_text) extracted_text = "\n".join(text) logger.info(f"Extracted text from PDF: {num_pages} pages") return extracted_text except Exception as e: logger.error(f"Failed to extract text from PDF: {e}") raise @staticmethod def get_metadata(file_path: str) -> Dict[str, Any]: """Extract metadata from PDF""" try: with open(file_path, "rb") as pdf_file: pdf_reader = PyPDF2.PdfReader(pdf_file) metadata = pdf_reader.metadata return { "num_pages": len(pdf_reader.pages), "title": metadata.title if metadata else None, "author": metadata.author if metadata else None, } except Exception as e: logger.error(f"Failed to extract metadata from PDF: {e}") return {"num_pages": 0}