استخراج المحتوى الموسوم من ملفات PDF في Python

في هذه المقالة، ستتعلم كيفية استخراج المحتوى ذي العلامات من مستندات PDF باستخدام Python.

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

الحصول على محتوى PDF ذي علامات

من أجل الحصول على محتوى مستند PDF بنص مميز، يقدم Aspose.PDF المحتوى الموسوم ملكية لـ مستند فئة.

قم بإنشاء مستند PDF متقدم ومزود بعلامات كاملة مع جدول محتويات منظم وهرمي (TOC):

  1. قم بإنشاء كائن مستند جديد.
  2. قم بالوصول إلى الخاصية tagged_content.
  3. قم بتعيين عنوان المستند باستخدام ‘set_title () ‘.
  4. قم بتعيين لغة المستند باستخدام ‘set_language () ‘.
  5. احفظ المستند.
import aspose.pdf as ap
from aspose.pycore import cast
import sys
from os import path

# region Extract Tagged Content from PDF
def get_tagged_content(outfile):
    # Create PDF Document
    with ap.Document() as document:
        # Get Content for work with Tagged PDF
        tagged_content = document.tagged_content

        # Work with Tagged PDF content
        # Set Title and Language for Document
        tagged_content.set_title("Simple Tagged Pdf Document")
        tagged_content.set_language("en-US")

        # Save Tagged PDF Document
        document.save(outfile)

الحصول على بنية الجذر

تحتوي ملفات PDF ذات العلامات على شجرة بنية منطقية تحدد البنية الدلالية للمستند. يمثل StructTreeRoot جذر هذه الشجرة المنطقية، بينما يوفر rootElement واجهة للتفاعل مع عنصر بنية المستوى الأعلى للمستند.

يوضح مقتطف الشفرة التالي كيفية الحصول على البنية الجذرية لمستند PDF الموسوم:

  1. قم بإنشاء مستند PDF جديد تم وضع علامة عليه.
  2. الوصول إلى المحتوى الذي تم وضع علامة عليه وتعيين البيانات الوصفية.
  3. جذر شجرة هيكل الوصول وعنصر الجذر.
  4. احفظ ملف PDF الذي تم وضع علامة عليه.
import aspose.pdf as ap
from aspose.pycore import cast
import sys
from os import path

def get_root_structure(outfile):

    # Create PDF Document
    with ap.Document() as document:
        # Get Content for work with Tagged PDF
        tagged_content = document.tagged_content

        # Set Title and Language for Document
        tagged_content.set_title("Tagged Pdf Document")
        tagged_content.set_language("en-US")

        # Properties StructTreeRootElement and RootElement are used for access to
        # StructTreeRoot object of pdf document and to root structure element (Document structure element).
        struct_tree_root_element = tagged_content.struct_tree_root_element
        root_element = tagged_content.root_element

        print(f"StructTreeRootElement: {struct_tree_root_element}")
        print(f"RootElement: {root_element}")

        # Save Tagged PDF Document
        document.save(outfile)

الوصول إلى عناصر الطفل

تحتوي ملفات PDF ذات العلامات على شجرة بنية منطقية تحدد التسلسل الهرمي الدلالي للمستند (العناوين والفقرات والنماذج والقوائم وما إلى ذلك). يتيح لك الوصول إلى عناصر البنية هذه وتعديلها:

  • افحص البيانات الوصفية مثل العنوان واللغة والنص الفعلي والخصائص المتعلقة بإمكانية الوصول
  • تحديث الخصائص لتحسين إمكانية الوصول أو الترجمة
  • اضبط بنية المستند المنطقي برمجيًا لتوافق PDF/UA

يوضح مقتطف الشفرة التالي كيفية الوصول إلى العناصر الفرعية لمستند PDF ذي العلامات:

import aspose.pdf as ap
from aspose.pycore import cast
import sys
from os import path

def access_child_elements(infile, outfile):

    # Open PDF Document
    with ap.Document(infile) as document:
        # Get Content for work with Tagged PDF
        tagged_content = document.tagged_content

        # Access to root element(s)
        element_list = tagged_content.struct_tree_root_element.child_elements

        for element in element_list:
            if isinstance(element, ap.logicalstructure.StructureElement):
                structure_element = cast(ap.logicalstructure.StructureElement, element)
                # Get properties
                print(
                    "StructureElement properties - "
                    f"title: {structure_element.title}, "
                    f"language: {structure_element.language}, "
                    f"actual_text: {structure_element.actual_text}, "
                    f"expansion_text: {structure_element.expansion_text}, "
                    f"alternative_text: {structure_element.alternative_text}"
                )

        # Access to child elements of first element in root element
        element_list = tagged_content.root_element.child_elements[1].child_elements
        for element in element_list:
            if isinstance(element, ap.logicalstructure.StructureElement):
                structure_element = element

                # Set properties
                structure_element.title = "title"
                structure_element.language = "fr-FR"
                structure_element.actual_text = "actual text"
                structure_element.expansion_text = "exp"
                structure_element.alternative_text = "alt"

        # Save Tagged PDF Document
        document.save(outfile)

موضوعات PDF ذات صلة