Ekstraksi teks dasar menggunakan Java
Ekstraksi teks dasar adalah titik awal untuk membaca konten PDF dalam Java. Aspose.PDF menyediakan dua pendekatan umum:
- Gunakan
TextAbsorberketika Anda membutuhkan hasil teks biasa dari dokumen atau halaman. - Gunakan
ParagraphAbsorberketika Anda perlu mempertahankan pengelompokan halaman, bagian, paragraf, baris, dan fragmen.
Halaman PDF tidak menyimpan teks seperti dokumen pengolah kata, sehingga urutan yang diekstrak bergantung pada aliran konten halaman dan tata letaknya. Untuk ekstraksi spesifik wilayah, detail geometri, tata letak multi‑kolom, anotasi, teks yang disorot, atau deteksi superskrip dan subskrip, gunakan artikel ekstraksi terkait dalam bagian ini.
Mengekstrak teks dari semua halaman
Gunakan TextAbsorber untuk mengumpulkan aliran teks datar dari seluruh dokumen dan menuliskannya ke sebuah file. Ini adalah opsi paling sederhana ketika Anda hanya membutuhkan konten teks yang dapat dibaca dan tidak memerlukan batas paragraf atau koordinat.
- Buka PDF sumber dalam sebuah instans
Document. - Buat sebuah
TextAbsorberuntuk mengumpulkan teks di seluruh dokumen. - Panggil
document.getPages().accept(textAbsorber)sehingga setiapPagedikunjungi oleh penyerap. - Tuliskan buffer teks yang diekstrak ke file output.
public static void extractTextFromAllPages(Path inputFile, Path outputFile) throws Exception {
try (Document document = new Document(inputFile.toString())) {
TextAbsorber textAbsorber = new TextAbsorber();
document.getPages().accept(textAbsorber);
Files.writeString(outputFile, textAbsorber.getText());
}
}
Mengekstrak teks dari halaman tertentu
Terapkan absorber hanya pada halaman yang Anda butuhkan. Nomor halaman dalam Document koleksi halaman dimulai dari 1, jadi get_Item(1) membaca halaman pertama.
- Buka PDF sumber dalam sebuah instans
Document. - Buat sebuah
TextAbsorberuntuk ekstraksi satu halaman. - Panggil
accept(textAbsorber)padaPagetarget dipilih berdasarkan nomor halaman. - Tuliskan buffer teks yang diekstrak ke file output.
public static void extractTextFromPage(Path inputFile, Path outputFile, int pageNumber) throws Exception {
try (Document document = new Document(inputFile.toString())) {
TextAbsorber textAbsorber = new TextAbsorber();
document.getPages().get_Item(pageNumber).accept(textAbsorber);
Files.writeString(outputFile, textAbsorber.getText());
}
}
Mengekstrak teks berdasarkan struktur paragraf
Gunakan ParagraphAbsorber ketika Anda membutuhkan pengelompokan struktural alih-alih aliran teks polos tunggal. Ini mengembalikan markup halaman dengan bagian, paragraf, baris, dan objek TextFragment, yang berguna ketika output harus mempertahankan blok logis teks.
- Buka PDF sumber dalam sebuah instans
Document. - Buat sebuah
ParagraphAbsorberdan kunjungi seluruh dokumen untuk membangun hasil markup halaman. - Iterasikan melalui penandaan halaman, bagian, paragraf, baris, dan objek
TextFragmentyang diungkapkan oleh absorber. - Bangun teks keluaran dengan penomoran halaman, bagian, dan paragraf yang eksplisit sehingga pengelompokan struktural dipertahankan.
- Tuliskan teks paragraf yang diekstrak ke file output.
public static void extractParagraphsFromPdf(Path inputFile, Path outputFile) throws Exception {
try (Document document = new Document(inputFile.toString())) {
ParagraphAbsorber absorber = new ParagraphAbsorber();
absorber.visit(document);
StringBuilder text = new StringBuilder();
for (PageMarkup pageMarkup : absorber.getPageMarkups()) {
int sectionIndex = 1;
for (MarkupSection section : pageMarkup.getSections()) {
int paragraphIndex = 1;
for (MarkupParagraph paragraph : section.getParagraphs()) {
StringBuilder paragraphText = new StringBuilder();
for (List<TextFragment> line : paragraph.getLines()) {
for (TextFragment fragment : line) {
paragraphText.append(fragment.getText());
}
paragraphText.append("\r\n");
}
text.append("Page ").append(pageMarkup.getNumber())
.append(", Section ").append(sectionIndex)
.append(", Paragraph ").append(paragraphIndex)
.append(":\n");
text.append(paragraphText).append("\n");
paragraphIndex++;
}
sectionIndex++;
}
}
Files.writeString(outputFile, text.toString());
}
}