خطأ في محمّل PDF: "فشل في تحميل pdf-parse. هذا المحمّل يدعم pdf-parse v1 فقط"

مرحباً بالجميع،

أواجه مشكلة عند محاولة معالجة ملفات PDF في n8n.

رسالة الخطأ
فشل في تحميل pdf-parse. يدعم هذا المُحمّل حالياً إصدار pdf-parse v1 فقط.
يرجى تثبيت الإصدار v1، على سبيل المثال npm install pdf-parse@^1
(الإصدار v2 غير مدعوم حالياً).
بيئة النظام
إصدار n8n: 2.20.9
النشر: [Self-hosted / Docker / npm install]

ما أحاول القيام به

أستخدم سير عمل معالجة مستندات/محمّل PDF وأتلقى الخطأ أعلاه كلما حاولت n8n تحليل ملف PDF.

أسئلة
هل واجه أحد هذه المشكلة مؤخراً؟
أي مكون يتطلب pdf-parse v1؟
عند تشغيل n8n في Docker، ما هي الطريقة الموصى بها لفرض تثبيت pdf-parse@^1؟
هل هناك إصلاح توافقي أو حل بديل حتى يتم إضافة دعم الإصدار v2؟

أي إرشادات ستكون موضع تقدير.

شكراً!

مرحبا @Bhavin_Patel

أنت ترى هذا الخطأ لأن n8n يحاول قراءة ملف PDF باستخدام أداة تسمى pdf-parse. المشكلة أن عقدة “Document Loader” مصممة للعمل فقط مع نسخة قديمة (v1) من هذه الأداة، لكن نظامك يحتوي على نسخة أحدث (v2) مثبتة. عدم توافق الإصدار هذا يسبب توقف العملية.

تحدث هذه المشكلة لأن n8n يعتمد على مكتبة خارجية تسمى LangChain للتعامل مع المستندات. لدى LangChain قاعدة صارمة في الكود تتحقق من نسخة محددة من محلل PDF. عندما تكتشف النسخة الأحدث، توقف سير العمل وتخبرك بالعودة إلى نسخة أقدم، حتى وإن كانت النسخة الأحدث بشكل عام أكثر حداثة.

الحل الأفضل والأسهل هو تحديث تثبيت n8n الخاص بك إلى الإصدار 2.23.0 أو أحدث. أطلقت فريق n8n إصلاحا يستبدل محمل LangChain الانتقائي بنسختهم المخصصة الخاصة. هذا المحمل الجديد متوافق مع pdf-parse v2، مما يلغي الخطأ ويسمح بمعالجة ملفات PDF الخاصة بك بشكل طبيعي.

إذا لم تتمكن من تحديث n8n وكنت تستخدم Docker، يمكنك “فرض” النسخة القديمة مرة أخرى في نظامك. تفعل هذا بإنشاء Dockerfile مخصص يثبت pdf-parse الإصدار 1.1.1 بشكل صريح. هذا يخدع عقدة Document Loader بشكل فعال لتعتقد أن البيئة صحيحة لكي تتمكن من العمل مرة أخرى.

FROM docker.n8n.io/n8nio/n8n:2.20.9

USER root
RUN npm install -g pdf-parse@1.1.1
USER node

ملاحظة: يجب أن تبني وتشغل هذه الصورة بدلا من الصورة الافتراضية.

للحصول على حل بديل موثوق على المدى الطويل، يمكنك تخطي عقدة “Document Loader” بالكامل. بدلا من ذلك، استخدم “Code Node” لاستخراج النص من ملف PDF الخاص بك يدويا. بتفعيل إعداد معين في متغيرات البيئة الخاصة بك، يمكنك إخبار n8n بالسماح لـ Code Node بالتعامل مع ملف PDF مباشرة، وتجاوز المحمل المعطل ولتحريك سير العمل الخاص بك.

أخبرني إذا كان مفيدا