Per estrarre in blocco i dati dai documenti con un agente IA, scrivi lo schema nel prompt, indica all’agente una cartella e richiedi una lista di eccezioni alla fine. Il server GroupDocs.Parser.Mcp esegue la lettura localmente in un contenitore Docker, quindi ogni file passa attraverso gli stessi strumenti di estrazione e nessun documento lascia la macchina. L’LLM decide l’ordine del lavoro; il motore legge i file.

Per ogni PDF nella mia cartella dei documenti: estrai le tabelle come JSON, somma la colonna importo e forniscimi una tabella con nome file, totale, numero di pagine.

La versione passo‑passo con configurazione e risoluzione dei problemi è nella documentazione: Come estrarre dati da una cartella di documenti in una volta.

Perché l’estrazione manuale produce dati incoerenti?

Quando le persone copiano i valori dai documenti uno alla volta, ogni file viene gestito in modo leggermente diverso: una persona include le tasse, un’altra no, una terza salta il file con un layout insolito. L’incoerenza è invisibile finché non si confrontano i totali. Un flusso di lavoro risolve questo rendendo le regole esplicite e applicandole a ogni file allo stesso modo. Con un agente le regole vivono in un unico prompt e gli strumenti di estrazione si comportano identicamente sul primo file e sul duecento.

Come si costruisce il flusso di lavoro?

Monta la cartella nel contenitore come /data, imposta GROUPDOCS_MCP_STORAGE_PATH=/data e fornisci all’agente questi passaggi.

  1. Verifica la licenza. Prompt: “Run get_license_status and tell me the mode.” L’estrazione non licenziata è limitata, e una lettura parziale di una cartella è un dataset silenziosamente errato.
  2. Classifica la cartella. Prompt: “For each file, report format, page count and whether text extraction returns anything.” get_document_info fornisce tipo, numero di pagine e dimensione, e una chiamata extract_text di una pagina mostra se esiste testo.
  3. Correggi lo schema. Prompt: “For each readable file, extract the line-items table as JSON. Columns: item, quantity, amount. Total the amount column.” Questo utilizza extract_tables.
  4. Raccogli i fallimenti esplicitamente. Prompt: “List every file that failed, was password-protected, or returned no table, with the reason.” Un batch che segnala solo i successi nasconde le eccezioni.
  5. Scrivi l’output. Prompt: “Write one row per file to a CSV in the output folder.”

I file sono risolti per nome all’interno del contenitore, quindi l’agente passa invoice-014.pdf, non un percorso host.

Cosa decide l’agente e cosa fa il motore?

Step Cosa decide l’agente Cosa fa il motore
Triage Quali file estrarre Riporta tipo, pagine e dimensione; extract_text mostra se esiste testo
Capture Quale strumento necessita ogni file Restituisce testo o righe di tabella dal file
Validation Se un totale corrisponde al testo Niente; l’agente confronta
Exceptions Quali file vanno nella lista Restituisce il messaggio di errore per un file difettoso
Output La forma del CSV Niente; l’agente lo scrive

La divisione è il punto cruciale. Catturare i valori è un lavoro deterministico del motore; giudicare e assemblarli è compito dell’agente.

Esempio di sessione (abbreviato):

You:    Check the license, triage the folder, then extract line items from every readable PDF and list the exceptions.
Agent:  [calls get_license_status, get_document_info x12, extract_text, extract_tables x10]
        License mode: evaluation. Results below are a smoke test.
        12 files: 10 with a text layer, 1 scan, 1 password-protected.
        Totals written for 10 files. Exceptions: scan-007.pdf (no text layer), hr-020.pdf (password required).

Cosa succede ai file che non si adattano?

Una scansione non ha livello di testo, quindi l’estrazione della tabella non restituisce nulla. Mettili da parte, o lascia che l’agente passi a extract_barcodes quando la pagina contiene un numero di tracciamento o un codice ordine. L’elenco di scarto funge anche da inventario di quali parti dell’archivio sono scansioni. Un file protetto da password fallisce la sua chiamata, quindi chiedi all’agente di segnalarlo e continuare; gli strumenti accettano un argomento password quando ne hai uno.

Come mantenere un’esecuzione grande a costi contenuti?

  • Limita per pagina quando i dati hanno una posizione nota, ad esempio la prima pagina di ogni fattura.
  • Evita extract_images in blocco. Scrive un file per ogni immagine, e una cartella di report illustrati produce centinaia.
  • Controlla l’uso a consumo. Con licenza a consumo ogni chiamata è fatturata per l’elaborazione, quindi una scansione mirata costa meno di una esaustiva.

Quali sono i limiti?

Senza licenza, l’estrazione è limitata; i limiti esatti sono nella pagina di licenza della libreria. Il server non ha OCR, quindi il testo scansionato non può essere catturato. È fornito solo come immagine Docker; non esiste il comando dnx.

Come registrare il server?

Una voce manuale minima per Cursor, Claude Desktop o Windsurf, usando i percorsi del contenitore dalla documentazione di configurazione di Parser:

{
  "mcpServers": {
    "groupdocs-parser": {
      "command": "docker",
      "args": ["run", "--rm", "-i",
               "-v", "/path/to/documents:/data",
               "-e", "GROUPDOCS_MCP_STORAGE_PATH=/data",
               "ghcr.io/groupdocs-parser/parser-net-mcp:latest"]
    }
  }
}

FAQ

Posso elaborare una cartella di fatture con IA senza caricarle?
Sì. Il contenitore legge la cartella montata e comunica con il tuo client tramite stdio, quindi le fatture rimangono sul tuo computer.

Come estraggo in batch il testo da PDF localmente?
Chiedi all’agente di iterare sulla cartella e chiamare extract_text per file, pagina per pagina per documenti lunghi, perché output molto grandi vengono troncati con un marcatore.

L’agente può automatizzare l’inserimento dati dai documenti?
Può assemblare le righe estratte in un CSV o in una tabella riepilogativa. Rivedi la lista delle eccezioni prima che qualsiasi cosa venga inserita in un altro sistema.

Approfondisci