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
TextFragmentAbsorberapabila anda memerlukan data kedudukan dan fon; gunakanTextAbsorberuntuk pengekstrakan teks biasa. - Terima penyerap pada satu halaman untuk hasil yang lebih cepat, atau pada
doc.Pagesuntuk mencari seluruh dokumen. - Carian ungkapan regular sensitif huruf secara lalai — gunakan awalan
(?i)untuk padanan tidak sensitif huruf. - Semak
TextState.Font.IsEmbeddeduntuk menentukan sama ada fon terbenam dalam PDF. - Untuk dokumen besar, proses halaman satu demi satu untuk mengurus penggunaan memori.
Isu Umum
| Isu | Punca | Penyelesaian |
|---|---|---|
| Teks yang diekstrak rosak | PDF menggunakan pengekodan bukan piawai atau pemetaan fon CID | Semak penyematan fon; beberapa PDF yang diimbas memerlukan OCR |
| Tiada kepingan teks dijumpai | Kandungan halaman ialah imej, bukan teks | Gunakan alat OCR untuk menukar halaman imej kepada teks terlebih dahulu |
| Regex tidak menghasilkan sebarang padanan | Corak tidak mengambil kira ruang kosong yang disisipkan oleh susun atur teks PDF | Normalisasikan ruang kosong atau gunakan corak yang lebih longgar |
TextState.Font adalah null | Sumber fon tiada dalam PDF | Tangani 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 / Kaedah | Keterangan |
|---|---|
TextAbsorber | Mengekstrak semua teks sebagai satu rentetan tunggal |
TextFragmentAbsorber | Mengekstrak fragmen teks berstruktur dengan data kedudukan dan fon |
TextFragment | Sebuah rentetan teks dengan kedudukan, keadaan teks, dan segmen |
TextFragment.Text | Rentetan teks yang diekstrak |
TextFragment.Position | Koordinat pada halaman |
TextFragment.TextState | Maklumat fon, saiz, dan warna |
TextFragment.Segments | Sub‑rentetan dalam fragmen |
TextParagraph | Pembina untuk blok teks berbilang baris |
TextState | Nama fon, saiz, warna, dan sifat gaya |
FontRepository | Carian fon statik dan pemuatan |
FontRepository.FindFont | Cari fon mengikut nama |