Organizza automaticamente i tuoi PDF (fatture, contratti, referti medici, estratti conto, documenti d'identità...) in cartelle per categoria, usando un LLM locale tramite LM Studio — nessun documento lascia mai il tuo computer.
Una volta organizzati, puoi anche fare domande in linguaggio naturale sui tuoi documenti ("quanto ho pagato di luce a marzo?", "dove ho messo l'ultimo estratto ISEE?") e ottenere risposte con le fonti citate.
🔒 100% locale e privato. Tutto il processing (lettura PDF, classificazione, embedding, chat) avviene sul tuo PC tramite LM Studio. Nessun dato, testo o immagine viene inviato a servizi esterni.
- Smista i PDF automaticamente: legge ogni documento (testo o, se è una scansione, l'immagine tramite un modello vision), capisce di che tipo di documento si tratta e lo sposta nella sottocartella giusta, creandola se serve.
- Evita cartelle duplicate: se una categoria simile esiste già (es. "Bolletta Energia"), riusa quella invece di crearne una nuova quasi identica.
- Rinomina i file in modo descrittivo e coerente, basandosi sul contenuto.
- Costruisce una memoria consultabile: genera per ogni documento una nota Markdown in stile Obsidian con riepilogo, data, persone/enti coinvolti, importo e tag.
- Risponde a domande sui tuoi documenti: una chat da terminale cerca semanticamente tra le note e risponde citando le fonti, con la possibilità di aprire subito il PDF originale.
DaOrganizzare/ Organizzati/ memoria/
fattura.pdf ─────▶ Fattura/ Fattura/
fattura.pdf ──────▶ fattura.md (nota + embedding)
pdf_sorter.pylegge i PDF inDaOrganizzare/, estrae testo (o immagine se è una scansione), chiede al modello di classificarli e li sposta inOrganizzati/<Categoria>/.build_memoria.pyscansionaOrganizzati/e crea inmemoria/una nota Markdown per ogni documento (riepilogo, metadati, wikilink).chat.pycalcola gli embedding delle note, li indicizza inmemoria/.indice_embeddings.jsone ti permette di fare domande: recupera le note più pertinenti e chiede al modello di rispondere basandosi solo su quelle.
Tutto passa attraverso lmstudio_client.py, un client minimale per il server locale di LM Studio (API nativa per chat/vision, API compatibile OpenAI per gli embedding).
- Windows (i lanciatori
.batsono pensati per Windows; gli script Python funzionano su qualsiasi sistema) - Python 3.10+
- LM Studio installato, con:
- un modello di chat/vision (es.
google/gemma-3-12b) — usato per classificare i documenti e generare i riepiloghi - un modello di embedding (es.
text-embedding-nomic-embed-text-v1.5) — usato per la ricerca semantica nella chat - il comando
lmsdisponibile nel PATH (installato automaticamente da LM Studio)
- un modello di chat/vision (es.
- Clona il repository:
git clone https://github.com/DagoExe/SortDocument.git cd SortDocument - Installa le dipendenze Python:
pip install -r codice/requirements.txt
- Apri LM Studio almeno una volta e scarica i modelli che vuoi usare (chat/vision + embedding). Se cambi i nomi dei modelli, aggiorna le costanti
MODEL_NAME/CHAT_MODEL/EMBED_MODELin cima apdf_sorter.py,build_memoria.pyechat.py.
Organizza.bat→ avvia LM Studio, smista tutti i PDF presenti inDaOrganizzare/dentroOrganizzati/, poi aggiorna automaticamente le note inmemoria/.Chiedi.bat→ avvia LM Studio, aggiorna la memoria se serve, poi apre la chat per fare domande sui documenti già organizzati.
Basta mettere i PDF da smistare dentro DaOrganizzare/ e lanciare Organizza.bat.
cd codice
# Smista i PDF da una cartella sorgente a una di destinazione
python pdf_sorter.py --src "..\DaOrganizzare" --dst "..\Organizzati"
# Simula senza spostare nulla (utile per testare)
python pdf_sorter.py --src "..\DaOrganizzare" --dst "..\Organizzati" --dry-run
# Copia invece di spostare
python pdf_sorter.py --src "..\DaOrganizzare" --dst "..\Organizzati" --copy
# Genera le note di memoria per i documenti già organizzati
python build_memoria.py --organizzati "..\Organizzati" --memoria "..\memoria"
# Avvia la chat sui documenti
python chat.py --memoria "..\memoria"SortDocument/
├── codice/
│ ├── pdf_sorter.py # Classifica e smista i PDF
│ ├── build_memoria.py # Crea le note Markdown per la memoria
│ ├── chat.py # Ricerca semantica + chat sui documenti
│ ├── lmstudio_client.py # Client per il server locale di LM Studio
│ ├── pdf_utils.py # Estrazione testo/immagini dai PDF
│ └── requirements.txt
├── Organizza.bat # Lanciatore: smista i PDF
├── Chiedi.bat # Lanciatore: apre la chat
├── DaOrganizzare/ # PDF in ingresso (ignorata da git)
├── Organizzati/ # PDF smistati per categoria (ignorata da git)
└── memoria/ # Note Markdown + indice embedding (ignorata da git)
Le cartelle
DaOrganizzare/,Organizzati/ememoria/contengono documenti personali e non vengono versionate (vedi.gitignore): quando clona il repository, ognuno parte con cartelle vuote e i propri documenti.
Questo progetto è pensato per restare completamente locale:
- I PDF non vengono mai caricati su internet o servizi cloud.
- Classificazione, riepiloghi ed embedding sono generati da modelli eseguiti localmente tramite LM Studio.
- Le uniche chiamate di rete sono verso
http://127.0.0.1:1234(il server locale di LM Studio sulla tua stessa macchina).