"""PDF-/Bild-Beleg-Import (Phase 5, lokal). Nutzt die Prüf-/Buchungslogik des CSV-Imports.""" from fastapi import APIRouter, Depends, File, Form, HTTPException, UploadFile from sqlalchemy.orm import Session from ..database import get_db from ..deps import get_current_user, get_owned from ..models import Account, User from ..services import csv_import, ocr router = APIRouter(prefix="/documents", tags=["documents"]) @router.post("/preview") async def preview( file: UploadFile = File(...), account_id: int = Form(...), db: Session = Depends(get_db), user: User = Depends(get_current_user), ) -> dict: account = get_owned(db, Account, account_id, user) data = await file.read() try: text = ocr.extract_text(data, file.filename or "", file.content_type or "") except ocr.ExtractionError as exc: raise HTTPException(status_code=400, detail=str(exc)) candidates = ocr.parse_transactions(text) rows = csv_import.detect_rows(db, user, account, candidates) return { "rows": rows, "text": text[:8000], "count": len(rows), "filename": file.filename or "", }