วิธีการสกัดตารางจาก PDF ด้วย Java โดยใช้ GroupDocs.Parser
การสกัดตารางจากไฟล์ PDF เป็นความต้องการที่พบบ่อยเมื่อคุณต้องการแปลงเอกสารแบบคงที่ให้เป็นข้อมูลที่มีโครงสร้าง ในบทเรียนนี้เราจะสาธิต วิธีการสกัดตาราง จาก PDF โดยใช้ไลบรารี GroupDocs.Parser สำหรับ Java คุณจะได้เห็นว่าทำไมวิธีนี้จึงเหมาะสำหรับ java pdf table extraction วิธีการกำหนดค่าเลย์เอาต์เพื่อผลลัพธ์ที่แม่นยำ และแม้กระทั่งวิธี export pdf tables csv ในภายหลัง
คำตอบอย่างรวดเร็ว
- ไลบรารีหลักคืออะไร? GroupDocs.Parser for Java
- ฉันสามารถสกัดตารางจาก PDF ที่สแกนได้หรือไม่? ได้เฉพาะหลังจากทำ OCR; ดูหมายเหตุ “extract tables scanned pdf” ด้านล่าง
- ฉันต้องการไลเซนส์หรือไม่? ไลเซนส์ทดลองสามารถใช้งานได้สำหรับการพัฒนา; จำเป็นต้องมีไลเซนส์เต็มสำหรับการผลิต
- ต้องการเวอร์ชัน Java ใด? Java 8 or higher
- รองรับการประมวลผลแบบแบตช์หรือไม่? ใช่ – API ถูกปรับให้เหมาะกับการสกัดข้อมูลในระดับใหญ่
“how to extract tables” คืออะไรในบริบทของ PDF?
เมื่อเราพูดถึง how to extract tables เราหมายถึงกระบวนการที่ทำโดยโปรแกรมเพื่อค้นหาโครงสร้างตารางภายใน PDF, แปลความหมายของขอบเซลล์, และดึงเนื้อหาข้อความในรูปแบบที่เครื่องอ่านได้ (เช่น CSV, Excel). GroupDocs.Parser ทำหน้าที่แยกการแปลง PDF ระดับต่ำและให้โมเดลอ็อบเจกต์ที่สะอาดสำหรับการทำงาน
ทำไมต้องใช้ GroupDocs.Parser สำหรับ java pdf table extraction?
- การตรวจจับเลย์เอาต์ที่แม่นยำ – รองรับตารางหลายคอลัมน์หลายแถวด้วยพิกัดที่กำหนดเอง.
- มุ่งเน้นประสิทธิภาพ – ทำงานได้ดีกับเอกสารขนาดใหญ่และงานแบตช์.
- การผสานรวมที่ง่าย – การจัดการ dependencies แบบ Maven และ API ที่ตรงไปตรงมา.
- ขยายได้ – คุณสามารถรวมกับ GroupDocs OCR สำหรับสถานการณ์ extract tables scanned pdf
ข้อกำหนดเบื้องต้น
ก่อนที่เราจะเริ่ม, โปรดตรวจสอบว่าคุณมีสิ่งต่อไปนี้:
- Java 8+ ติดตั้งและกำหนดค่าใน IDE หรือเครื่องมือสร้างของคุณ.
- Maven สำหรับการจัดการ dependencies.
- เข้าถึงไลเซนส์ GroupDocs.Parser (ทดลองหรือเต็ม).
ไลบรารีและ dependencies ที่จำเป็น
คุณจะต้องมี:
- ไลบรารี GroupDocs.Parser สำหรับ Java (เวอร์ชัน 25.5 หรือใหม่กว่า).
- Maven ติดตั้งบนระบบของคุณสำหรับการจัดการ dependencies.
การตั้งค่าสภาพแวดล้อม
ตรวจสอบให้แน่ใจว่าสภาพแวดล้อมการพัฒนาของคุณตั้งค่าไว้ด้วยเวอร์ชัน Java ที่เข้ากันได้ (Java 8 หรือสูงกว่า).
ความรู้เบื้องต้นที่จำเป็น
ความเข้าใจพื้นฐานของการเขียนโปรแกรม Java และความคุ้นเคยกับการจัดการไฟล์ใน Java จะเป็นประโยชน์.
การตั้งค่า GroupDocs.Parser สำหรับ Java
เพื่อเริ่มใช้ GroupDocs.Parser, ผสานเข้ากับโปรเจกต์ของคุณดังต่อไปนี้:
การตั้งค่า Maven
เพิ่มการกำหนดค่าต่อไปนี้ในไฟล์ pom.xml ของคุณเพื่อรวม GroupDocs.Parser เป็น dependency:
<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 releases.
การรับไลเซนส์
เริ่มต้นด้วยการทดลองใช้งานฟรี, รับไลเซนส์ชั่วคราว, หรือซื้อไลเซนส์เต็ม. เยี่ยมชม GroupDocs licensing page สำหรับรายละเอียด.
การเริ่มต้นและตั้งค่าเบื้องต้น
เริ่มต้น 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());
}
}
}
คู่มือการใช้งาน
มาทำความเข้าใจแต่ละฟีเจอร์ที่คุณต้องเชี่ยวชาญ how to extract tables จาก PDF.
ฟีเจอร์ 1: การแยกเอกสารด้วย GroupDocs
ภาพรวม
เพื่อทำงานกับเอกสาร PDF, สร้างอินสแตนซ์ของคลาส Parser. สิ่งนี้ทำให้คุณสามารถทำหลายการดำเนินการบนเอกสารได้.
การสร้างอินสแตนซ์ 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 รองรับการสกัดตารางหรือไม่.
การตรวจสอบการสนับสนุนตาราง
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: การกำหนดค่าเลย์เอาต์ของตาราง
ภาพรวม
การกำหนดค่าเลย์เอาต์ของตารางของคุณสามารถเพิ่มความแม่นยำในการสกัดข้อมูล.
การตั้งค่าเลย์เอาต์ของตาราง
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: การตั้งค่าตัวเลือกการสกัดตาราง
ภาพรวม
ตั้งค่าตัวเลือกสำหรับการสกัดตารางด้วยการกำหนดค่าที่เฉพาะเจาะจงเพื่อปรับปรุงความแม่นยำของการสกัด.
การกำหนดค่าตัวเลือกการสกัด
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: การสกัดตารางจากเอกสาร
ภาพรวม
สกัดตารางโดยใช้ตัวเลือกที่กำหนดและประมวลผลตามที่ต้องการ.
กระบวนการสกัด
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: การวนลูปผ่านแถวและคอลัมน์ของตาราง
ภาพรวม
หลังจากสกัด, วนลูปผ่านแถวและคอลัมน์เพื่อเข้าถึงเซลล์แต่ละอัน.
วนลูปและเข้าถึงเซลล์
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 (Optical Character Recognition) เข้ามา. GroupDocs มีโมดูล OCR แยกต่างหาก, หรือคุณสามารถใช้เครื่องมือ OCR อื่นเพื่อแปลงภาพเป็นข้อความก่อนการสกัดตาราง.
2. ฉันจะจัดการกับตารางที่มีเลย์เอาต์ซับซ้อนหรือเซลล์ที่รวมกันได้อย่างไร?
คำตอบ: สำหรับเลย์เอาต์ที่ซับซ้อน, คุณสามารถปรับแต่ง TemplateTableLayout ด้วยพิกัดคอลัมน์และแถวที่เฉพาะเจาะจง, หรือปรับพารามิเตอร์การจดจำเพื่อเพิ่มความแม่นยำ. การจัดการเซลล์ที่รวมกันอาจต้องวิเคราะห์การขยายของเซลล์และทำตรรกะหลังการประมวลผลเพื่อแปลความหมายของพื้นที่ที่รวมกัน.
3. GroupDocs.Parser เหมาะกับเอกสารขนาดใหญ่หรือการประมวลผลแบบแบตช์หรือไม่?
คำตอบ: ใช่, GroupDocs.Parser ถูกปรับให้เหมาะกับการประมวลผลแบบแบตช์และสามารถจัดการเอกสารขนาดใหญ่ได้อย่างมีประสิทธิภาพ. การจัดการทรัพยากรอย่างเหมาะสมและการแบ่งงานประมวลผลเป็นชิ้นส่วนสามารถเพิ่มประสิทธิภาพได้อีก.
4. ฉันสามารถส่งออกข้อมูลตารางที่สกัดเป็นรูปแบบเช่น CSV หรือ Excel ได้หรือไม่?
คำตอบ: แม้ว่า GroupDocs.Parser จะเน้นการสกัดข้อมูล, มันจะให้ข้อมูลดิบ (แถวและเซลล์). คุณสามารถส่งออกข้อมูลนี้ได้ง่ายโดยใช้ไลบรารี Java เช่น Apache POI (สำหรับ Excel) หรือ OpenCSV (สำหรับไฟล์ CSV). นี่คือกรณีการใช้ export pdf tables csv.
5. มีการสนับสนุนการสกัดตารางจากหลายหน้าไหม?
คำตอบ: ใช่, เมื่อคุณใช้ parser.getTables() พร้อมตัวเลือกหน้า, มันสามารถสกัดตารางจากหลายหน้าได้. คุณสามารถระบุช่วงหน้า หรือประมวลผลทุกหน้าแบบวนลูปเพื่อรวบรวมข้อมูลตารางทั้งหมด.
สรุป
การสกัดตารางจาก PDF เป็นขั้นตอนสำคัญในการทำให้กระบวนการประมวลผลข้อมูลเอกสารเป็นอัตโนมัติ, และ GroupDocs.Parser สำหรับ Java ทำให้ภารกิจนี้ง่ายขึ้นกว่าที่เคย. ด้วยการสร้างอินสแตนซ์ parser, ตรวจสอบการสนับสนุนตาราง, กำหนดค่าเลย์เอาต์, และวนลูปผ่านข้อมูลที่สกัด, นักพัฒนาสามารถดึงข้อมูลที่มีโครงสร้างจากเอกสาร PDF ที่ซับซ้อนได้อย่างมีประสิทธิภาพ. ชุดเครื่องมือนี้ยืดหยุ่นพอที่จะรองรับสถานการณ์หลากหลาย—from invoice automation to large‑scale data analyses—and integrates seamlessly within Java applications. With a bit of setup and customization, you’ll turn static PDFs into actionable data with precision and ease.
อัปเดตล่าสุด: 2026-02-09
ทดสอบด้วย: GroupDocs.Parser 25.5 (Java)
ผู้เขียน: GroupDocs