from PyPDF2 import PdfReader from typing import Dict, List import json from datetime import datetime import os from pathlib import Path class PDFExtractor: def __init__(self): pass def extract_text(self, file_path: str) -> Dict: """PDF 파일에서 텍스트 추출""" try: # PDF 파일 읽기 pdf_reader = PdfReader(file_path) # 페이지 수 확인 total_pages = len(pdf_reader.pages) # 페이지별 텍스트 추출 text_by_page = [] for page_num, page in enumerate(pdf_reader.pages, 1): text = page.extract_text() if text: text_by_page.append({ "page_number": page_num, "text": text }) # 결과 반환 return { "filename": os.path.basename(file_path), "total_pages": total_pages, "extracted_pages": len(text_by_page), "text_by_page": text_by_page, "timestamp": datetime.now().isoformat() } except Exception as e: raise Exception(f"PDF 텍스트 추출 중 오류 발생: {str(e)}") def save_extracted_text(self, extracted_data: Dict, output_dir: str) -> str: """추출된 텍스트를 JSON 파일로 저장""" output_dir = Path(output_dir) output_dir.mkdir(parents=True, exist_ok=True) filename = f"extracted_{extracted_data['filename'].split('.')[0]}.json" output_path = output_dir / filename with open(output_path, 'w', encoding='utf-8') as f: json.dump(extracted_data, f, ensure_ascii=False, indent=2) return str(output_path) # 싱글톤 인스턴스 생성 pdf_extractor = PDFExtractor()