قراءة الفواتير بالذكاء الاصطناعي: من صورة أو PDF لصف في Google Sheets بـ n8n

workflow بـ n8n بيقرا الفاتورة سواء PDF أو صورة من الموبايل، يتأكد إن الأرقام منطقية، ويسأل المحاسب لما يشك. ومعاه حسبة: 400 فاتورة في الشهر بتوفّر حوالي 20 ساعة.

اتنشر:
آخر تحديث:
قراءة 10 دقايق
قراءة الفواتير بالذكاء الاصطناعي بـ n8n من صورة الإيصال إلى Google Sheets

صيدلية في إسكندرية بيجيلها حوالي 400 فاتورة موردين في الشهر. لو إدخال الفاتورة الواحدة في Excel بياخد 4 دقايق، ده حوالي 27 ساعة في الشهر، يعني أكتر من 3 أيام شغل كاملة لحد بيكتب أرقام. قراءة الفواتير بالذكاء الاصطناعي بتنزّل الرقم ده لحوالي 6 ساعات، وتكلفة الـ AI فيها أقل من دولار في الشهر.

في المقال ده هبني workflow بـ n8n بيستلم الفاتورة، يقراها سواء كانت PDF من برنامج محاسبة، أو PDF متصوّر scan، أو صورة من الموبايل، يطلّع البيانات، يتأكد إن الأرقام منطقية، ويسأل المحاسب لما يشك، وبعدين يكتبها في Google Sheets. نفس الفكرة جزء من المحاضرة 17 في الدبلومة، وبنفّذها للشركات كخدمة.

المحتوى

الـ workflow باختصار

workflow قراءة الفواتير بالذكاء الاصطناعي على n8n بفروع PDF والـ scan والصورة
الـ workflow في n8n: تلات طرق للقراءة، وبعدين تحقق واحد ومراجعة واحدة.

الفكرة ببساطة: كل نوع ملف ليه أرخص طريقة تقراه بيها، وبعد القراية كله بيعدّي على نفس التحقق.

الاستلام وتحديد نوع الملف

الاستلام ممكن يبقى من n8n Form، أو من إيميل الحسابات، أو من فولدر على Google Drive. هنا هستخدم n8n Form Trigger بحقل Element Type بتاعه File.

تفصيلة مهمة: الملف بيوصل كـ binary باسم الحقل. لو اسم الحقل عربي، n8n بيحوّل الحروف لـ _ وكل الـ expressions اللي بعد كده بتبوظ. خلّي Field Name إنجليزي: invoice.

الـ Switch بيفصل على نوع الملف بالـ expression ده:

{{ $binary.invoice.mimeType }}

لو النوع فيه pdf يروح فرع الـ PDF، لو فيه image يروح فرع الصور.

الفرع الأول: PDF فيه نص

فواتير كتير بتوصل PDF متعمل من برنامج محاسبة، يعني النص جوا الملف فعلاً. هنا مش محتاج الـ AI يشوف صورة. الـ Extract from File على Extract From PDF بيطلّع النص في حقل text:

  • غيّر Input Binary Field من data لـ invoice.
  • من Options خلّي Keep Source على Both. الـ node بيشيل الملف من الـ item افتراضياً، واحنا محتاجينه لو طلع scan.

بعدها If بيبص على طول النص. لو فيه نص، الـ Information Extractor بياخده ويطلّع البيانات حسب الـ schema. ده أرخص وأدق من إرسال صورة، لأن الموديل بيقرا نص جاهز بدل ما يخمّن من بكسلات.

الفرع التاني: PDF متصوّر scan

لو النص طلع فاضي، يبقى الـ PDF عبارة عن صورة. الـ Basic LLM Chain مش هينفع هنا، لأنه بيقبل صور بس (image/*) وبيرفض الـ PDF. الحل الأبسط: Google Gemini node على resource Document وعملية Analyze Document، وده بيقرا الـ PDF نفسه. الحل التاني: تحوّل الـ PDF لصورة الأول وتبعته لفرع الصور.

الفرع التالت: صورة الفاتورة

هنا استخراج النص من الصور بالذكاء الاصطناعي. الـ Basic LLM Chain بيقبل في Chat Messages رسالة User بنوع Image (Binary)، وغيّر Image Data Field Name لـ invoice. اختار Image Details على High للإيصالات الصغيرة، لأن Low بيبعت نسخة 512x512 بس.

فعّل Require Specific Output Format ووصّل Structured Output Parser. هنا خلّي بالك: لو اخترت Generate from JSON Example، n8n بيعتبر كل حقل إجباري وبنوع ثابت، فالموديل مش هيقدر يقول "مش لاقي الحقل ده" بـ null. استخدم Define using JSON Schema وخلّي الحقول اللي ممكن تغيب تقبل null:

{
  "type": "object",
  "properties": {
    "vendor_name":    { "type": ["string", "null"] },
    "vendor_tax_id":  { "type": ["string", "null"] },
    "invoice_number": { "type": ["string", "null"] },
    "invoice_date":   { "type": ["string", "null"], "description": "YYYY-MM-DD" },
    "currency":       { "type": ["string", "null"] },
    "subtotal":       { "type": ["number", "null"] },
    "vat_amount":     { "type": ["number", "null"] },
    "total":          { "type": ["number", "null"] },
    "confidence":     { "type": "number" },
    "missing_fields": { "type": "array", "items": { "type": "string" } }
  },
  "required": ["total", "confidence", "missing_fields"]
}

نفس الـ schema حطه في الـ Information Extractor بتاع فرع الـ PDF، عشان التحقق بعد كده يلاقي confidence و missing_fields في الحالتين.

والـ prompt:

اقرا الفاتورة وطلّع البيانات بالشكل المطلوب.
- الأرقام بالأرقام الإنجليزية ومن غير فواصل آلاف.
- التاريخ بصيغة YYYY-MM-DD.
- لو حقل مش مقروء أو مش موجود، حط null وضيف اسمه في missing_fields. ماتخمّنش.
- confidence رقم من 0 لـ 1: قد إيه إنت متأكد إن total و vat_amount و invoice_date صح.

أهم سطر هو "ماتخمّنش". الموديل لو ماعرفش يقرا رقم ممكن يألّف رقم شكله منطقي، فلازم يبقى عنده طريق يقول بيه "مش عارف".

التحقق من الأرقام قبل ما تثق فيها

درجة الثقة اللي الموديل بيقولها مفيدة، بس مش كفاية. الموديل ممكن يبقى واثق وغلطان. عشان كده فيه Code node على Run Once for Each Item بيراجع الأرقام بقواعد بسيطة:

// Code node, mode: Run Once for Each Item
const inv = $json.output ?? $json;
const num = (v) => (v == null || v === '' ? null : Number(String(v).replace(/,/g, '')));
const subtotal = num(inv.subtotal), vat = num(inv.vat_amount), total = num(inv.total);
const problems = [];

if (total == null || Number.isNaN(total)) problems.push('total missing');
if (!inv.invoice_date) problems.push('date missing');
else if (Number.isNaN(new Date(inv.invoice_date).getTime())) problems.push('bad date');
else if (new Date(inv.invoice_date) > new Date()) problems.push('date in the future');

if (subtotal != null && vat != null && total != null && Math.abs(subtotal + vat - total) > 1) {
  problems.push('subtotal + vat != total');
}

return {
  json: {
    ...inv, subtotal, vat_amount: vat, total, problems,
    needs_review: problems.length > 0 || (inv.confidence ?? 0) < 0.8 || (inv.missing_fields ?? []).length > 0,
  },
  binary: $input.item.binary,
};

الفواتير المصرية اللي فيها بند خصم وإضافة أو خصم تجاري هتروح مراجعة بسبب قاعدة الإجمالي، وده تمام: المحاسب يبص عليها مرة. وتقدر تضيف قواعد من شغلك: المورد لازم يكون من قائمة الموردين المعروفين، أو أي فاتورة فوق مبلغ معيّن تروح مراجعة دايماً.

وعشان نفس الفاتورة ماتتسجلش مرتين لو اتبعتت مرتين، استخدم Google Sheets على Append or Update Row ومتطابق على عمود فيه رقم الفاتورة واسم المورد.

مراجعة المحاسب لما الـ AI مش متأكد

الـ If بيبص على needs_review. لو false، الصف يتكتب على طول في تاب invoices. لو true، الـ Gmail node على عملية Send and Wait for Response بيبعت للمحاسب البيانات اللي اتقرت والمشاكل اللي اتلقت، والـ workflow بيستنى رده. خلّي Response Type على Custom Form: كده المحاسب يصحّح الرقم الغلط من جوا الإيميل نفسه، ويتكتب الصف في تاب review بالقيمة الصح.

في الأسابيع الأولى هتلاقي نسبة المراجعة عالية. ده طبيعي. أغلب أخطاء القراءة سببها الصورة نفسها، فاكتب للموظفين اللي بيرفعوا الإيصالات تلات سطور جنب الفورم: صوّر في مكان منوّر من غير فلاش، افرد الإيصال على سطح غامق، وخلّي الإيصال كله جوا الصورة. الإيصالات الحرارية بتاعة الكاشير بتبهت مع الوقت، فالأحسن تتصوّر نفس اليوم.

ولو المحاسب صحّح رقم، سجّل القيمة الأصلية جنب التصحيح. بعد شهر هيبقى عندك قائمة حقيقية بأكتر الحقول اللي بتغلط، وتعرف تحسّن إيه بالظبط.

حسبة العائد: الوقت والفلوس

الصيدلية بتاعتنا، بأرقام افتراضية للتوضيح:

البند يدوي بالـ workflow
فواتير في الشهر 400 400
الإدخال 400 × 4 دقايق = 27 ساعة صفر، الـ AI بيقرا
رفع الفاتورة ضمن الإدخال 400 × نص دقيقة = 3.3 ساعة
المراجعة مفيش مراجعة منظمة 20% × 400 = 80 فاتورة × 2 دقيقة = 2.7 ساعة
الوقت الكلي 27 ساعة 6 ساعات
حسبة الوقت لإدخال 400 فاتورة في الشهر يدوياً مقارنة بقراءتها بالذكاء الاصطناعي

تكلفة الـ AI. خلينا نفترض الفاتورة (الصورة والتعليمات) حوالي 3,000 token داخل و 400 token خارج، وده تقدير على الواسع. بـ Gemini 2.5 Flash على الـ paid tier في سبتمبر 2026 (0.30$ داخل و 2.50$ خارج لكل مليون token):

3,000 × 0.30 / 1,000,000 = 0.0009$
  400 × 2.50 / 1,000,000 = 0.0010$
لكل فاتورة ≈ 0.002$     لكل 400 فاتورة ≈ 0.76$ في الشهر

فواتير الـ PDF النصي بتتقري أرخص من كده بكتير، لأنها نص من غير صورة. العدد الحقيقي للـ tokens بيظهر في تفاصيل كل execution في n8n، فبعد أول أسبوع احسب بأرقامك. والأسعار بتتغيّر، راجع صفحة أسعار Gemini.

الخلاصة: حوالي 21 ساعة بتتوفّر في الشهر، والأخطاء اللي كانت بتعدّي من غير ما حد ياخد باله بقت بتروح للمحاسب مع سببها.

والفاتورة الإلكترونية الرسمية؟

في مصر، مصلحة الضرائب عندها منظومة الفاتورة الإلكترونية والإيصال الإلكتروني، والشركات المسجّلة بتسجّل فواتيرها عليها من أنظمة المحاسبة أو نقاط البيع. في السعودية، هيئة الزكاة والضريبة والجمارك (ZATCA) عندها منظومة "فاتورة"، والفواتير الضريبية المبسّطة فيها QR code.

الـ workflow اللي في المقال ده مش بديل عن أي منظومة من دول، ومش بيبعت لها ولا بيقرا منها. هو بيقرا الفواتير اللي بتوصلك إنت من الموردين وإيصالات المصاريف، عشان حساباتك الداخلية وتسوية المصاريف. الربط الرسمي مع ETA أو ZATCA شغل نظام المحاسبة أو مزوّد معتمد.

لو عايز تبني الـ workflow ده بنفسك، ابدأ بفرع الـ PDF لأنه الأسهل، وبعدين ضيف الصور. ونفس النمط بيشتغل على الـ CVs في فرز السير الذاتية بالذكاء الاصطناعي. ولو محتار تشغّل n8n على سيرفرك ولا على n8n Cloud، الحسبة في هل n8n مجاني؟.

ولو عايز النظام شغّال عندك من غير ما تبني حاجة بنفسك، دي خدمة أوتوميشن سريع: workflow واحد في الإنتاج بيربط لحد 3 أدوات (هنا الفورم، الـ AI، و Google Sheets، والمراجعة بتبقى في الشيت نفسه)، في 7 لـ 10 أيام، بـ 12,000 ج.م أو 590$، ومعاه دعم 30 يوم بعد التسليم.

أسئلة شائعة

هل فيه برنامج قراءة الفواتير جاهز بدل n8n؟
فيه برامج OCR ومحاسبة كتير بتعمل ده. ميزة n8n إنك بتحدد الحقول والقواعد بنفسك، وبتربط النتيجة بأي أداة عندك.

الـ AI بيقرا فواتير مكتوبة بخط الإيد؟
أحياناً. الخط الواضح بيتقري كويس، والمزدحم لأ. عشان كده فيه confidence ومراجعة إنسان.

بيقرا الفواتير العربي؟
الموديلات اللي بتشوف صور بتقرا العربي، والدقة بتعتمد على جودة الصورة. اختبر على 20 فاتورة من عندك قبل ما تعتمد عليه.

البيانات بتروح فين؟
صورة الفاتورة بتتبعت لمزوّد الـ AI اللي اخترته. في Gemini، الـ free tier بيُستخدم لتحسين منتجات جوجل والـ paid tier لأ، فلو الفواتير فيها بيانات عملاء استخدم الـ paid tier.

الموضوعات

AI Agents
Google Sheets
finance
n8n

اشترك في رسايلي

لما أبني workflow جديد أو ألاقي حل لمشكلة، بكتبها في رسالة قصيرة، ومعاها ميعاد الورشة المجانية الجاية. تقدر تلغي الاشتراك من أي رسالة.

شارك المقال

فرز السير الذاتية بالذكاء الاصطناعي بـ n8n: workflow كامل لفريق HR، والقرار يفضل لإنسان

workflow بـ n8n بيقرا الـ CV، يقيّمه على شروط الوظيفة، ويكتب النتيجة والأسباب في Google Sheets. معاه حسبة: 300 CV بتاخد 15 ساعة فرز يدوي، وبتكلّف أقل من دولار A…

10 دقيقة قراءة
كم تكلفة شات بوت واتساب بالذكاء الاصطناعي في 2026؟ الحسبة بأسعار Meta الجديدة من أكتوبر

من 1 أكتوبر 2026 ردود البوت على واتساب بقت بفلوس بعد أول 1000 رسالة في الشهر. هنا الحسبة كاملة لمتجر في الرياض وصيدلية في إسكندرية: حوالي 55$ و 30$ في الشهر.

10 دقيقة قراءة
هل n8n مجاني؟ الإجابة بالتفصيل: النسخة المجانية، أسعار n8n Cloud، والتكاليف اللي محدش بيقولها

n8n مجاني لو شغّلته على سيرفرك، ومدفوع لو استخدمت n8n Cloud. هنا الأسعار الحالية، اللي بيحصل لما الـ executions تخلص، حدود الترخيص، وحسبة التكلفة على سنة.

10 دقيقة قراءة

خدمات ذات صلة

ابدأ من النهارده

جاهز تبني أول AI automation بإيدك؟

اختار الدورة اللي تناسبك وابدأ تطبّق من أول جلسة، أو احجز مكالمة لو محتاج تنفيذ لمشروعك.

مكالمة 20 دقيقة
بدون أي التزام
توصيات محددة لحالتك