Ekstraksi Teks Dasar menggunakan Python

Ekstrak teks dari semua halaman dokumen PDF

Gunakan TextAbsorber untuk menangkap semua teks dari setiap halaman dokumen PDF dan menuliskannya ke file teks. Pendekatan ini sangat cocok untuk mengonversi PDF menjadi teks yang dapat dicari, menjalankan analisis konten, atau menyiapkan teks untuk pengindeksan dan pemrosesan lanjutan.

  1. Buka dokumen PDF menggunakan Document.
  2. Buat sebuah TextAbsorber instansi.
  3. Panggilan document.pages.accept(text_absorber) untuk memindai semua halaman.
  4. Ambil teks yang diekstrak dari text_absorber.text.
  5. Tuliskan hasilnya ke file teks keluaran.
import os
import aspose.pdf as ap


def extract_text_from_all_pages(infile, outfile):
    """
    Extract all text from every page of the PDF and write to an output text file.
    Args:
        infile (str): Path to input PDF file.
        outfile (str): Path to output text file.
    """
    # Open the PDF document
    document = ap.Document(infile)
    # Create a TextAbsorber to extract text
    text_absorber = ap.text.TextAbsorber()
    # Accept the absorber for all pages
    document.pages.accept(text_absorber)
    # Get extracted text
    extracted_text = text_absorber.text
    # Write the text to an output file
    with open(outfile, "w", encoding="utf-8") as tw:
        tw.write(extracted_text)

Ekstrak teks dari halaman tertentu

Terapkan TextAbsorber ke satu halaman untuk mengisolasi dan menyimpan teks dari bagian tersebut dalam dokumen multi‑halaman. Ini berguna ketika Anda hanya membutuhkan konten dari satu halaman — misalnya, faktur, bagian laporan, atau ringkasan formulir.

  1. Buka dokumen PDF menggunakan Document.
  2. Buat sebuah TextAbsorber instansi.
  3. Panggilan accept pada halaman target: document.pages[page_number].accept(text_absorber).
  4. Ambil teks yang diekstraksi dan tulis ke sebuah file.
import os
import aspose.pdf as ap


def extract_text_from_page(infile, outfile, page_number):
    """
    Extract text from a specific page number of the PDF.
    Args:
        infile (str): Path to input PDF file.
        outfile (str): Path to output text file.
        page_number (int): 1-based page index to extract.
    """
    document = ap.Document(infile)
    text_absorber = ap.text.TextAbsorber()
    # Accept the absorber on only the specified page
    document.pages[page_number].accept(text_absorber)
    extracted_text = text_absorber.text
    with open(outfile, "w", encoding="utf-8") as tw:
        tw.write(extracted_text)

Ekstrak Paragraf dengan mengiterasi melalui mereka

Gunakan ParagraphAbsorber ketika Anda membutuhkan ekstraksi yang memperhatikan paragraf alih-alih teks halaman biasa. Tidak seperti TextAbsorber atau TextFragmentAbsorber, API ini mengatur output berdasarkan halaman, bagian, dan paragraf, yang berguna untuk analisis teks, ekspor terstruktur, dan pemrosesan sensitif tata letak.

  1. Buka PDF sumber sebagai Document.
  2. Buat sebuah ParagraphAbsorber instansi.
  3. Panggilan absorber.visit(document) untuk menganalisis semua halaman.
  4. Iterasi melalui page_markups, kemudian melalui setiap bagian dan paragraf.
  5. Baca fragmen teks dari setiap paragraf dan tulis hasilnya ke sebuah file.
import aspose.pdf as ap


def extract_paragraphs_from_pdf(infile, outfile):
    """
    Extract all paragraphs from a PDF document, and write each paragraph’s text into an output file.
    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)

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