ไลบรารี Java PDF ฟรีสำหรับสกัดตารางจาก PDF
API Java โอเพ่นซอร์สที่สกัดตารางจากไฟล์ PDF อย่างอัตโนมัติ สามารถแปลงตารางที่สกัดเป็น CSV ได้อย่างง่ายดายและแปลงตาราง PDF ที่ถูกล็อกให้เป็นรูปแบบข้อมูลที่มีโครงสร้าง.
Tabula-Java คืออะไร?
ไฟล์ PDF มีอยู่ทั่วทุกมุมในโลกธุรกิจ—รายงาน, ใบแจ้งหนี้, งานวิจัย, และงบการเงิน แต่มีปัญหาที่คงที่: การดึงข้อมูลตารางจากเอกสารเหล่านี้เป็นเรื่องที่ยากอย่างมาก การคัดลอกและวางมักทำให้ข้อมูลเสียรูปแบบ และการพิมพ์ใหม่ด้วยมือเป็นเรื่องน่าเบื่อและเสี่ยงต่อข้อผิดพลาด นั่นคือจุดที่ Tabula-Java เข้ามาช่วย Tabula-Java เป็นไลบรารีโอเพ่นซอร์สที่ทรงพลังซึ่งดึงตารางจากเอกสาร PDF อย่างอัตโนมัติ สร้างบนพื้นฐานการประมวลผล PDF ที่มั่นคง ไลบรารี Java นี้แปลงตาราง PDF ที่ถูกล็อกให้เป็นรูปแบบข้อมูลที่มีโครงสร้างและสามารถนำไปใช้ได้จริง ไม่ว่าคุณจะสร้างสายงานข้อมูล, ทำอัตโนมัติการประมวลผลรายงาน, หรือแค่เหนื่อยกับการต่อสู้กับตาราง PDF Tabula-Java มีโซลูชันที่เรียบง่ายและมีประสิทธิภาพ
แตกต่างจากตัวแยกวิเคราะห์ PDF ทั่วไปที่ถือทุกอย่างเป็นข้อความที่ไม่มีโครงสร้าง Tabula-Java เข้าใจโครงสร้างตาราง มันสามารถจำแนกแถว คอลัมน์ และเซลล์ได้ โดยคงความสัมพันธ์ระหว่างจุดข้อมูลไว้ ความแตกต่างนี้สำคัญ—ความแตกต่างระหว่างการได้ข้อความ "John 42 Engineer" เป็นกลุ่มข้อความเดียวกับบันทึกที่มีโครงสร้างพร้อมการแยกฟิลด์ที่เหมาะสม ไลบรารีทำงานเป็นการนำไปใช้ด้วย Java อย่างเดียว ทำให้เหมาะสำหรับแอปพลิเคชันระดับองค์กร บริการแบ็กเอนด์ และระบบใด ๆ ที่ต้องการการสกัดตาราง PDF อย่างอัตโนมัติและเชื่อถือได้โดยไม่ต้องแทรกแซงด้วยมือ มันเป็นเครื่องยนต์ที่อยู่เบื้องหลังแอปพลิเคชันเดสก์ท็อป Tabula ที่ได้รับความนิยม ซึ่งได้รับการพิสูจน์จากการใช้งานจริงหลายปีโดยนักข่าว นักวิจัย และนักวิเคราะห์ข้อมูลทั่วโลก อัลกอริทึมการตรวจจับอัจฉริยะ โหมดการสกัดที่ยืดหยุ่น และ API ที่ใช้งานง่ายทำให้เป็นเครื่องมือสำคัญสำหรับผู้ที่ทำงานกับข้อมูลตารางที่ถูกบังใน PDF
เริ่มต้นใช้งาน Tabula-Java
กรุณาใช้คำสั่งต่อไปนี้เพื่อเพิ่มการพึ่งพา Maven ในโครงการของคุณ
การพึ่งพา Maven ของ OpenPDF
<dependency>
<groupId>technology.tabula</groupId>
<artifactId>tabula</artifactId>
<version>1.0.5.</version>
</dependency>
ติดตั้ง Tabula-Java ผ่าน Gradle
implementation 'technology.tabula:tabula:1.0.5' การสกัดตารางพื้นฐานผ่าน Java API
วิธีที่ง่ายที่สุดในการใช้ไลบรารี Tabula-Java แบบโอเพนซอร์สคือให้มันตรวจจับตารางทั้งหมดใน PDF โดยอัตโนมัติด้วยอัลกอริทึมการตรวจจับค่าเริ่มต้นของมัน วิธีนี้ทำงานได้ดีสำหรับ PDF ที่มีตารางชัดเจนคล้ายสเปรดชีต มาเริ่มด้วยตัวอย่างง่าย ๆ ที่ดึงตารางทั้งหมดจากเอกสาร PDF ตัวอย่างนี้แสดงขั้นตอนการทำงานพื้นฐาน เราโหลด PDF ด้วย Apache PDFBox (เอนจิน PDF พื้นฐานของ Tabula-Java) สร้างอัลกอริทึมการสกัดข้อมูล และวนผ่านหน้า
วิธีดึงตารางจาก PDF ผ่าน 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();
}
}
สกัดตารางจากพื้นที่หน้าที่ระบุ
บ่อยครั้งคุณอาจไม่ต้องการสกัดข้อมูลทั้งหมด คุณอาจต้องการข้อมูลจากตารางเฉพาะในตำแหน่งที่กำหนดบนหน้า Tabula-Java อนุญาตให้คุณกำหนด "พื้นที่เลือก" ด้วยพิกัด คลาส Rectangle กำหนดพื้นที่เฉพาะบนหน้าโดยใช้ระบบพิกัดของ PDF (โดยที่ 72 จุดเท่ากับหนึ่งนิ้ว) เมธอด getArea() จะตัดหน้าตามพื้นที่นี้ก่อนการสกัดข้อมูล ช่วยเพิ่มความแม่นยำและประสิทธิภาพเมื่อคุณต้องการข้อมูลจากตำแหน่งเฉพาะ ต่อไปนี้คือตัวอย่างที่มีประโยชน์มากซึ่งแสดงวิธีทำการดำเนินการนี้
วิธีดึงตารางจากพื้นที่หน้าที่กำหนดโดยใช้ 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();
}
}
แปลงตารางเป็น CSV ผ่าน Java API
กรณีการใช้งานทั่วไปคือการส่งออกตารางที่สกัดออกมาโดยตรงเป็นรูปแบบ CSV เพื่อใช้ในแอปพลิเคชันสเปรดชีตหรือฐานข้อมูล คลาส CSVWriter จัดการความซับซ้อนทั้งหมดของการจัดรูปแบบ CSV รวมถึงการหนีอักขระพิเศษอย่างถูกต้องและการจัดการเนื้อหาเซลล์หลายบรรทัด สิ่งนี้ทำให้การผสานรวม Tabula-Java เข้าไปในสายการประมวลผลข้อมูลที่คาดหวังอินพุตเป็น CSV เป็นเรื่องง่าย ต่อไปนี้คือตัวอย่างโค้ด Java ที่แสดงวิธีจัดการตารางอย่างมีประสิทธิภาพภายในแอปพลิเคชัน Java.
วิธีส่งออกตารางที่ดึงได้เป็นรูปแบบ CSV ผ่าน 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();
}
}
ประมวลผลหลายหน้าผ่าน Java API
PDF จำนวนมากในโลกจริงมีตารางที่กระจายอยู่หลายหน้า ไลบรารีได้รวมการสนับสนุนการประมวลผลหลายหน้าในเวลาเดียวกันและอนุญาตให้ผู้พัฒนาสามารถวนผ่านทุกหน้าของเอกสารเพื่อสกัดและรายงานตารางที่พบ การนับหน้าจะเริ่มจาก 1 (ไม่ใช่ 0) ซึ่งสอดคล้องกับวิธีที่มนุษย์ทั่วไปอ้างอิงหมายเลขหน้า.