lundi 4 août 2025

Transformer un livre pdf en base de donnée avec un agent automatisé dans n8n

 créer un agent automatisé dans n8n qui prend un PDF, l’analyse et le réorganise dans une base de données avec les paragraphes indexés par titres/sections/chapitres.

Voici comment tu pourrais procéder :

1️⃣ Schéma général de l’agent dans n8n

  1. Déclencheur (Trigger)

    • Upload manuel d’un PDF dans un dossier surveillé (Google Drive, Dropbox, FTP)

    • Ou réception par email (n8n peut surveiller une boîte email IMAP/POP3)

  2. Lecture et extraction du texte du PDF

    • Utiliser un nœud PDF Extract (via un module Node.js intégré ou un service comme PDF.co ou DocParser).

    • Nettoyer le texte (supprimer numéros de pages, en-têtes, pieds de page).

  3. Analyse et structuration avec IA

    • Envoyer le texte à OpenAI GPT-4 ou o3-mini via un nœud OpenAI dans n8n pour :

      • Détecter les chapitres, sections et paragraphes

      • Générer un JSON structuré du type :

        json
        [ { "chapitre": "Chapitre 1", "section": "Section 1.1", "paragraphe": "Paragraphe 1", "texte": "..." } ]
  4. Stockage dans une base de données

    • Utiliser un nœud MySQL, PostgreSQL ou SQLite dans n8n pour insérer chaque paragraphe avec ses métadonnées.

  5. Indexation / Recherche (optionnel)

    • Créer un index de recherche plein texte (Full-text Search) dans la base de données.

    • Ou envoyer les données vers ElasticSearch ou Meilisearch pour un moteur de recherche rapide.

  6. Notification (optionnel)

    • Envoi d’un email ou message Slack avec le lien vers la base de données une fois l’opération terminée.

2️⃣ Exemple d’architecture dans n8n

css

[Trigger][Read PDF][Clean Text][OpenAI Structuring][Database Insert][Notification]

3️⃣ Points importants

  • L’IA (OpenAI ou autre LLM) est utile pour détecter automatiquement la hiérarchie du texte.

  • Tu peux stocker le résultat en CSV, JSON ou directement en base de données.

  • Si le livre est gros, il faut le découper en sections avant de l’envoyer à l’IA pour éviter les limites de tokens.

  • Une fois automatisé, tu peux déposer n’importe quel PDF dans un dossier et l’agent fera tout seul l’indexation.

📌 le blueprint n8n complet prêt à importer, avec :

  • Le déclencheur

  • Le parsing PDF

  • Le prompt OpenAI pour structurer le texte

  • L’insertion en base de données

Blueprint : Agent d’indexation PDF → Base de données

json

{ "name": "Agent Indexation PDF", "nodes": [ { "parameters": { "folderPath": "/data/pdf_input", "options": {} }, "id": "1", "name": "Trigger - New PDF in Folder", "type": "n8n-nodes-base.folderTrigger", "typeVersion": 1 }, { "parameters": { "filePath": "={{ $json[\"path\"] }}", "options": {} }, "id": "2", "name": "Read PDF", "type": "n8n-nodes-base.pdfExtract", "typeVersion": 1 }, { "parameters": { "operation": "cleanText", "text": "={{ $json[\"data\"] }}" }, "id": "3", "name": "Clean Text", "type": "n8n-nodes-base.function", "typeVersion": 1, "functionCode": "return [{ json: { clean_text: $json[\"text\"].replace(/\\n\\s+/g, ' ').replace(/Page \\d+/g, '') } }];" }, { "parameters": { "operation": "chat", "model": "gpt-4o-mini", "messages": [ { "role": "system", "content": "Tu es un assistant qui organise un texte de livre PDF en chapitres, sections et paragraphes. Retourne un JSON structuré." }, { "role": "user", "content": "Voici le texte extrait :\n\n{{ $json[\"clean_text\"] }}\n\nStructure-le en JSON :\n[\n {\n \"chapitre\": \"Chapitre X\",\n \"section\": \"Section X.Y\",\n \"paragraphe\": \"Paragraphe n\",\n \"texte\": \"...\"\n }\n]" } ] }, "id": "4", "name": "OpenAI Structuring", "type": "n8n-nodes-base.openAi", "typeVersion": 1 }, { "parameters": { "operation": "insert", "table": "livre_index", "columns": [ "chapitre", "section", "paragraphe", "texte" ], "values": "={{ $json[\"chapitre\"] }}, {{ $json[\"section\"] }}, {{ $json[\"paragraphe\"] }}, {{ $json[\"texte\"] }}" }, "id": "5", "name": "Insert in DB", "type": "n8n-nodes-base.postgres", "typeVersion": 1 }, { "parameters": { "fromEmail": "bot@monserveur.com", "toEmail": "admin@monemail.com", "subject": "Indexation PDF terminée", "text": "Le fichier PDF a été analysé et ajouté à la base de données." }, "id": "6", "name": "Send Notification", "type": "n8n-nodes-base.emailSend", "typeVersion": 1 } ], "connections": { "Trigger - New PDF in Folder": { "main": [ [ { "node": "Read PDF", "type": "main", "index": 0 } ] ] }, "Read PDF": { "main": [ [ { "node": "Clean Text", "type": "main", "index": 0 } ] ] }, "Clean Text": { "main": [ [ { "node": "OpenAI Structuring", "type": "main", "index": 0 } ] ] }, "OpenAI Structuring": { "main": [ [ { "node": "Insert in DB", "type": "main", "index": 0 } ] ] }, "Insert in DB": { "main": [ [ { "node": "Send Notification", "type": "main", "index": 0 } ] ] } } }

Ce que fait ce blueprint

  1. Détection d’un nouveau PDF dans un dossier surveillé.

  2. Extraction du texte du PDF.

  3. Nettoyage (suppression des pages, retours à la ligne inutiles).

  4. Envoi à OpenAI pour organiser le contenu en JSON structuré avec chapitres, sections, paragraphes.

  5. Insertion dans ta base de données (ici exemple en PostgreSQL, mais tu peux mettre MySQL/SQLite).

  6. Notification par email une fois terminé.

À préparer avant utilisation

  • Installer le nœud PDF Extract (ou connecter un service externe comme PDF.co si nécessaire).

  • Configurer ton compte OpenAI dans n8n.

  • Adapter la connexion à ta base de données (PostgreSQL, MySQL…).

  • Définir le dossier surveillé pour les PDF.

Une version optimisée consistera  en le découpage automatiquement du PDF en petits morceaux avant l’envoi à l’IA pour éviter les limites de tokens et rendre le traitement plus rapide.

Aucun commentaire:

Enregistrer un commentaire