trustgraph/docs/tech-specs/universal-decoder.ar.md
Alex Jenkins 8954fa3ad7 Feat: TrustGraph i18n & Documentation Translation Updates (#781)
Native CLI i18n: The TrustGraph CLI has built-in translation support
that dynamically loads language strings. You can test and use
different languages by simply passing the --lang flag (e.g., --lang
es for Spanish, --lang ru for Russian) or by configuring your
environment's LANG variable.

Automated Docs Translations: This PR introduces autonomously
translated Markdown documentation into several target languages,
including Spanish, Swahili, Portuguese, Turkish, Hindi, Hebrew,
Arabic, Simplified Chinese, and Russian.
2026-04-14 12:08:32 +01:00

27 KiB

layout title parent
default جهاز فك ترميز المستندات الشامل Arabic (Beta)

جهاز فك ترميز المستندات الشامل

Beta Translation: This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.

العنوان

جهاز فك ترميز المستندات الشامل يعمل بواسطة unstructured — استيراد أي تنسيق مستند شائع من خلال خدمة واحدة مع تتبع كامل وتكامل مع أمين المكتبة، وتسجيل مواقع المصدر كبيانات وصفية لـ "رسم بياني للمعرفة" من أجل التتبع التام.

المشكلة

يحتوي "TrustGraph" حاليًا على جهاز فك ترميز خاص بملفات PDF. دعم تنسيقات إضافية (DOCX, XLSX, HTML, Markdown، نص عادي، PPTX، إلخ) يتطلب إما كتابة جهاز فك ترميز جديد لكل تنسيق أو اعتماد مكتبة استخراج عالمية. لكل تنسيق هيكل مختلف — بعضها يعتمد على الصفحات، وبعضها لا — ويجب أن يسجل سلسلة التتبع أين أصل كل جزء من النص المستخرج في المستند الأصلي.

الحل المقترح

المكتبة: unstructured

استخدم unstructured.partition.auto.partition() التي تكتشف تلقائيًا التنسيق من نوع MIME أو امتداد الملف وتستخرج العناصر المنظمة (العنوان، النص السردي، الجدول، عنصر القائمة، إلخ). تحمل كل عنصر بيانات وصفية بما في ذلك:

  • page_number (للتنسيقات القائمة على الصفحات مثل PDF، PPTX)
  • element_id (فريد لكل عنصر)
  • coordinates (مربع إحاطة لملفات PDF)
  • text (محتوى النص المستخرج)
  • category (نوع العنصر: العنوان، النص السردي، الجدول، إلخ.)

أنواع العناصر

تستخرج unstructured أنواع العناصر من المستندات. كل عنصر لديه فئة و بيانات وصفية مرتبطة:

عناصر النص:

  • Title — عناوين الأقسام
  • NarrativeText — فقرات النص
  • ListItem — عناصر القوائم المرقمة/المسردة
  • Header, Footer — رؤوس/تذييلات الصفحات
  • FigureCaption — تسميات للرسومات/الصور
  • Formula — تعبيرات رياضية
  • Address, EmailAddress — معلومات الاتصال
  • CodeSnippet — كتل التعليمات البرمجية (من markdown)

الجداول:

  • Table — بيانات جدولية منظمة. توفر unstructured كلاً من element.text (نص عادي) و element.metadata.text_as_html (علامة HTML <table كاملة مع الصفوف والأعمدة والعناوين المحفوظة). بالنسبة للتنسيقات ذات الهيكل الجدول المحدد (DOCX, XLSX, HTML)، يكون الاستخراج موثوقًا للغاية. بالنسبة لملفات PDF، يعتمد اكتشاف الجداول على الاستراتيجية hi_res مع تحليل التخطيط.

الصور:

  • Image — صور مضمنة يتم اكتشافها من خلال تحليل التخطيط (يتطلب الاستراتيجية hi_res). مع extract_image_block_to_payload=True، ترجع بيانات الصورة كـ base64 في element.metadata.image_base64. النص المستخرج من الصورة متاح في element.text.

معالجة الجداول

الجداول هي مخرج أساسي. عندما يواجه جهاز فك الترميز عنصر Table، فإنه يحافظ على هيكل HTML بدلاً من تسويته إلى نص عادي. هذا يوفر لمستخرج LLM (نموذج اللغة الكبير) إدخالًا أفضل بكثير لسحب المعرفة المنظمة من البيانات الجدولية.

يتم تجميع النص الخاص بالصفحة/القسم على النحو التالي:

  • عناصر النص: نص عادي، مدمج مع سطور جديدة
  • عناصر الجدول: علامة HTML للجدول من text_as_html، ومحاطة بـ <table> حتى يتمكن نموذج اللغة الكبيرة من التمييز بين الجداول والنص السردي.

على سبيل المثال، صفحة تحتوي على عنوان وفقرة وجدول تنتج:

نظرة عامة مالية

ارتفعت الإيرادات بنسبة 15٪ على أساس سنوي مدفوعة باعتماد المؤسسات.

<table>
<tr><th>الربع</th><th>الإيرادات</th><th>النمو</th></tr>
<tr><td>Q1</td><td>$12M</td><td>12%</td></tr>
<tr><td>Q2</td><td>$14M</td><td>17%</td></tr>
</table>

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

معالجة الصور

تتم استخراج الصور وتخزينها في أمين المكتبة كأوراق فرعية مع document_type="image" ومعرف urn:image:{uuid}. إنها تحصل على ثلاثيات تتبع من النوع tg:Image، مرتبطة بصفحتها/قسمها الأصلية عبر prov:wasDerivedFrom. يتم تسجيل البيانات الوصفية للصورة (الإحداثيات والأبعاد و element_id) في التتبع.

من المهم للغاية، لا يتم إخراج الصور كإخراج TextDocument. يتم تخزينها فقط — ولا يتم إرسالها إلى وحدة تقسيم (chunker) أو أي مسار لمعالجة النصوص. هذا مقصود:

  1. لا يوجد مسار لمعالجة الصور بعد (دمج نموذج الرؤية هو عمل مستقبلي)
  2. إرسال بيانات صورة base64 أو أجزاء من OCR إلى مسار استخراج النص سينتج عنه ثلاثيات KG (رسم بياني للمعرفة) غير صحيحة.

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

عمل مستقبلي

  • توجيه الكيانات tg:Image إلى نموذج رؤية للوصف أو تفسير المخططات أو استخراج بيانات الرسم البياني.
  • تخزين أوصاف الصور كمستندات نصية فرعية يتم إدخالها في مسار التقطيع/الاستخراج القياسي.
  • ربط المعرفة المستخرجة بالصور المصدر عبر التتبع.

استراتيجيات الأقسام

بالنسبة للتنسيقات القائمة على الصفحات (PDF، PPTX، XLSX)، يتم تجميع العناصر دائمًا حسب الصفحة/الشريحة/الورقة أولاً. بالنسبة للتنسيقات غير القائمة على الصفحات (DOCX، HTML، Markdown، إلخ)، يحتاج جهاز فك الترميز إلى استراتيجية لتقسيم المستند إلى أقسام. هذا قابل للتكوين في وقت التشغيل عبر --section-strategy.

تعتبر كل استراتيجية وظيفة تجميع على قائمة unstructured للعناصر. الإخراج هو قائمة بمجموعات العناصر؛ يظل بقية المسار (تجميع النص وتخزين أمين المكتبة والتتبع وإصدار TextDocument) متطابقًا بغض النظر عن الاستراتيجية.

whole-document (افتراضي)

إخراج المستند بأكمله كقسم واحد. اسمح لوحدة تقسيم المستند (chunker) بمعالجة جميع عمليات التقسيم.

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

heading

التقسيم عند عناصر العناوين (Title). كل قسم هو عنوان وجميع المحتويات حتى العنوان التالي من نفس المستوى أو أعلى. تخلق العناوين المتداخلة أقسامًا متداخلة.

  • ينتج وحدات متماسكة من الناحية الموضوعية
  • يعمل بشكل جيد مع المستندات المنظمة (التقارير والكتيبات والمواصفات)
  • يوفر لـ LLM الاستخراج سياق العنوان جنبًا إلى جنب مع المحتوى
  • يرجع إلى whole-document إذا لم يتم العثور على أي عناوين

element-type

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

  • يحافظ على الجداول كأقسام منفصلة
  • جيد للمستندات ذات المحتوى المختلط (التقارير مع الجداول البيانية)
  • يتم إعطاء الجداول اهتمام استخراج مخصص

count

تجميع عدد ثابت من العناصر لكل قسم. قابلة للتكوين عبر --section-element-count (افتراضي: 20).

  • بسيط وقابل للتنبؤ
  • لا يحترم هيكل المستند
  • مفيد كحل احتياطي أو للتجريب

size

تجميع العناصر حتى يتم الوصول إلى حد الأحرف، ثم ابدأ قسمًا جديدًا. يحترم حدود العناصر — لا يقسم في منتصف العنصر. قابلة للتكوين عبر --section-max-size (افتراضي: 4000 حرف).

  • ينتج أقسامًا ذات أحجام تقريبًا موحدة
  • يحترم حدود العناصر (على عكس وحدة التقسيم السفلية)
  • حل وسط جيد بين التحكم في الهيكل والحجم
  • إذا تجاوز عنصر واحد الحد، فإنه يصبح قسمه الخاص

تفاعل مع التنسيق القائم على الصفحة

بالنسبة للتنسيقات القائمة على الصفحات، يكون تجميع الصفحة هو الأولوية دائمًا. يمكن أن تنطبق استراتيجيات القسم بشكل اختياري داخل صفحة إذا كانت كبيرة جدًا (على سبيل المثال، صفحة PDF تحتوي على جدول ضخم)، ويتم التحكم في ذلك بواسطة --section-within-pages (افتراضي: false). عندما يكون false، تكون كل صفحة دائمًا قسمًا واحدًا بغض النظر عن الحجم.

اكتشاف التنسيق

يحتاج جهاز فك الترميز إلى معرفة نوع MIME الخاص بالمستند لتمريره إلى partition() الخاصة بـ unstructured. هناك مساران:

  • مسار أمين المكتبة (document_id مضبوط): استرداد بيانات وصفية المستند من أمين المكتبة أولاً — وهذا يعطينا kind (نوع MIME) الذي تم تسجيله في وقت الرفع. ثم استرداد محتوى المستند. مكالمتان لأمين المكتبة، ولكن استرداد البيانات الوصفية خفيف الوزن.
  • المسار المضمن (التوافق مع الإصدارات السابقة، data مضبوط): لا توجد بيانات وصفية متاحة على الرسالة. استخدم python-magic لاكتشاف التنسيق من بايت المحتوى كحل احتياطي.

لا توجد تغييرات ضرورية في مخطط Document — يقوم أمين المكتبة بالفعل بتخزين نوع MIME.

الهندسة المعمارية

خدمة universal-decoder واحدة تقوم بما يلي:

  1. تتلقى رسالة Document (مضمنة أو عبر مرجع أمين المكتبة)
  2. إذا كان مسار أمين المكتبة: استرداد بيانات وصفية المستند (الحصول على نوع MIME)، ثم استرداد المحتوى. إذا كان المسار المضمن: اكتشاف التنسيق من بايت المحتوى.
  3. تستدعي partition() لاستخراج العناصر
  4. تجميع العناصر: حسب الصفحة للتنسيقات القائمة على الصفحات، حسب استراتيجية القسم المحددة للتنسيقات غير القائمة على الصفحات
  5. لكل صفحة/قسم:
    • توليد معرف urn:page:{uuid} أو urn:section:{uuid}
    • تجميع نص الصفحة: النص العادي، والجداول كـ HTML، الصور يتم تخطيها
    • حساب إزاحة الأحرف لكل عنصر داخل نص الصفحة
    • حفظ في أمين المكتبة كوثيقة فرعية
    • حساب ثلاثيات تتبع مع بيانات وصفية موضعية
    • إرسال TextDocument إلى وحدة تقسيم (chunker)
  6. لكل عنصر صورة:
    • توليد معرف urn:image:{uuid}
    • حفظ بيانات الصورة في أمين المكتبة كوثيقة فرعية
    • حساب ثلاثيات تتبع (مخزنة فقط، ولا يتم إرسالها إلى وحدة تقسيم)

معالجة التنسيقات

التنسيق نوع MIME قائم على الصفحات ملاحظات
PDF application/pdf نعم تجميع حسب الصفحة
DOCX application/vnd.openxmlformats... لا يستخدم استراتيجية القسم
PPTX application/vnd.openxmlformats... نعم تجميع حسب الشريحة
XLSX/XLS application/vnd.openxmlformats... نعم تجميع حسب ورقة العمل
HTML text/html لا يستخدم استراتيجية القسم
Markdown text/markdown لا يستخدم استراتيجية القسم
Plain text/plain لا يستخدم استراتيجية القسم
CSV text/csv لا يستخدم استراتيجية القسم
RST text/x-rst لا يستخدم استراتيجية القسم
RTF application/rtf لا يستخدم استراتيجية القسم
ODT application/vnd.oasis... لا يستخدم استراتيجية القسم
TSV text/tab-separated-values لا يستخدم استراتيجية القسم

بيانات التتبع

تسجل كل صفحة/قسم كيان بيانات وصفية موضعية على شكل ثلاثيات تتبع في الرسم البياني المصدر (GRAPH_SOURCE)، مما يتيح التتبع التام من ثلاثيات KG (رسم بياني للمعرفة) إلى مواضع المستند المصدر.

الحقول الحالية (موجودة بالفعل في provenance/triples.py)

  • page_number — رقم الصفحة/الورقة/الشريحة (مرقم 1، فقط للتنسيقات القائمة على الصفحات)
  • char_offset — إزاحة الحرف لهذه الصفحة/القسم داخل نص المستند بالكامل
  • char_length — طول الحرف لنص هذه الصفحة/القسم

حقول جديدة (قم بتوسيع provenance/triples.py)

  • mime_type — تنسيق المستند الأصلي (على سبيل المثال، application/pdf)
  • element_types — قائمة unstructured لفئات العناصر الموجودة في هذه الصفحة/القسم (على سبيل المثال، "العنوان،النص السردي،الجدول")
  • table_count — عدد الجداول في هذه الصفحة/القسم
  • image_count — عدد الصور في هذه الصفحة/القسم

يتطلب هذا بناء جملة جديد لأسماء النطاقات:

TG_SECTION_TYPE  = "https://trustgraph.ai/ns/Section"
TG_IMAGE_TYPE    = "https://trustgraph.ai/ns/Image"
TG_ELEMENT_TYPES = "https://trustgraph.ai/ns/elementTypes"
TG_TABLE_COUNT   = "https://trustgraph.ai/ns/tableCount"
TG_IMAGE_COUNT   = "https://trustgraph.ai/ns/imageCount"

مخطط URN للصورة: urn:image:{uuid}

(TG_MIME_TYPE موجود بالفعل.)

نوع الكيان الجديد

بالنسبة للتنسيقات غير القائمة على الصفحات (DOCX، HTML، Markdown، إلخ) حيث يقوم جهاز فك الترميز بإخراج المستند بأكمله كقسم واحد بدلاً من التقسيم حسب الصفحة، يحصل الكيان على نوع جديد:

TG_SECTION_TYPE = "https://trustgraph.ai/ns/Section"

هذا يميز الأقسام عن الصفحات عند الاستعلام عن التتبع:

الكيان النوع متى يتم استخدامه
Document tg:Document الملف الذي تم رفعه أصلاً
Page tg:Page تنسيقات قائمة على الصفحات (PDF، PPTX، XLSX)
Section tg:Section تنسيقات غير قائمة على الصفحات (DOCX، HTML، MD، إلخ)
Image tg:Image صور مضمنة (مخزنة، وغير معالجة)
Chunk tg:Chunk إخراج وحدة تقسيم المستند
Subgraph tg:Subgraph إخراج KG

يتم تعيين النوع بواسطة جهاز فك الترميز بناءً على ما إذا كان يقوم بتجميع حسب الصفحة أم أنه يصدر قسمًا كاملاً للمستند. تكتسب provenance/triples.py معلمة اختيارية section — عندما تكون true، يتم تصنيف الكيان على أنه tg:Section بدلاً من tg:Page.

سلسلة التتبع الكاملة

ثلاثية KG
  → subgraph (تتبع الاستخراج)
    → chunk (char_offset، char_length داخل الصفحة)
      → page/section (page_number، char_offset، char_length داخل المستند، mime_type، element_types)
        → document (الملف الأصلي في أمين المكتبة)

كل رابط هو مجموعة من الثلاثيات في الرسم البياني المسمى GRAPH_SOURCE.

تكوين الخدمة

وسيطات سطر الأوامر:

--strategy استراتيجية التقسيم: auto, hi_res, fast (افتراضي: auto)
--languages قائمة مفصولة بفواصل برموز لغة OCR (افتراضي: eng)
--section-strategy استراتيجية تجميع القسم: whole-document, heading, element-type,
                        count, size (افتراضي: whole-document)
--section-element-count عدد العناصر لكل قسم (افتراضي: 20)
--section-max-size الحد الأقصى لحجم القسم (بالأحرف) (افتراضي: 4000)

التنفيذ

خدمة universal-decoder واحدة تقوم بما يلي:

  1. تتلقى رسالة Document (مضمنة أو عبر مرجع أمين المكتبة)
  2. إذا كان مسار أمين المكتبة: استرداد بيانات وصفية المستند (الحصول على نوع MIME)، ثم استرداد المحتوى. إذا كان المسار المضمن: اكتشاف التنسيق من بايت المحتوى.
  3. تستدعي partition() لاستخراج العناصر
  4. تجميع العناصر: حسب الصفحة للتنسيقات القائمة على الصفحات، حسب استراتيجية القسم المحددة للتنسيقات غير القائمة على الصفحات
  5. لكل صفحة/قسم:
    • توليد معرف urn:page:{uuid} أو urn:section:{uuid}
    • تجميع نص الصفحة: النص العادي، والجداول كـ HTML، الصور يتم تخطيها
    • حساب إزاحة الأحرف لكل عنصر داخل نص الصفحة
    • حفظ في أمين المكتبة كوثيقة فرعية
    • حساب ثلاثيات تتبع مع بيانات وصفية موضعية
    • إرسال TextDocument إلى وحدة تقسيم (chunker)
  6. لكل عنصر صورة:
    • توليد معرف urn:image:{uuid}
    • حفظ بيانات الصورة في أمين المكتبة كوثيقة فرعية
    • حساب ثلاثيات تتبع (مخزنة فقط، ولا يتم إرسالها إلى وحدة تقسيم)

معالجة التنسيقات

التنسيق نوع MIME قائم على الصفحات ملاحظات
PDF application/pdf نعم تجميع حسب الصفحة
DOCX application/vnd.openxmlformats... لا يستخدم استراتيجية القسم
PPTX application/vnd.openxmlformats... نعم تجميع حسب الشريحة
XLSX/XLS application/vnd.openxmlformats... نعم تجميع حسب ورقة العمل
HTML text/html لا يستخدم استراتيجية القسم
Markdown text/markdown لا يستخدم استراتيجية القسم
Plain text/plain لا يستخدم استراتيجية القسم
CSV text/csv لا يستخدم استراتيجية القسم
RST text/x-rst لا يستخدم استراتيجية القسم
RTF application/rtf لا يستخدم استراتيجية القسم
ODT application/vnd.oasis... لا يستخدم استراتيجية القسم
TSV text/tab-separated-values لا يستخدم استراتيجية القسم

بيانات التتبع

تسجل كل صفحة/قسم كيان بيانات وصفية موضعية على شكل ثلاثيات تتبع في الرسم البياني المصدر (GRAPH_SOURCE)، مما يتيح التتبع التام من ثلاثيات KG (رسم بياني للمعرفة) إلى مواضع المستند المصدر.

الحقول الحالية (موجودة بالفعل في provenance/triples.py)

  • page_number — رقم الصفحة/الورقة/الشريحة (مرقم 1، فقط للتنسيقات القائمة على الصفحات)
  • char_offset — إزاحة الحرف لهذه الصفحة/القسم داخل نص المستند بالكامل
  • char_length — طول الحرف لنص هذه الصفحة/القسم

حقول جديدة (قم بتوسيع provenance/triples.py)

  • mime_type — تنسيق المستند الأصلي (على سبيل المثال، application/pdf)
  • element_types — قائمة unstructured لفئات العناصر الموجودة في هذه الصفحة/القسم (على سبيل المثال، "العنوان،النص السردي،الجدول")
  • table_count — عدد الجداول في هذه الصفحة/القسم
  • image_count — عدد الصور في هذه الصفحة/القسم

يتطلب هذا بناء جملة جديد لأسماء النطاقات:

TG_SECTION_TYPE  = "https://trustgraph.ai/ns/Section"
TG_IMAGE_TYPE    = "https://trustgraph.ai/ns/Image"
TG_ELEMENT_TYPES = "https://trustgraph.ai/ns/elementTypes"
TG_TABLE_COUNT   = "https://trustgraph.ai/ns/tableCount"
TG_IMAGE_COUNT   = "https://trustgraph.ai/ns/imageCount"

مخطط URN للصورة: urn:image:{uuid}

(TG_MIME_TYPE موجود بالفعل.)

نوع الكيان الجديد

بالنسبة للتنسيقات غير القائمة على الصفحات (DOCX، HTML، Markdown، إلخ) حيث يقوم جهاز فك الترميز بإخراج المستند بأكمله كقسم واحد بدلاً من التقسيم حسب الصفحة، يحصل الكيان على نوع جديد:

TG_SECTION_TYPE = "https://trustgraph.ai/ns/Section"

هذا يميز الأقسام عن الصفحات عند الاستعلام عن التتبع:

الكيان النوع متى يتم استخدامه
Document tg:Document الملف الذي تم رفعه أصلاً
Page tg:Page تنسيقات قائمة على الصفحات (PDF، PPTX، XLSX)
Section tg:Section تنسيقات غير قائمة على الصفحات (DOCX، HTML، MD، إلخ)
Image tg:Image صور مضمنة (مخزنة، وغير معالجة)
Chunk tg:Chunk إخراج وحدة تقسيم المستند
Subgraph tg:Subgraph إخراج KG

يتم تعيين النوع بواسطة جهاز فك الترميز بناءً على ما إذا كان يقوم بتجميع حسب الصفحة أم أنه يصدر قسمًا كاملاً للمستند. تكتسب provenance/triples.py معلمة اختيارية section — عندما تكون true، يتم تصنيف الكيان على أنه tg:Section بدلاً من tg:Page.

سلسلة التتبع الكاملة

ثلاثية KG
  → subgraph (تتبع الاستخراج)
    → chunk (char_offset، char_length داخل الصفحة)
      → page/section (page_number، char_offset، char_length داخل المستند، mime_type، element_types)
        → document (الملف الأصلي في أمين المكتبة)

كل رابط هو مجموعة من الثلاثيات في الرسم البياني المسمى GRAPH_SOURCE.

التثبيت

تأكد من أن لديك Python 3.6+ مثبتًا.

pip install unstructured

الاستخدام

from unstructured.partition.auto import partition

# مثال على ملف PDF
pdf = partition(filename="path/to/your/document.pdf")

# مثال على ملف HTML
html = partition(filename="path/to/your/document.html")

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

الاعتبارات

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

المساهمة

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

الترخيص

unstructured مرخصة بموجب رخصة Apache 2.0.