قبل تسليم مهمة ترجمة PDF، تحقق من الخط أولاً بدلاً من التسرع في تغيير الخط.

قائمة الخطوط الافتراضية لها طول مختلف عن المجموعة التي يتم إرجاعها بواسطة full=True. بعد ذلك، اقرأ العناصر الستة الأولى، ثم تحقق مما إذا كانت وحدات بايت الخط التي تم إرجاعها بواسطة extract_font فارغة. لا يعني مرجع الخط Base14 أن الخط مضمن في البرنامج؛ ولا ينبغي اعتبار خطوط المجموعة الفرعية خطأ.

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

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

استنتاج جملة واحدة

قم بجرد الخطوط أولاً ثم حدد مسار الترجمة. لا تقم بتغيير الخطوط بشكل عام قبل استخراج النص.

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

لماذا لا يمكننا استبدال الخطوط بشكل مباشر على مستوى العالم؟

سيواجه استبدال الخطوط مباشرةً العديد من المشكلات النموذجية:

  • الرموز الرياضية في النص الأصلي تصبح مربعات.
  • المحاذاة المتساوية العرض للأرقام في الجدول غير صالحة.
  • الخطوط المقيدة مضمنة، مما يتسبب في عدم فتح الترجمة لدى بعض القراء.

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

النقاط الرئيسية في قراءة معلومات الخط

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

الاختبار الاصطناعي: بناء الذاكرة والتحقق من التأكيد

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

import pymupdf
with pymupdf.open() as doc:
    page = doc.new_page()
    page.insert_text((72, 72), "Font sample", fontname="helv")
    fonts = doc.get_page_fonts(0, full=True)
    assert fonts
    report = []
    for item in fonts:
        xref, ext, kind, basefont, name, encoding = item[:6]
        extracted_name, extracted_ext, extracted_type, data = doc.extract_font(xref)
        report.append({"name": basefont, "font_program_present": bool(data),
                       "xref": xref, "encoding": encoding})
    assert report[0]["name"] == "Helvetica"
    assert report[0]["font_program_present"] is False
    assert report[0]["xref"] > 0

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

معايير القبول وحدود المراجعة اليدوية

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

قرارات التعامل مع الاستثناءات المحددة

الملاحظةما الذي يجب فعلهولا ينبغي الحكم عليه
برنامج الخط فارغالسجلات التي لم يتم استخراجها في البرنامج المدمجمراجع Base14 ليست هي نفسها التضمينات
خط زيجيالاحتفاظ بعلامات الخطالضرر لا يحكم عليه مباشرة
القائمة فارغةتحقق من محتويات الصفحةقد يكون صورة أو مسار رسم آخر

قبل التعامل مع الوثائق المهمة، يرجى الاحتفاظ بالأصل ومراجعتها وفقا للحدود وبنود القبول أعلاه.

🎯 أي طريقة تناسبك؟

إذا استلمت للتو ملف PDF ليتم ترجمته

قم بتقييم الخطوط أولا، ثم قرر أي طريق تسلك؛ لا تتسرع في استبدالها.

إذا أظهرت نتيجة الكشف أن برنامج الخط فارغ

سجل هذا وتأكد من محتوى الصفحة؛ لا تفترض أن التضمين مكتمل.

إذا كان المستند يحتوي على خطوط فرعية

احتفظ بعلامات الخط وعاملها كأنها طبيعية بدلا من الحكم عليها مباشرة كأخطاء.

إذا كان التحقق مطلوبا بمستندات حقيقية

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

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

1. هل تعني إشارة خط Base14 أن الخط مدمج بالفعل؟

لا. مراجع خط Base14 لا تعني أن برنامج الخط مدمج؛ تحتاج إلى التحقق مما إذا كانت بايتات الخط التي يرجعها extract_font فارغة.

2. هل هناك بالتأكيد مشكلة في الخط الفرعي؟

ليس بالضرورة. يجب ألا يتم وسم الخطوط الفرعية بشكل موحد كأخطاء؛ فقط احتفظ بمعرفات الخطوط ولا تحكم عليها مباشرة على أنها تالفة.

3. إذا كانت قائمة الخطوط فارغة، هل هذا يعني أن هناك مشكلة في الصفحة؟

ليس بالضرورة. عندما تكون القائمة فارغة، تحقق أولا من محتوى الصفحة؛ قد تكون الصفحة صورة أو مسار رسم آخر.

4. هل يمكن استخدام النتيجة "الآمنة" للنص مباشرة لقرارات الترجمة؟

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

📝 ملخص

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

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

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