วิธีทำการสกัดตาราง PDF ด้วย Java ด้วย GroupDocs.Parser

ในบทแนะนำที่ครอบคลุมนี้ คุณจะได้ค้นพบวิธีการทำ java pdf table extraction ด้วยไลบรารี GroupDocs.Parser ไม่ว่าคุณจะต้องการดึงตารางทางการเงิน รายการบิล หรือข้อมูลการวิจัย คู่มือนี้จะพาคุณผ่านการตรวจสอบการสนับสนุนเอกสาร การกำหนดรูปแบบตารางที่แม่นยำ และการสกัดข้อมูลอย่างมีประสิทธิภาพสำหรับการประมวลผลต่อใน Java

คำตอบด่วน

  • GroupDocs.Parser สามารถอ่านตารางจาก PDF ได้หรือไม่? ใช่ – มันให้การสกัดตารางแบบเนทีฟสำหรับ PDF และหลายรูปแบบอื่น ๆ.
  • ฉันต้องการไลเซนส์สำหรับการพัฒนาหรือไม่? คุณสามารถเริ่มต้นด้วยการทดลองใช้งานฟรี; จำเป็นต้องมีไลเซนส์สำหรับการใช้งานในสภาพแวดล้อมการผลิต.
  • ต้องการเวอร์ชัน Java ใด? JDK 8 หรือสูงกว่า.
  • Maven เป็นวิธีเดียวในการเพิ่มไลบรารีหรือไม่? ไม่ – คุณสามารถดาวน์โหลดไฟล์ JAR โดยตรงได้เช่นกัน.
  • วิธีนี้ทำงานกับไฟล์ที่มีการป้องกันด้วยรหัสผ่านหรือไม่? ใช่ เพียงแค่ส่งรหัสผ่านเมื่อสร้างอินสแตนซ์ Parser.

java pdf table extraction คืออะไร?

Java pdf table extraction คือกระบวนการอ่านโครงสร้างตารางที่ฝังอยู่ในไฟล์ PDF (หรือ Word) อย่างโปรแกรมโดยใช้โค้ด Java GroupDocs.Parser ทำหน้าที่แยกการแปลงระดับต่ำและส่งคืนแต่ละเซลล์เป็นข้อความธรรมดา พร้อมสำหรับการวิเคราะห์หรือการนำเข้าฐานข้อมูล รองรับทั้ง PDF ที่สแกนและ PDF แบบเนทีฟ จัดการกับเซลล์ที่รวมกันและตารางหลายหน้าโดยไม่ต้องตั้งค่าเพิ่มเติม

ทำไมต้องใช้ GroupDocs.Parser สำหรับการสกัดตาราง?

GroupDocs.Parser รองรับ รูปแบบอินพุตและเอาต์พุตกว่า 50 ประเภท—รวมถึง PDF, DOCX, PPTX, และ HTML—ทำให้คุณสามารถใช้ API เดียวกันกับหลายประเภทเอกสาร การสกัดแบบอิงเลย์เอาต์ให้ ความแม่นยำสูงถึง 98 % กับตารางที่ซับซ้อน และไลบรารีสามารถประมวลผล PDF หลายร้อยหน้าโดยใช้สตรีมมิ่งเพื่อให้การใช้หน่วยความจำต่ำกว่า 200 MB

ข้อกำหนดเบื้องต้น

  • ติดตั้ง Java Development Kit (JDK) 8+
  • Maven (หรือการจัดการ JAR ด้วยตนเอง) สำหรับการจัดการ dependencies
  • มีความคุ้นเคยพื้นฐานกับไวยากรณ์ Java และแนวคิดเชิงวัตถุ

การตั้งค่า GroupDocs.Parser สำหรับ Java

การตั้งค่า Maven

หากคุณจัดการ dependencies ด้วย Maven ให้เพิ่ม repository และ dependency ลงในไฟล์ pom.xml ของคุณ:

<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 for Java releases. ทำตามคำแนะนำการติดตั้งที่ให้ไว้บนเว็บไซต์ของพวกเขา

การรับไลเซนส์

เพื่อเข้าถึงคุณสมบัติทั้งหมดของ GroupDocs.Parser พิจารณาได้รับไลเซนส์ คุณสามารถเริ่มต้นด้วยการทดลองใช้งานฟรีหรือรับไลเซนส์ชั่วคราวโดยทำตามขั้นตอนบน purchase page

เมื่อทุกอย่างตั้งค่าเรียบร้อยแล้ว เรามาเริ่มการทำ java pdf table extraction จริงกัน

คู่มือการดำเนินการ

การตรวจสอบการสนับสนุนเอกสารสำหรับการสกัดตาราง

เอกสารนี้รองรับการสกัดตารางหรือไม่?
คุณต้องยืนยันว่าไฟล์เป้าหมายสามารถประมวลผลตารางได้ GroupDocs.Parser มีฟีเจอร์ฟล็อกที่บอกว่าการสกัดตารางพร้อมใช้งานสำหรับรูปแบบที่กำหนดหรือไม่ เพื่อป้องกันข้อผิดพลาดที่ไม่จำเป็นในระหว่างรันไทม์

  • การเริ่มต้น Parser: คลาส Parser เป็นจุดเริ่มต้นที่โหลดเอกสารเข้าสู่หน่วยความจำ
  • การตรวจสอบฟีเจอร์: เรียก parser.getFeatures().isTables(); จะคืนค่า true เมื่อการสกัดตารางได้รับการสนับสนุน
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.IDocumentInfo;

public class TableExtractionCheck {
    public static void main(String[] args) {
        try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY/your_document.pdf")) {
            // Check if the document supports table extraction.
            if (!parser.getFeatures().isTables()) {
                System.out.println("Document doesn't support table extraction.");
            } else {
                System.out.println("Document supports table extraction. Proceeding...");
                extractTablesFromDocument();
            }
        }
    }
}

การสร้างเลย์เอาต์ตารางสำหรับการสกัด

คุณกำหนดเลย์เอาต์ตารางที่แม่นยำอย่างไร?
เลย์เอาต์บอกให้เอนจินรู้ว่าคอลัมน์และแถวเริ่มต้นที่ตำแหน่งใด ซึ่งสำคัญสำหรับ PDF ที่ซับซ้อนที่การตรวจจับอัตโนมัติอาจพลาดเซลล์ที่รวมกันหรือช่องว่างที่ไม่สม่ำเสมอ

  • พิกัดคอลัมน์และแถว: ระบุตำแหน่งเริ่มต้น/สิ้นสุดของแกน X สำหรับแต่ละคอลัมน์และตำแหน่งแกน Y สำหรับแต่ละแถว
  • TemplateTableLayout: อ็อบเจ็กต์นี้เก็บแผนที่พิกัดและจะถูกส่งต่อไปยังการเรียกสกัดในภายหลัง
import com.groupdocs.parser.templates.TemplateTableLayout;

public class TableExtractionSetup {
    public static TemplateTableLayout createTemplateTableLayout() {
        return new TemplateTableLayout(
            java.util.Arrays.asList(new Double[]{50.0, 95.0, 275.0, 415.0, 485.0, 545.0}),
            java.util.Arrays.asList(new Double[]{325.0, 340.0, 365.0, 395.0})
        );
    }
}

การสกัดตารางจากหน้าของเอกสาร

ขั้นตอนการสกัดตารางเป็นอย่างไร?
หลังจากยืนยันการสนับสนุนและกำหนดเลย์เอาต์แล้ว คุณจะวนลูปผ่านแต่ละหน้า ขอข้อมูลตาราง และเก็บผลลัพธ์ไว้ในคอลเลกชันของ Java เพื่อการประมวลผลต่อไป

  • การวนลูปหน้า: ใช้ parser.getPages() เพื่อจัดการกับ PDF หลายหน้า
  • การสกัดตาราง: ใช้ parser.getTables(pageIndex, options) โดย options จะรวมเลย์เอาต์ที่กำหนดไว้ก่อนหน้า
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.PageTableArea;
import com.groupdocs.parser.data.IDocumentInfo;
import com.groupdocs.parser.options.PageTableAreaOptions;

public class TableExtractionProcess {
    public static void extractTablesFromDocument() {
        try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY/your_document.pdf")) {
            IDocumentInfo documentInfo = parser.getDocumentInfo();
            if (documentInfo.getPageCount() > 0) {
                PageTableAreaOptions options = new PageTableAreaOptions(TableExtractionSetup.createTemplateTableLayout());

                for (int pageIndex = 0; pageIndex < documentInfo.getPageCount(); pageIndex++) {
                    Iterable<PageTableArea> tables = parser.getTables(pageIndex, options);
                    
                    for (PageTableArea table : tables) {
                        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) {
                                    System.out.print(cell.getText() + " | ");
                                }
                            }
                            System.out.println();
                        }
                        System.out.println();
                    }
                }
            } else {
                System.out.println("Document has no pages.");
            }
        }
    }
}

การประยุกต์ใช้จริงของ java pdf table extraction

การนำการสกัดตารางไปใช้สามารถเป็นประโยชน์ในหลายสถานการณ์จริง:

  1. การวิเคราะห์ข้อมูล: ดึงข้อมูลโครงสร้างจากรายงานการเงินหรือบทความวิทยาศาสตร์เพื่อการวิเคราะห์ต่อไป
  2. การประมวลผลใบแจ้งหนี้: อัตโนมัติการสกัดรายการจากใบแจ้งหนี้และป้อนข้อมูลเข้าสู่ระบบบัญชี
  3. การจัดการเอกสาร: ทำดัชนีข้อมูลตารางที่สกัดพร้อมกับเนื้อหาเต็มข้อความเพื่อปรับปรุงการค้นหาในโซลูชัน DMS

การพิจารณาด้านประสิทธิภาพ

เพื่อให้ได้ประสิทธิภาพสูงสุดเมื่อใช้ GroupDocs.Parser:

  • เพิ่มประสิทธิภาพการใช้หน่วยความจำ: จัดสรร heap ที่เพียงพอ (เช่น -Xmx2g) สำหรับ PDF ขนาดใหญ่
  • การประมวลผลเป็นชุด: รวมหลายเอกสารในงานเดียวเพื่อลดค่าใช้จ่ายการอุ่น JVM
  • เลย์เอาต์ที่มีประสิทธิภาพ: การกำหนดพิกัดที่แม่นยำช่วยลดพื้นที่สแกน ทำให้การสกัดเร็วขึ้นสูงสุดถึง 30 %

ปัญหาทั่วไปและวิธีแก้

ปัญหาสาเหตุวิธีแก้
ไม่มีตารางที่ส่งคืนพิกัดเลย์เอาต์ไม่ตรงกับตำแหน่งตารางจริงตรวจสอบพิกัดคอลัมน์/แถวกับ PDF โดยใช้ไม้บรรทัดของโปรแกรมดูไฟล์
ข้อผิดพลาดหน่วยความจำไม่พอเอกสารขนาดใหญ่มากถูกโหลดทั้งหมดใช้โหมดสตรีมมิ่งหรือเพิ่ม heap ของ JVM (-Xmx)
เซลล์ว่างตารางมีเซลล์ที่รวมกันซึ่งไม่ได้ครอบคลุมโดยเลย์เอาต์ปรับเลย์เอาต์ให้รวมขอบเขตของเซลล์ที่รวมกัน หรือใช้การสกัดแบบเริ่มต้นโดยไม่มีเลย์เอาต์

คำถามที่พบบ่อย

Q: สามารถสกัดตารางจากรูปแบบเอกสารอื่นได้หรือไม่?
A: ใช่, GroupDocs.Parser รองรับ DOCX, PPTX, TXT และรูปแบบอื่น ๆ อีกมากมาย ดูเอกสารอย่างเป็นทางการเพื่อรายการเต็ม

Q: จำเป็นต้องมีไลเซนส์สำหรับการสร้างรุ่นพัฒนาไหม?
A: ไลเซนส์ทดลองใช้งานฟรีเพียงพอสำหรับการพัฒนาและทดสอบ ไลเซนส์เชิงพาณิชย์จำเป็นสำหรับการใช้งานในสภาพแวดล้อมการผลิต

Q: GroupDocs.Parser จัดการกับ PDF ที่ป้องกันด้วยรหัสผ่านอย่างไร?
A: ส่งรหัสผ่านเมื่อสร้างอ็อบเจ็กต์ Parser เช่น new Parser(filePath, password) ไลบรารีจะถอดรหัสไฟล์โดยอัตโนมัติ

Q: สามารถสกัดตารางโดยไม่กำหนดเลย์เอาต์ได้หรือไม่?
A: ได้, คุณสามารถเรียก parser.getTables(pageIndex) โดยไม่มี options แต่การสกัดแบบอิงเลย์เอาต์ให้ความแม่นยำสูงกว่าสำหรับตารางที่ซับซ้อน

Q: เวอร์ชันของ GroupDocs.Parser ที่เข้ากันได้กับ Java 11 คืออะไร?
A: เวอร์ชัน 25.5 (ใช้ในคู่มือนี้) รองรับ Java 8‑17 อย่างเต็มที่ รวมถึง Java 11

สรุป

คุณตอนนี้มีวิธีการที่พร้อมใช้งานในระดับการผลิตสำหรับ java pdf table extraction ด้วย GroupDocs.Parser โดยการตรวจสอบความสามารถของเอกสาร, กำหนด TemplateTableLayout แบบกำหนดเอง, และวนลูปผ่านหน้า คุณสามารถดึงข้อมูลโครงสร้างได้อย่างเชื่อถือได้สำหรับกระบวนการทำงานต่อใน Java ใด ๆ

ขั้นตอนต่อไป

  • สำรวจคุณลักษณะขั้นสูงเช่น table merging, cell formatting, และ export to CSV ใน documentation.
  • ทดลองกำหนดค่าเลย์เอาต์ที่แตกต่างกันเพื่อจัดการกับการออกแบบตารางที่หลากหลายในคอลเลกชันเอกสารของคุณ

อัปเดตล่าสุด: 2026-09-17
ทดสอบด้วย: GroupDocs.Parser 25.5 for Java
ผู้เขียน: GroupDocs

บทแนะนำที่เกี่ยวข้อง