File size: 1,602 Bytes
711f785 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | """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}
|