Graph_RAG / backend /app /processors /pdf_processor.py
Aigenthix's picture
Upload 2585 files
711f785 verified
Raw
History Blame Contribute Delete
1.6 kB
"""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}