استخراج خودکار داده فاکتور از PDF ایمیل با GPT-4o و Airtable

استخراج خودکار داده فاکتور از PDF ایمیل با GPT-4o و Airtable

13 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۲۶

دانلود workflow

فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.

  1. فایل JSON را دانلود کنید.
  2. در n8n: Workflows → Import from File.
  3. Credentialهای هر node را متصل کنید.
  4. workflow را فعال کنید.

شناسه workflow: 4434 · منبع: کاتالوگ Axeto

استخراج داده فاکتور با هوش مصنوعی از PDF ایمیل به Airtable با GPT-4o

این گردش کار، استخراج داده‌های فاکتور را از پیوست‌های PDF ایمیل خودکار کرده و داده‌های ساختاریافته را برای اتوماسیون حساب‌های پرداختنی (AP) در Airtable بارگذاری می‌کند. این گردش کار برای تیم‌های مالی یا کسب‌وکارهایی طراحی شده است که به دنبال دیجیتالی کردن پردازش فاکتور با استفاده از هوش مصنوعی، به ویژه GPT-4o، برای استخراج داده‌ها، از جمله تشخیص نوری کاراکتر (OCR) از تصاویر هستند.

این گردش کار و موارد بیشتر را در کاتالوگ n8n در Axeto.ai کاوش کنید.

نمای کلی گردش کار

این گردش کار به چندین بخش منطقی تقسیم شده است:

1. دریافت و فیلتر کردن ایمیل: پیام‌های ورودی Gmail حاوی PDF فاکتور را شناسایی کرده و ایمیل‌های پردازش شده قبلی را فیلتر می‌کند.

2. تبدیل PDF به تصویر: پیوست‌های PDF را به تصاویر JPG تبدیل می‌کند تا امکان تحلیل تصویر با هوش مصنوعی فراهم شود.

3. استخراج داده فاکتور مبتنی بر هوش مصنوعی: از مدل‌های GPT-4o برای استخراج داده‌های ساختاریافته فاکتور از محتوای تصویر و هر متن مرتبط استفاده می‌کند.

4. بازیابی و تطبیق داده فروشنده: رکوردهای فروشنده را از Airtable بازیابی کرده و اطلاعات فروشنده استخراج شده را با رکوردهای موجود تطبیق می‌دهد تا فروشنده صحیح شناسایی شود.

5. نگاشت داده و بارگذاری در Airtable: داده‌های فاکتور استخراج شده را به همراه شناسه فروشنده شناسایی شده نگاشت کرده و اطلاعات تلفیقی را در جدول "Invoices" در Airtable بارگذاری می‌کند.

6. برچسب‌گذاری ایمیل: یک برچسب خاص Gmail را برای علامت‌گذاری ایمیل‌هایی که با موفقیت پردازش شده‌اند، اعمال می‌کند تا از پردازش تکراری جلوگیری شود.

7. یادداشت‌های راه‌اندازی و مستندات: یادداشت‌های چسبان اطلاعاتی با دستورالعمل‌های راه‌اندازی و لینک‌های مفید برای کاربران را شامل می‌شود.

تحلیل گره‌های جزئی

۱. دریافت و فیلتر ایمیل

این بخش با نظارت بر Gmail برای پیام‌های جدید، گردش کار را آغاز می‌کند. ایمیل‌های حاوی پیوست‌های مرتبط با فاکتور را فیلتر کرده و اطمینان حاصل می‌کند که ایمیل‌های پردازش شده قبلی نادیده گرفته می‌شوند.

  • گره‌ها (Nodes):

* Gmail Trigger (n8n-nodes-base.gmailTrigger)

* Gmail1 (n8n-nodes-base.gmail)

* Sticky Note1 (n8n-nodes-base.stickyNote)

* Sticky Note7 (n8n-nodes-base.stickyNote)

  • جزئیات گره‌ها:

* Gmail Trigger:

* نوع: گره Gmail Trigger

* پیکربندی: هر ساعت Gmail را برای پیام‌های جدید بررسی می‌کند. هیچ فیلتری در سطح تریگر اعمال نمی‌شود.

* ورودی: ندارد (تریگر)

* خروجی: فراداده پیام.

* خطاهای احتمالی: مشکلات احراز هویت OAuth2، محدودیت‌های نرخ API Gmail.

* Gmail1:

* نوع: گره Gmail

* پیکربندی: صندوق ورودی را برای پیام‌هایی با پیوست جستجو می‌کند که موضوع یا بدنه آن‌ها حاوی "invoice" است. نکته مهم این است که پیام‌هایی که قبلاً برچسب "invoice\_checked" را دریافت کرده‌اند، حذف می‌کند. پیوست‌ها را به طور خودکار دانلود می‌کند.

* ورودی: خروجی از Gmail Trigger.

* خروجی: داده‌های کامل پیام، از جمله پیوست‌ها.

* خطاهای احتمالی: خطا در هنگام دانلود پیوست، مشکلات API Gmail.

* Sticky Note1:

* هدف: گره اطلاعاتی که معیارهای فیلتر مورد استفاده در گره Gmail1 را توضیح می‌دهد.

* ورودی/خروجی: ندارد.

* Sticky Note7:

* هدف: دستورالعمل‌های راه‌اندازی را ارائه می‌دهد، به طور خاص ایجاد برچسب "invoice\_checked" در Gmail و راه‌اندازی اعتبارنامه OAuth2 لازم برای گره‌های Gmail را شرح می‌دهد.

* ورودی/خروجی: ندارد.

۲. تبدیل PDF به تصویر

این بخش مسئولیت تبدیل پیوست‌های فاکتور PDF به تصاویر JPG را بر عهده دارد و آن‌ها را برای تجزیه و تحلیل هوش مصنوعی آماده می‌کند.

  • گره‌ها (Nodes):

* PDF -> JPG - ConvertAPI (n8n-nodes-base.httpRequest)

* Get image data (n8n-nodes-base.splitOut)

* Get all img_url (n8n-nodes-base.set)

* Sticky Note3 (n8n-nodes-base.stickyNote)

* Sticky Note9 (n8n-nodes-base.stickyNote)

  • جزئیات گره‌ها:

* PDF -> JPG - ConvertAPI:

* نوع: گره HTTP Request

* پیکربندی: یک درخواست POST به نقطه پایانی ConvertAPI PDF-to-JPG ارسال می‌کند. اولین پیوست دریافت شده از گره Gmail1 را آپلود می‌کند. برای کلید API به اعتبارنامه ConvertAPI Header Auth نیاز دارد. با تأخیر ۵ ثانیه‌ای برای تلاش مجدد در صورت شکست پیکربندی شده است.

* ورودی: داده‌های پیوست (attachment_0) از Gmail1.

* خروجی: URL تصاویر JPG تولید شده.

* خطاهای احتمالی: کلید API نامعتبر، مهلت‌های زمانی شبکه، محدودیت‌های نرخ API.

* Get image data:

* نوع: گره SplitOut

* پیکربندی: آرایه "Files" دریافت شده از پاسخ ConvertAPI را تقسیم می‌کند و برای هر فایل تصویری تولید شده یک آیتم جداگانه ایجاد می‌کند.

* ورودی: خروجی از PDF -> JPG - ConvertAPI.

* خروجی: داده‌های فایل تصویری منفرد.

* Get all img_url:

* نوع: گره Set

* پیکربندی: یک فیلد رشته‌ای واحد به نام "url" ایجاد می‌کند که حاوی URL هر فایل تصویری است و انتقال آن به گره‌های بعدی را آسان‌تر می‌کند.

* ورودی: خروجی از Get image data.

* خروجی: شیء JSON با فیلد "url".

* Sticky Note3:

* هدف: کاربران را در مورد راه‌اندازی حساب ConvertAPI، دریافت کلید API و ایجاد اعتبارنامه لازم راهنمایی می‌کند.

* ورودی/خروجی: ندارد.

* Sticky Note9:

* هدف: به کاربران یادآوری می‌کند که اعتبارنامه ConvertAPI Header Auth ایجاد شده را به گره PDF -> JPG - ConvertAPI اختصاص دهند.

* ورودی/خروجی: ندارد.

۳. استخراج داده فاکتور مبتنی بر هوش مصنوعی

این بخش از GPT-4o برای استخراج داده‌های ساختاریافته از تصاویر فاکتور استفاده می‌کند.

  • گره‌ها (Nodes):

* Analyze image (@n8n/n8n-nodes-langchain.openAi)

* OpenAI Model (@n8n/n8n-nodes-langchain.lmOpenAi)

* Apply Data Extraction Rules (@n8n/n8n-nodes-langchain.chainLlm)

Structured Output Parser (n8n-nodes-base.set - توجه: این اغلب با استفاده از یک گره Set با تجزیه JSON یا یک گره تجزیه‌کننده اختصاصی در صورت موجود بودن در نسخه‌های جدیدتر پیاده‌سازی می‌شود*)

* Map Output (n8n-nodes-base.set)

* Sticky Note5 (n8n-nodes-base.stickyNote)

  • جزئیات گره‌ها:

* Analyze image:

* نوع: گره LangChain OpenAI Image Analysis

* پیکربندی: URLهای تصویر را با یک پرامپت خاص که برای استخراج تمام فیلدهای مرتبط فاکتور مانند تاریخ‌ها، اطلاعات فروشنده، جزئیات محصول و قیمت‌گذاری طراحی شده است، به GPT-4o ارسال می‌کند.

* ورودی: URLهای تصویر از Get all img_url.

* خروجی: متن خام حاوی داده‌های استخراج شده فاکتور.

* OpenAI Model:

* نوع: گره LangChain OpenAI Text Model

* پیکربندی: از GPT-4o با تنظیم دمای 0 برای خروجی قطعی و سازگار استفاده می‌کند. این گره به عنوان مدل زبان زیربنایی برای زنجیره هوش مصنوعی عمل می‌کند.

* ورودی: به طور ضمنی توسط زنجیره هوش مصنوعی استفاده می‌شود.

* خروجی: متن تولید شده توسط مدل هوش مصنوعی.

* Apply Data Extraction Rules:

* نوع: گره LangChain Chain LLM

* پیکربندی: از پرامپتی استفاده می‌کند که طرحواره JSON مورد انتظار برای فیلدهای فاکتور را تعریف می‌کند. به هوش مصنوعی دستور می‌دهد تا فقط اطلاعات مشخص شده را استخراج کند و از توهم جلوگیری کند. این گره خروجی تجزیه و تحلیل تصویر و مدل هوش مصنوعی را ادغام کرده و آن را برای تجزیه ساختاریافته آماده می‌کند.

* ورودی: خروجی متن خام از Analyze image و OpenAI Model.

* خروجی: JSON ساختاریافته حاوی داده‌های استخراج شده فاکتور.

* Structured Output Parser:

* نوع: گره Set (یا گره تجزیه‌کننده اختصاصی)

* پیکربندی: ساختار و انواع داده‌ها (مانند تاریخ فاکتور، تاریخ سررسید، نام فروشنده، لیست محصولات، قیمت‌ها) را برای داده‌های JSON استخراج شده اعمال می‌کند و از سازگاری اطمینان حاصل می‌کند.

* ورودی: خروجی متن از Apply Data Extraction Rules.

* خروجی: داده‌های JSON تجزیه و اعتبارسنجی شده.

* Map Output:

* نوع: گره Set

* پیکربندی: خروجی JSON تجزیه شده را به یک ویژگی "output" استاندارد نگاشت می‌کند و آن را برای پردازش بیشتر و ادغام با سایر داده‌ها آماده می‌کند.

* ورودی: JSON تجزیه شده از Structured Output Parser.

* خروجی: داده‌های JSON نرمال شده.

* Sticky Note5:

* هدف: مروری بر فرآیند استخراج هوش مصنوعی ارائه می‌دهد و شامل پیوندی به یک ویدیوی نمایشی است که مفهوم کلی اتوماسیون را توضیح می‌دهد.

* ورودی/خروجی: ندارد.

۴. بازیابی و تطبیق داده‌های فروشنده

این بخش بر بازیابی اطلاعات فروشنده از Airtable و تطبیق آن با جزئیات فروشنده استخراج شده برای اطمینان از شناسایی دقیق فروشنده تمرکز دارد.

  • گره‌ها (Nodes):

* Get list of vendors (n8n-nodes-base.airtable)

* Edit Fields (n8n-nodes-base.set)

Information Extractor (@n8n/n8n-nodes-langchain.chainLlm - توجه: این ممکن است یک گره سفارشی یا ترکیبی از گره‌ها باشد. فرض بر این است که یک گره LangChain برای تطبیق است.*)

* OpenAI Chat Model (@n8n/n8n-nodes-langchain.lmChatOpenAi)

* Merge (n8n-nodes-base.merge)

  • جزئیات گره‌ها:

* Get list of vendors:

* نوع: گره Airtable

* پیکربندی: جدول "Vendors" را در پایگاه Airtable مشخص شده جستجو می‌کند تا تمام رکوردهای فروشنده را بازیابی کند.

* ورودی: ندارد (به صورت پایین‌دستی فعال می‌شود).

* خروجی: لیستی از رکوردهای فروشنده از Airtable.

* Edit Fields:

* نوع: گره Set

* پیکربندی: رکوردهای فروشنده Airtable را به یک آرایه ساده شده از اشیاء تبدیل می‌کند که هر کدام دارای ویژگی‌های id و Name هستند و برای تطبیق مناسب است.

* ورودی: خروجی از Get list of vendors.

* خروجی: آرایه‌ای از فروشندگان در ساختاری ساده شده.

* Information Extractor:

* نوع: گره LangChain Information Extractor (یا منطق مشابه)

* پیکربندی: لیستی از فروشندگان و نام فروشنده و شناسه مالیاتی استخراج شده از فاکتور را دریافت می‌کند. از GPT-4o برای یافتن شناسه فروشنده مطابق از لیست ارائه شده استفاده می‌کند یا در صورت عدم یافتن تطابق، یک رشته خالی برمی‌گرداند.

* ورودی: داده‌های ادغام شده حاوی لیست فروشندگان و اطلاعات فروشنده فاکتور استخراج شده.

* خروجی: vendor_id شناسایی شده یا یک رشته خالی.

* OpenAI Chat Model:

* نوع: گره LangChain Chat OpenAI

* پیکربندی: از GPT-4o با یک پرامپت سیستمی که منطق تطبیق اطلاعات فروشنده را تعریف می‌کند، استفاده می‌کند.

* ورودی: ورودی برای پرامپت تطبیق فروشنده.

* خروجی: نتیجه استخراج شناسه فروشنده.

* Merge:

* نوع: گره Merge

* پیکربندی: خروجی فرآیند تطبیق فروشنده را با داده‌های نگاشت شده قبلی فاکتور ترکیب می‌کند.

* ورودی: خروجی از Edit Fields و Map Output.

* خروجی: داده‌های تجمیع شده آماده برای آپلود در Airtable.

۵. نگاشت داده و آپلود در Airtable

این بخش نهایی تمام داده‌های پردازش شده را تجمیع کرده و آن‌ها را در Airtable آپلود می‌کند، سپس ایمیل را به عنوان پردازش شده علامت‌گذاری می‌کند.

  • گره‌ها (Nodes):

* Merge1 (n8n-nodes-base.merge)

* Airtable (n8n-nodes-base.airtable)

* Gmail (n8n-nodes-base.gmail)

* Sticky Note4 (n8n-nodes-base.stickyNote)

* Sticky Note6 (n8n-nodes-base.stickyNote)

  • جزئیات گره‌ها:

* Merge1:

* نوع: گره Merge

* پیکربندی: داده‌ها را از پردازش URL تصویر، تطبیق فروشنده و استخراج داده فاکتور ترکیب می‌کند. داده‌ها را بر اساس موقعیت هم‌تراز می‌کند تا یک مجموعه داده واحد برای Airtable ایجاد کند.

* ورودی: خروجی از Get all img_url, Information Extractor, و Map Output.

* خروجی: داده‌های تجمیع شده برای Airtable.

* Airtable:

* نوع: گره Airtable

* پیکربندی: یک عملیات "upsert" انجام می‌دهد، رکوردهای فاکتور جدید را اضافه می‌کند یا رکوردهای موجود را در جدول "Invoices" پایگاه Airtable تعیین شده به‌روزرسانی می‌کند. فیلدهایی از جمله شناسه فروشنده، URL فاکتور، تاریخ‌ها، جزئیات محصول، شماره فاکتور و قیمت‌ها را نگاشت می‌کند. تبدیل نوع برای ورود داده دقیق فعال شده است.

* ورودی: داده‌های تجمیع شده از Merge1.

* خروجی: نتیجه عملیات upsert Airtable.

* Gmail:

* نوع: گره Gmail

* پیکربندی: برچسب "invoice\_checked" را به شناسه پیام ایمیل پردازش شده اضافه می‌کند و از پردازش مجدد آن جلوگیری می‌کند.

* ورودی: خروجی Airtable (از شناسه پیام Gmail1 استفاده می‌کند).

* خطاهای احتمالی: خطاهای API Gmail، عدم وجود برچسب "invoice\_checked".

* Sticky Note4:

* هدف: به کاربران یادآوری می‌کند که گره Airtable را با پایگاه Airtable و جدول "Invoices" خاص خود پیکربندی کنند.

* ورودی/خروجی: ندارد.

* Sticky Note6:

* هدف: به کاربران یادآوری می‌کند که گره Airtable را برای بازیابی فروشندگان با پایگاه Airtable و جدول "Vendors" خاص خود پیکربندی کنند.

* ورودی/خروجی: ندارد.

جدول خلاصه

نام نود (Node Name)نوع نود (Node Type)نقش عملکردی (Functional Role)نود(های) ورودی (Input Node(s))نود(های) خروجی (Output Node(s))یادداشت چسبان (Sticky Note)
Gmail Triggern8n-nodes-base.gmailTriggerفعال‌سازی بر اساس پیام‌های جدید جیمیلNoneGmail1# 3. تنظیم دستورالعمل‌های جیمیل (یادداشت چسبان 7)
Gmail1n8n-nodes-base.gmailدریافت فاکتورها از صندوق ورودی جیمیلGmail TriggerPDF -> JPG - ConvertAPIدریافت تمام پیام‌ها با پیوست، متن "invoice"، بدون برچسب 'invoice\_checked' (یادداشت چسبان 1)
PDF -> JPG - ConvertAPIn8n-nodes-base.httpRequestتبدیل پیوست PDF به JPGGmail1Get image dataتنظیم ConvertAPI و احراز هویت هدر (یادداشت چسبان 3، یادداشت چسبان 9)
Get image datan8n-nodes-base.splitOutتقسیم فایل‌های JPG برای پردازشPDF -> JPG - ConvertAPIGet all img_url
Get all img_urln8n-nodes-base.setاستخراج URL تصاویر برای تحلیلGet image dataAnalyze image, Merge1
Analyze image@n8n/n8n-nodes-langchain.openAiاستخراج داده‌های فاکتور از تصاویرGet all img_urlApply Data Extraction Rules
OpenAI Model@n8n/n8n-nodes-langchain.lmOpenAiمدل متنی AI برای استخراج فاکتور(به طور ضمنی توسط زنجیره AI استفاده می‌شود)Apply Data Extraction Rules (ai_languageModel)
Apply Data Extraction Rules@n8n/n8n-nodes-langchain.chainLlmاعمال طرحواره JSON و استخراج داده‌هاAnalyze image, OpenAI ModelStructured Output Parser
Structured Output Parsern8n-nodes-base.setتجزیه و اعتبارسنجی JSON استخراج شدهApply Data Extraction RulesMap Outputطرحواره JSON برای فیلدهای فاکتور را اجباری می‌کند.
Map Outputn8n-nodes-base.setنرمال‌سازی داده‌های استخراج شدهStructured Output ParserMerge, Merge1خروجی تجزیه شده را به یک ویژگی استاندارد "output" نگاشت می‌کند.
Get list of vendorsn8n-nodes-base.airtableبازیابی لیست فروشندگان از Airtable(به صورت پایین‌دستی فعال می‌شود)Edit Fieldsیادآوری برای تنظیم پایگاه داده/جدول Airtable برای فروشندگان (یادداشت چسبان 6)
Edit Fieldsn8n-nodes-base.setساده‌سازی داده‌های فروشنده برای تطبیقGet list of vendorsInformation Extractorرکوردهای فروشنده Airtable را به id و Name تبدیل می‌کند.
Information Extractor@n8n/n8n-nodes-langchain.chainLlmتطبیق فروشنده استخراج شده با AirtableEdit Fields, Map Output (merged)Mergeاز GPT-4o برای یافتن شناسه فروشنده مطابق استفاده می‌کند.
OpenAI Chat Model@n8n/n8n-nodes-langchain.lmChatOpenAiمدل AI برای تطبیق فروشنده(ورودی برای پرامپت تطبیق فروشنده)Information Extractor
Mergen8n-nodes-base.mergeترکیب تطابق فروشنده با داده‌های فاکتورEdit Fields, Map OutputAirtable
Merge1n8n-nodes-base.mergeتجمیع تمام داده‌ها برای AirtableGet all img_url, Information Extractor, Map OutputAirtableURLهای تصویر، تطابق فروشنده و داده‌های فاکتور را بر اساس موقعیت ترکیب می‌کند.
Airtablen8n-nodes-base.airtableدرج/به‌روزرسانی داده‌های فاکتور در AirtableMerge1Gmailیادآوری برای تنظیم پایگاه داده/جدول Airtable برای فاکتورها (یادداشت چسبان 4)
Gmailn8n-nodes-base.gmailبرچسب‌گذاری ایمیل‌های پردازش شدهAirtableNoneبرچسب "invoice\_checked" را برای جلوگیری از پردازش مجدد اضافه می‌کند.

Nodeهای استفاده‌شده

سوالات متداول

این گردش کار چگونه داده‌های فاکتور را استخراج می‌کند؟

این گردش کار از مدل GPT-4o برای تجزیه و تحلیل تصاویر PDF فاکتور (پس از تبدیل به JPG) و استخراج داده‌های کلیدی مانند مبلغ، تاریخ، فروشنده و موارد دیگر استفاده می‌کند. همچنین از OCR برای خواندن متن در تصاویر بهره می‌برد.

چگونه این گردش کار از پردازش تکراری ایمیل‌ها جلوگیری می‌کند؟

این گردش کار با اعمال یک برچسب خاص ('invoice_checked') به ایمیل‌هایی که با موفقیت پردازش شده‌اند در Gmail، از پردازش مجدد آن‌ها جلوگیری می‌کند.

این گردش کار با داده‌های استخراج شده چه می‌کند؟

پس از استخراج داده‌ها، گردش کار فروشنده را در Airtable شناسایی و تطبیق می‌دهد و سپس اطلاعات تلفیقی فاکتور را در جدول "Invoices" در Airtable بارگذاری می‌کند.

چه پیش‌نیازهایی برای اجرای این گردش کار لازم است؟

شما به یک حساب n8n، دسترسی به Gmail (با اعتبارنامه OAuth2)، و یک حساب Airtable با جدول "Invoices" نیاز دارید. همچنین ممکن است نیاز به تنظیمات API برای سرویس‌های تبدیل PDF (در صورت استفاده) داشته باشید.

workflowهای مرتبط

این workflow در کاتالوگ Axeto.ai بایگانی شده است. لایسنس اصلی متعلق به سازنده workflow است.