Doc Analyzer: La Nuova Release - Più Formati, Più Flessibilità

Dopo il lancio iniziale di Doc Analyzer, il progetto è evoluto significativamente. In questo post, esploreremo le nuove funzionalità e i miglioramenti introdotti nell’ultima versione.
Principali Novità
1. Supporto Multi-Formato
La novità più significativa è l’estensione del supporto a più formati di documento:
- PDF (come nella versione originale)
- DOC (documenti Word legacy)
- DOCX (documenti Word moderni)
Questo ampliamento rende Doc Analyzer molto più versatile e utilizzabile in più scenari aziendali.
2. Architettura Modulare
L’applicazione è stata completamente ristrutturata seguendo il pattern Factory, rendendo più facile:
- Aggiungere nuovi formati di documento
- Mantenere il codice
- Testare nuove funzionalità
Ecco un esempio della nuova struttura:
class ProcessorFactory:
@staticmethod
def get_processor(file_path):
if file_path.endswith('.pdf'):
return PDFProcessor()
elif file_path.endswith(('.doc', '.docx')):
return WordProcessor()
# Facile aggiungere nuovi processori
3. Analisi Basata su Ruoli
Una delle novità più interessanti è l’introduzione di ruoli specializzati per l’analisi. L’utente può ora scegliere tra diversi ruoli che influenzano il modo in cui il sistema analizza e risponde alle domande:
- Default: Analisi oggettiva e comprensiva del documento
- Legal: Focus su implicazioni legali e requisiti normativi
- Financial: Analisi di aspetti finanziari ed economici
- Travel: Orientato a logistica e pianificazione viaggi
- Technical: Focus su dettagli tecnici e implementativi
Ogni ruolo utilizza prompt specializzati che guidano il modello verso un tipo specifico di analisi. Per esempio:
ROLE_PROMPTS = {
"legal": """Act as a legal consultant analyzing the content.
Focus on legal implications, regulatory requirements, and potential legal risks.""",
"financial": """Act as a financial advisor analyzing the content.
Focus on financial implications, costs, benefits, and ROI."""
# Altri ruoli...
}
4. Flessibilità del Modello Linguistico
Mentre la versione originale era strettamente legata a DeepSeek R1, ora è possibile utilizzare qualsiasi modello Ollama:
- DeepSeek R1 14B (default per le sue ottime performance)
- Mistral 7B
- LLaMA 2
- E qualsiasi altro modello supportato da Ollama
La configurazione è semplice tramite variabile d’ambiente:
LLM_MODEL=mistral:7b # o qualsiasi altro modello
Processamento Documenti Migliorato
Word Processor
Il nuovo WordProcessor gestisce sia documenti DOC che DOCX:
def process(self, file_obj):
# Gestione intelligente del formato
if file_path.endswith('.docx'):
text = self._process_docx(file_path)
else: # .doc
text = self._process_doc(file_path)
# Chunking e processamento
chunks = self.text_splitter.split_documents([doc])
return chunks
Caratteristiche chiave:
- Gestione automatica del formato
- Preservazione della struttura del documento
- Pulizia automatica dei file temporanei
- Gestione ottimizzata della memoria
Pipeline di Processamento
La pipeline è ora più robusta:
- Identificazione automatica del formato
- Selezione del processore appropriato
- Estrazione del testo
- Chunking ottimizzato
- Generazione embedding
- Storage vettoriale
Miglioramenti nell’Interfaccia
L’interfaccia Gradio è stata completamente rinnovata per supportare tutte le nuove funzionalità:
Selezione del Ruolo
Un nuovo menu dropdown permette di selezionare il ruolo di analisi desiderato, influenzando direttamente il tipo di risposta che si riceverà. Questo permette di:
- Ottenere analisi specializzate per diversi domini
- Adattare le risposte al contesto specifico
- Ricevere insights più pertinenti per il proprio caso d’uso
Altre Migliorie
L’interfaccia Gradio è stata arricchita con:
- Supporto drag-and-drop per più formati
- Feedback visivo durante il processamento
- Migliore gestione degli errori
- Selezione del ruolo per l’analisi
Configurazione e Deploy
La configurazione è più flessibile grazie a nuove variabili d’ambiente:
OLLAMA_HOST=host.docker.internal
OLLAMA_PORT=11434
CHROMA_DB_PATH=/app/data/chroma
LLM_MODEL=deepseek-r1:14b # Configurabile
CHUNK_SIZE=1000
CHUNK_OVERLAP=200
PERSIST_VECTORDB=false
Docker Compose Ottimizzato
services:
web:
build: .
ports:
- "8000:8000"
volumes:
- ./data:/app/data
env_file: .env
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/"]
Prossimi Sviluppi
Il progetto continua a evolversi. Ecco cosa ci aspetta:
- Supporto per altri formati (epub, txt, md)
- Miglioramenti nella tokenizzazione
- API REST completa
- Sistema di caching avanzato
Conclusione
Doc Analyzer è cresciuto da un semplice analizzatore PDF a una piattaforma completa per l’analisi documentale. La nuova architettura modulare e il supporto multi-formato lo rendono uno strumento ancora più potente per l’analisi documentale privacy-first.