Perpustakaan PDF Java Gratis untuk Mengekstrak Tabel dari PDF
API Java Sumber Terbuka yang secara programatik mengekstrak tabel dari file PDF. Ia dapat dengan mudah mengonversi tabel yang diekstrak menjadi CSV dan mengubah tabel PDF yang terkunci menjadi format data terstruktur.
Apa itu Tabula-Java?
File PDF ada di mana-mana dalam dunia bisnis—laporan, faktur, makalah penelitian, dan laporan keuangan. Namun ada masalah yang terus-menerus: mengekstrak data tabel dari dokumen-dokumen ini sangat sulit. Menyalin-tempel sering menghasilkan data yang berantakan, dan mengetik ulang secara manual melelahkan serta rawan kesalahan. Di sinilah Tabula-Java berperan. Tabula-Java adalah perpustakaan sumber terbuka yang kuat yang secara programatik mengekstrak tabel dari dokumen PDF. Dibangun di atas fondasi pemrosesan PDF yang solid, perpustakaan Java ini mengubah tabel PDF yang terkunci menjadi format data terstruktur yang dapat Anda gunakan. Baik Anda membangun pipeline data, mengotomatisasi pemrosesan laporan, atau hanya lelah berjuang dengan tabel PDF, Tabula-Java menawarkan solusi yang elegan.
Berbeda dengan parser PDF umum yang memperlakukan semua sebagai teks tidak terstruktur, Tabula-Java memahami struktur tabel. Ia mengenali baris, kolom, dan sel, menjaga hubungan antar titik data. Perbedaan ini penting—perbedaan antara mendapatkan \"John 42 Engineer\" sebagai sekumpulan teks versus catatan terstruktur dengan pemisahan bidang yang tepat. Perpustakaan ini beroperasi sebagai implementasi Java murni, menjadikannya sempurna untuk aplikasi perusahaan, layanan backend, dan sistem apa pun di mana Anda membutuhkan ekstraksi tabel PDF otomatis yang dapat diandalkan tanpa intervensi manual. Ini adalah mesin di balik aplikasi desktop Tabula yang populer, terbukti melalui bertahun-tahun penggunaan dunia nyata oleh jurnalis, peneliti, dan analis data di seluruh dunia. Algoritma deteksi cerdasnya, mode ekstraksi yang fleksibel, dan API yang sederhana menjadikannya alat penting bagi siapa saja yang bekerja dengan data tabular yang terperangkap dalam PDF.
Memulai dengan Tabula-Java
Silakan gunakan perintah berikut untuk menambahkan dependensi Maven ke proyek Anda.
Dependensi Maven OpenPDF
<dependency>
<groupId>technology.tabula</groupId>
<artifactId>tabula</artifactId>
<version>1.0.5.</version>
</dependency>
Instal Tabula-Java melalui Gradle
implementation 'technology.tabula:tabula:1.0.5' Ekstraksi Tabel Dasar melalui API Java
Cara paling sederhana untuk menggunakan perpustakaan Tabula-Java sumber terbuka adalah membiarkannya secara otomatis mendeteksi semua tabel dalam PDF menggunakan algoritma deteksi defaultnya. Ini bekerja dengan baik untuk PDF dengan tabel yang jelas, mirip spreadsheet. Mari kita mulai dengan contoh sederhana yang mengekstrak semua tabel dari dokumen PDF. Contoh ini menunjukkan alur kerja dasar. Kami memuat PDF menggunakan Apache PDFBox (mesin PDF di balik Tabula-Java), membuat algoritma ekstraksi, dan mengiterasi halaman.
Cara Mengekstrak Tabel dari PDF melalui Java API?
import technology.tabula.*;
import technology.tabula.extractors.SpreadsheetExtractionAlgorithm;
import org.apache.pdfbox.pdmodel.PDDocument;
import java.io.File;
import java.io.IOException;
import java.util.List;
public class BasicExtraction {
public static void main(String[] args) throws IOException {
// Load the PDF document
File pdfFile = new File("data_report.pdf");
PDDocument document = PDDocument.load(pdfFile);
// Create an extraction algorithm
SpreadsheetExtractionAlgorithm extractor = new SpreadsheetExtractionAlgorithm();
// Create a page iterator
ObjectExtractor objectExtractor = new ObjectExtractor(document);
PageIterator pages = objectExtractor.extract();
// Process each page
while (pages.hasNext()) {
Page page = pages.next();
// Extract tables from the page
List<Table> tables = extractor.extract(page);
// Print each table
for (Table table : tables) {
System.out.println("Found table with " + table.getRowCount() + " rows");
// Iterate through rows
for (List row : table.getRows()) {
for (RectangularTextContainer cell : row) {
System.out.print(cell.getText() + "\t");
}
System.out.println();
}
}
}
document.close();
}
}
Ekstrak Tabel dari Wilayah Halaman Tertentu
Seringkali, Anda tidak ingin mengekstrak semuanya. Anda mungkin membutuhkan data dari tabel tertentu di lokasi spesifik pada halaman. Tabula-Java memungkinkan Anda mendefinisikan "selection area" menggunakan koordinat. Kelas Rectangle mendefinisikan area spesifik pada halaman menggunakan ruang koordinat PDF (di mana 72 poin sama dengan satu inci). Metode getArea() memotong halaman ke wilayah ini sebelum ekstraksi, meningkatkan akurasi dan kinerja ketika Anda hanya membutuhkan data dari lokasi tertentu. Berikut adalah contoh yang sangat berguna yang menunjukkan cara melakukan operasi ini.
Cara Mengekstrak Tabel dari Wilayah Halaman Tertentu menggunakan Java API?
import technology.tabula.Rectangle;
public class RegionExtraction {
public static void extractRegion(String pdfPath) throws IOException {
File pdfFile = new File(pdfPath);
PDDocument document = PDDocument.load(pdfFile);
ObjectExtractor objectExtractor = new ObjectExtractor(document);
Page page = objectExtractor.extract(1);
// Define the region (x, y, width, height)
// Coordinates are in points (72 points = 1 inch)
Rectangle region = new Rectangle(50, 100, 500, 400);
Page subPage = page.getArea(region);
SpreadsheetExtractionAlgorithm extractor = new SpreadsheetExtractionAlgorithm();
List<Table> tables = extractor.extract(subPage);
// Process the extracted table
for (Table table ; tables) {
System.out.println("Extracted " + table.getRowCount() + " rows from region");
}
document.close();
}
}
Mengonversi Tabel ke CSV melalui API Java
Salah satu kasus penggunaan umum adalah mengekspor tabel yang diekstrak langsung ke format CSV untuk digunakan dalam aplikasi spreadsheet atau basis data. Kelas CSVWriter menangani semua kompleksitas pemformatan CSV, termasuk pelolosan yang tepat untuk karakter khusus dan penanganan konten sel multi-baris. Hal ini membuat integrasi Tabula-Java ke dalam pipeline pemrosesan data yang mengharapkan input CSV menjadi sangat mudah. Berikut contoh kode Java yang menunjukkan cara menangani tabel secara efisien di dalam aplikasi Java.
Cara Mengekspor Tabel yang Diekstrak ke Format CSV melalui Java API?
import technology.tabula.writers.CSVWriter;
import java.io.FileWriter;
public class CSVExtraction {
public static void exportToCSV(String pdfPath, String csvPath) throws IOException {
File pdfFile = new File(pdfPath);
PDDocument document = PDDocument.load(pdfFile);
SpreadsheetExtractionAlgorithm extractor = new SpreadsheetExtractionAlgorithm();
ObjectExtractor objectExtractor = new ObjectExtractor(document);
Page page = objectExtractor.extract(1);
List<Table< tables = extractor.extract(page);
// Write to CSV file
if (!tables.isEmpty()) {
Table table = tables.get(0);
try (FileWriter writer = new FileWriter(csvPath)) {
CSVWriter csvWriter = new CSVWriter();
csvWriter.write(writer, table);
}
}
document.close();
}
}
Memproses Banyak Halaman melalui API Java
Banyak PDF dunia nyata berisi tabel yang tersebar di beberapa halaman. Perpustakaan ini telah menyertakan dukungan untuk memproses beberapa halaman sekaligus dan memungkinkan pengembang untuk iterasi melalui semua halaman dalam dokumen, mengekstrak dan melaporkan tabel yang ditemukan. Penomoran halaman dimulai dari 1 (bukan 0), yang sesuai dengan cara manusia biasanya merujuk nomor halaman.