from fastapi import APIRouter, UploadFile, File, HTTPException import fitz # PyMuPDF import io router = APIRouter() @router.post("/extract") async def extract_pdf(file: UploadFile = File(...)): """ Receives a PDF file and extracts its text content using PyMuPDF. """ if file.content_type != "application/pdf": raise HTTPException(status_code=400, detail="File must be a PDF") try: contents = await file.read() pdf_document = fitz.open(stream=contents, filetype="pdf") extracted_text = "" for page_num in range(len(pdf_document)): page = pdf_document.load_page(page_num) extracted_text += f"\n--- Seite {page_num + 1} ---\n" extracted_text += page.get_text() pdf_document.close() return { "filename": file.filename, "text": extracted_text, "pages": len(pdf_document) } except Exception as e: raise HTTPException(status_code=500, detail=str(e))