Ekstraksi Teks
Ekstraksi Teks
Aspose.PDF FOSS for .NET provides several mechanisms for extracting text from Halaman PDF. TextFragmentAbsorber adalah alat utama ia memindai konten halaman dan pengembalian terstruktur TextFragment objek dengan posisi, font, dan gaya informasi.
Ekstraksi teks dasar
TextAbsorber Mengekstrak semua teks dari halaman atau dokumen sebagai satu string.
using var doc = Document.Open(pdfBytes);
var absorber = new TextAbsorber();
doc.Pages[1].Accept(absorber);
string pageText = absorber.Text;Mengekstrak fragmen teks
TextFragmentAbsorber Setiap produk memberikan hasil yang terstruktur. TextFragment mencakup teks yang diekstraksi, posisinya pada halaman, dan rincian font.
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
Melalui pola regex ke TextFragmentAbsorber untuk menemukan 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
Each TextFragment dapat mengandung beberapa TextSegment objek ketika teks mencakup berbagai font.
foreach (var fragment in absorber.TextFragments)
{
foreach (var segment in fragment.Segments)
{
Console.WriteLine($"Segment: {segment.Text}, Font: {segment.TextState.Font.FontName}");
}
}Manajemen font
FontRepository menyediakan metode untuk menemukan dan memuat font.
var font = FontRepository.FindFont("Helvetica");Paragraf teks bangunan
TextParagraph memungkinkan membangun blok teks multi-baris untuk dimasukkan ke dalam halaman.
var paragraph = new TextParagraph();
paragraph.AppendLine(new TextFragment("First line"));
paragraph.AppendLine(new TextFragment("Second line"));Tips dan Praktik Terbaik
- Penggunaan
TextFragmentAbsorbersaat Anda membutuhkan data posisi dan font; gunakanTextAbsorberuntuk ekstraksi teks biasa. - Menerima absorber pada satu halaman untuk hasil yang lebih cepat, atau di atas kertas.
doc.Pagesuntuk mencari seluruh dokumen. - Pencarian ekspresi reguler bersifat sensitif terhadap huruf besar secara default digunakan
(?i)Prefix untuk pencocokan tanpa sensitivitas huruf besar. - Check
TextState.Font.IsEmbeddeduntuk menentukan apakah font tertanam dalam PDF. - Untuk dokumen besar, proses halaman satu per satu untuk mengelola penggunaan memori.
Masalah Umum
| Issue | Cause | Perbaiki |
|---|---|---|
| Teks yang diekstrak tidak jelas. | PDF menggunakan kodean font non-standar atau pemetaan CID | Periksa font embedding; beberapa PDF yang dipindai membutuhkan OCR |
| Tidak ada fragmen teks yang ditemukan. | Konten halaman adalah gambar, bukan teks | Gunakan alat OCR untuk mengonversi halaman gambar menjadi teks terlebih dahulu |
| Regex tidak mengembalikan pencocokan | Pola tidak memperhitungkan ruang putih yang dimasukkan oleh tata letak teks PDF | Normalisasi ruang putih atau gunakan pola yang lebih longgar |
TextState.Font adalah nol | Sumber font hilang dari PDF | Mengatasi pemeriksaan nol saat memeriksa sifat font |
FAQ
Bisakah saya mengekstrak teks dari wilayah tertentu halaman?
Ya, sudah diatur. TextFragmentAbsorber.TextSearchOptions.Rectangle untuk membatasi pencarian. ke area tertentu dari halaman.
Apakah ekstraksi teks menjaga urutan membaca?
Perpustakaan mengembalikan teks dalam urutan aliran konten. Untuk tata letak multi-kolom, Anda mungkin perlu mengurutkan fragmen berdasarkan posisi.
Bisakah saya mengekstrak teks dari semua halaman sekaligus?
Ya, telepon. doc.Pages.Accept(absorber) untuk mencari setiap halaman dalam dokumen.
Ringkasan Referensi API
| Kelas / Metode | Description |
|---|---|
TextAbsorber | Mengekstrak semua teks sebagai satu string |
TextFragmentAbsorber | Mengekstrak fragmen teks terstruktur dengan posisi dan data font |
TextFragment | Sebuah teks berjalan dengan posisi, status teks, dan segmen |
TextFragment.Text | String teks yang diekstraksi |
TextFragment.Position | Koordinat pada halaman |
TextFragment.TextState | Informasi font, ukuran dan warna |
TextFragment.Segments | Sub-run dalam fragmen |
TextParagraph | Builder untuk blok teks berulang-ulang |
TextState | Nama font, ukuran, warna dan gaya properti |
FontRepository | Pencarian dan pemuatan font statis |
FontRepository.FindFont | Carilah font dengan nama |