الاستخراج المستند إلى المنطقة باستخدام Python
Contents
[
Hide
]
استخراج نص من منطقة معينة من الصفحة
استخدم ممتص النص جنبا إلى جنب مع المستطيل لقصر الاستخراج على منطقة معينة من الصفحة. يُعد هذا الأسلوب مفيدًا للاستخراج المستند إلى المنطقة من الرؤوس أو التذييلات أو خلايا الجدول أو حقول النموذج أو الفواتير أو مناطق التخطيط الثابت الأخرى حيث يكون موضع النص معروفًا مسبقًا.
- افتح ملف PDF المصدر كملف مستند.
- قم بإنشاء
TextAbsorberمثال. - قم بالتهيئة
text_search_optionsللحد من الاستخراج إلى مستطيل. - اقبل جهاز الامتصاص على الصفحة المستهدفة.
- اكتب النص المستخرج إلى ملف الإخراج.
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()
استخراج الفقرات مع عرض المضلع المحيط
يمكنك أيضًا استخدام ممتص الفقرة لفحص هندسة الفقرة. بالإضافة إلى استخراج النص، يسجل هذا الأسلوب كل مستطيل مقطع ومضلع فقرة، وهو أمر مفيد لتخطيط التخطيط أو تحليل المستندات أو أدوات إمكانية الوصول أو المعالجة اللاحقة على دراية بالمنطقة.
- افتح ملف PDF المصدر كملف مستند.
- قم بإنشاء
ParagraphAbsorberمثال. - قم بزيارة الصفحة المستهدفة.
- اقرأ ترميز الصفحة من
absorber.page_markups. - قم بالتكرار من خلال الأقسام والفقرات لالتقاط الهندسة والنص.
- اكتب بيانات المستطيل والمضلع والنص إلى ملف الإخراج.
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()