تخطَّ إلى المحتوى

Docling - تحليل المستندات لـ RAG

Docling - تحليل المستندات لـ RAG

Docling هي مجموعة أدوات تحليل مستند مفتوحة المصدر (مشروع LF AI & Data) التي تحول PDF و DOCX و PPTX و XLSX و HTML والصور والمزيد إلى تمثيل منظم — Markdown نظيف أو JSON يحافظ على التخطيط والجداول والرؤوس وترتيب القراءة. يتضمن تقسيم يدرك الهرمية الذي يثري الأجزاء بيانات الكود الهيكلية، ويتكامل مباشرة مع LangChain و LlamaIndex، مما يجعله أحد الخيارات مفتوحة المصدر الأقوى لمرحلة الاستيعاب من خط أنابيب RAG.

التثبيت

الطريقةالأمر
pippip install docling
uvuv add docling
With OCR extraspip install "docling[ocr]"
التحققdocling --version

استخدام CLI

الأمرالوصف
docling document.pdfتحويل ملف إلى Markdown (افتراضي)
docling --to json document.pdfJSON منظم الإخراج
docling --to md --output out/ report.docxتحويل إلى دليل
docling https://example.com/page.htmlتحويل من URL
docling --ocr scanned.pdfفرض OCR للمستندات الممسوحة ضوئياً
docling --helpقائمة الخيارات الكاملة

Python: التحويل الأساسي

from docling.document_converter import DocumentConverter

converter = DocumentConverter()
result = converter.convert("report.pdf")

doc = result.document
print(doc.export_to_markdown())   # clean Markdown
print(doc.export_to_dict())       # structured JSON-able dict
الطريقةالعوائد
export_to_markdown()Markdown مع الحفاظ على الرؤوس/الجداول
export_to_dict()نموذج وثيقة منظم (JSON-قابل للعد)
export_to_doctags()تمثيل DocTags
result.documentDoclingDocument المحلل

المدخلات المدعومة

الشكلملاحظات
PDFالتخطيط والجداول وترتيب القراءة؛ OCR للمسح
DOCX / PPTX / XLSXتنسيقات Office
HTMLصفحات ويب والتصدير
الصورPNG/JPG/TIFF عبر OCR
Markdown / AsciiDocمعاد بناؤها في نموذج المستند

التقسيم الذي يدرك الهرمية

محللات Docling تقسم مستند محلل للتضمين أثناء الحفاظ على السياق الهيكلي (رؤوس القسم وحدود الجدول) في بيانات وصفية للكل.

from docling.document_converter import DocumentConverter
from docling.chunking import HybridChunker

doc = DocumentConverter().convert("report.pdf").document
chunker = HybridChunker(tokenizer="sentence-transformers/all-MiniLM-L6-v2")

for chunk in chunker.chunk(doc):
    print(chunk.text)
    print(chunk.meta)   # headings, page, provenance
Chunkerالسلوك
HierarchicalChunkerانقسام على هيكل المستند (الأقسام والعناصر)
HybridChunkerStructure-aware + tokenizer-aware sizing/merging
chunk.metaيحمل الرؤوس/الأصل للتوسع السياق

تكامل إطار عمل RAG

الإطارالطريقة
LangChainDoclingLoader إرجاع الوثائق/الأجزاء
LlamaIndexقارئ Docling/محلل العقدة
مخصصاستخدم export_to_markdown() أو إخراج chunker مباشرة
# LangChain example
from langchain_docling import DoclingLoader
docs = DoclingLoader(file_path="report.pdf").load()

الأداء والخيارات

الخيارالغرض
محرك OCRاختر/عطل OCR (EasyOCR و Tesseract وغيره)
جدول الموضعاسترجاع بنية جدول دقيقة مقابل سريعة
الجهازتشغيل النماذج على CPU أو GPU
نطاق الصفحةتحديد التحويل للصفحات المحددة
خيارات خط الأنابيبضبط خط أنابيب التحويل لكل تنسيق

سير العمل المشتركة

# تحويل مجلد من PDF إلى Markdown للاستيعاب
for f in docs/*.pdf; do docling --to md --output corpus/ "$f"; done
# تحليل → جزء → تضمين، أساس استيعاب RAG
from docling.document_converter import DocumentConverter
from docling.chunking import HybridChunker

doc = DocumentConverter().convert("manual.pdf").document
chunks = list(HybridChunker().chunk(doc))
# embed each chunk.text with your model, store chunk.meta alongside

Docling مقابل محللات أخرى

الجانبDoclingUnstructuredMarker
الإخراجMarkdown + نموذج منظمالعناصر المكتوبةMarkdown
التقسيمبنيت في يدرك الهرميةعلى أساس العنصرخارجي
السرعةجيد (CPU)جيدأسرع مع GPU
الأفضل لـاستيعاب RAG الذاتي الاستضافةأنابيب العنصر المكتوبةتضمين Markdown الحجم GPU

الموارد