استخراج بيانات الفواتير باستخدام الذكاء الاصطناعي OCR مع برنامج بايثون بسيط

استخراج بيانات الفواتير باستخدام الذكاء الاصطناعي OCR مع برنامج بايثون بسيط

تعلم كيف تؤتمت استخراج بيانات الفواتير باستخدام OCR قائم على الذكاء الاصطناعي والبايثون مع واجهة FlowHunt البرمجية، مما يمكّنك من معالجة المستندات بسرعة ودقة وقابلية للتوسع.

ما هو OCR القائم على الذكاء الاصطناعي؟

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

الميزات الرئيسية لـ OCR القائم على الذكاء الاصطناعي

  • الفهم السياقي: يستخدم OCR الذكي معالجة اللغة الطبيعية لفهم السياق داخل المستندات. يحدد حقول مثل “المبلغ الإجمالي”، “تاريخ الفاتورة”، و"اسم العميل" حتى لو ظهرت في أماكن مختلفة.
  • المرونة: يميل OCR التقليدي إلى التعطل مع التخطيطات غير المنتظمة؛ أما OCR الذكي فهو مرن ويمكنه استخراج المعلومات من أشكال الفواتير المختلفة بسهولة.
  • تنظيم البيانات: غالباً ما يوفر OCR الذكي مخرجات منظمة مباشرة، مما يجعلها أسهل للمعالجة اللاحقة مقارنة بخروج النص الخام للـ OCR التقليدي.

لماذا نستخدم OCR الذكي للفواتير؟

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

فوائد OCR الذكي للفواتير

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

العائد على الاستثمار عند استخدام أداة OCR الذكية من FlowHunt

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

تستغرق هذه العملية من 5 إلى 15 ثانية وتكلف ما بين 0.01 – 0.02 من الرصيد، بينما عادةً ستدفع 15 إلى 30 دولاراً في الساعة لموظف للقيام بنفس المهمة.

OCR Cost Comparison
المعالجالتكلفة السنويةعدد الفواتير المعالجة سنوياًتكلفة الفاتورة
الإنسان$30,00012,000$2.50
FlowHunt$16212,000$0.013
FlowHunt (بسعر $30,000)$30,0002,250,000$0.0133

يمكن القول إن FlowHunt أكثر كفاءة بفارق كبير.

التحديات في تطبيق OCR

رغم الفوائد الكبيرة للـ OCR، إلا أن هناك بعض التحديات:

  1. جودة الصورة: تعتمد دقة OCR بشكل كبير على جودة الصورة. فالصور الضبابية أو منخفضة الدقة تعطي نتائج ضعيفة.
  2. تنسيق معقد: قد تتطلب المستندات بتنسيقات معقدة أو خطوط مختلطة أو جداول معالجة OCR متقدمة.
  3. اللغة ومجموعة الأحرف: قد يكون دعم اللغات محدوداً في بعض برمجيات OCR، مما يتطلب نماذج متخصصة للغات غير اللاتينية.
  4. معدل الخطأ: لا توجد برمجيات OCR دقيقة بنسبة 100%، خاصة مع الخطوط اليدوية أو غير المنتظمة، ما قد يؤدي إلى أخطاء في النتائج.

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

إعداد برنامج بايثون OCR

لأتمتة العملية، ستحتاج إلى تثبيت مكتبات بايثون التالية:

pip install requests pdf2image git+https://github.com/QualityUnit/flowhunt-python-sdk.git

هذا التثبيت يتضمن:

  • requests: لإرسال الطلبات البرمجية إلى واجهة FlowHunt البرمجية وتحميل نتائج OCR.
  • pdf2image: لتحويل صفحات PDF إلى صور.
  • flowhunt: حزمة FlowHunt بايثون التي تبسط التعامل مع واجهة OCR البرمجية.

شرح الكود خطوة بخطوة

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

استيراد المكتبات

import json
import os
import re
import time
import requests
import flowhunt
from flowhunt.rest import ApiException
from pprint import pprint
from pdf2image import convert_from_path
  • json، os، re، وtime للمساعدة في التعامل مع JSON، وإدارة الملفات، والتعبيرات النمطية، والفواصل الزمنية.
  • requests: تُستخدم للتعامل مع طلبات HTTP، مثل تحميل نتائج OCR.
  • flowhunt: حزمة FlowHunt لإدارة التوثيق والتواصل مع واجهة OCR البرمجية.
  • pdf2image: لتحويل صفحات PDF إلى صور وتمكين OCR لكل صفحة على حدة.

دالة تحويل صفحات PDF إلى صور

def convert_pdf_to_image(path: str) -> None:
    """
    تحويل ملف PDF إلى صور وتخزين كل صفحة كصورة JPEG.
    """
    images = convert_from_path(path)
    for i in range(len(images)):
        images[i].save('data/images/' + 'page' + str(i) + '.jpg', 'JPEG')
  • convert_from_path: يحول كل صفحة PDF إلى صورة.
  • images[i].save: يحفظ كل صفحة كصورة JPEG منفصلة للمعالجة.

استخراج رابط المرفق للنتيجة

def extract_attachment_url(data_string):
    pattern = r'```flowhunt\n({.*})\n```'
    match = re.search(pattern, data_string, re.DOTALL)
    if match:
        json_string = match.group(1)
        try:
            json_data = json.loads(json_string)
            return json_data.get('download_link', None)
        except json.JSONDecodeError:
            print("Error: Failed to decode JSON.")
            return None
    return None
  • تستخرج الدالة رابط التحميل لنتائج OCR.
  • تستخدم التعبيرات النمطية للعثور على كائن JSON الذي يحتوي على رابط التحميل.

إعداد التوثيق وواجهة برمجة التطبيقات

convert_pdf_to_image("data/test.pdf")
FLOW_ID = "<FLOW_ID_HERE>"

configuration = flowhunt.Configuration(
    host="https://api.flowhunt.io",
    api_key={"APIKeyHeader": "<API_KEY_HERE>"}
)
  • تحويل ملف PDF إلى صور.
  • إعداد الوصول لواجهة FlowHunt البرمجية باستخدام بيانات الاعتماد.

تهيئة عميل واجهة برمجة التطبيقات

with flowhunt.ApiClient(configuration) as api_client:
    auth_api = flowhunt.AuthApi(api_client)
    api_response = auth_api.get_user()
    workspace_id = api_response.api_key_workspace_id
  • توثيق المستخدم وجلب معرف مساحة العمل (workspace_id) للاستخدام مع الطلبات التالية.

بدء جلسة OCR جديدة

flows_api = flowhunt.FlowsApi(api_client)
from_flow_create_session_req = flowhunt.FlowSessionCreateFromFlowRequest(flow_id=FLOW_ID)
create_session_rsp = flows_api.create_flow_session(workspace_id, from_flow_create_session_req)
  • تهيئة جلسة جديدة لرفع الصور ومعالجتها.

رفع الصور لمعالجة OCR

for image in os.listdir("data/images"):
    image_name, image_extension = os.path.splitext(image)
    with open("data/images/" + image, "rb") as file:
        try:
            flow_sess_attachment = flows_api.upload_attachments(
                create_session_rsp.session_id,
                file.read()
            )
  • رفع كل صورة في الجلسة لمعالجتها بالـ OCR.

تشغيل المعالجة والاستعلام عن النتائج

invoke_rsp = flows_api.invoke_flow_response(
    create_session_rsp.session_id, 
    flowhunt.FlowSessionInvokeRequest(message="")
)
while True:
    get_flow_rsp = flows_api.poll_flow_response(
        create_session_rsp.session_id, invoke_rsp.message_id
    )
    print("Flow response: ", get_flow_rsp)
    if get_flow_rsp.response_status == "S":
        print("done OCR")
        break
    time.sleep(3)
  • بدء المعالجة والاستعلام عن النتيجة كل 3 ثوانٍ حتى الانتهاء.

تحميل وحفظ نتائج OCR

attachment_url = extract_attachment_url(get_flow_rsp.final_response[0])
if attachment_url:
    response = requests.get(attachment_url)
    with open("data/results/" + image_name + ".csv", "wb") as file:
        file.write(response.content)
  • تحميل المخرجات بصيغة CSV وحفظها محلياً.

تشغيل البرنامج واختبار النتائج

لتنفيذ البرنامج:

  1. ضع ملف PDF في مجلد data/.
  2. حدّث <FLOW_ID_HERE> و <API_KEY_HERE> ببيانات اعتمادك في FlowHunt.
  3. شغّل البرنامج لتحويل الـ PDF، ورفع الصور للـ OCR، وتحميل النتائج المنظمة بصيغة CSV.

الخلاصة

يوفر هذا البرنامج حلاً فعالاً لتوسيع عمليات الـ OCR، وهو مثالي للقطاعات ذات الاحتياج العالي لمعالجة المستندات. مع واجهة FlowHunt البرمجية، يمكن تحويل المستندات إلى CSV بسهولة، مما يسرع سير العمل ويزيد الإنتاجية.

نظرة عامة على الكود الكامل

اضغط هنا للإصدار على Gist.

import json
import os
import re
import time
import requests
import flowhunt
from flowhunt.rest import ApiException
from pprint import pprint
from pdf2image import convert_from_path

def convert_pdf_to_image(path: str) -> None:
    """
    Convert a pdf file to an image
    :return:
    """
    images = convert_from_path(path)
    for i in range(len(images)):
        images[i].save('data/images/' + 'page'+ str(i) +'.jpg', 'JPEG')

def extract_attachment_url(data_string):
    pattern = r'```flowhunt\n({.*})\n```'
    match = re.search(pattern, data_string, re.DOTALL)
    if match:
        json_string = match.group(1)
        try:
            json_data = json.loads(json_string)
            return json_data.get('download_link', None)
        except json.JSONDecodeError:
            print("Error: Failed to decode JSON.")
            return None
    return None

convert_pdf_to_image("data/test.pdf")
FLOW_ID = "<FLOW_ID_HERE>"

configuration = flowhunt.Configuration(host = "https://api.flowhunt.io",
                                       api_key = {"APIKeyHeader": "<API_KEY_HERE>"})

with flowhunt.ApiClient(configuration) as api_client:
    auth_api = flowhunt.AuthApi(api_client)
    api_response = auth_api.get_user()
    workspace_id = api_response.api_key_workspace_id

    flows_api = flowhunt.FlowsApi(api_client)
    from_flow_create_session_req = flowhunt.FlowSessionCreateFromFlowRequest(
        flow_id=FLOW_ID
    )
    create_session_rsp = flows_api.create_flow_session(workspace_id, from_flow_create_session_req)

    for image in os.listdir("data/images"):
        image_name, image_extension = os.path.splitext(image)
        with open("data/images/" + image, "rb") as file:
            try:
                flow_sess_attachment = flows_api.upload_attachments(
                    create_session_rsp.session_id,
                    file.read()
                )
                invoke_rsp = flows_api.invoke_flow_response(create_session_rsp.session_id, flowhunt.FlowSessionInvokeRequest(
                    message="",
                ))
                while True:
                    get_flow_rsp = flows_api.poll_flow_response(create_session_rsp.session_id, invoke_rsp.message_id)
                    print("Flow response: ", get_flow_rsp)
                    if get_flow_rsp.response_status == "S":
                        print("done OCR")
                        attachment_url = extract_attachment_url(get_flow_rsp.final_response[0])
                        if attachment_url:
                            print("Attachment URL: ", attachment_url, "\n Downloading the file...")
                            response = requests.get(attachment_url)
                            with open("data/results/" + image_name + ".csv", "wb") as file:
                                file.write(response.content)
                        break
                    time.sleep(3)
            except ApiException as e:
                print("error for file ", image)
                print(e)

الأسئلة الشائعة

ما هو OCR القائم على الذكاء الاصطناعي وما الفرق بينه وبين OCR التقليدي؟

يعتمد OCR القائم على الذكاء الاصطناعي على تعلم الآلة ومعالجة اللغة الطبيعية لفهم سياق المستندات، والتعامل مع التخطيطات المعقدة، واستخراج البيانات المنظمة من الفواتير، خلافاً لـ OCR التقليدي الذي يعتمد على التعرف على النصوص ذات الصيغ الثابتة.

ما هي الفوائد الرئيسية لاستخدام OCR الذكي في الفواتير؟

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

كيف يمكنني تطبيق أتمتة استخراج الفواتير باستخدام بايثون وFlowHunt؟

من خلال استخدام حزمة FlowHunt بايثون، يمكنك تحويل ملفات PDF إلى صور، ثم إرسالها إلى واجهة FlowHunt البرمجية للقيام بـ OCR واسترجاع البيانات المنظمة بصيغة CSV، مما يؤتمت عملية الاستخراج بالكامل.

ما هي التحديات في معالجة OCR وكيف يعالجها FlowHunt؟

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

ما هو العائد على الاستثمار من أتمتة استخراج بيانات الفواتير مع FlowHunt؟

يمكن لـ OCR الذكي من FlowHunt معالجة الفواتير خلال ثوانٍ وبتكلفة أقل بكثير من التكلفة البشرية، مما يوفر كفاءة هائلة وقابلية للتوسع للشركات المتنامية.

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

أرشيا كاهاني
أرشيا كاهاني
مهندس سير عمل الذكاء الاصطناعي

جرّب أداة OCR الذكية للفواتير من FlowHunt

أتمتة استخراج بيانات الفواتير مع OCR الذكي والقوي من FlowHunt. وفّر الوقت، وقلل الأخطاء، وحقق انسيابية في سير العمل من خلال تحويل ملفات PDF إلى بيانات منظمة خلال ثوانٍ.

اعرف المزيد

مستخرج بيانات الفواتير
مستخرج بيانات الفواتير

مستخرج بيانات الفواتير

اكتشف كيف يمكن لتدفق مستخرج بيانات الفواتير بتقنية OCR أن يسهّل عملياتك المالية من خلال أتمتة استخراج وتنظيم بيانات الفواتير. تعرّف على ميزاته وفوائده وكيف يعزز...

2 دقيقة قراءة
OCR Invoice Automation +3
حلول مهام التعرف الضوئي على الحروف (OCR) باستخدام الذكاء الاصطناعي
حلول مهام التعرف الضوئي على الحروف (OCR) باستخدام الذكاء الاصطناعي

حلول مهام التعرف الضوئي على الحروف (OCR) باستخدام الذكاء الاصطناعي

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

4 دقيقة قراءة
AI OCR +5
التعرف الضوئي على الحروف (OCR)
التعرف الضوئي على الحروف (OCR)

التعرف الضوئي على الحروف (OCR)

التعرف الضوئي على الحروف (OCR) هو تقنية تحويلية تقوم بتحويل المستندات مثل الأوراق الممسوحة ضوئيًا أو ملفات PDF أو الصور إلى بيانات قابلة للتحرير والبحث. تعرف عل...

5 دقيقة قراءة
OCR Document Processing +5