الاستخراج المستند إلى المنطقة باستخدام Python

استخراج نص من منطقة معينة من الصفحة

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

  1. افتح ملف PDF المصدر كملف مستند.
  2. قم بإنشاء TextAbsorber مثال.
  3. قم بالتهيئة text_search_options للحد من الاستخراج إلى مستطيل.
  4. اقبل جهاز الامتصاص على الصفحة المستهدفة.
  5. اكتب النص المستخرج إلى ملف الإخراج.
import aspose.pdf as ap


def extract_text_from_region(infile, page_number, rect_coords, outfile):
    """
    Extract text from a specified rectangular region on a given page.
    Args:
        infile (str): Path to input PDF file.
        page_number (int): 1-based index of the page.
        rect_coords (tuple): (llx, lly, urx, ury) coordinates of the rectangle.
        outfile (str): Output text file path.
    """
    document = ap.Document(infile)
    try:
        absorber = ap.text.TextAbsorber()
        # Set options to restrict search to the rectangle
        absorber.text_search_options.limit_to_page_bounds = True
        llx, lly, urx, ury = rect_coords
        absorber.text_search_options.rectangle = ap.Rectangle(llx, lly, urx, ury, True)
        # Accept on the specific page
        document.pages[page_number].accept(absorber)
        extracted_text = absorber.text
        with open(outfile, "w", encoding="utf-8") as tw:
            tw.write(extracted_text)
    finally:
        document.close()

استخراج الفقرات مع عرض المضلع المحيط

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

  1. افتح ملف PDF المصدر كملف مستند.
  2. قم بإنشاء ParagraphAbsorber مثال.
  3. قم بزيارة الصفحة المستهدفة.
  4. اقرأ ترميز الصفحة من absorber.page_markups.
  5. قم بالتكرار من خلال الأقسام والفقرات لالتقاط الهندسة والنص.
  6. اكتب بيانات المستطيل والمضلع والنص إلى ملف الإخراج.
import aspose.pdf as ap


def extract_paragraphs_with_geometry(infile, outfile):
    """
    Extract paragraphs and record geometry info (rectangle / polygon) for each paragraph in a PDF.
    Args:
        infile (str): Path to input PDF file.
        outfile (str): Path to output text file.
    """
    document = ap.Document(infile)
    try:
        absorber = ap.text.ParagraphAbsorber()
        absorber.visit(document.pages[1])  # Visit page 2 (pages are 1-indexed)

        page_markup = absorber.page_markups[0]
        with open(outfile, "w", encoding="utf-8") as tw:
            for sec_idx, section in enumerate(page_markup.sections, start=1):
                tw.write(f"Section {sec_idx}: rectangle = {section.rectangle}\n")
                for para_idx, paragraph in enumerate(section.paragraphs, start=1):
                    tw.write(f"  Paragraph {para_idx}: polygon = {paragraph.points}\n")
                    # Concatenate paragraph text
                    parts = []
                    for line in paragraph.lines:
                        for fragment in line:
                            parts.append(fragment.text)
                        parts.append("\r\n")
                    tw.write("    Text: " + "".join(parts) + "\n\n")
    finally:
        document.close()