Pengekstrakan Teks

Pengekstrakan Teks

Pengekstrakan Teks

Aspose.PDF FOSS for .NET menyediakan beberapa mekanisme untuk mengekstrak teks daripada halaman PDF. TextFragmentAbsorber adalah alat utama — ia mengimbas kandungan halaman dan mengembalikan objek TextFragment berstruktur dengan maklumat kedudukan, fon, dan gaya.


Penarikan teks asas

TextAbsorber mengekstrak semua teks dari halaman atau dokumen sebagai satu rentetan.

using var doc = Document.Open(pdfBytes);

var absorber = new TextAbsorber();
doc.Pages[1].Accept(absorber);

string pageText = absorber.Text;

Mengekstrak fragmen teks

TextFragmentAbsorber menyediakan hasil berstruktur. Setiap TextFragment termasuk teks yang diekstrak, kedudukannya pada halaman, dan butiran fon.

using var doc = Document.Open(pdfBytes);

var absorber = new TextFragmentAbsorber();
doc.Pages[1].Accept(absorber);

foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Text: {fragment.Text}");
    Console.WriteLine($"Position: ({fragment.Position.XIndent}, {fragment.Position.YIndent})");
    Console.WriteLine($"Font: {fragment.TextState.Font.FontName}");
}

Mencari dengan ekspresi reguler

Hantar corak regex ke TextFragmentAbsorber untuk mencari teks tertentu.

var absorber = new TextFragmentAbsorber(@"\d{3}-\d{2}-\d{4}");
doc.Pages.Accept(absorber);  // Search all pages

foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Found: {fragment.Text}");
}

Segmen teks

Setiap TextFragment mungkin mengandungi berbilang objek TextSegment apabila teks melintasi jalur fon yang berbeza.

foreach (var fragment in absorber.TextFragments)
{
    foreach (var segment in fragment.Segments)
    {
        Console.WriteLine($"Segment: {segment.Text}, Font: {segment.TextState.Font.FontName}");
    }
}

Pengurusan Fon

FontRepository menyediakan kaedah untuk mencari dan memuatkan fon.

var font = FontRepository.FindFont("Helvetica");

Membina perenggan teks

TextParagraph membenarkan pembinaan blok teks berbilang baris untuk dimasukkan ke dalam halaman.

var paragraph = new TextParagraph();
paragraph.AppendLine(new TextFragment("First line"));
paragraph.AppendLine(new TextFragment("Second line"));

Petua dan Amalan Terbaik

  • Gunakan TextFragmentAbsorber apabila anda memerlukan data kedudukan dan fon; gunakan TextAbsorber untuk pengekstrakan teks biasa.
  • Terima penyerap pada satu halaman untuk hasil yang lebih cepat, atau pada doc.Pages untuk mencari seluruh dokumen.
  • Carian ungkapan regular sensitif huruf secara lalai — gunakan awalan (?i) untuk padanan tidak sensitif huruf.
  • Semak TextState.Font.IsEmbedded untuk menentukan sama ada fon terbenam dalam PDF.
  • Untuk dokumen besar, proses halaman satu demi satu untuk mengurus penggunaan memori.

Isu Umum

IsuPuncaPenyelesaian
Teks yang diekstrak rosakPDF menggunakan pengekodan bukan piawai atau pemetaan fon CIDSemak penyematan fon; beberapa PDF yang diimbas memerlukan OCR
Tiada kepingan teks dijumpaiKandungan halaman ialah imej, bukan teksGunakan alat OCR untuk menukar halaman imej kepada teks terlebih dahulu
Regex tidak menghasilkan sebarang padananCorak tidak mengambil kira ruang kosong yang disisipkan oleh susun atur teks PDFNormalisasikan ruang kosong atau gunakan corak yang lebih longgar
TextState.Font adalah nullSumber fon tiada dalam PDFTangani pemeriksaan null semasa memeriksa sifat fon

Soalan Lazim

Bolehkah saya mengekstrak teks dari kawasan tertentu pada halaman?

Ya. Tetapkan TextFragmentAbsorber.TextSearchOptions.Rectangle untuk mengehadkan carian kepada kawasan tertentu pada halaman.

Adakah pengekstrakan teks mengekalkan susunan bacaan?

Perpustakaan mengembalikan teks dalam urutan aliran kandungan. Untuk susun atur berbilang lajur, anda mungkin perlu menyusun fragmen mengikut kedudukan.

Bolehkah saya mengekstrak teks dari semua halaman sekaligus?

Ya. Panggil doc.Pages.Accept(absorber) untuk mencari setiap halaman dalam dokumen.


Ringkasan Rujukan API

Kelas / KaedahKeterangan
TextAbsorberMengekstrak semua teks sebagai satu rentetan tunggal
TextFragmentAbsorberMengekstrak fragmen teks berstruktur dengan data kedudukan dan fon
TextFragmentSebuah rentetan teks dengan kedudukan, keadaan teks, dan segmen
TextFragment.TextRentetan teks yang diekstrak
TextFragment.PositionKoordinat pada halaman
TextFragment.TextStateMaklumat fon, saiz, dan warna
TextFragment.SegmentsSub‑rentetan dalam fragmen
TextParagraphPembina untuk blok teks berbilang baris
TextStateNama fon, saiz, warna, dan sifat gaya
FontRepositoryCarian fon statik dan pemuatan
FontRepository.FindFontCari fon mengikut nama

Lihat Juga

 Bahasa Melayu