Version: 1.19.0 Datum: 2026-01-04 Lizenz: Proprietär Plattformen: Windows 11, macOS 15+ (Sequoia), Linux
FileInventory ist ein intelligentes Python-Tool zur automatischen Analyse und Zusammenfassung von Dokumenten in OneDrive-Verzeichnissen. Das System nutzt lokale Large Language Models (LLM) über LM Studio, um kompakte, aussagekräftige Zusammenfassungen von verschiedenen Dateiformaten zu erstellen.
- Multiformat-Unterstützung: PDF, Word (.docx/.doc), Excel (.xlsx/.xls/.xlsm/.xltx), PowerPoint (.pptx/.ppt), Text, Markdown und Bilder
- OCR-Unterstützung: Automatische Texterkennung für gescannte PDFs mit Tesseract OCR
- RAG-Optimierung: Wissensextraktion für semantische Suche mit Schlüsselbegriffen und strukturierter Zusammenfassung
- Named Entity Recognition: Automatische Extraktion von Firmen, Personen, Institutionen und Organisationen
- DSGVO-Klassifizierung: Automatische Erkennung besonders schutzbedürftiger personenbezogener Daten gemäß Art. 9 DSGVO und § 26 BDSG (NEU in v1.18.0)
- Kombinierte Datenbank: Erstellt durchsuchbare JSON-Datenbanken für ChatGPT/Claude
- Cross-Platform: Volle Unterstützung für Windows 11, macOS 15+ und Linux mit automatischer Plattformerkennung
- LLM-basierte Analyse: Intelligente Zusammenfassungen mit RAG-optimierten, dateityp-spezifischen Prompts
- Vision-Fähigkeit: Bildanalyse und -beschreibung mittels multimodaler Modelle
- Icon-Filter: Automatisches Überspringen kleiner Bilder (<10 KB)
- Validierung: Automatische Überprüfung und Neuerstellung fehlerhafter JSON-Ausgaben
- Fortschrittsüberwachung: Detaillierte Zeitschätzungen und Statistiken mit Dateiendungs-Übersicht und OCR-Zähler
- Interaktive Steuerung: Pause/Resume-Funktionalität während der Verarbeitung
- Professionelle Fehlerbehandlung: Intelligente LM Studio-Fehlerbehandlung mit Benutzerabfragen
- Legacy-Format-Support: Unterstützung für alte Office-Formate (.doc, .ppt, .xls)
- Windows: Windows 11 (empfohlen), Windows 10 mit UTF-8 Support
- macOS: Version 15+ (Sequoia), ältere Versionen ab 10.15 (Catalina) kompatibel
- Linux: Ubuntu 20.04+, Debian 11+, Fedora 35+
- Automatische Plattformerkennung und -konfiguration
- Python: Version 3.8 oder höher (Python 3.12+ empfohlen)
- LM Studio: Aktuelle Version mit laufendem lokalem Server
- OneDrive: OneDrive App installiert und synchronisiert (optional, automatisch erkannt)
- RAM: Mindestens 8 GB (16 GB empfohlen)
- GPU: Optional, beschleunigt LLM-Inferenz erheblich (Apple Silicon bevorzugt)
- Festplatte: Ausreichend Speicherplatz für JSON-Ausgaben
FileInventory unterstützt Windows 11, macOS 15+ und Linux mit automatischer Plattformerkennung.
📖 Detaillierte Plattform-Informationen: Siehe PLATFORM_SUPPORT.md
- Automatische OneDrive-Pfad-Erkennung
- Plattformspezifische Tastatureingabe
- Platform-optimierte Tesseract OCR Installation
- Angepasste Standard-Verzeichnisse
# Installieren Sie Homebrew falls noch nicht vorhanden
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Installieren Sie Python
brew install python@3.12- Besuchen Sie python.org/downloads
- Laden Sie Python 3.12.x für macOS herunter
- Installieren Sie das .pkg-Paket
python3 --version
# Erwartete Ausgabe: Python 3.12.xÖffnen Sie Terminal und führen Sie folgende Befehle aus:
# Navigieren Sie zum Skript-Verzeichnis
cd ~/Library/CloudStorage/Dropbox/Frank/Code/MKU
# Optional: Erstellen Sie eine virtuelle Umgebung
python3 -m venv .venv
source .venv/bin/activate
# Installieren Sie alle erforderlichen Bibliotheken
pip install -r requirements.txt| Bibliothek | Zweck | Version |
|---|---|---|
pdfplumber |
PDF-Textextraktion | 0.11.4 |
python-docx |
Word-Dokumentenverarbeitung | 1.1.2 |
python-pptx |
PowerPoint-Analyse | 1.0.2 |
openpyxl |
Excel-Datenextraktion | 3.1.5 |
requests |
HTTP-Kommunikation mit LM Studio | 2.32.3 |
pytesseract |
OCR für gescannte PDFs | 0.3.13 |
Pillow |
Bildverarbeitung für OCR | 12.0.0 |
- Laden Sie LM Studio für macOS herunter: lmstudio.ai
- Installieren Sie die Anwendung
- Laden Sie ein LLM-Modell herunter (Empfehlungen siehe unten)
- mistralai/ministral-3-14b-reasoning (empfohlen, getestet - 262k Tokens Context, hohe Präzision)
- ministral-3-3b-instruct (leichtgewichtig, schnell)
- Mistral-7B-Instruct (ausgewogen)
- Llama-3-8B-Instruct (hochwertig)
- Qwen-2.5-14B (sehr gut für deutsche Texte, 32k Tokens Context)
- LLaVA-v1.6-Mistral-7B
- BakLLaVA-1
- Obsidian-3B-Multimodal
- Öffnen Sie LM Studio
- Laden Sie das gewünschte Modell
- Wechseln Sie zur "Local Server" Ansicht
- Starten Sie den Server auf Port 1234 (Standard)
- Notieren Sie den "Model Name" (wird in
FileInventory.pybenötigt)
Die Plattform-Konfiguration erfolgt automatisch über platform_config.py:
- Windows: OneDrive wird aus Umgebungsvariablen erkannt
- macOS: Neue CloudStorage-Struktur wird automatisch erkannt
- Linux: Standard-Dokumentenordner
Manuelle Anpassungen sind in platform_config.py möglich.
LM Studio Konfiguration in FileInventory.py:
LMSTUDIO_API_URL = "http://localhost:1234/v1/chat/completions"
MODEL_NAME = "local-model" # Ersetzen Sie mit dem Namen aus LM Studio
# Modell Context-Länge (maximale Anzahl Tokens)
# - Kleinere Modelle (z.B. Llama 3 8B): 8192
# - Größere Modelle (z.B. Qwen 2.5 14B): 32768
# - Reasoning-Modelle (z.B. ministral-3-14b-reasoning): 262144
MAX_CONTEXT_TOKENS = 262144# Installation via Homebrew (empfohlen)
brew install tesseract
# Deutsche Sprachdaten installieren
brew install tesseract-lang# Oder nur deutsche Sprachdaten
brew install tesseract
# Die deutschen Sprachdaten werden automatisch mitinstallierttesseract --version
# Erwartete Ausgabe: tesseract 5.x.x
# Prüfe verfügbare Sprachen
tesseract --list-langs
# Sollte 'deu' (Deutsch) enthalten- Automatische Erkennung: Das System erkennt automatisch gescannte PDFs (Seiten mit <10 Zeichen extrahiertem Text)
- Hohe Auflösung: OCR verwendet 300 DPI für optimale Texterkennung
- Deutsch-Optimiert: Verwendet 'deu' Sprachmodell für deutsche Texte
- Fortschrittsanzeige: Bei mehrseitigen gescannten PDFs wird der OCR-Fortschritt angezeigt
- Statistik: OCR-verarbeitete Dokumente werden in den Berichten separat gezählt
- Optional: Wenn Tesseract nicht installiert ist, werden gescannte PDFs übersprungen (mit Warnung)
Öffnen Sie FileInventory.py und passen Sie die Pfade an:
# Quellverzeichnis (OneDrive)
SRC_ROOT = os.path.expanduser("~/OneDrive - CompanyName")
# Zielverzeichnis für JSON-Ausgaben
DST_ROOT = os.path.expanduser("~/LLM")Standardmäßig werden folgende Formate verarbeitet:
EXTENSIONS = {
".pdf", # PDF-Dokumente
".docx", ".doc", # Word-Dokumente (neu und alt)
".pptx", ".ppt", # PowerPoint-Präsentationen (neu und alt)
".xlsx", ".xls", ".xlsm", ".xltx", # Excel-Dateien (neu, alt, Makro, Vorlagen)
".txt", ".md", # Textdateien
".png", ".jpg", ".jpeg" # Bilddateien
}Anpassung: Entfernen oder ergänzen Sie Dateitypen nach Bedarf.
# Minimale Dateigröße für Bilddateien (in Bytes) - ignoriere kleine Icons
MIN_IMAGE_SIZE = 10 * 1024 # 10 KBFileInventory unterstützt folgende Kommandozeilenparameter:
# Hilfe anzeigen
python3 FileInventory.py -h
python3 FileInventory.py --help
# Version anzeigen
python3 FileInventory.py --version
# Mit benutzerdefinierten Verzeichnissen
python3 FileInventory.py --src ~/Documents --dst ~/Summaries
# Kleineres Modell mit 8k Token Context
python3 FileInventory.py --max-tokens 8192
# Vollständig benutzerdefiniert
python3 FileInventory.py --src ~/Docs --dst ~/Summaries --max-tokens 32768
# Kombinierte Datenbank erstellen (empfohlen für ChatGPT/Claude)
python3 FileInventory.py --create-database
# Datenbank mit benutzerdefinierter Größe
python3 FileInventory.py --create-database --max-database-size 50
# Datenbank in benutzerdefiniertem Verzeichnis
python3 FileInventory.py --create-database --database-output ~/MyDatabase
# DSGVO-Klassifizierung für bestehende JSONs hinzufügen
python3 FileInventory.py --update-dsgvo
# Standard-Verzeichnisse und -Einstellungen verwenden
python3 FileInventory.pyVerfügbare Parameter:
| Parameter | Beschreibung | Standard |
|---|---|---|
-h, --help |
Zeigt Hilfe und alle verfügbaren Optionen | - |
--version |
Zeigt Versionsinformation | - |
--src VERZEICHNIS |
Quellverzeichnis für Dokumente | ~/OneDrive - CompanyName |
--dst VERZEICHNIS |
Zielverzeichnis für JSON-Dateien | ~/LLM |
--max-tokens TOKENS |
Maximale Context-Länge des Modells in Tokens | 262144 |
--create-database |
Erstellt kombinierte JSON-Datenbank aus allen einzelnen JSON-Dateien | - |
--database-output DIR |
Ausgabeverzeichnis für Datenbank-Dateien | ~/LLM/database |
--max-database-size MB |
Maximale Größe pro Datenbank-Datei in MB | 30 |
--cleanup-phones |
Bereinigt ungültige Telefonnummern aus allen JSON-Dateien | - |
--update-dsgvo |
Aktualisiert alle JSON-Dateien mit DSGVO-Klassifizierung | - |
cd ~/Library/CloudStorage/Dropbox/Frank/Code/MKU
# Mit virtueller Umgebung
source .venv/bin/activate
python3 FileInventory.py
# Ohne virtuelle Umgebung
python3 FileInventory.py
# Mit benutzerdefinierten Verzeichnissen
python3 FileInventory.py --src ~/Documents --dst ~/Summaries- Pause: Drücken Sie Enter während der Verarbeitung
- Fortsetzen: Wählen Sie
J(Ja) - Abbrechen: Wählen Sie
N(Nein)
Beim ersten LM Studio-Fehler werden Sie gefragt:
================================================================================
FEHLER BEI DER VERARBEITUNG
================================================================================
Datei: beispiel.pdf
Fehler: Netzwerkfehler bei der Zusammenfassung: Connection timeout
--------------------------------------------------------------------------------
Wie möchten Sie fortfahren?
[A] Abbrechen - Verarbeitung sofort beenden
[W] Weiter ohne Fehlerabfragen - Weitere Fehler stillschweigend überspringen
[F] Weiter mit Fehlerabfragen - Bei jedem Fehler erneut nachfragen
--------------------------------------------------------------------------------
Bitte wählen Sie (A/W/F):
Optionen:
- A: Programm wird sofort beendet
- W: Fehlerhafte Dateien werden übersprungen, keine weiteren Abfragen
- F: Bei jedem Fehler erfolgt eine erneute Abfrage
Nach der Verarbeitung Ihrer Dokumente können Sie eine kombinierte JSON-Datenbank erstellen, die alle Zusammenfassungen in wenigen großen Dateien zusammenfasst. Dies ist ideal für die Verwendung mit ChatGPT oder Claude.
# Aktiviere virtuelle Umgebung
source .venv/bin/activate
# Erstelle Datenbank mit Standard-Einstellungen (max 30 MB pro Datei)
python3 FileInventory.py --create-databaseDie Datenbank wird standardmäßig im Verzeichnis ~/LLM/database/ erstellt:
~/LLM/database/
├── file_database_001.json (10.19 MB, 6,283 Dokumente)
Jede Datenbank-Datei enthält Metadaten und alle Dokumente:
{
"metadata": {
"created": "2025-12-28T19:18:03.965074",
"source_directory": "/Users/username/OneDrive - CompanyName",
"json_directory": "/Users/username/LLM",
"script_version": "1.9.0",
"script_date": "2025-12-28",
"batch_number": 1,
"documents_in_batch": 6283,
"max_size_mb": 30
},
"documents": [
{
"path": "Projekte/Kunde_A/Beispieldokument.pdf",
"ext": ".pdf",
"size": 1048576,
"summary": "...",
"keywords": ["Projekt", "Kunde A", "..."]
},
...
]
}- Lade die Datenbank-Datei hoch zu ChatGPT oder Claude
- Stelle Fragen über Ihre Dokumente:
- "Suche alle Projekte mit dem Kunden X"
- "Welche Dokumente erwähnen digitale Transformation?"
- "Finde alle PDFs von [specific person]"
- "Liste alle Dokumente mit dem Keyword 'Innovation' auf"
# Kleinere Dateien (z.B. 5 MB für bessere Uploads)
python3 FileInventory.py --create-database --max-database-size 5
# Benutzerdefiniertes Ausgabeverzeichnis
python3 FileInventory.py --create-database --database-output ~/Desktop/Datenbank
# Mit benutzerdefinierten Quell-Verzeichnissen
python3 FileInventory.py --dst ~/Summaries --create-database- Schnellere Uploads: Eine große Datei statt tausende kleine
- Bessere Durchsuchbarkeit: ChatGPT/Claude kann alle Dokumente auf einmal durchsuchen
- Metadaten: Enthält Versionsinformationen und Verarbeitungsdetails
- Flexible Größe: Automatische Aufteilung bei Überschreitung der max. Größe
Für jede verarbeitete Datei wird eine JSON-Datei erstellt:
{
"path": "Projekte/Kunde_A/Beispieldokument.pdf",
"ext": ".pdf",
"size": 1048576,
"created": "2025-01-15T10:30:00",
"modified": "2025-01-20T14:45:00",
"chars": 15420,
"summary": "Projektübersicht für Kunde A mit John Doe als Projektleiter. Beschreibt Meilensteine Q1-Q4 2025 mit Fokus auf digitale Transformation und Prozessoptimierung.",
"keywords": [
"Projektübersicht",
"John Doe",
"Meilensteine 2025",
"Digitale Transformation",
"Prozessoptimierung",
"Q1-Q4"
],
"entities": {
"companies": ["Kunde A GmbH"],
"persons": ["John Doe"],
"institutions": [],
"organizations": [],
"projects": [],
"urls": [],
"emails": ["kontakt@kunde-a.de"],
"phone_numbers": ["+49 30 12345678"]
},
"dsgvo_classification": {
"contains_sensitive_data": false,
"data_categories": [],
"legal_basis": [],
"protection_level": null,
"detected_keywords": {}
},
"ocr_info": {
"used_ocr": true,
"ocr_pages": 15,
"total_pages": 20,
"ocr_chars": 12350
}
}| Feld | Beschreibung |
|---|---|
path |
Relativer Pfad zur Quelldatei (inkl. Dateiname) |
ext |
Dateierweiterung |
size |
Dateigröße in Bytes |
created |
Erstellungszeitpunkt (ISO 8601) |
modified |
Letzte Änderung (ISO 8601) |
chars |
Anzahl extrahierter Zeichen |
summary |
KI-generierte Zusammenfassung (max. 1500 Zeichen, RAG-optimiert, auf Deutsch) |
keywords |
Array: Extrahierte Schlüsselbegriffe als Liste für schnelle Kategorisierung |
entities |
Objekt: Named Entities (Firmen, Personen, Institutionen, Organisationen) |
entities.companies |
Array: Liste extrahierter Firmennamen |
entities.persons |
Array: Liste extrahierter Personennamen |
entities.institutions |
Array: Liste extrahierter Institutionen (Behörden, Universitäten, etc.) |
entities.organizations |
Array: Liste extrahierter Organisationen (Vereine, Verbände, NGOs, etc.) |
entities.projects |
Array: Liste extrahierter Projektnamen |
entities.urls |
Array: Liste extrahierter URLs |
entities.emails |
Array: Liste extrahierter E-Mail-Adressen |
entities.phone_numbers |
Array: Liste extrahierter Telefonnummern |
dsgvo_classification |
Objekt: DSGVO-Klassifizierung (NEU in v1.18.0) |
dsgvo_classification.contains_sensitive_data |
Boolean - ob besonders schutzbedürftige Daten erkannt wurden |
dsgvo_classification.data_categories |
Array: Erkannte Kategorien (z.B. GEHALTSABRECHNUNG, LEBENSLAUF, GESUNDHEITSDATEN) |
dsgvo_classification.legal_basis |
Array: Rechtliche Grundlagen (Art. 9 DSGVO, § 26 BDSG) |
dsgvo_classification.protection_level |
String - Schutzklasse ("hoch", "sehr hoch" oder null) |
dsgvo_classification.detected_keywords |
Objekt: Gefundene Keywords pro Kategorie |
ocr_info |
Optional: OCR-Metadaten (nur bei gescannten PDFs) |
ocr_info.used_ocr |
Boolean - ob OCR verwendet wurde |
ocr_info.ocr_pages |
Anzahl der Seiten, die mit OCR verarbeitet wurden |
ocr_info.total_pages |
Gesamtzahl der PDF-Seiten |
ocr_info.ocr_chars |
Anzahl der via OCR extrahierten Zeichen |
┌─────────────────────────────────────────────────────────────┐
│ 1. Dateiscan mit Live-Fortschrittsanzeige │
│ └─> Rekursive Durchsuchung des OneDrive-Verzeichnisses │
│ └─> Statistik nach Dateiendungen │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 2. LM Studio-Verbindungscheck │
│ └─> Prüfung auf erreichbaren Server │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 3. Dateizugriffsprüfung │
│ └─> OneDrive-Dateien sind direkt verfügbar auf macOS │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 4. Bildgrößenfilter (für PNG/JPG/JPEG) │
│ └─> Überspringt Dateien < 10 KB (Icons) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 5. Textextraktion │
│ ├─> PDF: pdfplumber + OCR-Fallback (Tesseract) │
│ │ └─> Automatische OCR-Erkennung bei <10 Zeichen/Seite│
│ │ └─> 300 DPI Auflösung für optimale Texterkennung │
│ ├─> DOCX/DOC: python-docx │
│ ├─> PPTX/PPT: python-pptx │
│ ├─> XLSX/XLS/XLSM/XLTX: openpyxl (Werte, keine Formeln)│
│ ├─> TXT/MD: UTF-8 + Latin-1 Fallback │
│ └─> PNG/JPG: Base64 + Vision API │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 6. LLM-Zusammenfassung │
│ ├─> Dateityp-spezifische Prompts (AUF DEUTSCH) │
│ ├─> Adaptive Textkürzung (30k → 3k Zeichen) │
│ ├─> Context/Token-Overflow Handling mit Retry │
│ └─> Professionelle Fehlerbehandlung mit Benutzerabfrage │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 7. JSON-Ausgabe │
│ ├─> Validierung vorhandener Dateien │
│ └─> Speicherung unter DST_ROOT │
└─────────────────────────────────────────────────────────────┘
Das System verwendet einen spezialisierten RAG-Ansatz (Retrieval-Augmented Generation) für maximale Auffindbarkeit:
Prompt-Struktur:
- Sachliche, informationsdichte Zusammenfassungen ohne Meta-Kommentare
- Beibehaltung wichtiger Fachbegriffe, Zahlen, Technologien und Personennamen
- Beschreibung von Zweck, Inhalt, Kontext und Besonderheiten
- Strukturierte Darstellung: Was? Wozu? Welche Inhalte? Was ist besonders?
- Kommagetrennte Schlüsselbegriff-Liste am Ende jeder Zusammenfassung
Dateityp-spezifische Schwerpunkte:
- PDF/DOCX/DOC: Dokumenteninhalt, Kernaussagen, Personen und ihre Rollen
- PPTX/PPT: Präsentationsthemen, Kernbotschaften, Folienstruktur
- XLSX/XLS/XLSM/XLTX: Datenarten, Kategorien, Zahlen, Automatisierung
- TXT/MD: Textinhalt, Dokumentstruktur, technische Details
- PNG/JPG/JPEG: Bildinhalte, sichtbarer Text, Diagramme, Personen
Vorteile für semantische Suche:
- Maximale Informationsdichte (bis zu 1000 Zeichen)
- Separates Keywords-Array für schnelle Kategorisierung und Filterung
- Automatische Extraktion der Schlüsselbegriffe aus der LLM-Antwort
- Keine ablenkenden Formatierungen oder Füllwörter
- Optimiert für Vektorsuche und RAG-Systeme
- Keywords ermöglichen effiziente Volltextsuche und Indexierung
Das System berechnet automatisch die optimale Textlänge basierend auf MAX_CONTEXT_TOKENS:
Beispiel für MAX_CONTEXT_TOKENS = 262144 (ministral-3-14b-reasoning):
Versuch 1: 1.044.576 Zeichen (~261.000 Tokens) - Nutzt fast vollen Context
Versuch 2: 699.666 Zeichen (~175.000 Tokens) - 67% des Max-Context
Versuch 3: 490.951 Zeichen (~123.000 Tokens) - 47% des Max-Context
Versuch 4: 344.710 Zeichen (~86.000 Tokens) - 33% des Max-Context
Versuch 5: 208.915 Zeichen (~52.000 Tokens) - 20% des Max-Context
Versuch 6: 3.000 Zeichen (~750 Tokens) - Minimum-Fallback
Beispiel für MAX_CONTEXT_TOKENS = 8192 (kleinere Modelle):
Versuch 1: 28.768 Zeichen (~7.200 Tokens)
Versuch 2: 19.274 Zeichen (~4.800 Tokens)
Versuch 3: 13.520 Zeichen (~3.400 Tokens)
Versuch 4: 9.493 Zeichen (~2.400 Tokens)
Versuch 5: 5.753 Zeichen (~1.400 Tokens)
Versuch 6: 3.000 Zeichen (~750 Tokens)
Annahme: ~4 Zeichen pro Token (konservativ für deutsche Texte)
Verbesserte Fehlerkennung: Das System erkennt Context-Fehler anhand der Keywords "context", "token" oder "length" in der Fehlermeldung.
Beim ersten LM Studio-Fehler (Netzwerk, Validierung, Typ-Fehler) wird der Benutzer gefragt, wie fortgefahren werden soll:
- Abbrechen: Programm wird sofort beendet
- Weiter ohne Fehlerabfragen: Fehlerhafte Dateien werden stillschweigend übersprungen
- Weiter mit Fehlerabfragen: Bei jedem Fehler erfolgt eine erneute Abfrage
Diese Einstellung gilt für den gesamten Durchlauf und wird beim nächsten Programmstart zurückgesetzt.
FEHLER: LM Studio ist nicht erreichbar!
Lösung:
- Stellen Sie sicher, dass LM Studio läuft
- Prüfen Sie, ob der Server auf Port 1234 aktiv ist
- Verifizieren Sie die
LMSTUDIO_API_URLim Skript - Überprüfen Sie, ob ein Modell geladen ist
→ Context/Token-Fehler (30000 Zeichen), versuche mit weniger...
Lösung:
- Automatisch gelöst durch adaptive Textkürzung
- Bei persistierenden Problemen: Kleineres Modell oder größeres Context-Fenster verwenden
- Erwägen Sie ein Reasoning-Modell (ministral-3-14b-reasoning)
Vision-Analyse fehlgeschlagen: [Error]
Lösung:
- Laden Sie ein multimodales Modell (LLaVA, BakLLaVA)
- Aktualisieren Sie LM Studio auf die neueste Version
- Prüfen Sie, ob das Modell Vision-Funktionen unterstützt
[.doc-Datei - Textextraktion nicht vollständig möglich...]
Hinweis:
- .doc, .ppt, .xls Dateien verwenden alte Binärformate
- Für vollständige Unterstützung: Konvertierung zu .docx/.pptx/.xlsx empfohlen
- Oder Installation von LibreOffice/antiword für erweiterte Unterstützung
| Aspekt | Empfehlung | Begründung |
|---|---|---|
| Modellgröße | 3B-14B Parameter | Balance zwischen Qualität und Geschwindigkeit |
| GPU-Offloading | 100% (Apple Silicon) | 10-50x schnellere Verarbeitung |
| Batch-Größe | 1 (Standard) | Sequentielle Verarbeitung mit Validierung |
| Context-Länge | 8192+ Tokens | Vermeidet häufige Textkürzungen |
# In summarize_with_lmstudio():
"temperature": 0.3, # Niedrig = deterministischer, schneller
"max_tokens": 400, # Limitiert auf ~1000 Zeichen OutputErwartete Verarbeitungsgeschwindigkeit (Apple M1/M2):
- Text-Dateien: 1-3 Sekunden pro Datei
- PDF (mit Text): 3-8 Sekunden pro Datei
- PDF (gescannt, OCR): 10-30 Sekunden pro Datei (abhängig von Seitenzahl)
- DOCX/XLSX/PPTX: 3-8 Sekunden pro Datei
- Bilder (Vision): 8-25 Sekunden pro Datei
macOS-Optimierungen:
- Native Apple Silicon-Unterstützung durch LM Studio
- OneDrive-Dateien sind direkt verfügbar (kein Download nötig)
- Effiziente Speicherverwaltung durch Python 3.12+
- Tesseract OCR mit optimierter Performance auf Apple Silicon
# In get_prompt_for_filetype() - Basis-Prompt:
"Maximal 1000 Zeichen" # Auf gewünschte Länge anpassen
# In summarize_with_lmstudio():
"max_tokens": 400, # Entsprechend anpassen (~2.5 Zeichen pro Token)# In summarize_with_lmstudio():
retry_lengths = [30000, 20000, 14000, 10000, 6000, 3000] # Anpassen nach BedarfMIN_IMAGE_SIZE = 20 * 1024 # 20 KB - strengerer Filter
# oder
MIN_IMAGE_SIZE = 5 * 1024 # 5 KB - weniger strengDas JSON-Ausgabeformat ermöglicht einfache Integration:
# Beispiel: JSON-Dateien einlesen und durchsuchen
import json
import glob
summaries = []
for json_file in glob.glob(os.path.expanduser("~/LLM/**/*.json"), recursive=True):
with open(json_file, 'r', encoding='utf-8') as f:
data = json.load(f)
summaries.append(data)
# Suche nach Personennamen in der Zusammenfassung
results = [s for s in summaries if "John Doe" in s.get("summary", "")]
# Suche nach Keywords
keyword_results = [s for s in summaries if "Digitale Transformation" in s.get("keywords", [])]
# Suche nach Named Entities (NEU in v1.12.0)
# Alle Dokumente mit einer bestimmten Firma
company_docs = [s for s in summaries
if "Example Corp" in s.get("entities", {}).get("companies", [])]
# Alle Dokumente mit einer bestimmten Person
person_docs = [s for s in summaries
if "Jane Smith" in s.get("entities", {}).get("persons", [])]
# Alle Dokumente mit Institutionen
institution_docs = [s for s in summaries
if len(s.get("entities", {}).get("institutions", [])) > 0]
# Kombinierte Entity-Suche
multi_entity = [s for s in summaries
if any(company in s.get("entities", {}).get("companies", [])
for company in ["Example Corp", "Sample Inc"])]
# Gruppierung nach Firmen
from collections import Counter
all_companies = []
for s in summaries:
all_companies.extend(s.get("entities", {}).get("companies", []))
top_companies = Counter(all_companies).most_common(10)
# Gruppierung nach Keywords
all_keywords = []
for s in summaries:
all_keywords.extend(s.get("keywords", []))
top_keywords = Counter(all_keywords).most_common(10)
# Cross-Referenz: Welche Personen arbeiten mit welchen Firmen?
person_company_map = {}
for s in summaries:
persons = s.get("entities", {}).get("persons", [])
companies = s.get("entities", {}).get("companies", [])
for person in persons:
if person not in person_company_map:
person_company_map[person] = set()
person_company_map[person].update(companies)
# Weitere Verarbeitung...FileInventory erkennt automatisch besonders schutzbedürftige personenbezogene Daten gemäß:
- Art. 9 DSGVO - Besondere Kategorien personenbezogener Daten (Gesundheitsdaten)
- § 26 BDSG - Beschäftigtendaten
Das System klassifiziert folgende Dokumenttypen:
- GEHALTSABRECHNUNG: Lohnabrechnungen, Entgeltabrechnungen
- LEBENSLAUF: Bewerbungsunterlagen, CVs
- ARBEITSVERTRAG: Arbeitsverträge, Anstellungsverträge
- ZEUGNIS: Arbeitszeugnisse, Beurteilungen
- PERSONALAKTE: Personalakten, Mitarbeiterdaten
- GESUNDHEITSDATEN: Atteste, AU-Bescheinigungen, medizinische Dokumente
- SOZIALVERSICHERUNG: SV-Nummer, Rentenversicherungsnachweise
- STEUER: Lohnsteuerbescheinigungen, Steuer-ID
- AUSWEIS: Personalausweiskopien, Reisepässe
- BANKDATEN: IBAN, Kontonummern
Alle neu verarbeiteten Dokumente werden automatisch klassifiziert:
python3 FileInventory.pyWährend der Verarbeitung wird angezeigt:
Klassifiziere DSGVO-relevante Inhalte...
⚠️ DSGVO-WARNUNG: Besonders schutzbedürftige Daten erkannt!
Kategorien: GEHALTSABRECHNUNG
Schutzklasse: hoch
Für bereits verarbeitete Dokumente können Sie die Klassifizierung nachtragen:
# Aktiviere virtuelle Umgebung
source .venv/bin/activate
# Aktualisiere alle JSON-Dateien mit DSGVO-Klassifizierung
python3 FileInventory.py --update-dsgvoVorteile:
- ⚡ Sehr schnell - Nur Regex, kein LLM
- 🔒 Keine neue LLM-Verarbeitung nötig
- 📊 Detaillierte Statistik nach Abschluss
Beispielausgabe:
================================================================================
DSGVO-UPDATE: KLASSIFIZIERUNG BESONDERS SCHUTZBEDÜRFTIGER DATEN
================================================================================
Analysiere Dokumente gemäß Art. 9 DSGVO und § 26 BDSG
Durchsuche: ~/LLM
================================================================================
Gefunden: 6,283 JSON-Dateien
Fortschritt: 6,283/6,283 (100.0%) - Aktualisiert: 6,283 - Sensible Daten: 127 - Zeit: 45.2s
================================================================================
DSGVO-UPDATE ABGESCHLOSSEN
================================================================================
Gescannte Dateien: 6,283
Aktualisierte Dateien: 6,283
Dateien mit sensiblen Daten: 127
Gefundene Kategorien besonders schutzbedürftiger Daten:
• GEHALTSABRECHNUNG: 45 Dokumente
• LEBENSLAUF: 38 Dokumente
• ARBEITSVERTRAG: 22 Dokumente
• BANKDATEN: 12 Dokumente
• ZEUGNIS: 10 Dokumente
Gesamtzeit: 45.2s
================================================================================
import json
import glob
# Alle JSON-Dateien einlesen
summaries = []
for json_file in glob.glob(os.path.expanduser("~/LLM/**/*.json"), recursive=True):
with open(json_file, 'r', encoding='utf-8') as f:
summaries.append(json.load(f))
# Alle Dokumente mit sensiblen Daten finden
sensitive_docs = [s for s in summaries
if s.get("dsgvo_classification", {}).get("contains_sensitive_data")]
print(f"Gefunden: {len(sensitive_docs)} Dokumente mit sensiblen Daten")
# Nach Schutzklasse filtern
very_high = [s for s in sensitive_docs
if s.get("dsgvo_classification", {}).get("protection_level") == "sehr hoch"]
# Nach Kategorien filtern
gehaltsabrechnungen = [s for s in sensitive_docs
if "GEHALTSABRECHNUNG" in s.get("dsgvo_classification", {}).get("data_categories", [])]
# Statistik erstellen
from collections import Counter
categories = []
for s in sensitive_docs:
categories.extend(s.get("dsgvo_classification", {}).get("data_categories", []))
category_stats = Counter(categories).most_common()
print("\nKategorien:")
for category, count in category_stats:
print(f" {category}: {count} Dokumente")Wichtig:
- Die DSGVO-Klassifizierung erfolgt ausschließlich keyword-basiert (Regex)
- Kein LLM-Zugriff auf den Dokumentinhalt bei
--update-dsgvo - Originaldokumente bleiben unverändert
- Klassifizierung dient der besseren Auffindbarkeit sensibler Daten
- Hilft bei Compliance-Prüfungen und Datenaudits
Empfehlung:
- Regelmäßige Überprüfung der als "sensibel" klassifizierten Dokumente
- Angemessene Zugriffskontrollen für Dokumente mit hoher Schutzklasse
- Dokumentation der Verarbeitungszwecke gemäß DSGVO Art. 30
- Alle Daten bleiben lokal: Keine Cloud-API-Aufrufe
- OneDrive-Dateien: Lokal synchronisiert und verarbeitet
- LLM-Inferenz: Vollständig offline über LM Studio
- DSGVO-Klassifizierung: Regex-basiert, kein LLM-Zugriff (bei
--update-dsgvo)
- JSON-Ausgaben enthalten nur Metadaten und Zusammenfassungen
- Originaldateien bleiben unverändert
- Keine Übertragung sensibler Informationen
- Keine Telemetrie oder Analytics
- DSGVO-konforme Verarbeitung personenbezogener Daten
- Neu: DSGVO-Klassifizierung für besonders schutzbedürftige personenbezogene Daten
- Neu: Automatische Erkennung gemäß Art. 9 DSGVO (Gesundheitsdaten) und § 26 BDSG (Beschäftigtendaten)
- Neu: 10 Kategorien: Gehaltsabrechnungen, Lebensläufe, Arbeitsverträge, Zeugnisse, Personalakten, Gesundheitsdaten, Sozialversicherung, Steuerdaten, Ausweise, Bankdaten
- Neu:
classify_sensitive_data()Funktion mit Keyword-basierter Erkennung (Regex) - Neu:
dsgvo_classificationObjekt in JSON-Ausgabe mit Kategorien, Rechtsgrundlagen und Schutzklassen - Neu:
--update-dsgvoParameter zum Aktualisieren bestehender JSON-Dateien (sehr schnell, kein LLM) - Neu:
update_json_with_dsgvo_classification()Funktion für inkrementelles Update - Neu:
update_all_jsons_with_dsgvo()Batch-Verarbeitung aller JSON-Dateien - Neu: Schutzklassen ("hoch" / "sehr hoch") basierend auf Datenkategorie
- Neu: Detaillierte Statistiken mit gefundenen Kategorien und Dokumentenanzahl
- Verbessert: Warnungen während der Verarbeitung bei Erkennung sensibler Daten
- Dokumentiert: Umfangreicher README-Abschnitt mit Beispielen und Datenschutzhinweisen
- Compliance: Hilft bei DSGVO-Audits und Datenklassifizierung
- Neu: Named Entity Recognition (NER) - Automatische Extraktion von Firmen, Personen, Institutionen und Organisationen
- Neu:
extract_entities_with_lmstudio()Funktion für strukturierte Entity-Extraktion - Neu:
extract_entities_from_image()für Vision-basierte Entity-Extraktion aus Bildern - Neu:
parse_entity_response()mit robustem Parsing für mehrsprachige Labels - Neu:
entitiesObjekt in JSON-Ausgabe mit vier Kategorien (companies, persons, institutions, organizations) - Neu: Entity-Extraktion funktioniert auch bei kurzen Texten (< 1500 Zeichen) die nicht zusammengefasst werden
- Neu: Intelligente Textkürzung für sehr lange Dokumente (erste 6000 + letzte 2000 Zeichen)
- Verbessert: Niedrige Temperatur (0.1) für konsistente Entity-Extraktion
- Verbessert: Fortschrittsanzeige zeigt Anzahl gefundener Entities pro Kategorie
- Verbessert: Duplikat-Entfernung in Entity-Listen
- Dokumentiert: Erweiterte README mit Entity-Feldern und Beispielen
- Kompatibilität: Funktioniert mit Text- und Vision-Modellen
- Neu: Intelligente Lernlogik für erfolgreiche Context-Größen
- Neu: Globaler
_LEARNED_MAX_CHARSCache zur Optimierung zukünftiger Versuche - Verbessert: Adaptive Retry-Strategie mit 9 Schritten statt 6 (100%, 85%, 70%, 55%, 40%, 30%, 20%, 15%)
- Verbessert: Startet bei 90% der gelernten erfolgreichen Größe für weniger Fehlversuche
- Verbessert: Sanftere Übergänge zwischen Retry-Versuchen
- Fix: Vermeidet Sprung von 20.878 → 3.000 Zeichen durch prozentuale Reduktion
- Optimiert: Weniger LLM-Aufrufe durch Learning-Mechanismus
- Neu:
--summary-max-charsParameter zur Steuerung der Zusammenfassungslänge - Neu: Automatisches Überspringen von LLM für Texte ≤ SUMMARY_MAX_CHARS (direkte Kopie statt Zusammenfassung)
- Verbessert: SUMMARY_MAX_CHARS auf 1500 Zeichen erhöht
- Verbessert: Dynamische max_tokens Berechnung:
int(summary_max_chars / 2.5) + 50 - Verbessert:
get_prompt_for_filetype()akzeptiert nunsummary_max_charsParameter - Optimiert: Spart LLM-Aufrufe und Zeit bei kurzen Dokumenten
- Dokumentiert: Neue Parameter in README mit Beispielen
- Neu:
--create-databaseParameter zum Erstellen kombinierter JSON-Datenbanken - Neu: Automatische Aufteilung in mehrere Dateien basierend auf Größenlimit
- Neu:
--database-output DIRzur Angabe eines benutzerdefinierten Ausgabeverzeichnisses - Neu:
--max-database-size MBzur Kontrolle der maximalen Datenbankdateigröße - Neu: Metadaten in Datenbank-Dateien (Version, Zeitstempel, Quellverzeichnisse)
- Neu: Fortschrittsanzeige während der Datenbank-Erstellung
- Neu: Detaillierte Statistiken nach Datenbank-Erstellung
- Verbessert: Optimiert für ChatGPT/Claude-Integration
- Verbessert: JSON-Struktur mit separaten Metadaten und Dokumenten-Arrays
- Dokumentiert: Neue Sektion in README mit Beispielen und Best Practices
- Neu: Alphabetische Sortierung von Verzeichnissen und Dateien während der Verarbeitung
- Neu: Zeitstempelprüfung beim Überspringen existierender JSON-Dateien
- Verbessert: Automatische Neuverarbeitung wenn
createdodermodifiedZeitstempel geändert wurden - Verbessert: Konsistente Verarbeitungsreihenfolge durch Sortierung
- Fix: Verhindert übersprungene Updates bei Dateiänderungen
- Debug: Erweiterte Fehlerausgaben bei Context/Token-Fehlern
- Debug: Zeigt geschätzte Token-Anzahl und tatsächliche LLM-Fehlermeldung
- Verbessert: Bessere Diagnose von Context-Problemen für Fehlersuche
- Hilfe: Ermöglicht Identifikation von LM Studio Konfigurationsproblemen
- Verbessert: Breitere erste Spalte in Dateiendungen-Statistik (18 statt 10 Zeichen)
- Fix: Lange Dateiendungen wie ".herunterladen" werden jetzt korrekt dargestellt
- Optimiert: Tabellenbreite auf 80 Zeichen erweitert für bessere Lesbarkeit
- Fix: Intelligente retry_lengths - berücksichtigt jetzt tatsächliche Textlänge
- Optimiert: Vermeidet unnötige Retry-Versuche mit zu großen Textlängen
- Verbessert: Entfernt Duplikate aus retry_lengths für effizientere Verarbeitung
- Beispiel: 23k Zeichen Text → nur 2 Versuche statt 6
- Neu:
--max-tokens TOKENSParameter für dynamische Context-Länge - Verbessert: MAX_CONTEXT_TOKENS kann per Kommandozeile überschrieben werden
- Verbessert: Erweiterte Hilfe mit Beispielen für verschiedene Modellgrößen
- Optimiert: Flexible Anpassung an verschiedene LLM-Modelle ohne Code-Änderung
- Neu: Professionelle Kommandozeilenparameter-Unterstützung mit argparse
- Neu:
-h/--helpzeigt Hilfe und alle verfügbaren Optionen - Neu:
--versionzeigt Versionsinformation an - Neu:
--src VERZEICHNISfür benutzerdefiniertes Quellverzeichnis - Neu:
--dst VERZEICHNISfür benutzerdefiniertes Zielverzeichnis - Verbessert: Detaillierte Hilfe mit Beispielen und Konfigurationshinweisen
- Dokumentiert: Alle Parameter in der README mit Beispielen
- Neu: Konfigurierbare MAX_CONTEXT_TOKENS für unterschiedliche Modellgrößen
- Neu: Automatische Berechnung der retry_lengths basierend auf Modell-Context
- Verbessert: Unterstützung für große Context-Fenster (bis 262k Tokens)
- Getestet: Erfolgreich mit mistralai/ministral-3-14b-reasoning (262k Tokens)
- Optimiert: Bessere Nutzung der verfügbaren Context-Länge
- Neu: OCR-Funktionalitätsprüfung beim Programmstart mit detailliertem Status
- Neu: Prüfung ob Tesseract installiert ist und deutsche Sprache verfügbar ist
- Fix: OCR_AVAILABLE als globale Variable - behebt "name 'ocr_available' is not defined" Fehler
- Verbessert: Klare Warnung beim Start wenn OCR nicht verfügbar ist
- Verbessert: Anzeige der Tesseract-Version und Sprachunterstützung
- Verbessert: Deutlich verbesserte Fehlermeldung für gescannte PDFs ohne OCR-Unterstützung
- Verbessert: Zeigt Installationsanweisungen für Tesseract OCR an (macOS, Linux, Python)
- Verbessert: Klar abgegrenzte Warnung mit Erklärung warum Datei übersprungen wird
- Fix: Benutzer werden jetzt direkt informiert dass OCR-Installation benötigt wird
- Fix: Keyword-Extraktion funktioniert jetzt korrekt mit "Schlüsselbegriffe:", "Keywords:" Markern
- Verbessert: Robuste Regex-basierte Keyword-Erkennung mit mehreren Fallback-Optionen
- Verbessert: Keywords werden auch bei längeren Zeilen (>200 Zeichen) korrekt extrahiert
- Verbessert: Automatisches Entfernen der Keyword-Zeile aus der Zusammenfassung
- Fix: OCR-Zähler funktioniert jetzt auch bei übersprungenen (bereits verarbeiteten) Dateien
- Verbessert: Prompts optimiert - kein Markdown, keine Meta-Begriffe wie "Zusammenfassung" oder "Diese Datei enthält"
- Verbessert: System-Prompt fordert reinen Fließtext ohne Formatierung
- Verbessert: Direkter Einstieg in Inhalte ohne Einleitungen
- Fix: OCR-Zähler wird jetzt korrekt aktualisiert (auch bei bereits verarbeiteten Dateien)
- Fix: OCR-Warnung "nicht verfügbar" erscheint nur einmal pro PDF statt bei jeder Seite
- Verbessert: OCR-Import-Check erfolgt einmal zu Beginn der PDF-Verarbeitung
- Verbessert: OCR-Statistik aus existierenden JSON-Dateien wird korrekt gelesen
- Optimiert: Redundantes
nameFeld aus JSON-Struktur entfernt - Verbessert: Dateiname ist bereits im
pathFeld enthalten - Optimiert: Schlankere JSON-Dateien durch reduzierten Speicherbedarf
- Neu: Separates
keywordsFeld in JSON-Struktur - Neu: Automatische Extraktion der Schlüsselbegriffe aus LLM-Antwort
- Verbessert: Keywords als Array für einfache Filterung und Suche
- Verbessert: Zusammenfassung und Keywords werden getrennt gespeichert
- Optimiert: README mit erweiterten Integration-Beispielen
- Neu: RAG-optimierte Prompt-Struktur für semantische Suche
- Neu: Kommagetrennte Schlüsselbegriff-Liste in jeder Zusammenfassung
- Verbessert: Zusammenfassungslänge auf 1000 Zeichen erhöht
- Verbessert: Informationsdichte durch strukturierte Wissensextraktion
- Verbessert: System-Prompt fokussiert auf Fakten, Zahlen und Fachbegriffe
- Verbessert: max_tokens auf 400 erhöht für längere Ausgaben
- Optimiert: Prompts ohne Meta-Kommentare und Füllwörter
- Optimiert: Bessere Auffindbarkeit durch strukturierte Darstellung (Was? Wozu? Welche Inhalte? Besonderheiten?)
- Neu: OCR-Statistiken und -Berichterstattung
- Neu: OCR-Dokumentenzähler in Fortschrittsberichten
- Neu: Detaillierte OCR-Informationen in JSON-Ausgabe
- Neu: OCR-Zähler im Abschlussbericht
- Verbessert: Besseres Error-Handling mit Traceback bei Fehlern
- Fix: Robuste Tuple-Unpacking-Logik für extract_text()
- Neu: OCR-Unterstützung für gescannte PDFs mit Tesseract
- Neu: Automatische Erkennung von Scan-PDFs (<10 Zeichen pro Seite)
- Neu: 300 DPI Auflösung für optimale OCR-Qualität
- Neu: Fortschrittsanzeige für mehrseitige OCR-Verarbeitung
- Neu: Deutsche Sprachunterstützung für OCR (lang='deu')
- Neu: OCR-Metadaten in Rückgabewerten (used_ocr, ocr_pages, total_pages, ocr_chars)
- Verbessert: Detaillierte OCR-Ergebnisausgabe
- Neu: Erzwinge deutsche Sprache in allen LLM-Zusammenfassungen ("AUF DEUTSCH")
- Neu: Zeige nur erste 100 Zeichen der Zusammenfassung
- Verbessert: Berechne Durchschnittszeit nur für verarbeitete Dateien (nicht übersprungene)
- Fix: Akzeptiere J/N Eingaben in Groß- und Kleinschreibung
- Fix: Fehlende Zusammenfassungs-Ausgabe wiederhergestellt
- Neu: Professionelle Fehlerbehandlung mit interaktiven Benutzerabfragen
- Neu: Fehlerbehandlungsmodus (Abbrechen/Weiter ohne Fragen/Weiter mit Fragen)
- Neu: Globaler ERROR_HANDLING_MODE für konsistentes Verhalten
- Verbessert: ask_on_lmstudio_error() mit professionellem Layout
- Verbessert: Detaillierte Fehlerberichterstattung
- Verbessert: Robuste Token/Context-Fehlerkennung
- Fix: Erkennung von "token", "context", "length" in Fehlermeldungen
- Fix: HTTP 400 Fallback auch bei JSON-Parse-Fehlern
- Neu: LM Studio Connection Check vor Verarbeitung
- Neu: Minimale Bildgröße (10 KB) - ignoriert Icons
- Verbessert: Fehlermeldungen bei nicht erreichbarem LM Studio
- Neu: Unterstützung für .doc, .ppt, .xls, .xlsm, .xltx
- Neu: Dateityp-spezifische Extraktionsfunktionen
- Verbessert: Fallback-Mechanismen für alte Office-Formate
- Neu: Dateiendungs-Statistik nach Verzeichnisscan
- Neu: Markierung welche Dateitypen analysiert werden
- Verbessert: Übersichtlichere Darstellung mit Anzahl, Größe, Durchschnitt
- Fix: Fortschrittsbalken überschreibt nun korrekt längere Zeilen
- Verbessert: last_line_length tracking für saubere Terminal-Ausgabe
- macOS-Portierung: Vollständige Anpassung für macOS
- Neu: select() statt msvcrt für Tastatureingabe
- Entfernt: Windows-spezifische OneDrive Download-Logik
- Neu: Fortschrittsbalken beim Verzeichnisscan
- Verbessert: Terminal-Ausgabe mit \r für überschreibende Updates
- Neu: Adaptive Textkürzung mit 6 Retry-Stufen
- Neu: Verbesserte Context-Overflow-Erkennung
- Verbessert: Reasoning-Model-Kompatibilität
- Neu: Unterstützung für TXT, MD, PNG, JPG/JPEG
- Neu: Dateityp-spezifische Prompts für bessere Zusammenfassungen
- Neu: Vision API-Integration für Bildanalyse
- Verbessert: Text-Encoding mit UTF-8/Latin-1 Fallback
- Initiale Version (Windows)
- Unterstützung für PDF, DOCX, PPTX, XLSX
- OneDrive-Integration
- Adaptive Context-Verwaltung
- JSON-Validierung
- Pause/Resume-Funktionalität
Bei Problemen oder Fragen:
- Überprüfen Sie die Fehlerbehandlung
- Validieren Sie Ihre Konfiguration
- Prüfen Sie die LM Studio Logs
- Überprüfen Sie Terminal-Ausgaben auf Hinweise
- Kontaktieren Sie den Entwickler mit detaillierten Fehlerprotokollen
Vorschläge für neue Funktionen sind willkommen. Bitte spezifizieren Sie:
- Gewünschte Funktionalität
- Anwendungsfall
- Priorität
- Plattform (macOS/Windows)
Copyright © 2025 - Alle Rechte vorbehalten
Dieses Tool ist proprietäre Software für den internen Gebrauch. Vervielfältigung, Weitergabe oder kommerzielle Nutzung ohne ausdrückliche Genehmigung ist untersagt.
- Sprache: Python 3.8+ (optimiert für 3.12+)
- Paradigma: Prozedural mit funktionaler Extraktion
- Threading: Single-threaded (sequentielle Verarbeitung)
- Encoding: UTF-8 (Standard), Latin-1 (Fallback)
- Plattform: macOS (native Unterstützung)
- LM Studio: OpenAI-kompatibles Chat Completion API
- HTTP-Protokoll: POST-Requests mit JSON-Payload
- Timeout: 300 Sekunden (5 Minuten) pro Request
- Vision API: Base64-kodierte Bilder mit multimodalen Modellen
- RAM: ~200-500 MB (Skript) + LLM-Modell (3-14 GB)
- CPU: Niedrig (Hauptlast auf Apple Neural Engine/GPU für LLM)
- Netzwerk: Nur für OneDrive-Synchronisation
- Festplatte: ~1-5 KB pro JSON-Ausgabe
- Non-blocking Input: select.select() für Tastatureingabe
- Path Expansion: os.path.expanduser() für ~ Pfade
- OneDrive: Direkte Verarbeitung synchronisierter Dateien
- Terminal: ANSI-kompatible Fortschrittsanzeige
Entwickelt mit Präzision für effiziente Dokumentenanalyse auf macOS