لماذا يتم استخراج ملف PDF ذو العمود المزدوج بشكل تسلسلي؟ احتفظ بالإحداثيات أولاً، ثم تحدث عن ترتيب القراءة

اشرح أن تسلسل نص PDF ذو العمود المزدوج ينبع من افتقار التنسيق إلى البنية الدلالية، ووضح أن معلمة الفرز هي مجرد فرز هندسي. يتم توفير مثال Python الاصطناعي استنادًا إلى التقسيم الإحداثي لتوضيح منطق إعادة تنظيم التسلسل، وتوضيح الحدود المطبقة والخطوط الحمراء للمراجعة اليدوية، وتوفير مسار قبول عملي يربط سير عمل ترجمة OmniDoc.

-sort=True هو مجرد فرز هندسي، وليس فهمًا للتخطيط، ولا يمكنه ضمان استعادة ترتيب القراءة لجميع المستندات.

  • يجب الحفاظ على إحداثيات النص وصفحات المصدر قبل معالجة التسلسل لتجنب فقدان المعلومات الإقليمية.
  • إن 80 و300 في المثال هما فقط إعدادات للصفحة المركبة ولا يمكن استخدامهما كحدود عامة لجميع ملفات PDF.
  • يجب أن يتحقق القبول من عناصر مثل حفظ المحتوى والنص عبر الأعمدة، وليس فقط ما إذا كان البرنامج يبلغ عن الأخطاء.

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

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

لماذا يتم استخراج ملف PDF ذو العمود المزدوج بشكل تسلسلي؟ استنتاج جملة واحدة

احتفظ بالإحداثيات وصفحة المصدر أولاً، ثم قم بالفرز وفقًا للقواعد الإقليمية. لا تقم بضغط الصفحة بأكملها مباشرة في سلسلة طويلة.

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

لماذا يفسد الطلب؟

يقوم PDF بتسجيل موضع كل فقرة من النص، وليس "أي فقرة هذه وأي عمود تنتمي؟" عندما تقوم أداة الاستخراج بالإخراج حسب الإحداثيات، إذا لم تكن هناك قواعد للمنطقة، فقد يكون النص الموجود في العمودين الأيسر والأيمن متشابكًا.

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

احتفظ بالإحداثيات أولاً، ثم تحدث عن ترتيب القراءة

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

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

##sort=True يستحق المحاولة، لكنه لا يفهم التخطيط

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

اقتراحات للاستخدام هي كما يلي:

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

لا تطبق هذه المقالة التعرف على التخطيط العالمي، ولكنها توضح فقط "كيفية الفرز وفقًا للقواعد الإقليمية الموجودة" وتشرح بوضوح حدود القدرات. للحصول على الواجهة ونموذج الاستخراج، يرجى الرجوع إلى دليل استخراج النص الرسمي PyMuPDF.

استخدم خمس كتل نصية مركبة لشرح المشكلة

يبلغ عرض صفحة المثال 600 نقطة، مع حد 300 نقطة بين الأعمدة؛ ضمن 80 نقطة من الجزء العلوي توجد منطقة عنوان الأعمدة المتقاطعة، وأسفلها توجد منطقة النص. يتم خلط الإدخال عمدًا: الفقرة الثانية في العمود الأيمن تأتي أولاً، والفقرة الأولى في العمود الأيسر تأتي أخيرًا. يحتوي كل صف على الإحداثيات الأربعة للمستطيل والنص. هذه بنية مبسطة محددة لأغراض العرض التوضيحي ولا تعادل قيمة الإرجاع الكاملة لـ get_text("blocks").

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

مثال صغير يمكن تشغيله بالكامل

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

def order_known_layout(blocks, split_x=300, title_bottom=80):
    groups = {"title": [], "left": [], "right": []}
    rejected = []
    for block in blocks:
        x0, y0, x1, y1, text = block
        if x1 <= x0 or y1 <= y0:
            rejected.append(block)
            continue
        if y1 <= title_bottom:
            region = "title"
        elif y0 < title_bottom:
            rejected.append(block)
            continue
        elif x1 <= split_x:
            region = "left"
        elif x0 >= split_x:
            region = "right"
        else:
            rejected.append(block)
            continue
        groups[region].append(block)
    ordered = []
    for region in ("title", "left", "right"):
        ordered.extend(sorted(groups[region], key=lambda b: (b[1], b[0])))
    return [b[4] for b in ordered], rejected

sample = [(330, 160, 550, 190, "R2"), (40, 100, 270, 130, "L1"),
          (40, 20, 550, 50, "TITLE"), (330, 100, 550, 130, "R1"),
          (40, 160, 270, 190, "L2")]
ordered, rejected = order_known_layout(sample)
assert ordered == ["TITLE", "L1", "L2", "R1", "R2"]
assert rejected == []
wide = (40, 220, 550, 250, "FULL WIDTH BODY")
assert order_known_layout(sample + [wide])[1] == [wide]
assert order_known_layout([]) == ([], [])
print("known-layout examples: 3 assertions passed")

تأتي القيمتان 80 و300 في المثال من الإعدادات الموجودة في هذه الصفحة المركبة وليست حدودًا تجريبية تنطبق على جميع ملفات PDF. عندما يتغير عرض العمودين الأيسر والأيمن للصفحة التالية، إذا تم استخدام معلمات الصفحة السابقة، فقد يحدث "البرنامج يعمل بشكل طبيعي ولكن المحتوى خاطئ". يجب أن تتبع القواعد الإقليمية الصفحة، وعلى الأقل تسجل إصدار القاعدة وحجم الصفحة.

📊 المقارنة الأساسية

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

لا تتحقق فقط مما إذا كانت هناك أية أخطاء أثناء القبول

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

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

🎯 ما هي الطريقة المناسبة لك؟

###إذا كنت......

  • فقط الصفحات ذات العمود الواحد أو ذات العمود المزدوج التي تحتاج إلى معالجة القواعد: قم أولاً بمقارنة نتائج تشغيل sort وإيقاف تشغيله، ثم قرر ما إذا كانت قواعد التقسيم مطلوبة أم لا.
  • التعامل مع الأوراق التي تحتوي على عناوين أو أشكال أو حواشي سفلية ممتدة: قسّم الصفحات حسب الأقسام وقم بتعيين قوائم الاستثناءات للمحتوى الممتد.
  • يجب تسليم الترجمة للآخرين: احتفظ بالإحداثيات وأرقام الصفحات، وراجعها واحدة تلو الأخرى حسب قائمة القبول. لا تتحقق فقط مما إذا كانت هناك أخطاء أثناء العملية.
  • لا ترغب في صيانة النصوص البرمجية بنفسك: يمكنك استخدام أدوات ترجمة المستندات الجاهزة مباشرةً والتحقق من الترجمة باستخدام نفس مجموعة قوائم المراجعة التسلسلية.

كيفية استلام عملية ترجمة OmniDoc

تكمن قيمة النصوص البرمجية الذاتية في كتابة قواعد القبول بوضوح؛ وتكمن قيمة أدوات الترجمة الجاهزة في تقليل الروابط التشغيلية بين الملفات والترجمات. لا يوجد تعارض بين الاثنين. يوفر موقع OmniDoc (بوابة المنتج) بوابة لترجمة المستندات، ويقدم الموقع الرسمي أيضًا وظائف مثل التعرف الضوئي على الحروف (OCR) والمسرد والمقارنة ثنائية اللغة. يمكنك تحديد ورقة غير حساسة لديك إذن بتحميلها والتحقق من الترجمة باستخدام نفس قائمة المراجعة التسلسلية.

ركز على التحقق من العناصر التالية:

  • ما إذا كانت الجملة الأولى بعد عنوان العمود المتقاطع متصلة بشكل صحيح.
  • هل تم دمج التسميات التوضيحية في النص؟
  • ما إذا كانت مراجع الحواشي السفلية لا تزال تشير إلى الموقع الصحيح.

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

❓ الأسئلة الشائعة (الأسئلة الشائعة)

1. تسلسل PDF ذو عمودين، هل تم التعرف عليه بشكل غير صحيح؟

غير مؤكد. قد يتم التعرف على جميع الكلمات بشكل صحيح، ولكن المشكلة غالبًا ما تكمن في ترتيب القراءة، لذا يجب التحقق من قواعد الفرز والقواعد الإقليمية أولاً.

2. هل تستطيع شركة sort=True حل مشكلة ترتيب الأعمدة المزدوجة مباشرة؟

لا يمكن تعميمه. يختلف التعامل مع sort باختلاف نوع المخرجات والإصدار، فهو ليس متفهمًا للتخطيط ولا يمكنه الوعد باستعادة ترتيب القراءة لجميع المستندات. يمكنك تجربة صفحة القواعد أولاً، وتحتاج أيضًا إلى التحقق من العلاقة الإقليمية للصفحات التي تحتوي على محتوى عبر الأعمدة.

3. لماذا لا يمكن ضغط الصفحة بأكملها في سلسلة طويلة؟

بمجرد فقدان الإحداثيات ومعلومات المنطقة، ستحصل الترجمات اللاحقة على سياق خاطئ، وقد لا يتمكن تغيير نموذج الترجمة من تصحيح ذلك.

4. هل يمكن استخدام 80 نقطة و300 نقطة في المثال مباشرة على ملفات PDF أخرى؟

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

📝 ملخص

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

جربه الآن: قم بتحميل المستند لبدء الترجمة، مع الاحتفاظ بالتخطيط الأصلي

تاريخ التحديث: 2026-11-13