""" AI Processing - Core Utilities. Basis-Funktionen für API-Zugriff, Encoding und Verzeichnisse. """ from pathlib import Path import shutil import os import base64 import logging logger = logging.getLogger(__name__) # Verzeichnisse BASE_DIR = Path.home() / "Arbeitsblaetter" EINGANG_DIR = BASE_DIR / "Eingang" BEREINIGT_DIR = BASE_DIR / "Bereinigt" # Vision API Konfiguration VISION_API = os.getenv("VISION_API", "claude").lower() def get_openai_api_key() -> str: """Holt den OpenAI API Key aus der Umgebungsvariable.""" api_key = os.getenv("OPENAI_API_KEY") if not api_key: raise RuntimeError("OPENAI_API_KEY ist nicht gesetzt. Bitte API-Schlüssel als Umgebungsvariable setzen.") return api_key def get_anthropic_api_key() -> str: """Holt den Anthropic API Key aus der Umgebungsvariable.""" api_key = os.getenv("ANTHROPIC_API_KEY") if not api_key: raise RuntimeError("ANTHROPIC_API_KEY ist nicht gesetzt.") return api_key def encode_image_to_data_url(input_path: Path) -> str: """Kodiert ein Bild als Data-URL für Vision APIs.""" image_bytes = input_path.read_bytes() image_b64 = base64.b64encode(image_bytes).decode("utf-8") return f"data:image/jpeg;base64,{image_b64}" def encode_image_to_base64(input_path: Path) -> str: """Kodiert ein Bild als Base64-String.""" image_bytes = input_path.read_bytes() return base64.b64encode(image_bytes).decode("utf-8") def ensure_directories(): """Stellt sicher, dass alle benötigten Verzeichnisse existieren.""" EINGANG_DIR.mkdir(parents=True, exist_ok=True) BEREINIGT_DIR.mkdir(parents=True, exist_ok=True) def dummy_process_scan(input_path: Path) -> Path: """Einfache Kopie in den Ordner Bereinigt – bleibt als Fallback erhalten.""" if not input_path.exists(): raise FileNotFoundError(f"Eingabedatei nicht gefunden: {input_path}") new_name = input_path.stem + "_bereinigt" + input_path.suffix target = BEREINIGT_DIR / new_name shutil.copy2(input_path, target) return target def get_vision_api() -> str: """Gibt die konfigurierte Vision API zurück.""" return VISION_API