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

Doc Analyzer Evolution
Doc Analyzer: nuove feature e miglioramenti
Mauto 3 min

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:

  1. Identificazione automatica del formato
  2. Selezione del processore appropriato
  3. Estrazione del testo
  4. Chunking ottimizzato
  5. Generazione embedding
  6. 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:

  1. Supporto per altri formati (epub, txt, md)
  2. Miglioramenti nella tokenizzazione
  3. API REST completa
  4. 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.

Risorse Utili

content_copy Copiato