วิธีทำการสกัดตาราง PDF ด้วย Java ด้วย GroupDocs.Parser
การสกัดตารางจากไฟล์ PDF เป็นความต้องการที่พบบ่อยเมื่อคุณต้องการแปลงเอกสารแบบคงที่ให้เป็นข้อมูลที่มีโครงสร้าง ในบทแนะนำนี้คุณจะได้เรียนรู้ วิธีสกัดตาราง จาก PDF ด้วยไลบรารี GroupDocs.Parser สำหรับ Java เราจะครอบคลุมการตั้งค่าสภาพแวดล้อม, การกำหนดค่าเลย์เอาต์ของตาราง, และ การส่งออกตาราง PDF เป็น CSV เพื่อการประมวลผลต่อไป เมื่อเสร็จสิ้นคุณจะสามารถรวมการสกัดตารางที่มีความทนทานเข้าไปในสายงานข้อมูลที่ใช้ Java ใดก็ได้
คำตอบอย่างรวดเร็ว
- ไลบรารีหลักคืออะไร? GroupDocs.Parser for Java
- ฉันสามารถสกัดตารางจาก PDF สแกนได้หรือไม่? ทำได้หลังจาก OCR; ดูหมายเหตุ “extract tables scanned pdf” ด้านล่าง
- ฉันต้องการใบอนุญาตหรือไม่? ใบอนุญาตทดลองทำงานได้สำหรับการพัฒนา; จำเป็นต้องมีใบอนุญาตเต็มสำหรับการผลิต
- ต้องการเวอร์ชัน Java ใด? Java 8 หรือสูงกว่า
- การประมวลผลเป็นชุดได้รับการสนับสนุนหรือไม่? ใช่ – API ถูกปรับให้เหมาะกับการสกัดในระดับใหญ่
การสกัดตาราง PDF ด้วย Java คืออะไร?
การสกัดตาราง PDF ด้วย Java คือกระบวนการที่โปรแกรมค้นหาโครงสร้างตารางภายใน PDF, แปลความหมายขอบเซลล์, และดึงข้อความออกมาในรูปแบบที่เครื่องอ่านได้ เช่น CSV หรือ Excel สิ่งนี้ทำให้สามารถทำการวิเคราะห์ต่อเนื่อง, รายงาน, หรืองานย้ายข้อมูลโดยไม่ต้องคัดลอก‑วางด้วยมือ
ทำไมต้องใช้ GroupDocs.Parser สำหรับการสกัดตาราง PDF ด้วย Java?
GroupDocs.Parser ให้ การตรวจจับเลย์เอาต์ที่แม่นยำสำหรับรูปแบบอินพุตและเอาต์พุตกว่า 50 + รูปแบบ และสามารถประมวลผล PDF หลายร้อยหน้าโดยคงการใช้หน่วยความจำต่ำกว่า 200 MB รองรับงานแบบแบตช์, มีการพึ่งพา Maven ที่ง่าย, และรวมเข้ากับ GroupDocs OCR อย่างไร้รอยต่อสำหรับกรณีเอกสารสแกน
ข้อกำหนดเบื้องต้น
ก่อนเริ่ม, โปรดตรวจสอบว่าคุณมีสิ่งต่อไปนี้:
- Java 8+ ติดตั้งและกำหนดค่าใน IDE หรือเครื่องมือสร้างของคุณ
- Maven สำหรับการจัดการการพึ่งพา
- การเข้าถึง ใบอนุญาต GroupDocs.Parser (ทดลองหรือเต็ม)
ไลบรารีและการพึ่งพาที่จำเป็น
คุณจะต้องมี:
- ไลบรารี GroupDocs.Parser for Java (เวอร์ชัน 25.5 หรือใหม่กว่า)
- Maven ติดตั้งบนระบบของคุณสำหรับการจัดการการพึ่งพา
การตั้งค่าสภาพแวดล้อม
ตรวจสอบให้แน่ใจว่าสภาพแวดล้อมการพัฒนาของคุณตั้งค่าไว้ด้วยเวอร์ชัน Java ที่เข้ากันได้ (Java 8 หรือสูงกว่า)
ความรู้เบื้องต้นที่จำเป็น
ความเข้าใจพื้นฐานของการเขียนโปรแกรม Java และความคุ้นเคยกับการจัดการไฟล์ใน Java จะเป็นประโยชน์
การตั้งค่า GroupDocs.Parser สำหรับ Java
เพื่อเริ่มใช้ GroupDocs.Parser ให้รวมเข้ากับโปรเจกต์ของคุณดังต่อไปนี้:
การตั้งค่า Maven
เพิ่มการกำหนดค่าต่อไปนี้ในไฟล์ pom.xml ของคุณเพื่อรวม GroupDocs.Parser เป็นการพึ่งพา:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/parser/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-parser</artifactId>
<version>25.5</version>
</dependency>
</dependencies>
ดาวน์โหลดโดยตรง
หรือคุณสามารถดาวน์โหลดเวอร์ชันล่าสุดของ GroupDocs.Parser สำหรับ Java จาก การปล่อยของ GroupDocs
การรับใบอนุญาต
เริ่มต้นด้วยการทดลองฟรี, รับใบอนุญาตชั่วคราว, หรือซื้อใบอนุญาตเต็ม เยี่ยมชม หน้าการให้ใบอนุญาตของ GroupDocs สำหรับรายละเอียด
การเริ่มต้นและตั้งค่าเบื้องต้น
เริ่มต้น GroupDocs.Parser ในแอปพลิเคชัน Java ของคุณดังนี้:
import com.groupdocs.parser.Parser;
public class DocumentParser {
public static void main(String[] args) {
final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
try (Parser parser = new Parser(filePath)) {
// Ready to perform operations on the document
} catch (Exception e) {
System.err.println("Error creating Parser instance: " + e.getMessage());
}
}
}
คู่มือการใช้งาน
เราจะเดินผ่านคุณลักษณะแต่ละอย่างที่คุณต้องเชี่ยวชาญ วิธีสกัดตาราง จาก PDF
ฟีเจอร์ 1: การแยกเอกสารด้วย GroupDocs
ภาพรวม
เพื่อทำงานกับเอกสาร PDF, สร้างอินสแตนซ์ของคลาส ParserParser เป็นคลาสจุดเริ่มต้นสำหรับการอ่านเนื้อหา PDF ใน GroupDocs.Parser ซึ่งเปิดใช้งานการดำเนินการต่าง ๆ บนเอกสาร
การสร้างอินสแตนซ์ของ parser
คลาส Parser เป็นจุดเริ่มต้นสำหรับการอ่านเนื้อหา PDF ใน GroupDocs.Parser มันโหลดเอกสารเข้าสู่หน่วยความจำและเปิดเผยเมธอดสำหรับการสกัดข้อความ, ตาราง, และโครงสร้างอื่น ๆ
import com.groupdocs.parser.Parser;
public class CreateParserInstance {
public static void main(String[] args) {
final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
try (Parser parser = new Parser(filePath)) {
// Document is ready for operations
} catch (Exception e) {
System.err.println("Error creating Parser instance: " + e.getMessage());
}
}
}
ฟีเจอร์ 2: การตรวจสอบความสามารถในการสกัดตาราง
ภาพรวม
ก่อนการสกัดตาราง, ตรวจสอบว่า PDF รองรับการสกัดตารางหรือไม่
การตรวจสอบการสนับสนุนตาราง
เมธอด hasTables() คืนค่า boolean ที่บ่งบอกว่า PDF ที่โหลดมีข้อมูลตารางที่ตรวจจับได้หรือไม่hasTables() ตรวจสอบว่ามีตารางใด ๆ ในเอกสารหรือไม่
import com.groupdocs.parser.Parser;
public class CheckTableSupport {
public static void main(String[] args) {
final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
try (Parser parser = new Parser(filePath)) {
boolean isTablesSupported = parser.getFeatures().isTables();
if (!isTablesSupported) {
System.out.println("Document doesn't support tables extraction.");
}
} catch (Exception e) {
System.err.println("Error checking table extraction capability: " + e.getMessage());
}
}
}
ฟีเจอร์ 3: การกำหนดค่าเลย์เอาต์ของตาราง
ภาพรวม
การกำหนดค่าเลย์เอาต์ของตารางสามารถเพิ่มความแม่นยำในการสกัดข้อมูลได้
การตั้งค่าเลย์เอาต์ของตารางTemplateTableLayout กำหนดความกว้างของคอลัมน์และความสูงของแถวที่คาดหวังTemplateTableLayout ระบุความกว้างคอลัมน์และความสูงแถวที่กำหนดเองสำหรับการตรวจจับตาราง การปรับค่าต่าง ๆ นี้ช่วยให้เอนจินจัดตำแหน่งขอบเซลล์ให้ตรงกับกริดภาพ
import com.groupdocs.parser.templates.TemplateTableLayout;
import java.util.Arrays;
public class ConfigureTableLayout {
public static void main(String[] args) {
final double[] columnWidths = {50.0, 95.0, 275.0, 415.0, 485.0, 545.0};
final double[] rowHeights = {325.0, 340.0, 365.0, 395.0};
TemplateTableLayout layout = new TemplateTableLayout(
Arrays.asList(columnWidths),
Arrays.asList(rowHeights));
}
}
ฟีเจอร์ 4: การตั้งค่าตัวเลือกการสกัดตาราง
ภาพรวม
ตั้งค่าตัวเลือกสำหรับการสกัดตารางด้วยการกำหนดค่าที่เฉพาะเจาะจงเพื่อปรับปรุงความแม่นยำ
การกำหนดค่าตัวเลือกการสกัดTableExtractionOptions ให้คุณระบุว่าจะรวมแถวหัวตาราง, รวมเซลล์, หรือละเว้นแถวว่างหรือไม่TableExtractionOptions กำหนดพฤติกรรมการสกัดเช่นการรวมหัวตารางหรือการรวมเซลล์
import com.groupdocs.parser.options.PageTableAreaOptions;
import com.groupdocs.parser.templates.TemplateTableLayout;
public class SetExtractionOptions {
public static void main(String[] args) {
TemplateTableLayout layout = new TemplateTableLayout(
Arrays.asList(new Double[]{50.0, 95.0, 275.0, 415.0, 485.0, 545.0}),
Arrays.asList(new Double[]{325.0, 340.0, 365.0, 395.0}));
PageTableAreaOptions options = new PageTableAreaOptions(layout);
}
}
ฟีเจอร์ 5: การสกัดตารางจากเอกสาร
ภาพรวม
สกัดตารางโดยใช้ตัวเลือกที่กำหนดและประมวลผลตามต้องการ
กระบวนการสกัด
เมธอด getTables() คืนคอลเลกชันของอ็อบเจกต์ Table, แต่ละอ็อบเจกต์แทนตารางที่ตรวจจับบนหน้าที่ร้องขอgetTables() ดึงตารางที่ตรวจจับทั้งหมดจากเอกสารTable แทนตารางที่สกัดหนึ่งตารางพร้อมแถวและเซลล์
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.options.PageTableAreaOptions;
import com.groupdocs.parser.data.PageTableArea;
public class ExtractTables {
public static void main(String[] args) {
final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
PageTableAreaOptions options = new PageTableAreaOptions(/* layout from previous feature */);
try (Parser parser = new Parser(filePath)) {
Iterable<PageTableArea> tables = parser.getTables(options);
for (PageTableArea table : tables) {
// Process each table as needed
}
} catch (Exception e) {
System.err.println("Error extracting tables: " + e.getMessage());
}
}
}
ฟีเจอร์ 6: การวนลูปแถวและคอลัมน์ของตาราง
ภาพรวม
หลังการสกัด, วนลูปแถวและคอลัมน์เพื่อเข้าถึงเซลล์แต่ละเซลล์
วนลูปและเข้าถึงเซลล์
แต่ละ Table มีเมธอด getRows() และแต่ละ Row มีเมธอด getCells() คุณสามารถอ่านข้อความของเซลล์ผ่าน getText() และเขียนลง CSV หรือรูปแบบอื่น ๆRow แทนแถวเดียวภายใน TablegetRows() คืนรายการแถวในตารางgetCells() คืนเซลล์ของแถวหนึ่งแถวgetText() ดึงเนื้อหาข้อความของเซลล์
import com.groupdocs.parser.data.PageTableArea;
import com.groupdocs.parser.data.PageTableAreaCell;
public class IterateTables {
public static void main(String[] args) {
PageTableArea table = /* reference to a specific PageTableArea object */;
for (int row = 0; row < table.getRowCount(); row++) {
for (int column = 0; column < table.getColumnCount(); column++) {
PageTableAreaCell cell = table.getCell(row, column);
if (cell != null) {
// Process the cell text as needed
}
}
}
}
}
ปัญหาทั่วไปและวิธีแก้
| ปัญหา | สาเหตุ | เคล็ดลับ |
|---|---|---|
| ไม่มีตารางที่คืนค่า | PDF เป็นแบบสแกน (ภาพ) | รัน OCR ก่อนหรือใช้ GroupDocs OCR ก่อนทำการแยก |
| การจัดแนวคอลัมน์ไม่ถูกต้อง | พิกัดเลย์เอาต์ผิด | ปรับค่าของ TemplateTableLayout ให้ตรงกับกริดภาพ |
| การใช้หน่วยความจำพุ่งสูงใน PDF ขนาดใหญ่ | Parser โหลดเอกสารทั้งหมดเข้าสู่หน่วยความจำ | ประมวลผลหน้าเป็นชุดและปิด Parser หลังจากแต่ละชุด |
คำถามที่พบบ่อย
1. ฉันสามารถสกัดตารางจาก PDF สแกนหรือเฉพาะ PDF ดิจิทัลเท่านั้น?
คำตอบ: GroupDocs.Parser ทำงานหลักกับ PDF ดิจิทัลที่เลือกข้อความได้ สำหรับ PDF สแกนคุณต้องรัน OCR ก่อน—ไม่ว่าจะด้วย GroupDocs OCR หรือเครื่องมือ OCR อื่น—เพื่อให้ข้อความสามารถค้นหาได้ก่อนสกัดตาราง
2. ฉันจะจัดการกับตารางที่มีเลย์เอาต์ซับซ้อนหรือเซลล์ที่รวมกันอย่างไร?
คำตอบ: ปรับ TemplateTableLayout ด้วยพิกัดคอลัมน์และแถวที่แม่นยำ, หรือเปิดใช้ฟลัก mergeCells ใน TableExtractionOptions การประมวลผลต่ออาจจำเป็นเพื่อแปลความหมายของพื้นที่ที่รวมกันอย่างถูกต้อง
3. GroupDocs.Parser เหมาะกับเอกสารขนาดใหญ่หรือการประมวลผลเป็นชุดหรือไม่?
คำตอบ: ใช่. ไลบรารีออกแบบมาสำหรับสถานการณ์ที่ต้องประมวลผลปริมาณมากและสามารถจัดการ PDF หลายร้อยหน้าโดยคงการใช้หน่วยความจำน้อย ใช้ตัวเลือกช่วงหน้าและทำลายอินสแตนซ์ Parser หลังจากแต่ละชุดเพื่อเพิ่มประสิทธิภาพ
4. ฉันสามารถส่งออกข้อมูลตารางที่สกัดเป็นรูปแบบเช่น CSV หรือ Excel ได้หรือไม่?
คำตอบ: GroupDocs.Parser คืนข้อมูลตารางดิบ (แถวและเซลล์) คุณสามารถเขียนข้อมูลนี้เป็น CSV ด้วย OpenCSV หรือเป็น Excel ด้วย Apache POI ซึ่งตอบสนองการ export pdf tables csv โดยไม่ต้องมีใบอนุญาตเพิ่มเติม
5. มีการสนับสนุนการสกัดตารางจากหลายหน้าในครั้งเดียวหรือไม่?
คำตอบ: แน่นอน. เรียก parser.getTables(pageOptions) พร้อมช่วงหน้าหรือวนลูปทุกหน้า API จะรวมตารางจากหลายหน้าให้คุณสร้างชุดข้อมูลรวมเดียว
สรุป
การสกัดตาราง PDF ด้วย Java กลายเป็นเรื่องง่ายด้วย GroupDocs.Parser โดยการเริ่มต้น Parser, ยืนยันการสนับสนุนตาราง, กำหนดค่าเลย์เอาต์และตัวเลือกการสกัด, และวนลูปผ่านอ็อบเจกต์ Table ที่ได้ คุณสามารถแปลง PDF คงที่เป็นไฟล์ CSV หรือ Excel ที่มีโครงสร้าง ไลบรารีออกแบบเพื่อประสิทธิภาพ, รองรับกว่า 50 รูปแบบ, และรวม OCR อย่างไร้รอยต่อ ทำให้เป็นตัวเลือกที่เหมาะสำหรับการอัตโนมัติใบแจ้งหนี้, การย้ายข้อมูล, และสายงานวิเคราะห์ขนาดใหญ่ ด้วยขั้นตอนที่อธิบายข้างต้น คุณพร้อมที่จะฝังการสกัดตารางที่เชื่อถือได้เข้าไปในแอปพลิเคชัน Java ใดก็ได้
อัปเดตล่าสุด: 2026-09-17
ทดสอบด้วย: GroupDocs.Parser 25.5 (Java)
ผู้เขียน: GroupDocs