الرئيسية
» المجالات
»
كيفية أتمتة استخراج البيانات من ملفات PDF باستخدام نماذج الذكاء الاصطناعي المحلية دون واجهة برمجة تطبيقات سحابية
كيفية أتمتة استخراج البيانات من ملفات PDF باستخدام نماذج الذكاء الاصطناعي المحلية دون واجهة برمجة تطبيقات سحابية
عادةً ما يكون سير عمل استخراج ملفات PDF المحلي الأكثر موثوقية عبارة عن خط معالجة (Pipeline)، وليس مجرد مطالبة ذكاء اصطناعي واحدة: أولاً، استرجع النص والتخطيط الموثوقين من ملف PDF، ثم اطلب من نموذج محلي تعيين هذا المحتوى إلى مخطط صارم (Strict Schema)، وأخيراً تحقق من الحقول قبل حفظها. يمكن أن يؤدي إرسال كل صفحة من صفحات PDF مباشرة إلى نموذج رؤية إلى العمل، لكنه غالباً ما يكون أبطأ، وأكثر استهلاكاً للأجهزة، وأصعب في التدقيق مقارنة باستخدام نص PDF الأصلي أو تقنية OCR عندما تكون كافية.
يكتسب هذا التمييز أهمية إذا كان هدفك هو "عدم استخدام واجهة برمجة تطبيقات سحابية". لا يزال بإمكانك استخدام واجهة برمجة تطبيقات محلية على جهازك الخاص—على سبيل المثال، نقطة نهاية HTTP الخاصة بـ Ollama على localhost—دون إرسال محتويات المستندات إلى خدمة مستضافة. تنص Ollama على أن المطالبات والاستجابات لا تُرسل مرة أخرى إلى Ollama عندما تعمل النماذج محلياً، وتوفر وضعاً محلياً فقط يعطل الميزات السحابية. وبالمثل، يبقي Docling الخدمات البعيدة معطلة افتراضياً، على الرغم من أن ملفات النماذج قد تحتاج إلى تنزيل أثناء الإعداد ما لم تقم بجلبها مسبقاً للاستخدام دون اتصال.
تعتمد الحزمة التقنية المناسبة على ملف PDF. تتطلب الفواتير الرقمية الأصلية ذات النص القابل للتحديد نهجاً مختلفاً عن الإيصالات الممسوحة ضوئياً، أو الجداول المالية المعقدة، أو النماذج الغنية بالصور. تقارن هذه الدليل بين هذه الخيارات وتقدم نمط أتمتة من أربع مراحل يمكنك تكييفه مع الفواتير، والعقود، وأوامر الشراء، ونماذج الطلبات، والتقارير، وغيرها من المستندات المتكررة.
توصية سريعة: اختر خط المعالجة حسب نوع المستند
نوع ملف PDF
خط المعالجة المحلي العملي
الميزة الرئيسية
المقايضة الرئيسية
ملف PDF رقمي أصلي بنص قابل للتحديد ونظيف
PyMuPDF → نموذج لغة نصي محلي → التحقق من JSON
سريع وخفيف نسبياً على الأجهزة
قد يفقد الاستخراج العادي ترتيب القراءة أو علاقات الجدول
ملف PDF ممسوح ضوئياً بصفحات بسيطة
OCRmyPDF/Tesseract → PyMuPDF → نموذج لغة نصي محلي
يحول صور الصفحات إلى نص قابل للبحث قبل الاستخراج بالذكاء الاصطناعي
تتحول أخطاء OCR إلى أخطاء في مدخلات النموذج
ملف PDF مختلط يحتوي على نصوص ومسح ضوئي وجداول
Docling أو OCRmyPDF في وضع التخطي/الإعادة → نموذج لغة محلي
تحكم أفضل في المحتوى المختلط وهيكل المستند
اعتماديات أكثر ووقت معالجة أطول
نماذج غنية بالتخطيط، جداول، مخططات، أو صفحات ذات معنى بصري
خط معالجة Docling المحلي أو نموذج رؤية محلي → مخرجات منظمة
يحافظ على سياق بصري/تخطيطي أكثر
عادةً ما يتطلب حوسبة أقوى وتحققاً أكثر صرامة
لا يوجد فائز عالمي. إذا كانت مستنداتك متوقعة وتحتوي على نص مدمج، فقد يتفوق محلل (Parser) بالإضافة إلى نموذج لغة محلي صغير على سير عمل رؤية أكبر بكثير من حيث التكلفة والسرعة وقابلية التكرار. إذا كان موضع النص جزءاً من المعنى—على سبيل المثال، جدول بخلايا مدمجة أو نموذج حيث تكون التسميات والقيم مقترنة مكانياً—فإن المعالجة الواعية بالتخطيط تصبح أكثر قيمة.
الخطوة 1: تصنيف ملف PDF قبل اختيار OCR أو الذكاء الاصطناعي
ابدأ بتحديد ما إذا كان المستند يحتوي بالفعل على نص قابل للاستخدام. يعني رقمي أصلي (Born-digital) أن ملف PDF تم إنشاؤه من برنامج ويحتوي عادةً على كائنات نصية يمكن تحديدها ونسخها. قد يحتوي ملف PDF الممسوح ضوئياً على صور صفحات فقط، لذا يعيد محلل النص العادي القليل أو لا شيء.
يوضح التوثيق الرسمي لـ PyMuPDF استخراج النص المباشر باستخدام page.get_text(). يبدو الاختبار المحلي الأدنى كالتالي:
import pymupdf
def extract_native_text(pdf_path: str) -> str:
pages = []
with pymupdf.open(pdf_path) as doc:
for page in doc:
pages.append(page.get_text())
return "\f".join(pages)
text = extract_native_text("invoice.pdf")
print(text[:1000])
راجع أساسيات PyMuPDF الرسمية. تحذر PyMuPDF أيضاً من أن نص PDF العادي قد لا يظهر بترتيب القراءة الطبيعي وقد يحتوي على فواصل أسطر غير متوقعة. هذا قيد في المحلل، وليس بالضرورة مشكلة في الذكاء الاصطناعي.
الأنسب لـ: الفواتير، وكشوف الحسابات، والتقارير، والنماذج حيث يعمل نسخ/لصق النص بالفعل وتكون الحقول سهلة التحديد من التسميات القريبة.
احذر من: يمكن أن تحتوي الصفحة على طبقة نصية صغيرة بالإضافة إلى صورة ممسوحة ضوئياً كبيرة. لذا فإن مجرد التحقق مما إذا كان "بعض النص موجوداً" ليس كاشفاً مثالياً للمسح الضوئي. للأتمتة الإنتاجية، افحص المستندات الممثلة بدلاً من الاعتماد على عتبة عدد أحرف عالمية واحدة.
الإجراء: خذ 20-50 ملف PDF ممثلاً وصنفها إلى مجموعات رقمية أصلية، وممسوحة ضوئياً، ومختلطة، وغنية بالتخطيط. يجب أن يوجه خط المعالجة الخاص بك حسب سلوك المستند، وليس فقط حسب امتداد الملف.
رسم توضيحي مولد بالذكاء الاصطناعي لمرحلة إدخال ملف PDF. إنه صورة سير عمل مفاهيمية، وليست لقطة شاشة لتطبيق PDF محدد أو نتيجة اختبار معياري.
الخطوة 2: استخراج النص محلياً—أو استخدام OCR فقط عند الحاجة
الخيار أ: PyMuPDF لملفات PDF الرقمية النظيفة
إذا كانت طبقة النص موثوقة، فإن الاستخراج المباشر هو عادةً أبسط مسار. فهو يتجنب زمن استجابة OCR ويتجنب إدخال أخطاء أحرف OCR في النص الذي تم ترميزه بشكل صحيح بالفعل. للمستندات الطويلة، يمكنك الحفاظ على فواصل الصفحات ومعالجة مجموعات الصفحات أو الأقسام المنطقية بدلاً من تمرير المستند بأكمله إلى النموذج دفعة واحدة.
المقايضة: النص العادي رخيص وسريع، لكن الجداول، والصفحات متعددة الأعمدة، والرؤوس، والتذييلات، وترتيب القراءة قد تتطلب معالجة إضافية. إذا كانت هذه العلاقات مهمة للحقول المستهدفة، فانتقل إلى تمثيل واعٍ بالتخطيط بدلاً من تكديس تعليمات المطالبة على نص مصدر رديء.
الخيار ب: OCRmyPDF بالإضافة إلى Tesseract للصفحات الممسوحة ضوئياً
Tesseract هو محرك OCR مفتوح المصدر. يوثق دليل المستخدم الحالي الخاص به سلسلة 5.x والدعم للعديد من اللغات من خلال ملفات بيانات مدربة منفصلة. يلف OCRmyPDF تقنية OCR حول معالجة خاصة بـ PDF بحيث يمكن للصفحات الممسوحة ضوئياً اكتساب طبقة نص قابلة للبحث.
للمستند المختلط حيث تحتوي بعض الصفحات بالفعل على نص، تدعم إصدارات OCRmyPDF الحالية وضع skip:
ocrmypdf --mode skip input.pdf searchable.pdf
يشرح التوثيق المتقدم الرسمي لـ OCRmyPDF أن --mode skip يترك الصفحات ذات النص الموجود كما هي ويقوم بتشغيل OCR للصفحات التي تحتاجه. يصف نفس التوثيق redo لاستبدال OCR السابق المكتشف و force لتحويل كل المحتوى إلى نقطيات (Rasterizing) وتشغيل OCR عليه. استخدم force بحذر لأن التحويل إلى نقطيات يمكن أن يتخلص من مزايا المتجهات ويسطح المحتوى التفاعلي.
لتثبيت Tesseract، واللغات، وسلوك سطر الأوامر، استخدم دليل مستخدم Tesseract الرسمي. لغة OCR مهمة: إذا كانت فواتيرك تحتوي على الإنجليزية والألمانية، على سبيل المثال، فقم بتثبيت وتكوين بيانات اللغة المناسبة بدلاً من افتراض أن نموذج اللغة الإنجليزية الافتراضي سيتعامل مع كليهما بنفس الكفاءة.
الخيار ج: Docling عندما يكون الهيكل مهماً
تم تصميم Docling لتحويل المستندات مع خيارات الفهم التخطيطي، وهيكل الجدول، وOCR، ومعالجة اللغة والرؤية المحلية. يسرد توثيق المشروع فهم PDF المتقدم، وهيكل الجدول، وOCR، ومخرجات JSON/Markdown بدون فقدان، مع تنفيذ محلي مقصود لسير العمل الحساس والمعزول عن الشبكة (Air-gapped).
راجع بدء التشغيل السريع الرسمي لـ Docling. يدعم Docling أيضاً خطوط معالجة VLM المحلية وعدة خلفيات OCR. توضح خياراته المتقدمة أن استدعاءات الخدمات البعيدة تتطلب اشتراكاً صريحاً، بينما يمكن جلب نماذج النموذج مسبقاً للاستخدام دون اتصال.
الأنسب لـ: الجداول المعقدة، والعناوين، والتقارير متعددة الأعمدة، والمسح الضوئي المختلط، أو الحالات التي تريد فيها تمثيلاً قابلاً لإعادة الاستخدام للمستند بدلاً من تفريغ نص عادي.
المقايضة: خط المعالجة أثقل من محلل PDF البسيط. استخدمه لأن الهيكل الإضافي يحسن دقة الاستخراج الخاصة بك—وليس فقط لأنه يحتوي على مكونات أكثر.
الإجراء: اختر طريقة الاستخراج الأخف التي تحافظ على المعلومات التي يحتاجها مخططك المستهدف. لا تقم بتشغيل OCR على النص المدمج النظيف، ولا تتخلص من التخطيط عندما يحدد التخطيط المعنى.
رسم توضيحي مولد بالذكاء الاصطناعي لاختيار OCR للمسح الضوئي والاستخراج المباشر لملفات PDF الرقمية الأصلية. يمثل مفهوم القرار وليس واجهة تطبيق OCR حقيقية.
الخطوة 3: تعيين المحتوى المسترجع إلى مخطط صارم باستخدام نموذج محلي
بمجرد أن يكون لديك محتوى مصدر موثوق، استخدم النموذج المحلي لما هو جيد فيه: التعيين الدلالي. بدلاً من السؤال، "استخرج كل شيء من هذه الفاتورة"، حدد الحقول التي تحتاجها فعلياً.
على سبيل المثال:
from pydantic import BaseModel
from typing import Optional
class LineItem(BaseModel):
description: str
quantity: Optional[float]
unit_price: Optional[float]
amount: Optional[float]
class Invoice(BaseModel):
invoice_number: Optional[str]
invoice_date: Optional[str]
vendor_name: Optional[str]
currency: Optional[str]
subtotal: Optional[float]
tax: Optional[float]
total: Optional[float]
items: list[LineItem]
يدعم توثيق المخرجات المنظمة الحالي لـ Ollama تمرير مخطط JSON عبر حقل format والتحقق من الاستجابة باستخدام Pydantic. يمكن أن يبدو الاستدعاء المحلي كالتالي:
from ollama import chat
schema = Invoice.model_json_schema()
prompt = f"""
Extract the invoice into the supplied schema.
Rules:
- Use only information present in the source.
- Use null when a field is not found.
- Do not infer missing invoice numbers, dates, tax, or totals.
- Preserve line items individually.
SOURCE:
{text}
"""
response = chat(
model="gpt-oss",
messages=[{"role": "user", "content": prompt}],
format=schema,
options={"temperature": 0},
)
invoice = Invoice.model_validate_json(response.message.content)
اسم النموذج أعلاه هو مثال من توثيق المخرجات المنظمة الخاص بـ Ollama نفسه، وليس ادعاءً بأنه أفضل نموذج لكل مهمة استخراج. قد يكون نموذج أصغر كافياً للفواتير المتكررة ذات التسميات الواضحة؛ وقد يساعد نموذج أقوى في العقود الغامضة أو التخطيطات غير المتسقة لكنه عموماً سيتطلب ذاكرة ووقت معالجة أكثر.
نموذج نصي أم نموذج رؤية؟
استخدم نموذجاً نصياً عندما يحافظ مخرج المحلل/OCR بالفعل على علاقات الحقول التي تحتاجها. استخدم نموذج رؤية محلياً قادراً عندما يكون الموضع البصري أساسياً أو عندما يفقد تحويل النص الهيكل باستمرار. يدعم توثيق الرؤية الرسمي لـ Ollama مدخلات الصور لنماذج الرؤية المحلية، ويمكن دمج ميزة المخرجات المنظمة مع نماذج قادرة على الرؤية.
ومع ذلك، فإن عرض كل صفحة كصورة يغير المقايضة:
يجب معالجة بكسلات أكثر؛
تستهلك الصفحات عالية الدقة حوسبة وذاكرة أكثر؛
تصبح دفعات الصفحات مهمة لملفات PDF الطويلة؛
يمكن لنماذج الرؤية أن تخترع حقلاً أو تسيء قراءة رقم؛
تحتاج إلى طريقة لتتبع القيم المستخرجة مرة أخرى إلى صفحة أو منطقة مصدر.
الإجراء: ابدأ بنص المحلل/OCR بالإضافة إلى LLM محلي مقيد بالمخطط. صعد أنواع الصفحات الصعبة فقط إلى VLM محلي بدلاً من دفع تكلفة الرؤية لكل صفحة.
رسم توضيحي مولد بالذكاء الاصطناعي لمرحلة النموذج المحلي. لا يصور شاشة Ollama حقيقية ولا يوحي بأن نموذجاً محلياً يمكنه استخراج كل حقل دون تحقق.
الخطوة 4: التحقق قبل كتابة JSON أو CSV أو Excel أو قاعدة بيانات
JSON صالح للمخطط ليس صحيحاً واقعياً تلقائياً. يمكن للنموذج إنتاج حقول صالحة بقيم خاطئة. لذلك يجب أن تستخدم المرحلة الأخيرة فحوصات حتمية كلما أمكن ذلك.
بالنسبة للفاتورة، تشمل الفحوصات المفيدة:
حقول الهوية المطلوبة: يجب أن يكون رقم الفاتورة أو اسم المورد موجوداً إذا كانت سير عملك تحتاجهما.
تحليل التاريخ: حلل التواريخ بسياسة ثابتة بدلاً من الثقة في السلاسل الغامضة مثل 03/04/26.
الحساب: قارن مجموع مبالغ بنود السطر مع إجمالي الفرعي للمستند ضمن تسامح محدد.
الإجماليات: تحقق مما إذا كان الإجمالي الفرعي بالإضافة إلى الضريبة والرسوم الأخرى متسقاً مع الإجمالي.
العملة: لا تفترض الدولار الأمريكي لأن المستند باللغة الإنجليزية.
المصدر: قم بتخزين اسم ملف المصدر، ورقم الصفحة، ووقت الاستخراج، واختيارياً تجزئة (Hash) لملف PDF الأصلي.
طابور المراجعة: وجه الحالات المفقودة أو المتضاربة أو ذات الثقة المنخفضة للمراجعة البشرية بدلاً من ملء القيم بصمت.
يمكن لهيكل دفعة أساسي فصل الاستخراج عن التحقق:
from pathlib import Path
import json
for pdf_path in Path("inbox").glob("*.pdf"):
source_text = extract_native_text(str(pdf_path))
# If text is unusable, run your OCR or Docling branch here.
record = extract_with_local_model(source_text)
errors = validate_record(record)
if errors:
save_for_review(pdf_path, record, errors)
else:
output = Path("processed") / f"{pdf_path.stem}.json"
output.write_text(
json.dumps(record, ensure_ascii=False, indent=2),
encoding="utf-8"
)
تم ترك دوال المساعدة بشكل مقصود خاصة بالتطبيق لأن قواعد التحقق تختلف بشكل كبير بين الفواتير، والعقود، ونماذج الضرائب، وتقارير المختبر، وأوامر الشراء. سيقوم مدقق عالمي بإنشاء ثقة زائفة.
إذا كنت بحاجة إلى CSV أو Excel، فقم بتسطيح الحقول التي تنتمي فعلياً إلى صفوف وأعمدة فقط. للمستندات ذات بنود السطر المتكررة، غالباً ما يكون أنظف إنشاء جدول على مستوى المستند وجدول ثانٍ لبنود السطر مرتبطان بمعرّف مستند بدلاً من إجبار كل حقل في صف جدول بيانات عريض واحد.
الإجراء: حدد قواعد التحقق قبل معالجة آلاف الملفات. اختبر مقابل مجموعة عينات موسومة وسجل دقة على مستوى الحقل، وليس فقط "المستندات المعالجة بنجاح".
رسم توضيحي مولد بالذكاء الاصطناعي لأهداف التصدير المحلية مثل Excel وCSV وJSON. إنه نقطة نهاية مفاهيمية، وليس دليلاً على أن كل ملف PDF يمكن تحويله دون مراجعة.
بنية محلية بالكامل عملية
بالنسبة للعديد من مهام الأتمتة الصغيرة والمتوسطة، من الأسهل الحفاظ على هذا التقسيم للمسؤوليات من نموذج الكل في واحد:
يتيح لك هذا التصميم تبديل المكونات بشكل مستقل. إذا كانت جودة OCR ضعيفة، فقم بتحسين طبقة OCR دون إعادة تدريب LLM. إذا كان النموذج المحلي بطيئاً جداً، فاستخدم نموذجاً أصغر دون تغيير محلل PDF. إذا كانت فواتير مورد معين تتطلب معالجة جداول خاصة، فوجه تلك الملفات فقط عبر Docling أو فرع الرؤية.
Ollama مقابل llama.cpp مقابل Docling VLM: أي وقت تشغيل محلي يجب أن تختار؟
الخيار
استخدمه عندما
القوة
المقايضة
Ollama
تريد أسهل واجهة برمجة تطبيقات للنموذج المحلي ومخرجات مقيدة بالمخطط
واجهة برمجة تطبيقات بسيطة على localhost، JSON منظم، دعم الرؤية للنماذج المتوافقة
يعطيك التجريد تحكماً أقل في وقت التشغيل منخفض المستوى من محرك الاستدلال المجرد
llama.cpp
تريد تحكماً مباشراً في GGUF، أو نشر سطر الأوامر، أو خادم محلي خفيف الوزن
CLI/خادم محلي وتوليد مقيد بالقواعد/مخطط JSON
تفاصيل النموذج/وقت التشغيل الأكثر هي مسؤوليتك
Docling VLM
تحديك الرئيسي هو تحويل تخطيط المستند وليس الاستخراج العام بأسلوب الدردشة
خط معالجة VLM محلي يركز على المستند مع مخرجات بأسلوب Markdown/HTML/DocTags
يفكر فيه كأفضل كمكون لتحويل المستند، وليس كبديل لكل خطوة استخراج قواعد الأعمال
لا تقم باختيار وقت تشغيل بناءً على لوحة صدارة النماذج فقط. لاستخراج PDF، المقاييس العملية هي دقة الحقل، والإنتاجية لكل مستند، واستخدام الذاكرة على جهازك، ومعدل الفشل في تخطيطاتك، وتعقيد بدء التشغيل، وسهولة فحص النتائج الخاطئة.
كيفية الحفاظ على خط المعالجة محلياً حقاً
يجب أن يكون "لا واجهة برمجة تطبيقات سحابية" خاصية نشر يمكنك التحقق منها، وليس مجرد تسمية تسويقية.
Ollama
يقول الأسئلة الشائعة الرسمي لـ Ollama إن المطالبات والإجابات المحلية لا تُرسل مرة أخرى إلى Ollama. كما يوثق إعداد تعطيل السحابة:
OLLAMA_NO_CLOUD=1
أو إعداد الخادم المكافئ disable_ollama_cloud. تعمل واجهة برمجة التطبيقات المحلية لـ Ollama على http://localhost:11434 ولا تتطلب مصادقة للوصول المحلي، وفقاً لـ توثيق المصادقة الخاص بها.
تذكر أن الخدمة المرتبطة بـ localhost تختلف عن تلك المكشوفة لشبكتك المحلية (LAN). إذا قمت بتغيير عنوان الربط الخاص بها أو وضعها خلف خادم آخر، فأنت مسؤول عن التحكم في الوصول.
Docling
يبقي Docling استخدام الخدمات البعيدة معطلاً افتراضياً. يميز توثيقه أيضاً بين خصوصية المعالجة واكتساب النموذج: قد يتم جلب النماذج عند الاستخدام الأول ما لم تقم بتنزيلها مسبقاً. لنظام معزول عن الشبكة، استخدم docling-tools models download على جهاز مرحلي متصل أو قم بتخزين مسبق لمخرجات النموذج المعتمدة، ثم وجه البيئة غير المتصلة إلى دليل المخرجات المحلي ذلك.
الإجراء: قبل معالجة المستندات الحساسة، احظر الوصول إلى الشبكة الصادرة على مستوى نظام التشغيل أو الشبكة وقم بتشغيل اختبار أثناء مراقبة الاتصالات. إعدادات التطبيق مفيدة، لكن عناصر التحكم في الشبكة تمنحك طبقة تحقق مستقلة.
ما لا يحله الذكاء الاصطناعي المحلي
يعمل التشغيل محلياً على تحسين خيارات التحكم في البيانات، لكنه لا يجعل الاستخراج صحيحاً أو متوافقاً أو آمناً تلقائياً. يمكن أن تتسرب الملفات المحلية لا يزال من خلال سجلات التصحيح، والأدلة المؤقتة، والنسخ الاحتياطية، والمجلدات المشتركة، والخدمات المتسامحة جداً، أو عمليات التصدير المنسوخة. يمكن للنموذج المحلي أيضاً أن يهلوس بقيم تماماً كما يمكن للنموذج المستضاف.
لا تستخدم النموذج كمدقق وحيد للحقول عالية التأثير مثل أرقام الحسابات المصرفية، وتعليمات الدفع، وتواريخ العقود، والقيم الطبية، أو المعرفات التنظيمية. بالنسبة لهذه، قارن مقابل نص المصدر، وطبق التحقق الحتمي، واشترط المراجعة البشرية عندما تكون الثقة غير كافية.
كيفية الاختبار قبل أتمتة مجلد كامل
ابنِ مجموعة تقييم موسومة صغيرة تحتوي على الحالات التي تتلقاها فعلياً:
ملف PDF رقمي نظيف؛
مسح ضوئي منخفض الدقة؛
صفحة مائلة أو مشوهة؛
فاتورة متعددة الصفحات؛
جدول يمتد عبر الصفحات؛
حقول اختيارية مفقودة؛
تنسيقات تاريخ ورقم مختلفة؛
مستند واحد صعب عمداً على الأقل.
لكل حقل مستهدف، قارن القيمة المستخرجة بالحقيقة الأساسية. قس المطابقة الدقيقة للمعرفات، والتسامح العددي للمبالغ، ودقة مستوى الصف لبنود السطر. سجل أيضاً وقت المعالجة ونسبة المستندات المرسلة للمراجعة اليدوية.
إذا وصلت مسار PyMuPDF-Plus-LLM الأبسط إلى الدقة المطلوبة، فاحتفظ به. إذا كان المسح الضوئي هو الفشل الرئيسي، فقم بتحسين OCR. إذا كانت علاقات الجدول هي المشكلة، فاختبر Docling. إذا ظلت الحقول المحددة بصرياً صعبة، فوجه تلك المجموعة الفرعية عبر نموذج رؤية محلي. عادةً ما يمنحك هذا التصعيد المرحلي تحكماً أفضل في السرعة واستخدام الأجهزة من تطبيق أثقل نموذج على كل صفحة.
الخلاصة
يفصل نظام استخراج PDF المحلي الجيد قراءة المستند عن الاستخراج الدلالي. استخدم PyMuPDF عندما يحتوي ملف PDF بالفعل على نص جيد؛ وOCRmyPDF/Tesseract عندما تكون الصفحة ممسوحة ضوئياً؛ وDocling عندما يكون الهيكل والجداول مهمين؛ ونموذج Ollama أو llama.cpp المحلي عندما تحتاج إلى تعيين مرن في مخطط عمل. استخدم الرؤية المحلية فقط حيث يضيف التخطيط البصري معلومات لا يمكن لخط معالجة النص الحفاظ عليها بشكل موثوق.
المتطلب النهائي هو التحقق. يمكن لمخطط JSON تقييد شكل استجابة النموذج، لكنه لا يمكنه إثبات أن المبلغ، أو التاريخ، أو الاسم، أو رقم الحساب يطابق المصدر. إذا قمت بتصميم خط المعالجة بحيث تكون المستندات غير المؤكدة مرئية وقابلة للمراجعة، فيمكنك أتمتة جزء كبير من استخراج بيانات PDF دون تسليم المستندات إلى واجهة برمجة تطبيقات سحابية—ودون التظاهر بأن الذكاء الاصطناعي المحلي يزيل الحاجة إلى مراقبة الجودة.