نود Extract From File در N8N
نود Extract From File برای استخراج محتوای قابل استفاده از فایلها (مثل متن داخل PDF یا DOCX، دادههای CSV/Excel، یا محتوای فایلهای فشرده) در ورکفلوهای n8n استفاده میشود. این نود زمانی ارزشمند است که ورودی شما «فایل» است اما خروجی موردنیازتان باید «داده ساختیافته یا متن قابل پردازش» باشد.
معرفی نود در N8N
نود Extract From File فایلهای ورودی را از بخش باینری (Binary) آیتمها دریافت میکند و بسته به نوع فایل و گزینههای انتخابشده، محتوا را استخراج کرده و به شکل متن یا داده ساختیافته (JSON) خروجی میدهد.
- کارکرد اصلی: تبدیل فایل به داده قابل پردازش در مراحل بعدی (متن، رکوردها، لیست فایلهای داخل آرشیو و…)
- دستهبندی نود: Action (عملیاتی)
- اهمیت در ورکفلوها: بسیاری از اتوماسیونها با فایلها سروکار دارند (ایمیل، فرمها، آپلودها، ذخیرهسازی ابری). این نود حلقه اتصال بین «فایل خام» و «پردازش منطقی» است.
موارد استفاده
۱) استخراج متن از PDF برای تحلیل یا جستجو
- سناریو: دریافت PDF فاکتور از ایمیل، استخراج متن، پیدا کردن شماره فاکتور و مبلغ، سپس ثبت در Google Sheets یا ERP.
- ترکیب پیشنهادی: Gmail/IMAP Email Trigger → Extract From File → Code / Set → Google Sheets
۲) تبدیل CSV به آیتمهای JSON برای پردازش مرحلهای
- سناریو: تیم فروش فایل CSV لیدها را آپلود میکند؛ شما هر ردیف را بهعنوان یک آیتم تبدیل کرده و در CRM ثبت میکنید.
- ترکیب پیشنهادی: Webhook → Extract From File (CSV) → Split In Batches → HubSpot / Pipedrive
۳) خواندن Excel و ساخت رکوردهای استاندارد
- سناریو: فایل Excel موجودی انبار روزانه را میگیرید، ستونها را نگاشت میکنید، سپس در پایگاه داده بهروزرسانی میکنید.
- ترکیب پیشنهادی: Google Drive Trigger → Extract From File (XLSX) → Item Lists / Code → Postgres
۴) استخراج فایلهای داخل ZIP و پردازش تکبهتک
- سناریو: یک ZIP شامل چندین تصویر و یک فایل متنی دریافت میکنید؛ تصاویر را آپلود میکنید و متن را تحلیل میکنید.
- ترکیب پیشنهادی: HTTP Request (Download) → Extract From File (Archive) → Split Out → S3 / OCR
پارامترها و تنظیمات
فیلدهای دقیق ممکن است با نسخه n8n کمی تفاوت داشته باشند، اما تنظیمات کلیدی این نود معمولاً حول محور «نوع استخراج»، «نام پراپرتی باینری» و «گزینههای فرمت» است.
- Binary Property (نوع داده: String)
کاربرد: نام پراپرتی باینری که فایل داخل آن قرار دارد (پیشفرض در بسیاری از نودها:
data).مثال عملی: اگر فایل از Google Drive با نام باینری
fileآمده باشد، مقدار راfileبگذارید. - Operation / Extract Type (نوع داده: Option)
کاربرد: تعیین میکند از فایل چه چیزی استخراج شود (مثلاً Text، Spreadsheet، CSV، Archive Entries).
مثال عملی: برای CSV گزینه استخراج رکوردها (Rows/Records) را انتخاب کنید تا هر سطر به JSON تبدیل شود.
- File Type / Format (نوع داده: Option)
کاربرد: اگر تشخیص خودکار کافی نباشد، نوع فایل را مشخص میکنید (pdf، docx، csv، xlsx، zip و…).
مثال عملی: وقتی فایل بدون پسوند میرسد، دستی
pdfرا انتخاب کنید تا استخراج متن درست انجام شود. - Encoding (نوع داده: Option/String)
کاربرد: برای فایلهای متنی مثل TXT/CSV، انکودینگ را تعیین میکند (UTF-8، Windows-1256 و…).
مثال عملی: اگر حروف فارسی بههمریخته است، انکودینگ را به Windows-1256 یا UTF-8 (بسته به منبع) تغییر دهید.
- CSV Delimiter (نوع داده: String)
کاربرد: جداکننده ستونها در CSV (معمولاً
,یا;).مثال عملی: اگر فایلهای اروپایی دارید، خیلی وقتها جداکننده
;است. - First Row as Headers (نوع داده: Boolean)
کاربرد: تعیین میکند ردیف اول CSV/Excel بهعنوان نام ستونها استفاده شود یا نه.
مثال عملی: اگر فایل CSV ردیف اولش
email,phone,sourceاست، این گزینه باید روشن باشد تا خروجی کلیدهای معنادار بگیرد. - Sheet Name / Sheet Index (نوع داده: String/Number)
کاربرد: برای Excel مشخص میکند از کدام شیت استخراج انجام شود.
مثال عملی: اگر شیت اصلی
Inventoryاست، همان را وارد کنید تا اشتباهاً از شیت خلاصه گزارش نخواند. - Output Mode (نوع داده: Option)
کاربرد: نحوه خروجیدادن دادهها (یک آیتم با آرایه رکوردها یا چند آیتم جداگانه).
مثال عملی: اگر قصد دارید هر ردیف CSV جداگانه وارد CRM شود، خروجی را روی «هر ردیف = یک آیتم» تنظیم کنید.
- Include Binary (نوع داده: Boolean)
کاربرد: مشخص میکند باینری اولیه در خروجی حفظ شود یا حذف گردد.
مثال عملی: اگر بعد از استخراج متن هنوز میخواهید همان PDF را در S3 آپلود کنید، این گزینه را فعال نگه دارید.
نکات مهم هنگام پیکربندی
- نام Binary Property را دقیق بگذارید؛ اگر اشتباه باشد، نود فایل را پیدا نمیکند و خطا میدهد.
- برای CSV/Excel، همخوانی جداکننده و هدرها تعیینکننده کیفیت خروجی است.
- اگر خروجی متن فارسی مشکل دارد، اول Encoding و سپس منبع تولید فایل را بررسی کنید.
- برای فایلهای بزرگ، بهتر است خروجی را طوری تنظیم کنید که حافظه کمتری مصرف شود (مثلاً خروجی ردیفبهردیف و پردازش Batch).
ورودیها و خروجیها
ورودی (Input)
این نود معمولاً انتظار دارد فایل به صورت Binary در آیتم ورودی وجود داشته باشد. ساختار رایج باینری در n8n شبیه نمونه زیر است:
{ "json": { "source": "email" }, "binary": { "data": { "fileName": "leads.csv", "mimeType": "text/csv", "fileSize": 24510 } }}
خروجی (Output)
خروجی بسته به نوع فایل و حالت خروجی متفاوت است. چند نمونه رایج:
نمونه خروجی برای CSV (هر ردیف = یک آیتم)
[ { "json": { "email": "a@example.com", "phone": "09120000000", "source": "landing" } }, { "json": { "email": "b@example.com", "phone": "09350000000", "source": "event" } }]
نمونه خروجی برای PDF (استخراج متن در یک فیلد)
{ "json": { "text": "Invoice No: 1024nTotal: 12,500,000 IRRn..." }}
نمونه خروجی برای ZIP (لیست فایلهای استخراجشده)
{ "json": { "files": [ { "name": "image-1.png", "mimeType": "image/png" }, { "name": "readme.txt", "mimeType": "text/plain" } ] }, "binary": { "image-1.png": { "fileName": "image-1.png", "mimeType": "image/png" }, "readme.txt": { "fileName": "readme.txt", "mimeType": "text/plain" } }}
نکات پیشرفته و ترفندها
- پاکسازی و استانداردسازی داده بعد از استخراج
بعد از Extract، معمولاً نیاز به یک نود Set یا Code دارید تا نام فیلدها یکسان شود (مثلاً تبدیل
Phone Numberبهphone) و مقادیر (مثل اعداد) نرمالسازی شوند. - پردازش فایلهای بزرگ با Split In Batches
اگر CSV/Excel بزرگ است، خروجی را «هر ردیف یک آیتم» بگیرید و با Split In Batches رکوردها را دستهای ارسال کنید تا هم فشار روی API مقصد کم شود و هم مصرف RAM پایین بیاید.
- ترکیب با IF برای اعتبارسنجی قبل از پردازش
قبل از استخراج، با یک نود IF یا بررسی
mimeTypeمطمئن شوید فایل همان فرمتی است که انتظار دارید؛ در غیر این صورت مسیر خطا/اطلاعرسانی بسازید. - چند فایل در یک اجرا
اگر ورودی چند آیتم دارد (هر آیتم یک فایل)، این نود روی همه آیتمها اجرا میشود. برای کنترل بهتر، ابتدا با Merge یا Item Lists ورودی را مرتب کنید.
- استخراج متن و سپس استخراج دادههای کلیدی با Regex
برای PDF/DOCX معمولاً خروجی متن خام است. سپس با Code (JavaScript) یا نودهای متنمحور، میتوانید الگوها را بیرون بکشید (شماره سفارش، تاریخ، مبلغ).
محدودیتها و خطاها
محدودیتها
- کیفیت استخراج متن از PDF به ساختار PDF وابسته است؛ PDFهای اسکنشده معمولاً متن قابل استخراج ندارند و نیاز به OCR دارند.
- فایلهای بسیار بزرگ ممکن است باعث کندی یا مصرف زیاد حافظه شوند، مخصوصاً اگر خروجی را در یک آیتم بزرگ نگه دارید.
- برخی فرمتهای خاص یا فایلهای رمزدار/پسورددار (مثل ZIP یا PDF قفلشده) ممکن است قابل استخراج نباشند.
خطاهای رایج و راهحلها
- خطا: Binary data property not found
علت: مقدار Binary Property اشتباه است یا فایل در آیتم ورودی وجود ندارد.
راهحل: خروجی نود قبلی را بررسی کنید و نام دقیق پراپرتی باینری (مثل
dataیاfile) را تنظیم کنید. - حروف فارسی بههمریخته در CSV/TXT
علت: Encoding نادرست.
راهحل: Encoding را تغییر دهید و در صورت امکان فایل را از منبع با UTF-8 خروجی بگیرید.
- ستونها جابهجا یا همه داده در یک ستون
علت: Delimiter اشتباه (مثلاً فایل با
;است ولی شما,گذاشتهاید).راهحل: جداکننده را مطابق فایل تنظیم کنید و نمونه خام CSV را بررسی کنید.
- خروجی PDF ناقص یا نامرتب
علت: PDF ساختار متنی استاندارد ندارد (ستونبندی پیچیده، فونتهای خاص، یا تصویرمحور).
راهحل: در صورت اسکنبودن، OCR را وارد جریان کنید؛ در غیر این صورت استخراج را با پردازشهای پسینی (پاکسازی فاصلهها/خطوط) بهبود دهید.
ایده ها
- ساخت سیستم «ورود خودکار فاکتور» از PDFهای ایمیل و ثبت در Google Sheets به همراه ارسال اعلان در Slack.
- تبدیل فایلهای CSV صادراتی فروشگاه به آیتمها و همگامسازی خودکار با CRM یا ابزار ایمیل مارکتینگ.
- پردازش ZIP گزارشهای روزانه (چند فایل) و آرشیو کردن فایلها در S3 با نامگذاری استاندارد.
- خواندن Excel برنامه شیفت کارکنان و ساخت رویدادهای تقویم در Google Calendar.
- استخراج متن قراردادهای DOCX و بررسی وجود بندهای کلیدی با جستجوی عبارتها، سپس تولید گزارش تطابق.
