InvoiceReader è un'applicazione desktop con interfaccia grafica che permette di rinominare automaticamente file PDF di fatture e note di credito. L'applicazione estrae informazioni dai PDF come denominazione del fornitore, numero fattura e data, e genera nomi file standardizzati includendo anche informazioni aggiuntive come stagione, anno e genere.
- Selezione multipla di file PDF
- Estrazione automatica di informazioni dai PDF (denominazione fornitore, numero fattura, data)
- Personalizzazione del nome file con parametri aggiuntivi (tipologia, stagione, anno, genere)
- Modalità "Generico" per un formato di nome file semplificato
- Opzione per spostare i file in cartelle denominate secondo il fornitore
- Apprendimento automatico opzionale per migliorare il riconoscimento dei documenti nel tempo
- Anteprima PDF con navigazione tra le pagine e controlli di zoom
- Interfaccia grafica intuitiva realizzata con PyQt6
- Sistema di logging dettagliato per la diagnostica degli errori
- Python 3.8 o superiore
- Dipendenze Python elencate in
requirements.txt
- Clona il repository o scarica i file sorgente
- Installa le dipendenze necessarie:
pip install -r requirements.txt- Avvia l'applicazione eseguendo:
python src/main.py- Utilizza il pulsante "📂 Scegli PDF" per selezionare uno o più file PDF di fatture
- Selezionando un file dalla lista, verrà mostrata un'anteprima del PDF:
- Se il PDF ha più pagine, appariranno i controlli di navigazione che permettono di spostarsi tra le pagine
- Utilizza i pulsanti "
◀️ Pagina precedente" e "Pagina successiva▶️ " per navigare tra le pagine - Puoi anche utilizzare i controlli di zoom (🔍+, 🔍-, Reset Zoom) per ingrandire o ridurre l'anteprima
- Scegli la modalità di rinomina:
- Modalità Standard: Compila tutti i campi richiesti:
- Tipologia: Fattura o Nota di credito
- Stagione: PE (Primavera/Estate), AI (Autunno/Inverno) o CONTINUATIVO
- Anno: Anno di riferimento (es. 2025)
- Genere: UOMO o DONNA
- Modalità Generico: Seleziona la checkbox "Generico" per utilizzare un formato di nome file semplificato che include solo il nome del fornitore, il numero fattura e la data
- Modalità Standard: Compila tutti i campi richiesti:
- Opzionalmente, seleziona l'opzione "Sposta i file in cartelle con nome del fornitore" per organizzare i file in cartelle
- Opzionalmente, seleziona "Abilita apprendimento automatico" per permettere al sistema di imparare dai documenti elaborati e migliorare il riconoscimento futuro (disabilitato di default)
- Clicca su "🚀 Avvia Rinomina" per processare i file
- Al termine dell'elaborazione, verrà mostrato un riepilogo dei file elaborati con successo e di quelli non elaborati
src/main.py: Punto di ingresso dell'applicazionesrc/gui.py: Implementazione dell'interfaccia grafica con PyQt6src/utils.py: Funzioni di utilità per l'estrazione di informazioni dai PDF e la generazione dei nomi filesrc/config.py: File per configurazioni futurelogs/: Directory contenente i file di log generati dall'applicazionerequirements.txt: Elenco delle dipendenze Python necessarie
L'applicazione utilizza PyMuPDF (fitz) per estrarre il testo dai file PDF. Attraverso espressioni regolari, cerca pattern specifici per identificare la denominazione del fornitore, il numero della fattura e la data. Queste informazioni, insieme ai parametri specificati dall'utente, vengono utilizzate per generare un nuovo nome file standardizzato.
L'applicazione include un sistema di logging dettagliato che registra informazioni sulle operazioni eseguite e gli eventuali errori riscontrati. I file di log vengono salvati nella cartella logs con un nome che include la data e l'ora di esecuzione (es. error_log_20250421_001523.log). Questi file sono utili per la diagnostica in caso di problemi.
Se l'applicazione si chiude immediatamente con un errore del tipo:
Process finished with exit code -1073740791 (0xC0000409)
Questo è spesso causato da uno dei seguenti problemi:
-
Mancanza di Visual C++ Redistributable:
- PyMuPDF e PyQt6 dipendono da librerie C++
- Scarica e installa l'ultima versione di Microsoft Visual C++ Redistributable dal sito Microsoft
-
Problemi di Compatibilità con PyMuPDF:
- Prova a installare una versione diversa di PyMuPDF:
pip uninstall PyMuPDF pip install PyMuPDF==1.22.0 # Prova una versione stabile precedente -
Ambiente Virtuale Danneggiato:
- Crea un nuovo ambiente virtuale:
python -m venv nuovo_venv nuovo_venv\Scripts\activate pip install -r requirements.txt
Se l'applicazione non riesce a estrarre correttamente le informazioni dai PDF:
- Verifica che il PDF contenga testo ricercabile e non sia solo un'immagine scansionata
- Controlla che il formato del documento segua lo standard atteso dall'applicazione
- Consulta i file di log nella cartella
logsper dettagli specifici sull'errore
- Aggiunta funzionalità di navigazione tra le pagine dei PDF nell'anteprima
- Implementati controlli di navigazione che appaiono solo quando il PDF ha più pagine
- Migliorata l'esperienza utente con l'anteprima PDF
- Aggiunta funzionalità di apprendimento automatico opzionale
- L'apprendimento automatico è disabilitato di default e può essere attivato tramite checkbox
- Migliorata la gestione dei pattern di estrazione
- Risolti bug nell'interfaccia del gestore pattern
- @mikmark95 - Michele Marchetti
Copyright (c) 2025 Marchetti Michele. Tutti i diritti riservati.
Questo software è concesso in licenza, non venduto. L'uso è consentito esclusivamente per scopi personali o aziendali interni. Qualsiasi uso commerciale, distribuzione, modifica o decompilazione senza esplicita autorizzazione scritta del titolare del copyright è severamente vietata.
Per richieste di autorizzazione o licenze personalizzate, contattare: michele-marchetti@hotmail.it