كيفية استخراج البيانات من الفواتير باستخدام Python: دليل خطوة بخطوة

كيفية استخراج البيانات من الفواتير باستخدام Python: دليل خطوة بخطوة

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

تحتوي الفواتير على معلومات حيوية مثل تفاصيل العملاء والبائعين ومعلومات الطلب والأسعار والضرائب وشروط الدفع.

يمكن أن تكون إدارة استخراج بيانات الفواتير يدويًا أمرًا معقدًا ومستهلكًا للوقت ، خاصة بالنسبة للكميات الكبيرة من الفواتير.

على سبيل المثال ، قد تتلقى الشركات فواتير بتنسيقات مختلفة مثل الورق أو البريد الإلكتروني أو PDF أو التبادل الإلكتروني للبيانات (EDI). بالإضافة إلى ذلك ، قد تحتوي الفواتير على بيانات منظمة ، مثل الجداول ، بالإضافة إلى البيانات غير المنظمة ، مثل أوصاف النص الحر والشعارات والصور.

يمكن أن يكون استخراج هذه المعلومات ومعالجتها يدويًا عرضة للخطأ ، مما يؤدي إلى التأخير وعدم الدقة والفرص الضائعة.

لحسن الحظ ، توفر Python مجموعة قوية ومرنة من الأدوات لأتمتة استخراج بيانات الفاتورة ومعالجتها.

في هذا الدليل المفصل خطوة بخطوة ، سوف نستكشف كيفية الاستفادة من Python لاستخراج البيانات المهيكلة وغير المهيكلة من الفواتير ، ومعالجة ملفات PDF ، والتكامل مع نماذج التعلم الآلي.

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

قبل أي شيء آخر ، دعونا نفهم ما هي الفواتير!

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

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

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

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

قد يكون استخراج البيانات من الفواتير مكلفًا ويمكن أن يؤدي إلى تأخير في معالجة الدفع ، خاصة عند التعامل مع كميات كبيرة من الفواتير. هذا هو المكان الذي يأتي فيه استخراج بيانات الفاتورة.

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

كما تمت مناقشته ، ليس من السهل استخراج كل فاتورة لأنها تأتي في أشكال وقوالب مختلفة. فيما يلي بعض التحديات التي تواجهها الشركات عند استخراج البيانات من الفواتير:

  • مجموعة متنوعة من تنسيقات الفواتير: قد تأتي الفواتير بتنسيقات مختلفة ، بما في ذلك الورق أو البريد الإلكتروني أو PDF أو التبادل الإلكتروني للبيانات (EDI) ، مما قد يجعل من الصعب استخراج البيانات ومعالجتها بشكل متسق.
  • جودة البيانات ودقتها: قد تكون معالجة الفواتير يدويًا عرضة للأخطاء ، مما يؤدي إلى التأخير وعدم الدقة في معالجة الدفع.
  • كميات كبيرة من البيانات: تتعامل العديد من الشركات مع حجم كبير من الفواتير ، مما قد يكون صعبًا ويستغرق وقتًا طويلاً في معالجته يدويًا.
  • لغات وأحجام خطوط مختلفة: قد تكون الفواتير من البائعين الدوليين بلغات مختلفة ، مما قد يصعب معالجته باستخدام الأدوات الآلية. وبالمثل ، قد تحتوي الفواتير على أحجام وأنماط خطوط مختلفة ، مما قد يؤثر على دقة استخراج البيانات.
  • التكامل مع الأنظمة الأخرىغالبًا ما تحتاج البيانات المستخرجة من الفواتير إلى التكامل مع أنظمة أخرى ، مثل المحاسبة أو برنامج تخطيط موارد المؤسسة (ERP) ، والذي يمكن أن يضيف طبقة إضافية من التعقيد إلى العملية.

Python هي لغة برمجة شائعة تستخدم لمجموعة واسعة من مهام استخراج البيانات ومعالجتها ، بما في ذلك استخراج البيانات من الفواتير. إن تعدد استخداماتها يجعلها أداة قوية في عالم التكنولوجيا - من بناء نماذج التعلم الآلي وواجهات برمجة التطبيقات إلى أتمتة عمليات استخراج الفواتير.

دعنا نلقي نظرة سريعة على مكتبات Python التي يمكن استخدامها لاستخراج الفواتير مع أمثلة:

بيتسيراكت

Pytesseract عبارة عن غلاف Python لمحرك Tesseract OCR من Google ، وهو أحد أشهر محركات OCR المتاحة. تم تصميم Pytesseract لاستخراج نص من الصور الممسوحة ضوئيًا ، بما في ذلك الفواتير ، ويمكن استخدامه لاستخراج أزواج القيمة الرئيسية والمعلومات النصية الأخرى من أقسام رأس وتذييل الفواتير.

Textract هي مكتبة Python يمكنها استخراج النص والبيانات من مجموعة كبيرة من تنسيقات الملفات ، بما في ذلك ملفات PDF والصور والمستندات الممسوحة ضوئيًا. يستخدم Textract تقنية التعرف الضوئي على الحروف وتقنيات أخرى لاستخراج النص والبيانات من هذه الملفات ، ويمكن استخدامه لاستخراج النص والبيانات من جميع أقسام الفواتير.

الباندا

Pandas هي مكتبة قوية لمعالجة البيانات في Python توفر هياكل بيانات لتخزين مجموعات البيانات الكبيرة ومعالجتها بكفاءة. يمكن استخدام Pandas لاستخراج البيانات المجدولة ومعالجتها من قسم البنود في الفواتير ، بما في ذلك أوصاف المنتجات والكميات والأسعار.

الصفيحة

Tabula هي مكتبة Python مصممة خصيصًا لاستخراج البيانات الجدولية من ملفات PDF والمستندات الأخرى. يمكن استخدام Tabula لاستخراج البيانات من قسم البنود في الفواتير ، بما في ذلك أوصاف المنتجات والكميات والأسعار ، ويمكن أن تكون بديلاً مفيدًا للأساليب القائمة على التعرف الضوئي على الحروف لاستخراج هذه البيانات.

كاميلوت

Camelot هي مكتبة Python أخرى يمكن استخدامها لاستخراج البيانات الجدولية من ملفات PDF والمستندات الأخرى ، وهي مصممة خصيصًا للتعامل مع هياكل الجداول المعقدة. يمكن استخدام Camelot لاستخراج البيانات من قسم البنود في الفواتير ، ويمكن أن يكون بديلاً مفيدًا للطرق القائمة على التعرف الضوئي على الحروف لاستخراج هذه البيانات.

مكتبة برمجية مفتوحة للرؤية الحاسوبية

OpenCV هي مكتبة رؤية حاسوبية شائعة لبايثون توفر أدوات وتقنيات لتحليل الصور ومعالجتها. يمكن استخدام OpenCV لاستخراج المعلومات من الصور والشعارات في أقسام رأس وتذييل الفواتير ، ويمكن استخدامها جنبًا إلى جنب مع الأساليب القائمة على التعرف الضوئي على الحروف لتحسين الدقة والموثوقية.

وسادة

وسادة هي مكتبة Python توفر أدوات وتقنيات للعمل مع الصور ، بما في ذلك قراءة ملفات الصور وكتابتها ومعالجتها. يمكن استخدام وسادة لاستخراج المعلومات من الصور والشعارات في أقسام رأس وتذييل الفواتير ، ويمكن استخدامها جنبًا إلى جنب مع الأساليب القائمة على التعرف الضوئي على الحروف لتحسين الدقة والموثوقية.

من المهم ملاحظة أنه في حين أن المكتبات المذكورة أعلاه هي من أكثر المكتبات استخدامًا لاستخراج البيانات من الفواتير ، فإن عملية استخراج البيانات من الفواتير يمكن أن تكون معقدة وقد تتطلب تقنيات وأدوات متعددة.

اعتمادًا على مدى تعقيد الفاتورة والمعلومات المحددة التي تحتاج إلى استخراجها ، قد تحتاج إلى استخدام مكتبات وتقنيات إضافية غير تلك المذكورة هنا.

الآن ، قبل أن نتعمق في مثال حقيقي لاستخراج الفواتير ، دعنا أولاً نناقش عملية إعداد بيانات الفاتورة للاستخراج.

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

إحدى التقنيات الرئيسية لإعداد بيانات الفاتورة للاستخراج هي تنظيف البيانات ومعالجتها مسبقًا.

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

  • تطبيع البيانات: تحويل البيانات إلى تنسيق مشترك يمكن معالجته وتحليله بسهولة أكبر. يمكن أن يتضمن ذلك توحيد تنسيق التواريخ والأوقات وعناصر البيانات الأخرى ، بالإضافة إلى تحويل البيانات إلى نوع بيانات متسق ، مثل البيانات الرقمية أو الفئوية.
  • تنظيف النص: يتضمن إزالة المعلومات الدخيلة أو غير ذات الصلة من البيانات ، مثل كلمات التوقف وعلامات الترقيم والأحرف غير النصية الأخرى. يمكن أن يساعد ذلك في تحسين دقة وموثوقية تقنيات الاستخراج القائمة على النص ، مثل OCR و NLP.
  • تأكيد صحة البيانات: يتضمن فحص البيانات بحثًا عن الأخطاء وعدم الاتساق وغيرها من المشكلات التي قد تؤثر على دقة عملية الاستخراج. يمكن أن يشمل ذلك مقارنة البيانات بالمصادر الخارجية ، مثل قواعد بيانات العملاء أو كتالوجات المنتجات ، لضمان دقة البيانات وحداثتها.
  • زيادة البيانات: إضافة أو تعديل البيانات لتحسين دقة وموثوقية عملية الاستخراج. يمكن أن يتضمن ذلك إضافة مصادر بيانات إضافية ، مثل الوسائط الاجتماعية أو بيانات الويب ، لتكملة بيانات الفاتورة ، أو استخدام تقنيات التعلم الآلي لإنشاء بيانات تركيبية لتحسين دقة عملية الاستخراج.

يعد استخراج البيانات من الفواتير مهمة معقدة تتطلب مجموعة من الأساليب والأدوات. غالبًا ما يكون استخدام تقنية أو مكتبة واحدة غير كافٍ لأن كل فاتورة مختلفة ، ويمكن أن تختلف تخطيطاتها وتنسيقاتها على نطاق واسع. ومع ذلك ، إذا كان لديك حق الوصول إلى مجموعة من الفواتير المُنشأة إلكترونيًا ، فيمكنك استخدام تقنيات متنوعة مثل مطابقة التعبير العادي واستخراج الجدول لاستخراج البيانات منها.

على سبيل المثال ، لاستخراج الجداول من فواتير PDF ، يمكنك استخدام مكتبة tabula-py التي تستخرج البيانات من الجداول في ملفات PDF. من خلال توفير مساحة صفحة PDF حيث يوجد الجدول ، يمكنك استخراج الجدول ومعالجته باستخدام مكتبة الباندا.

من ناحية أخرى ، تتطلب الفواتير غير الإلكترونية ، مثل الفواتير الممسوحة ضوئيًا أو القائمة على الصور ، تقنيات أكثر تقدمًا ، بما في ذلك رؤية الكمبيوتر والتعلم الآلي. تتيح هذه التقنيات التعرف الذكي على مناطق الفاتورة واستخراج البيانات.

تتمثل إحدى مزايا استخدام التعلم الآلي لاستخراج الفواتير في أن الخوارزميات يمكن أن تتعلم من بيانات التدريب. بمجرد تدريب الخوارزمية ، يمكنها التعرف بذكاء على الفواتير الجديدة دون الحاجة إلى إعادة تدريب الخوارزمية. هذا يعني أن الخوارزمية يمكنها استخراج البيانات بسرعة وبدقة من الفواتير الجديدة بناءً على المدخلات السابقة.

في هذا القسم ، دعنا نستخدم التعبيرات العادية لاستخراج بعض الحقول من الفواتير.

الخطوة 1: استيراد المكتبات

لاستخراج المعلومات من نص الفاتورة ، نستخدم التعبيرات العادية ومكتبة pdftotext لقراءة البيانات من فواتير PDF.

import pdftotext
import re

الخطوة الثانية: اقرأ ملف PDF

قرأنا أولاً فاتورة PDF باستخدام لغة Python المدمجة open() وظيفة. تفتح الوسيطة "rb" الملف في الوضع الثنائي ، وهو أمر مطلوب لقراءة الملفات الثنائية مثل ملفات PDF. ثم نستخدم مكتبة pdftotext لاستخراج محتوى النص من ملف PDF.

with open('invoice.pdf', 'rb') as f:
pdf = pdftotext.PDF(f)
text = 'nn'.join(pdf)

الخطوة 3: استخدم التعبيرات العادية لمطابقة النص الموجود في الفواتير

نستخدم التعبيرات العادية لاستخراج رقم الفاتورة والمبلغ الإجمالي المستحق وتاريخ الفاتورة وتاريخ الاستحقاق من نص الفاتورة. نقوم بتجميع التعبيرات النمطية باستخدام re.compile() وظيفة واستخدام search() للبحث عن أول ظهور للنمط في النص. نحن نستخدم ال group() وظيفة لاستخراج النص المتطابق من النمط ، و strip() وظيفة لإزالة أي مسافة بيضاء سابقة أو لاحقة من النص المطابق. إذا لم يتم العثور على تطابق ، نقوم بتعيين القيمة المقابلة على لا شيء.

invoice_number = re.search(r'Invoice Numbers*ns*n(.+?)s*n', text).group(1).strip()
total_amount_due = re.search(r'Total Dues*ns*n(.+?)s*n', text).group(1).strip() # Extract the invoice date
invoice_date_pattern = re.compile(r'Invoice Dates*ns*n(.+?)s*n')
invoice_date_match = invoice_date_pattern.search(text)
if invoice_date_match: invoice_date = invoice_date_match.group(1).strip()
else: invoice_date = None # Extract the due date
due_date_pattern = re.compile(r'Due Dates*ns*n(.+?)s*n')
due_date_match = due_date_pattern.search(text)
if due_date_match: due_date = due_date_match.group(1).strip()
else: due_date = None

الخطوة 4: طباعة البيانات

أخيرًا ، نقوم بطباعة جميع البيانات المستخرجة من الفاتورة.

print('Invoice Number:', invoice_number)
print('Date:', date)
print('Total Amount Due:', total_amount_due)
print('Invoice Date:', invoice_date)
print('Due Date:', due_date)

إدخال

نموذج الفاتورة. pdf

الناتج

Invoice Date: January 25, 2016
Due Date: January 31, 2016
Invoice Number: INV-3337
Date: January 25, 2016
Total Amount Due: $93.50

لاحظ أن الأسلوب الموضح هنا خاص بهيكل وشكل نموذج الفاتورة. في الممارسة العملية ، يمكن أن يكون للنص المستخرج من فواتير مختلفة أشكال وهياكل مختلفة ، مما يجعل من الصعب تطبيق حل واحد يناسب الجميع. للتعامل مع مثل هذه الاختلافات ، قد تكون هناك حاجة إلى تقنيات متقدمة مثل التعرف على الكيانات المسماة (NER) أو استخراج زوج القيمة الرئيسية ، اعتمادًا على حالة الاستخدام المحددة.

يمكن أن يكون استخراج الجداول من فواتير PDF المُنشأة إلكترونيًا مهمة مباشرة ، وذلك بفضل مكتبات مثل Tabula و Camelot. يوضح الكود التالي كيفية استخدام هذه المكتبات لاستخراج الجداول من فاتورة PDF.

from tabula import read_pdf
from tabulate import tabulate
file = "sample-invoice.pdf"
df = read_pdf(file ,pages="all")
print(tabulate(df[0]))
print(tabulate(df[1]))

إدخال

نموذج الفاتورة. pdf

الناتج

- ------------ ----------------
0 Order Number 12345
1 Invoice Date January 25, 2016
2 Due Date January 31, 2016
3 Total Due $93.50
- ------------ ---------------- - - ------------------------------- ------ ----- ------
0 1 Web Design $85.00 0.00% $85.00 This is a sample description...
- - ------------------------------- ------ ----- ------

إذا كنت بحاجة إلى استخراج أعمدة معينة من فاتورة (فاتورة غير منظمة) ، وإذا كانت الفاتورة تحتوي على جداول متعددة بتنسيقات مختلفة ، فقد تحتاج إلى إجراء بعض المعالجة اللاحقة لتحقيق المخرجات المطلوبة. ومع ذلك ، لمواجهة مثل هذه التحديات ، يمكن استخدام التقنيات المتقدمة مثل رؤية الكمبيوتر والتعرف البصري على الأحرف (OCR) لاستخراج البيانات من الفواتير بغض النظر عن تخطيطاتها.

تحديد تخطيطات الفواتير لتطبيق التعرف الضوئي على الحروف

في هذا المثال ، سنستخدم Tesseract ، وهو محرك OCR شائع في Python ، لتحليل صورة فاتورة.

الخطوة 1: استيراد المكتبات الضرورية

أولاً ، نقوم باستيراد المكتبات الضرورية: OpenCV (cv2) لمعالجة الصور ، و pytesseract لـ OCR. نقوم أيضًا باستيراد فئة الإخراج من pytesseract لتحديد تنسيق الإخراج لنتائج OCR.

import cv2
import pytesseract
from pytesseract import Output

الخطوة 2: اقرأ نموذج صورة الفاتورة

ثم نقرأ نموذج الفاتورة باستخدام sample-invoice.jpg cv2.imread() وتخزينها في المتغير img.

img = cv2.imread('sample-invoice.jpg')

الخطوة 3: قم بإجراء OCR على الصورة واحصل على النتائج بتنسيق القاموس

بعد ذلك ، نستخدم pytesseract.image_to_data() لإجراء OCR على الصورة والحصول على قاموس للمعلومات حول النص المكتشف. ال output_type=Output.DICT تحدد الوسيطة أننا نريد النتائج بتنسيق القاموس.

ثم نقوم بطباعة مفاتيح القاموس الناتج باستخدام وظيفة المفاتيح () لرؤية المعلومات المتاحة التي يمكننا استخراجها من نتائج التعرف الضوئي على الحروف.

d = pytesseract.image_to_data(img, output_type=Output.DICT)
# Print the keys of the resulting dictionary to see the available information
print(d.keys())

الخطوة 4: تصور النص المكتشف عن طريق رسم المربعات المحيطة

لتصور النص المكتشف ، يمكننا رسم المربعات المحيطة لكل كلمة تم اكتشافها باستخدام المعلومات الموجودة في القاموس. نحصل أولاً على عدد الكتل النصية المكتشفة باستخدام ملف len() وظيفة ، ثم حلقة فوق كل كتلة. لكل كتلة ، نتحقق مما إذا كانت درجة الثقة للنص المكتشف أكبر من 60 (على سبيل المثال ، من المرجح أن يكون النص المكتشف صحيحًا) ، وإذا كان الأمر كذلك ، فإننا نسترجع معلومات المربع المحيط ونرسم مستطيلًا حول النص باستخدام cv2.rectangle(). ثم نعرض الصورة الناتجة باستخدام cv2.imshow() وانتظر حتى يضغط المستخدم على مفتاح قبل إغلاق النافذة.

n_boxes = len(d['text'])
for i in range(n_boxes): if float(d['conf'][i]) > 60: # Check if confidence score is greater than 60 (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i]) img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.imshow('img', img)
cv2.waitKey(0)

الناتج

كيفية استخراج البيانات من الفواتير باستخدام بايثون: دليل خطوة بخطوة لذكاء بيانات PlatoBlockchain. البحث العمودي. منظمة العفو الدولية.

التعرف على الكيانات المسماة (NER) هي تقنية معالجة لغة طبيعية يمكن استخدامها لاستخراج المعلومات المنظمة من نص غير منظم. في سياق استخراج الفواتير ، يمكن استخدام NER لتحديد الكيانات الرئيسية مثل أرقام الفواتير والتواريخ والمبالغ.

كيفية استخراج البيانات من الفواتير باستخدام بايثون: دليل خطوة بخطوة لذكاء بيانات PlatoBlockchain. البحث العمودي. منظمة العفو الدولية.
نموذج NER لاستخراج المعلومات على الفواتير

إحدى مكتبات البرمجة اللغوية العصبية الشهيرة التي تتضمن وظائف NER هي سبا. يوفر spaCy نماذج مدربة مسبقًا لـ NER بعدة لغات ، بما في ذلك اللغة الإنجليزية. فيما يلي مثال على كيفية استخدام spaCy لاستخراج المعلومات من فاتورة:

الخطوة 1: استيراد Spacy وتحميل نموذج مدرب مسبقًا

في هذا المثال ، نقوم أولاً بتحميل النموذج الإنجليزي الذي تم تدريبه مسبقًا باستخدام NER باستخدام امتداد spacy.load() وظيفة.

import spacy
# Load the English pre-trained model with NER
nlp = spacy.load('en_core_web_sm')

الخطوة 2: اقرأ فاتورة PDF كسلسلة وطبّق نموذج NER على نص الفاتورة

ثم نقرأ ملف الفاتورة بتنسيق PDF كسلسلة ونطبق نموذج NER على النص باستخدام امتداد nlp() وظيفة.

with open('invoice.pdf', 'r') as f: text = f.read() # Apply the NER model to the invoice text
doc = nlp(text)

الخطوة 3: استخراج رقم الفاتورة والتاريخ والمبلغ الإجمالي المستحق

ثم نكرر الكيانات المكتشفة في نص الفاتورة باستخدام حلقة for. نحن نستخدم ال label_ attribute لكل كيان للتحقق مما إذا كان يتوافق مع رقم الفاتورة أو التاريخ أو إجمالي المبلغ المستحق. نحن نستخدم مطابقة السلسلة والأحرف الصغيرة لتحديد هذه الكيانات بناءً على القرائن السياقية الخاصة بهم.

invoice_number = None
invoice_date = None
total_amount_due = None for ent in doc.ents: if ent.label_ == 'INVOICE_NUMBER': invoice_number = ent.text.strip() elif ent.label_ == 'DATE': if ent.text.strip().lower().startswith('invoice'): invoice_date = ent.text.strip() elif ent.label_ == 'MONEY': if 'total' in ent.text.strip().lower(): total_amount_due = ent.text.strip()

الخطوة 4: اطبع المعلومات المستخرجة
أخيرًا ، نقوم بطباعة المعلومات المستخرجة إلى وحدة التحكم للتحقق منها. لاحظ أن أداء نموذج NER قد يختلف اعتمادًا على جودة وتنوع بيانات الإدخال ، لذلك قد تكون هناك حاجة إلى بعض التغيير والتبديل اليدوي لتحسين دقة المعلومات المستخرجة.

print('Invoice Number:', invoice_number)
print('Invoice Date:', invoice_date)
print('Total Amount Due:', total_amount_due)

في القسم التالي ، دعنا نناقش بعض التحديات والحلول الشائعة لاستخراج الفواتير تلقائيًا.

التحديات والحلول المشتركة

على الرغم من الفوائد العديدة لاستخدام Python لاستخراج بيانات الفاتورة ، فقد لا تزال الشركات تواجه تحديات في هذه العملية. فيما يلي بعض التحديات الشائعة التي تظهر أثناء استخراج بيانات الفاتورة والحلول الممكنة للتغلب عليها:

تنسيقات غير متسقة

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

عمليات المسح ذات الجودة الرديئة

يمكن أن تؤدي عمليات المسح أو عمليات المسح منخفضة الجودة بزوايا منحرفة إلى حدوث أخطاء في استخراج البيانات. لتحسين دقة استخلاص البيانات ، يمكن للشركات استخدام تقنيات المعالجة المسبقة للصور ، مثل ضبط المنضدة والثنائية وتقليل الضوضاء لتحسين جودة المسح الضوئي.

لغات وأحجام خطوط مختلفة

قد تكون الفواتير من البائعين الدوليين بلغات مختلفة ، مما قد يكون من الصعب معالجتها باستخدام الأدوات الآلية. وبالمثل ، قد تحتوي الفواتير على أحجام وأنماط خطوط مختلفة ، مما قد يؤثر على دقة استخراج البيانات. للتغلب على هذا التحدي ، يمكن للشركات استخدام خوارزميات وتقنيات التعلم الآلي مثل التعرف الضوئي على الأحرف (OCR) لاستخراج البيانات بدقة بغض النظر عن اللغة أو حجم الخط.

هياكل الفاتورة المعقدة

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

التكامل مع الأنظمة الأخرى (ERPs)

غالبًا ما تحتاج البيانات المستخرجة من الفواتير إلى التكامل مع أنظمة أخرى ، مثل المحاسبة أو برامج تخطيط موارد المؤسسة (ERP) ، والتي يمكن أن تضيف طبقة إضافية من التعقيد إلى العملية. للتغلب على هذا التحدي ، يمكن للشركات استخدام واجهات برمجة التطبيقات أو موصلات قواعد البيانات لدمج البيانات المستخرجة مع الأنظمة الأخرى.

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

باستخدام Nanonets ، يمكنك بسهولة إنشاء وتدريب نماذج التعلم الآلي لاستخراج بيانات الفاتورة باستخدام واجهة مستخدم رسومية سهلة الاستخدام تعتمد على الويب. يمكنك الوصول إلى النماذج المستضافة على السحابة والتي تستخدم أحدث الخوارزميات لتزويدك بنتائج دقيقة ، دون القلق بشأن الحصول على مثيل GCP أو وحدات معالجة الرسومات للتدريب.

كيفية استخراج البيانات من الفواتير باستخدام بايثون: دليل خطوة بخطوة لذكاء بيانات PlatoBlockchain. البحث العمودي. منظمة العفو الدولية.

مع Nanonets ، تحصل على

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

النماذج المستضافة على السحابة: باستخدام Nanonets ، يمكنك الوصول إلى العديد من النماذج التي يمكن استخدامها مباشرة للحصول على الحلول. بدلاً من ذلك ، يمكنك إنشاء نماذجك التي يتم استضافتها على السحابة ويمكن الوصول إليها من خلال طلب واجهة برمجة التطبيقات لأغراض الاستدلال. لا داعي للقلق بشأن الحصول على مثيل GCP أو وحدات معالجة الرسومات للتدريب.

خوارزميات حديثة: تستخدم نماذج Nanonets أحدث الخوارزميات لتزويدك بأفضل النتائج الممكنة. تتطور هذه النماذج باستمرار لتصبح أكثر فاعلية مع بيانات أكثر وأفضل ، وتكنولوجيا أفضل ، وتصميم معماري أفضل ، وإعدادات أكثر قوة للمعلمات الفائقة.

أصبح الاستخراج الميداني سهلاً: يتمثل التحدي الأكبر في بناء منتج رقمنة الفواتير في توفير هيكل للنص المستخرج. تقوم واجهة برمجة تطبيقات OCR الخاصة بـ Nanonets تلقائيًا باستخراج جميع الحقول الضرورية بالقيم وتضعها في جدول أو تنسيق JSON لتتمكن من الوصول إليها والبناء عليها بسهولة.

الأتمتة مدفوعة: في Nanonets ، نؤمن بقوة الأتمتة. نحن نسعى جاهدين لجعل التعلم الآلي في كل مكان ، وهدفنا هو جعل أي مشكلة عمل قمت بحلها بطريقة تتطلب الحد الأدنى من الإشراف البشري والميزانيات في المستقبل. يمكن أن تؤدي أتمتة العمليات مثل رقمنة الفواتير إلى إحداث تأثير هائل على مؤسستك من حيث الفوائد المالية ورضا العملاء ورضا الموظفين.

ابدأ في رقمنة الفواتير باستخدام شبكات النانو - نقرة واحدة على الرقمنة:

كيفية استخراج البيانات من الفواتير باستخدام بايثون: دليل خطوة بخطوة لذكاء بيانات PlatoBlockchain. البحث العمودي. منظمة العفو الدولية.

نبذة عامة

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

Python هي أداة قوية يمكنها تبسيط وأتمتة عملية استخراج بيانات الفاتورة. إن تعدد استخداماته ومكتباته العديدة تجعله خيارًا مثاليًا للشركات التي تتطلع إلى تحسين إمكانات استخراج بيانات الفواتير.

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

لذلك ، إذا كنت تبحث عن حل فعال وفعال من حيث التكلفة لاستخراج بيانات الفاتورة ، فابحث عن شبكات النانو. اشترك في خدمتنا اليوم وابدأ في تحسين عمليات عملك!

الطابع الزمني:

اكثر من الذكاء الاصطناعي والتعلم الآلي