Le nœud Document Loader échoue avec l'erreur « DOMMatrix is not defined » lors de l'analyse de fichiers PDF

Salut à tous,

J’ai un problème avec le nœud Document Loader lors de l’ingestion de fichiers PDF dans un workflow Gemini RAG sur n8n auto-hébergé.

Flux de travail :

Webhook
→ Read/Write Files from Disk
→ Document Loader
→ Vector Store Insert

Le fichier PDF est détecté avec succès et transmis en tant que données binaires au nœud Document Loader, mais le nœud échoue lors de l’analyse du PDF.

L’ingestion CSV fonctionne correctement. Le problème n’apparaît que pour les PDF.

Erreur :

DOMMatrix is not defined

Entrée reçue par le nœud Document Loader :

{
  "mimeType": "application/pdf",
  "fileType": "pdf",
  "fileName": "agents.pdf",
  "fileExtension": "pdf",
  "fileSize": "2.03 MB"
}

Configuration du Document Loader :

  • Type de données : Binary

  • Mode : Load All Input Data

  • Format des données : Automatically Detect by Mime Type

  • Text Splitting : Custom

Environnement :

  • Version de n8n : 2.23.0

  • Base de données : SQLite

  • Exécution via : Docker (Auto-hébergé)

  • OS : Ubuntu Linux

Pouvez-vous revenir à la version 2.21.7, @Rahul_Parmar ? 2.23 est encore en bêta

@Rahul_Parmar régression connue depuis n8n 1.98 lorsque pdfjs-dist a été mis à jour vers une version nécessitant des API de navigateur comme DOMMatrix — plusieurs problèmes ouverts sur github à ce sujet (#16593, #16438, #16422). contournement qui fonctionne sur 2.23.0 sans rétrogradation : contourner Document Loader pour les PDF et utiliser un nœud Code avec le package npm pdf-parse à la place. définir NODE_FUNCTION_ALLOW_EXTERNAL=pdf-parse dans tes variables d’environnement, extraire le texte dans le nœud Code, transmettre le texte extrait directement à Vector Store Insert. le reste de ton workflow est-il fortement lié à Document Loader spécifiquement, ou l’utilises-tu simplement pour l’extraction de texte PDF ?

J’utilisais précédemment la version 2.21.7, mais j’ai effectué une mise à jour en raison du problème pdf-parse v1.1 signalé dans « Error in Node Default Data Loader », qui semble avoir été corrigé dans la version 2.23.0.

Cependant, après la mise à jour, je rencontre maintenant l’erreur DOMMatrix is not defined spécifiquement lors de l’ingestion de PDF dans le nœud Document Loader.

Je vais attendre la version stable.

références :

  1. 2.23 · Releases · n8n-io/n8n · GitHub
  2. Pdf-parse v1.1 Error in Node Default Data Loader - #5 by tamy.santos

bonjour @Rahul_Parmar
veuillez partager votre json.

good morning, @tamy.santos

here is the json file.

@Rahul_Parmar
Je n’ai pas trouvé de défaut dans votre code, il s’agit peut-être d’une incompatibilité d’environnement.
Changez le typeversion à 1.0, cela force le loader à utiliser pdf-parse au lieu de pdfjs-dist, éliminant la dépendance au DOM, ou ajoutez un nœud Code comme polyfill avant le loader.

J’ai le même problème que celui signalé ci-dessus (DOMMatrix is not defined). Comme vous l’avez suggéré, j’ai rétrogradé Data Loader à la version 1.0, ajouté un Recursive Character Text Splitter au nœud, mais je reçois toujours l’erreur (DOMMatrix is not defined).

(J’ai n8n auto-hébergé et j’utilise la version 2.23.1, puisque comme la personne qui a signalé le problème d’origine, je recevais également le problème pdf-parse v1.1 signalé dans « Error in Node Default Data Loader ».

salut @atdev150, bienvenue dans la communauté n8n.
chaque cas est un cas, il faut évaluer votre json. s’il vous plaît ouvrez une question pour que la communauté puisse vous aider directement ou vérifiez si ma réponse précédente vous aide aussi.

Désolé, c’est ma première publication :sweat_smile: .

Je vais suivre les réponses de Rahul, puisque je pense avoir le même problème. Si ce n’est pas résolu, j’ouvrirai une nouvelle question. Merci beaucoup Tamy !

Comptez sur nous :dizzy:

bonjour, @tamy.santos

bonjour, @atdev150

Je voulais juste savoir sur quelle version de n8n vous l’avez testé. Avez-vous également utilisé le même workflow Document Ingestion ? Avez-vous pu charger et traiter avec succès un PDF en l’utilisant ?

@Rahul_Parmar 2.22.5

Une nouvelle version a été lancée aujourd’hui sur n8n cloud @2.25.1 (bêta), mais ce problème persiste apparemment. J’attends toujours la correction :slightly_smiling_face:

Bienvenue dans la communauté n8n @BotRidwan
Il est recommandé de préférer la version stable à la version Bêta, pour des raisons de stabilité.

En attendant le correctif officiel, une solution de contournement fonctionnelle sur self-hosted est de remplacer le nœud Document Loader par un nœud Code qui utilise pdf-parse à la place. Si vous ajoutez NODE_FUNCTION_ALLOW_EXTERNAL=pdf-parse à vos variables d’environnement n8n et installez le package dans le conteneur, vous pouvez analyser directement le fichier PDF binaire sans la dépendance DOMMatrix :

const pdfParse = require('pdf-parse');
const buffer = Buffer.from($binary.data, 'base64');
const result = await pdfParse(buffer);
return [{ json: { text: result.text } }];

Ce n’est pas aussi élégant que le nœud natif, mais cela débloque le pipeline RAG en attendant que le correctif soit intégré à la version stable.

Bonjour, à mon avis, le problème avec la version 2.23.4 est définitivement résolu. Merci beaucoup à tous ceux qui ont suivi l’affaire avec insistance ! Cordialement, Thomas

En réalité, le problème n’est pas encore résolu. L’erreur « DOM Matrix is not defined » réapparaît dans la version 2.25.7. Dans la version 2.23.4, le workflow fonctionne sans problème. De même, dans la version « non officielle » 2.26.0, le workflow fonctionne sans problème.