Docling PDF RAG: تقسيم الجداول إلى مقاطع من دون فقدان مصدرها
لا تكون قيمة الجدول مفيدة إلا عندما تبقى رؤوسها ووحداتها وشروطها حاضرة بعد الاسترجاع. يوضح هذا الدليل العملي في Docling كيفية فحص تسلسل الجداول، وتقدير حدود نص التضمين المضاف إليه السياق، والاحتفاظ بمراجع المصدر من دون الوعد باقتباسات دقيقة على مستوى الخلية.
ابدأ بالسؤال الذي يجب أن يجيب عنه جدول PDF الخاص بك
لإعداد إدخال Docling PDF RAG قابل للفحص، احفظ معنى الجدول بجانب مراجع المصدر. ابدأ بفحص البنية المستخرجة، ثم قدّر حدود نص التضمين المضاف إليه السياق، واحتفظ بمراجع عناصر المستند مع كل إدخال منشأ متاح. تساعد هذه المواقع المراجع على فحص المصدر. لكنها ليست دليلاً تلقائياً على اقتباس دقيق لخلية بعينها.
مواصفة مورّد افتراضية، وليست حالة عميل
تخيّل مواصفة مورّد تتضمن أسماء مكوّنات وحدود تشغيل ووحدات وحواشي شرطية. يبدو سؤال الاسترجاع بسيطاً على السطح: أي حد تشغيل ينطبق على هذا المكوّن في ظل الشروط المذكورة؟
هذا مثال افتراضي، وليس قصة عميل لدى Optijara. استرجاع رقم يبدو معقولاً لا يكفي. يجب أن يتضمن المقطع المسترجع تسمية الصف الصحيحة، وعنوان العمود، والوحدة، والشرط. التصدير المقروء نقطة بداية مفيدة، لكنه لا يثبت أن المقطع ما زال يحمل تلك العلاقات.
النطاق هنا ضيق عن قصد: تصميم سجل مقطع جدول قابل للفحص يربط نص التضمين بعناصر المستند ومواقع المصدر المتاحة. هذا ليس نشر RAG كاملاً، ولا هو وعد بأن الإجابات ستكون صحيحة. قبل تغيير النموذج، افحص ما إذا كان الإدخال قد حافظ على دليل الجدول اللازم للإجابة عن السؤال.
احتفظ بملف PDF الأصلي ومستنده المهيكل
احتفظ بمراجعة PDF المسموح بها بجانب JSON المهيكل الخاص بها. يمثّل DoclingDocument الجداول وتسلسل المستند الهرمي ومعلومات التخطيط عندما تكون متاحة وبيانات المنشأ. تصدير النص العادي ليس بديلاً عن الاحتفاظ بالمستند المهيكل ومراجع عناصره.
التحويل الأساسي مشروح بالفعل في موارد مثل ملاحظة Simon Willison العملية عن Docling. يركز هذا الدليل على ما يجب حفظه بين التحويل والفهرسة. الإجراءات والأمثلة أدناه أنماط مقترحة، وليست نتائج اختبارات منشورة.
افحص الجدول المستخرج قبل اختيار تسلسله
تحقق من الرؤوس والخلايا والوحدات وترتيب القراءة
استخدم المواصفة الافتراضية طوال الوقت: صف عادي، وصف يحتوي على خلية شروط طويلة، وجدول يستمر في صفحة أخرى. قارن ملف PDF بالاستخراج المهيكل قبل تقسيم أي شيء.
تحقق مما إذا كانت كل قيمة ما زالت تنتمي إلى الصف والعمود المقصودين. افحص الرؤوس المدمجة، والوحدات في التسميات التوضيحية، وعلامات الحواشي، وترتيب القراءة. إذا وضع الاستخراج شرطاً تحت المكوّن الخطأ، فإن تقسيم النص الناتج إلى مقاطع أصغر لا يصحح ذلك الارتباط بذاته.
ينتج مسار التحويل مستنداً يمكن تصديره بصيغة JSON مهيكلة. المخطط أدناه شيفرة كاذبة، وليس وصفة تثبيت موثقة. سجّل إصدارات حزم docling و docling-core و tokenizer المثبتة قبل تكييف الأمثلة الرسمية. الإصدار المعروض على موقع الوثائق ليس بالضرورة إصدارك المثبت.
حوّل ملف PDF المسموح به باستخدام DocumentConverter
احتفظ بـ DoclingDocument المُعاد
صدّر المستند المهيكل بصيغة JSON
خزّن JSON بجانب مراجعة PDF الدقيقة
افحص الجداول المستخرجة بمقارنتها مع الصفحات الأصليةاختر تمثيلاً يناسب سؤال الاسترجاع
يوثق مثال التسلسل المتقدم استخدام MarkdownTableSerializer كبديل لتمثيل الجدول الافتراضي. قارن بين الاثنين عبر السؤال عما إذا كان المكوّن والحد والشرط تظل مفهومة. جمال المخرجات أمر ثانوي.
| ما يكشفه الفحص | الإجراء التالي المقترح | ما يجب الاحتفاظ به |
|---|---|---|
| خلايا مقروءة وعلاقات رؤوس واضحة | قارن بين التسلسل الافتراضي وتسلسل Markdown | النصان المرشحان للفحص |
| حدود خلايا مكسورة أو تسميات في غير موضعها | افحص إعدادات الاستخراج قبل التقسيم إلى مقاطع | ملف PDF الأصلي وعنصر الجدول الإشكالي |
| علاقات بصرية أساسية مفقودة من النص | فكّر في مسار استرجاع يعتمد على صورة الصفحة | هوية الصفحة وصورة المصدر المسموح بها |
في الحالة الأخيرة، يشرح دليلنا إلى الاسترجاع البصري للمستندات الدور المختلف للاسترجاع القائم على الصفحات.
يناقش المثال المتقدم أيضاً اجتياز نص OCR المضمّن تحت الصور. قد يستعيد هذا الخيار محتوى محذوفاً لولا ذلك، لكنه قد يضيف ضوضاء. عامله كخيار يحتاج إلى اختبار، لا كقاعدة افتراضية لكل ملف PDF.
استخدم HybridChunker وافحص النص الذي ستضمّنه فعلياً
وائم tokenizer مع مسار التضمين
يعمل مسار التقسيم الأصلي في Docling مباشرة على DoclingDocument. تصدير Markdown أولاً اختياري. يحسّن HybridChunker المقاطع الهرمية باستخدام تقسيم واع بالرموز ودمج الأقران المتوافقين.
يميز مثال التقسيم الهجين بين chunk.text و chunker.contextualize(chunk). احتفظ بالاثنين. في هذا التصميم، تكون السلسلة المضافة إليها السياق هي حمولة التضمين. ويبقى النص الخام مفيداً لفحص ما يحتويه المقطع قبل إضافة السياق.
وائم tokenizer مع نموذج التضمين المقصود، ثم افحص الحمولة المسلسلة الدقيقة. عدّ النص الخام وحده يغفل السياق المضاف لاحقاً. احسب أيضاً أي بادئات أو أغلفة يضيفها تكاملك مع التضمين.
احتفظ برؤوس الجداول من دون افتراض أن كل صف سيلائم الحد
تسرد وثائق التقسيم التي تمت مراجعتها repeat_table_header=True و omit_header_on_overflow=False كقيم افتراضية. هذه إعدادات موثقة، وليست قيماً افتراضية جرى التحقق منها هنا مقابل حزمة مثبّتة. افحص API إصدارك قبل تهيئتها.
تساعد الرؤوس المكررة الجدول المقسّم على الاحتفاظ بالسياق، لكنها تستهلك مساحة أيضاً. في المواصفة الافتراضية، قد تجعل خلية شروط طويلة صفاً ما صعب الملاءمة من دون فقدان المعنى. افحص مخرجات ذلك الصف المضافة إليها السياق بدلاً من افتراض أن الحد المهيأ يضمن قبولها لدى نقطة نهاية التضمين لديك.
يعرض المثال الرسمي المتقدم مخرجات مضافة إليها السياق تتجاوز إعداد الرموز المعروض فيه. هذا سبب لفحص حمولتك الخاصة. لكنه ليس دليلاً على خلل مشخص في المكتبة أو سلوك تجاوز عام.
لا تقصّ شرطاً بصمت لمجرد جعل الطلب ملائماً. علّمه لتمثيل آخر أو لمراجعة صريحة. وافصل أيضاً بين مشكلتين تختلطان كثيراً: تقسيم جدول تم اكتشافه بالفعل، وربط أجزاء منفصلة عبر الصفحات. تكرار الرأس لا يثبت الاستمرارية.
ابن سجل مقطع يحمل مراجع مصدره
أبق هوية المستند بجانب تمثيلي النص
استخدم سجلاً مملوكاً للتطبيق لربط حمولة التضمين بمصدرها. أسماء الحقول أدناه تصميم مقترح، وليست مخططاً مدمجاً في Docling.
يحدد document_id المصدر في تطبيقك. ويحدد source_version المراجعة المحتفظ بها. ويميز chunk_id خرج الإدخال المحدد. خزّن chunk_text و embedding_text منفصلين، بالإضافة إلى serialization_settings و tokenizer_revision.
لا تعد استخدام هوية مقطع قديمة بعد تغيير أدوات التسلسل أو مراجعات المصدر. سجّل إعدادات التقسيم ومراجعة نموذج التضمين في بيان الإدخال أيضاً. وإلا فلن يستطيع مشغّل لاحق معرفة ما إذا كان اختلاف سلوك الاسترجاع ناتجاً عن تغيير في المستند أم تغيير في التمثيل.
يصف JSON التوضيحي هذا عقد السجل المقصود. القيم null عناصر نائبة، وليست قيماً مصدرية مرصودة أو سجلاً جاهزاً للفهرسة.
{
"document_id": null,
"source_version": null,
"chunk_id": null,
"chunk_text": null,
"embedding_text": null,
"doc_item_refs": [],
"item_provenance": [],
"serialization_settings": {},
"tokenizer_revision": null,
"review_status": "not_checked"
}احتفظ بكل إدخال منشأ متاح للعناصر
يعرض المثال المتقدم العناصر المساهمة عبر chunk.meta.doc_items. يصف مرجع المستند مراجع العناصر وحقول بيانات المنشأ، بما في ذلك page_no و bbox و charspan. حافظ على الارتباط بين كل مرجع عنصر وإدخالات المنشأ الخاصة به.
إجراء مقترح لبناء السجل هو:
لكل chunk يعيده native chunker المهيأ:
احتفظ بـ chunk.text باسم chunk_text
احتفظ بـ chunker.contextualize(chunk) باسم embedding_text
لكل item في chunk.meta.doc_items:
احتفظ بقيمة self_ref الخاصة بالعنصر
احتفظ بكل إدخال متاح في قائمة prov الخاصة بالعنصر
اربط كل إدخال بتلك self_ref
ضع علامة صريحة عند غياب بيانات المنشأ
أرفق هوية المستند والمراجعة وإعدادات الإدخال
تحقّق من المراجع مقابل المستند المهيكل المحتفظ بهتجنب اختيار prov[0] فقط. احتفظ بكل المواقع المتاحة لكل عنصر ذي صلة. يجب أن تبقى قائمة المنشأ الفارغة حالة صريحة لموقع مفقود، لا أن تتحول إلى مرجع صفحة ملفق.
حلّ كل self_ref مقابل المستند المهيكل المحتفظ به بالضبط، لا مقابل أحدث تحويل لملف يحمل اسماً مشابهاً. حافظ على أعراف إحداثيات الصناديق المحيطة عند تمرير المواقع إلى عارض.
هناك حد للدقة. قد يغطي عنصر جدول مشار إليه محتوى أكثر من المقطع الحالي المقسّم. موقعه لا يعزل تلقائياً الخلية التي تدعم إجابة ما. حفظ بيانات المنشأ يجعل الفحص ممكناً؛ لكنه لا يثبت أن الاسترجاع اختار الشرط الصحيح أو أن التوليد استخدمه بطريقة صحيحة.
تعامل صراحة مع امتدادات الصفحات والاقتباسات الغامضة
يحتاج الجدول المستمر إلى أكثر من رأس مكرر
ارجع إلى صفحة الاستمرارية في المواصفة الافتراضية. قارن الرؤوس والوحدات وهوية المكوّن والحواشي. تحقق مما إذا كان أول صف ظاهر جديداً أم امتداداً لخلية شروط من الصفحة السابقة.
توثق المناقشة 704 تعامل ممارسين مع جداول تمتد عبر صفحات وصفوف مستمرة. إنها دليل على مشكلة عملية، لا إثبات مرجعي بأن الإصدار الحالي يفتقر دائماً إلى دعم الجداول متعددة الصفحات.
إذا أضفت ربطاً خاصاً بالتطبيق، فاحتفظ بالأجزاء الأصلية ومراجعها بجانب الجدول المشتق. سجّل قاعدة الربط واترك الاستمرارية غير المحلولة ظاهرة. لا ينبغي لتطابق أسماء الأعمدة وحده أن يجيز دمجاً صامتاً.
القيمة المطابقة ليست اقتباساً دقيقاً
افترض أن القيمة القصيرة نفسها تظهر في عدة خلايا. لا تحدد مطابقة النص أي مكوّن وأي شرط يدعمان الإجابة. قبل تمييز خلية، اشترط مواءمة موثقة بين الإجابة والصف والعمود ذوي الصلة وموقع المصدر.
تطرح المناقشة 4321 مشكلة مستوى التفصيل هذه. واجهتا cite_sources و confidence_scores فيها مقترحتان، وليستا API منشورتين وموثقتين يمكن نسخهما في تنفيذ.
عندما لا يتوفر إلا دليل على مستوى العنصر، سمّ المرجع بصدق كمرجع جدول أو صفحة. أبق الغموض ظاهراً، أو وجّه السؤال للمراجعة، بدلاً من عرض تمييز يبدو دقيقاً بلا دعم.
أخطاء شائعة وحدود تشغيلية
لا تخلط درجات الثقة بخلايا الجدول الصحيحة
للأخطاء الشائعة تصحيحات ملموسة:
- تضمين صفوف مجردة: افحص التسميات والرؤوس والوحدات والشروط في الحمولة النهائية.
- عدّ
chunk.textفقط: جزّئ النص المضاف إليه السياق والمقدّم فعلياً إلى رموز. - التخلص من المراجع أو الاحتفاظ بأول إدخال منشأ فقط: حافظ على ارتباطات العناصر وكل موقع متاح.
- دمج الامتدادات بصمت: احتفظ بالأجزاء ووثّق قرار الاستمرارية.
- اعتبار صندوق المصدر دليلاً: افصل دقة الموقع عن صحة الإجابة.
توصي وثائق الثقة التي تمت مراجعتها باستخدام mean_grade و low_grade بدلاً من الدرجات الرقمية الداخلية، وتضع table_score على أنه غير منفذ. لا تخترع عتبة لثقة الجداول ولا تعامل درجة المستند كشهادة على خلية بعينها.
لا تزال المعالجة المحلية تتطلب تخطيطاً للخصوصية والموارد
توثق الخيارات المتقدمة في Docling وضع TableFormer وضوابط مطابقة الخلايا. افحص هذه الخيارات عندما يكون الاستخراج خاطئاً، لكن لا تفترض أن الضبط يضمن الإصلاح. محاولات التحويل الإضافية والفحص اليدوي لها تكاليف تنفيذ وموارد.
المعالجة المحلية والتنزيلات الأولية للنماذج والخدمات البعيدة المفعّلة صراحة قضايا منفصلة. اجلب النماذج المطلوبة مسبقاً وراجع التهيئة قبل توقع التشغيل من دون اتصال. تتطلب التضمينات والتخزين والتسجيل مراجعة مستقلة للتعامل مع البيانات. وجود محوّل محلي لا يجعل التطبيق بأكمله محلياً فقط.
طبّق أذونات المصدر على ملفات PDF المحتفظ بها والنص المستخرج وسجلات المقاطع. راجع ضوابط الوصول قبل فهرسة شروط أو ملاحظات حساسة. عيّن حدود موارد المستندات، وسجّل مراجعات الحزم والنماذج، وقرر كيف ستُحال إصدارات المصدر المستبدلة إلى التقاعد من دون جعل الاقتباسات الحالية غير قابلة للحل.
قبل الفهرسة: قائمة تحقق عملية
قارن التمثيلات على ملف PDF المسموح به نفسه
الإجراء التالي مقترح وغير منفذ. قارن تسلسل الجدول الافتراضي وتسلسل Markdown على ملف PDF المسموح به نفسه وسؤال الاسترجاع نفسه. ضمّن صفوفاً عادية وصفوفاً كبيرة الحجم وامتدادات عبر الصفحات. سجّل الملاحظات بدلاً من افتراض فائز.
| الفحص | الدليل المطلوب تسجيله | أوقف الفهرسة عندما |
|---|---|---|
| البيئة وهوية المصدر | الإصدارات المثبتة، ومراجعة PDF، و JSON المحتفظ به | يتعذر تحديد المصدر أو التهيئة |
| استخراج الجدول | مقارنة الرؤوس والوحدات والصفوف والملاحظات بالصفحة | علاقات الخلايا خاطئة |
| حمولة التضمين | النص الدقيق المضاف إليه السياق ونتيجة طول tokenizer | السياق المطلوب مفقود أو تتجاوز الحمولة حد المسار |
| سلامة المراجع | حل مراجع العناصر وبيانات المنشأ المحتفظ بها | تفشل المراجع في الحل أو يجري إخفاء المواقع المفقودة |
| معالجة الاستمرارية | الأجزاء الأصلية وأي قرار ربط موثق | تبقى استمرارية الصف غير مؤكدة |
| تقييم الإجابة | المقطع المسترجع والإجابة المقترحة والشرط الداعم | تطبق الإجابة الصف أو الشرط الخطأ |
أبق مراجعة المستند والأسئلة وقواعد المراجعة ثابتة أثناء تلك المقارنة. يشرح دليلنا إلى توثيق بروتوكولات التقييم لماذا تحتاج النتائج إلى شروط اختبارها، لا إلى نتيجة رقمية فقط.
قرر ما هو جاهز وما لا يزال يحتاج إلى مراجعة
إذا كان الاستخراج خاطئاً، فارجع إلى التحويل. إذا كان السياق مفقوداً، فارجع إلى التسلسل أو التقسيم إلى مقاطع. إذا كان الدليل غامضاً، فاحفظ ذلك الغموض بدلاً من إصدار اقتباس أكثر دقة مما يدعمه المصدر.
السجل الصالح ليس بالضرورة نتيجة استرجاع ذات صلة. يشرح دليلنا إلى الاستدعاء والملاءمة وصحة الإجابة لماذا تحتاج هذه المخرجات إلى تقييم منفصل.
قبل الفهرسة، يجب أن تكون قادراً على فتح المراجعة المحتفظ بها، وحل مراجع عناصر المقطع، وفحص نص التضمين الدقيق. يمنح ذلك المرحلة التالية شيئاً ملموساً لتقييمه، بما في ذلك بيان واضح لما لا تثبته مواقع المصدر.
النقاط الرئيسية
- 1افحص بنية الجدول قبل التقسيم إلى مقاطع؛ تقسيم النص لا يصلح بذاته علاقات الخلايا غير الصحيحة.
- 2استخدم مسار التقسيم الأصلي في Docling على DoclingDocument وقارن خيارات تسلسل الجدول على المصدر نفسه.
- 3افحص حمولة التضمين المضافة إليها السياق وجزّئها إلى رموز، وليس chunk.text فقط.
- 4احتفظ بمراجعات المصدر ومراجع العناصر وكل إدخال منشأ متاح بجانب تمثيلي النص.
- 5تعامل مع تكرار الرؤوس وربط أجزاء الجداول الممتدة عبر الصفحات كعمليتين منفصلتين.
- 6تدعم بيانات المنشأ المتاحة الفحص، لكنها لا تضمن اقتباسات دقيقة للخلايا أو إجابات صحيحة.
الخلاصة
افحص البنية قبل التقسيم إلى مقاطع، واحفظ مراجع المصدر بجانب نص التضمين، وكن صريحاً بشأن ما يمكن أن تثبته بيانات المنشأ. يتيح سجل إدخال Docling المفيد للمراجع رؤية كل من التمثيل المرسل للتضمين ومادة المصدر وراءه، بما في ذلك الفجوات غير المحلولة. إذا كان فريقك يحتاج إلى مساعدة في تصميم إدخال المستندات واسترجاعها حول ملفات PDF الخاصة به، تقدم Optijara استشارات الذكاء الاصطناعي.
الأسئلة الشائعة
هل أحتاج إلى تصدير ملف PDF إلى Markdown قبل استخدام HybridChunker في Docling؟
لا. تعمل مقسّمات Docling الأصلية مباشرة على DoclingDocument. تصدير Markdown اختياري؛ يحدد تسلسل الجدول التمثيل المستخدم داخل التقسيم الأصلي. راجع https://docling-project.github.io/docling/concepts/chunking/.
كيف أحافظ على رؤوس الجداول، وهل يعيد ذلك بناء الجداول الممتدة عبر الصفحات؟
افحص repeat_table_header وإعدادات التجاوز، ثم تحقق من مخرجات إصدارك المضافة إليها السياق. تكرار الرؤوس لا يثبت أن أجزاء الصفحات المنفصلة جرى ربطها بصورة صحيحة. تحقق من الصفوف المستمرة والوحدات والملاحظات على نحو منفصل. راجع https://docling-project.github.io/docling/concepts/chunking/.
هل يجب أن أضمّن chunk.text أم نتيجة chunker.contextualize(chunk)؟
يستخدم هذا الدليل chunker.contextualize(chunk) للتضمين ويحتفظ بـ chunk.text للفحص. جزّئ النص المرسل بدقة إلى رموز، بما في ذلك البادئات التي يضيفها التكامل، باستخدام tokenizer نموذج التضمين المقصود. راجع https://docling-project.github.io/docling/_generated/examples/hybrid_chunking/.
هل تمنح بيانات منشأ Docling كل إجابة RAG اقتباساً دقيقاً لخلية جدول؟
لا. قد تغطي بيانات منشأ العنصر أكثر من مقطع أو قيمة مقسّمة، وقد تكون المواقع مفقودة. احتفظ بالإدخالات المتاحة؛ يتطلب تمييز الخلية بدقة مواءمة إضافية موثقة. الموقع وحده لا يثبت صحة الإجابة. راجع https://docling-project.github.io/docling/reference/docling_document/.
هل يستطيع Docling معالجة ملفات PDF حساسة محلياً؟
نعم، التنفيذ المحلي موثق. يتطلب الاستخدام من دون اتصال أيضاً نماذج متاحة وتهيئة مقصودة. راجع إعدادات الخدمات البعيدة ومسار التضمين والتخزين والتسجيل المنفصل قبل وصف التطبيق بأكمله بأنه محلي فقط. راجع https://docling-project.github.io/docling/usage/advanced_options/.
المصادر
- https://docling-project.github.io/docling/
- https://docling-project.github.io/docling/concepts/docling_document/
- https://docling-project.github.io/docling/concepts/chunking/
- https://docling-project.github.io/docling/_generated/examples/hybrid_chunking/
- https://docling-project.github.io/docling/_generated/examples/advanced_chunking_and_serialization/
- https://docling-project.github.io/docling/usage/advanced_options/
- https://docling-project.github.io/docling/concepts/confidence_scores/
- https://docling-project.github.io/docling/reference/docling_document/
- https://simonwillison.net/2024/Nov/3/docling/
- https://github.com/docling-project/docling/discussions/704
- https://github.com/docling-project/docling/discussions/4321
بقلم
Hamza Diazحمزة دياز هو مؤسس Optijara، حيث يبني وكلاء ذكاء اصطناعي عمليين، وأنظمة أتمتة، وسير عمل Copilot للشركات الخدمية. يكتب عن تشغيل الذكاء الاصطناعي، واستراتيجية الوكلاء، والتطبيق الواقعي للفرق التي تريد أنظمة مفيدة بدلًا من الضجيج.
