Pour extraire en masse des données de documents avec un agent IA, écrivez le schéma dans l’invite, pointez l’agent vers un dossier et exigez une liste d’exceptions à la fin. Le serveur GroupDocs.Parser.Mcp effectue la lecture localement dans un conteneur Docker, de sorte que chaque fichier passe par les mêmes outils d’extraction et aucun document ne quitte la machine. Le LLM décide de l’ordre du travail ; le moteur lit les fichiers.

Pour chaque PDF dans mon dossier de documents : extraire les tableaux au format JSON, totaliser la colonne montant, et me fournir un tableau contenant le nom du fichier, le total, le nombre de pages.

La version pas à pas avec configuration et dépannage se trouve dans la documentation : Comment extraire des données d’un dossier de documents en une fois.

Pourquoi l’extraction manuelle produit-elle des données incohérentes ?

Lorsque les personnes copient les valeurs des documents une à une, chaque fichier est traité légèrement différemment : une personne inclut la taxe, une autre ne le fait pas, une troisième ignore le fichier avec une mise en page particulière. L’incohérence reste invisible jusqu’à ce que les totaux soient comparés. Un flux de travail résout cela en rendant les règles explicites et en les appliquant de la même façon à chaque fichier. Avec un agent, les règles résident dans une seule invite, et les outils d’extraction se comportent de manière identique sur le premier fichier et le deux centième.

Comment construire le flux de travail ?

Montez le dossier dans le conteneur sous /data, définissez GROUPDOCS_MCP_STORAGE_PATH=/data, et donnez à l’agent ces étapes.

  1. Vérifier la licence. Prompt : “Run get_license_status and tell me the mode.” L’extraction sans licence est limitée, et une lecture partielle d’un dossier constitue un jeu de données silencieusement erroné.
  2. Trier le dossier. Prompt : “For each file, report format, page count and whether text extraction returns anything.” get_document_info fournit le type, le nombre de pages et la taille, et un appel extract_text d’une page montre si du texte existe.
  3. Corriger le schéma. Prompt : “For each readable file, extract the line-items table as JSON. Columns: item, quantity, amount. Total the amount column.” Cela utilise extract_tables.
  4. Collecter les échecs explicitement. Prompt : “List every file that failed, was password-protected, or returned no table, with the reason.” Un lot qui ne signale que les succès masque les exceptions.
  5. Écrire la sortie. Prompt : “Write one row per file to a CSV in the output folder.”

Les fichiers sont résolus par leur nom à l’intérieur du conteneur, ainsi l’agent transmet invoice-014.pdf, et non un chemin d’hôte.

Que décide l’agent, et que fait le moteur ?

Étape Ce que décide l’agent Ce que fait le moteur
Tri Quels fichiers extraire Rapporte le type, le nombre de pages et la taille ; extract_text indique si du texte existe
Capture Quel outil chaque fichier nécessite Renvoie le texte ou les lignes de tableau du fichier
Validation Si un total correspond au texte Rien ; l’agent compare
Exceptions Quels fichiers figurent sur la liste Renvoie le message d’échec pour un fichier défectueux
Sortie La forme du CSV Rien ; l’agent l’écrit

La séparation est le point clé. Capturer les valeurs est un travail déterministe du moteur ; juger et les assembler relève de l’agent.

Exemple de session (abrégé) :

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).

Que se passe-t-il avec les fichiers qui ne correspondent pas ?

Un scan n’a pas de couche de texte, donc l’extraction de tableau ne renvoie rien pour celui‑ci. Mettez‑les de côté, ou laissez l’agent se diriger vers extract_barcodes lorsque la page contient un numéro de suivi ou un code de commande. La liste de repli sert également d’inventaire des parties de l’archive qui sont des scans. Un fichier protégé par mot de passe échoue à son appel, donc demandez à l’agent de le signaler et de continuer ; les outils acceptent un argument password lorsque vous en avez un.

Comment garder une exécution importante abordable ?

  • Restreindre par page lorsque les données ont un emplacement connu, comme la première page de chaque facture.
  • Éviter extract_images en masse. Il crée un fichier pour chaque image, et un dossier de rapports illustrés produit des centaines de fichiers.
  • Surveiller l’utilisation au compteur. Sous licence au compteur chaque appel est facturé en fonction du traitement, ainsi un balayage ciblé coûte moins cher qu’un balayage exhaustif.

Quelles sont les limites ?

Sans licence, l’extraction est limitée ; les limites exactes sont indiquées sur la [page de licence] de la bibliothèque. Le serveur ne possède pas d’OCR, donc le texte scanné ne peut pas être capturé. Il est fourni uniquement sous forme d’image Docker ; il n’existe pas de commande dnx.

Comment enregistrer le serveur ?

Une entrée manuelle minimale pour Cursor, Claude Desktop ou Windsurf, en utilisant les chemins de conteneur provenant de la documentation de configuration du 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

Puis-je traiter un dossier de factures avec l’IA sans les télécharger ?
Oui. Le conteneur lit le dossier monté et communique avec votre client via stdio, de sorte que les factures restent sur votre machine.

Comment extraire du texte en lot à partir de PDFs localement ?
Demandez à l’agent de parcourir le dossier et d’appeler extract_text par fichier, page par page pour les documents longs, car les sorties très volumineuses sont tronquées avec un marqueur.

L’agent peut-il automatiser la saisie de données à partir de documents ?
Il peut assembler les lignes extraites dans un CSV ou un tableau récapitulatif. Examinez la liste des exceptions avant que quoi que ce soit ne soit introduit dans un autre système.

Approfondir