Cách thực hiện trích xuất bảng PDF bằng Java với GroupDocs.Parser
Trong hướng dẫn chi tiết này, bạn sẽ khám phá cách thực hiện java pdf table extraction bằng thư viện GroupDocs.Parser. Dù bạn cần lấy các bảng tài chính, mục hàng trên hoá đơn, hay dữ liệu nghiên cứu, hướng dẫn này sẽ chỉ cho bạn cách kiểm tra hỗ trợ tài liệu, định nghĩa bố cục bảng chính xác, và trích xuất dữ liệu một cách hiệu quả cho quá trình xử lý Java tiếp theo.
Câu trả lời nhanh
- GroupDocs.Parser có thể đọc bảng từ PDF không? Có – nó cung cấp khả năng trích xuất bảng gốc cho PDF và nhiều định dạng khác.
- Có cần giấy phép cho việc phát triển không? Bạn có thể bắt đầu với bản dùng thử miễn phí; giấy phép bắt buộc đối với môi trường sản xuất.
- Yêu cầu phiên bản Java nào? JDK 8 trở lên.
- Maven có phải là cách duy nhất để thêm thư viện không? Không – bạn cũng có thể tải JAR trực tiếp.
- Có hoạt động với các tệp được bảo vệ bằng mật khẩu không? Có, chỉ cần cung cấp mật khẩu khi tạo thể hiện
Parser.
Java pdf table extraction là gì?
Java pdf table extraction là quá trình đọc chương trình các cấu trúc bảng được nhúng trong tệp PDF (hoặc Word) bằng mã Java. GroupDocs.Parser trừu tượng hoá việc phân tích cấp thấp và trả về mỗi ô dưới dạng văn bản thuần, sẵn sàng cho phân tích hoặc nhập vào cơ sở dữ liệu. Nó hỗ trợ cả PDF đã quét và PDF gốc, xử lý các ô hợp nhất và bảng đa trang mà không cần cấu hình thêm.
Tại sao nên dùng GroupDocs.Parser để trích xuất bảng?
GroupDocs.Parser hỗ trợ hơn 50 định dạng đầu vào và đầu ra—bao gồm PDF, DOCX, PPTX và HTML—do đó bạn có thể tái sử dụng cùng một API cho nhiều loại tài liệu. Phương pháp trích xuất dựa trên bố cục cho độ chính xác lên tới 98 % trên các bảng phức tạp, và thư viện xử lý các PDF hàng trăm trang bằng streaming để giữ mức sử dụng bộ nhớ dưới 200 MB.
Các yêu cầu trước
- Java Development Kit (JDK) 8+ đã được cài đặt.
- Maven (hoặc quản lý JAR thủ công) để quản lý phụ thuộc.
- Kiến thức cơ bản về cú pháp Java và các khái niệm hướng đối tượng.
Cài đặt GroupDocs.Parser cho Java
Cấu hình Maven
Nếu bạn quản lý phụ thuộc bằng Maven, thêm kho và phụ thuộc vào file pom.xml của bạn:
<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>
Tải trực tiếp
Hoặc, tải phiên bản mới nhất trực tiếp từ GroupDocs.Parser for Java releases. Thực hiện theo hướng dẫn cài đặt được cung cấp trên trang web của họ.
Mua giấy phép
Để truy cập đầy đủ các tính năng của GroupDocs.Parser, hãy cân nhắc mua giấy phép. Bạn có thể bắt đầu với bản dùng thử miễn phí hoặc nhận giấy phép tạm thời bằng cách làm theo các bước trên trang mua hàng.
Sau khi mọi thứ đã được thiết lập, chúng ta sẽ chuyển sang phần thực hiện java pdf table extraction.
Hướng dẫn triển khai
Kiểm tra tài liệu có hỗ trợ trích xuất bảng không
Tài liệu này có hỗ trợ trích xuất bảng không?
Bạn cần xác nhận rằng tệp mục tiêu có thể được xử lý để trích xuất bảng. GroupDocs.Parser cung cấp một cờ tính năng cho biết liệu trích xuất bảng có khả dụng cho định dạng đó hay không, giúp tránh lỗi không cần thiết tại thời gian chạy.
- Khởi tạo Parser: Lớp
Parserlà điểm vào để tải tài liệu vào bộ nhớ. - Kiểm tra tính năng: Gọi
parser.getFeatures().isTables(); nó sẽ trả vềtruekhi trích xuất bảng được hỗ trợ.
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();
}
}
}
}
Tạo bố cục bảng cho việc trích xuất
Làm thế nào để định nghĩa một bố cục bảng chính xác?
Bố cục cho engine biết vị trí bắt đầu và kết thúc của các cột và hàng, điều này rất quan trọng đối với các PDF phức tạp mà việc phát hiện tự động có thể bỏ lỡ các ô hợp nhất hoặc khoảng cách không đồng đều.
- Tọa độ cột và hàng: Xác định vị trí bắt đầu/kết thúc trên trục X cho mỗi cột và vị trí trên trục Y cho mỗi hàng.
- TemplateTableLayout: Đối tượng này lưu bản đồ tọa độ và sẽ được truyền vào lời gọi trích xuất sau này.
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})
);
}
}
Trích xuất bảng từ các trang tài liệu
Quy trình từng bước để trích xuất bảng là gì?
Sau khi xác nhận hỗ trợ và định nghĩa bố cục, bạn lặp qua từng trang, yêu cầu dữ liệu bảng, và thu thập kết quả vào một collection Java để xử lý tiếp.
- Lặp qua các trang: Duyệt
parser.getPages()để xử lý PDF đa trang. - Trích xuất bảng: Sử dụng
parser.getTables(pageIndex, options)trong đóoptionsbao gồm bố cục đã định nghĩa trước.
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.");
}
}
}
}
Ứng dụng thực tiễn của java pdf table extraction
Việc triển khai trích xuất bảng có thể mang lại lợi ích trong nhiều kịch bản thực tế:
- Phân tích dữ liệu: Lấy dữ liệu có cấu trúc từ báo cáo tài chính hoặc bài báo khoa học để phân tích downstream.
- Xử lý hoá đơn: Tự động trích xuất các mục hàng từ hoá đơn và đưa dữ liệu vào hệ thống kế toán.
- Quản lý tài liệu: Lập chỉ mục dữ liệu bảng đã trích xuất cùng với nội dung toàn văn để cải thiện khả năng tìm kiếm trong các giải pháp DMS.
Các cân nhắc về hiệu năng
Để đạt hiệu năng tối ưu khi sử dụng GroupDocs.Parser:
- Tối ưu sử dụng bộ nhớ: Phân bổ đủ heap (ví dụ,
-Xmx2g) cho các PDF lớn. - Xử lý batch: Nhóm nhiều tài liệu trong một job để giảm chi phí khởi động JVM.
- Bố cục hiệu quả: Định nghĩa tọa độ chính xác giảm diện tích quét, tăng tốc trích xuất lên tới 30 %.
Các vấn đề thường gặp & giải pháp
| Vấn đề | Nguyên nhân | Giải pháp |
|---|---|---|
| Không có bảng nào được trả về | Tọa độ bố cục không khớp với vị trí thực tế của bảng | Kiểm tra lại tọa độ cột/hàng bằng thước đo của trình xem PDF. |
| Lỗi hết bộ nhớ | Tài liệu rất lớn được tải toàn bộ | Sử dụng chế độ streaming hoặc tăng heap JVM (-Xmx). |
| Ô trống | Bảng chứa các ô hợp nhất mà bố cục không bao phủ | Điều chỉnh bố cục để bao gồm ranh giới ô hợp nhất hoặc dùng trích xuất mặc định không có bố cục. |
Câu hỏi thường gặp
H: Tôi có thể trích xuất bảng từ các định dạng tài liệu khác không?
Đ: Có, GroupDocs.Parser hỗ trợ DOCX, PPTX, TXT và nhiều định dạng khác. Tham khảo tài liệu chính thức để biết danh sách đầy đủ.
H: Tôi có cần giấy phép cho các bản build phát triển không?
Đ: Giấy phép dùng thử miễn phí đủ cho phát triển và kiểm thử. Giấy phép thương mại bắt buộc cho triển khai sản xuất.
H: GroupDocs.Parser xử lý PDF được bảo vệ bằng mật khẩu như thế nào?
Đ: Cung cấp mật khẩu khi khởi tạo đối tượng Parser, ví dụ new Parser(filePath, password). Thư viện sẽ tự động giải mã tệp.
H: Có thể trích xuất bảng mà không định nghĩa bố cục không?
Đ: Có, bạn có thể gọi parser.getTables(pageIndex) mà không có tùy chọn, nhưng trích xuất dựa trên bố cục cho độ chính xác cao hơn đối với các bảng phức tạp.
H: Phiên bản GroupDocs.Parser nào tương thích với Java 11?
Đ: Phiên bản 25.5 (được sử dụng trong hướng dẫn này) hoàn toàn hỗ trợ Java 8‑17, bao gồm Java 11.
Kết luận
Bạn đã có một quy trình sẵn sàng cho sản xuất để java pdf table extraction bằng GroupDocs.Parser. Bằng cách xác minh khả năng của tài liệu, định nghĩa TemplateTableLayout tùy chỉnh, và lặp qua các trang, bạn có thể đáng tin cậy lấy dữ liệu có cấu trúc cho bất kỳ quy trình Java downstream nào.
Các bước tiếp theo
- Khám phá các tính năng nâng cao như gộp bảng, định dạng ô, và xuất ra CSV trong tài liệu.
- Thử nghiệm các cấu hình bố cục khác nhau để xử lý các thiết kế bảng đa dạng trong bộ sưu tập tài liệu của bạn.
Cập nhật lần cuối: 2026-09-17
Đã kiểm tra với: GroupDocs.Parser 25.5 cho Java
Tác giả: GroupDocs