Một tác nhân AI không nên đọc bảng. Nó nên gọi một công cụ trả về bảng, sau đó thực hiện các phép tính trên các hàng. Với GroupDocs.Parser.Mcp chạy cục bộ trong Docker, một khách hàng AI như Claude Desktop hoặc Cursor có thể trích xuất bảng từ các tệp PDF, Word và Excel và nhận chúng dưới dạng JSON:

Trích xuất các mục dòng từ invoice.pdf dưới dạng JSON và tính tổng cột Amount.

Phiên bản từng bước với cấu hình và khắc phục sự cố có trong tài liệu: Cách trích xuất bảng từ tài liệu thành dữ liệu có cấu trúc.

Điều gì sai khi mô hình tự đọc bảng?

Quy trình phổ biến là dán một PDF vào cuộc trò chuyện và yêu cầu bảng. Mô hình nhìn thấy một luồng văn bản phẳng, suy đoán vị trí các cột và ghi lại các hàng. Mỗi ô sau đó là một dự đoán. Một cột bị bỏ, một hàng hợp nhất hoặc một dấu thập phân lệch không gây ra lỗi; nó tạo ra một bảng tự tin, định dạng tốt nhưng hơi sai. Đối với danh sách trái cây, điều này không quan trọng. Đối với tổng hoá đơn, nó lại rất quan trọng.

Lỗi này khó phát hiện vì đầu ra trông đúng. Không có gì trong phản hồi chat cho bạn biết ô nào được đọc từ tệp và ô nào được tái tạo.

Giải pháp thay thế cho việc để mô hình đoán?

Di chuyển việc đọc ra khỏi mô hình. Công cụ extract_tables phát hiện bảng bằng engine tài liệu và trả về chúng dưới dạng dữ liệu:

  • Markdown mặc định, dưới dạng các phần ### Table N (page N, R×C) mà có thể hiển thị trực tiếp trong chat, VS Code và GitHub.
  • JSON với format: "json", dưới dạng một mảng các đối tượng { table, page, rows, columns, data }, trong đó data là lưới các chuỗi.

Mô hình không bao giờ sao chép lại một ô. Nó nhận data và làm việc với nó, vì vậy nhiệm vụ của nó thu gọn lại thành những gì nó làm một cách đáng tin cậy: cộng, so sánh, lọc và giải thích. Công cụ hỗ trợ PDF, DOCX, XLSX, PPTX và HTML, vì vậy cùng một lời nhắc có thể áp dụng cho hoá đơn nhà cung cấp, báo cáo Word và bảng tính.

Làm thế nào để lấy bảng dưới dạng JSON?

Xác định định dạng trong lời nhắc.

Trích xuất các mục dòng dưới dạng JSON và tính tổng cột Amount.

Example session (abridged)
You:    Extract the line items from invoice-014.pdf as JSON and total the amount column.
Agent:  [calls extract_tables with format "json"]
        {"table": 1, "page": 1, "rows": 4, "columns": 3,
         "data": [["Item", "Qty", "Amount"],
                  ["Paper A4", "10", "48.00"],
                  ["Toner", "2", "170.00"],
                  ["Delivery", "1", "22.00"]]}
        Total of the Amount column: 240.00 across 3 line items.

Vì tác nhân giữ các hàng, các bước tiếp theo là các câu hỏi thông thường: hàng nào lớn nhất, tổng có khớp với con số in trong văn bản không, ghi các hàng vào CSV trong thư mục đầu ra. Khi phép tính quan trọng, hãy yêu cầu tác nhân liệt kê các hàng mà nó đã cộng để bạn có thể kiểm tra.

Khi nào nên yêu cầu Markdown thay vì JSON?

Sử dụng Markdown khi một người sẽ đọc kết quả tiếp theo, và JSON khi mã sẽ xử lý. Markdown là mặc định và là cách nhanh nhất để xem bảng và đánh giá xem nó đã được tìm đúng chưa. Chuyển sang JSON cho các tổng, kiểm tra chéo và bất kỳ thứ gì đưa dữ liệu vào bảng tính hoặc cơ sở dữ liệu. Nếu bạn biết bảng nằm ở đâu, hãy thu hẹp lời gọi:

Trích xuất bảng ở trang 4.

Tham số page giới hạn việc phát hiện chỉ trong một trang, nhanh hơn và, dưới giấy phép tính phí, rẻ hơn.

Những trường hợp nào vẫn cần con người kiểm tra?

Giới hạn trung thực quan trọng hơn với bảng so với văn bản thuần.

  • Các bản quét không có bảng để tìm. Không có lớp văn bản nên không có cấu trúc bảng, và việc trích xuất sẽ trả về rỗng. Máy chủ này không có OCR.
  • Bố cục phức tạp thay đổi. Các ô hợp nhất, bảng lồng nhau và bảng kéo dài qua nhiều trang không luôn tồn tại sạch sẽ như một lưới đơn giản. Kiểm tra nhanh một tài liệu trước khi chạy hàng trăm.
  • Chế độ đánh giá bị giới hạn. Không có giấy phép, việc trích xuất bị giới hạn; các giới hạn cụ thể có trên trang giấy phép của thư viện. Yêu cầu tác nhân gọi get_license_status trước khi chạy thực tế.

Cài đặt bằng một lệnh

Máy chủ chỉ được phân phối dưới dạng hình ảnh Docker, vì vậy không có lệnh dnx. Đăng ký nó trong Claude Code như sau, thay thế đường dẫn bằng thư mục tài liệu của bạn:

claude mcp add groupdocs-parser -- docker run --rm -i \
  -v /path/to/documents:/data ghcr.io/groupdocs-parser/parser-net-mcp:latest

Cursor, Claude Desktop, VS Code với GitHub Copilot, Windsurf, Cline và Codex sử dụng cùng một container với tệp cấu hình riêng cho từng khách hàng; mỗi công cụ được liệt kê trong Đăng ký trong các khách hàng AI.

Câu hỏi thường gặp

Claude có đọc chính xác các bảng PDF không?
Điều đó phụ thuộc vào tệp và cách khách hàng làm phẳng nó, vì vậy hãy kiểm tra thay vì giả định. Với extract_tables các hàng đến từ bộ phát hiện bảng của engine tài liệu, trả về dưới dạng lưới chuỗi, và Claude làm việc dựa trên chúng.

Làm thế nào để trích xuất bảng từ PDF sang Excel bằng AI?
Yêu cầu bảng dưới dạng JSON, sau đó yêu cầu tác nhân ghi các hàng vào CSV trong thư mục đầu ra, mà Excel sẽ mở. Việc chuyển đổi từ hàng sang CSV là bước của tác nhân; các giá trị ô đến từ công cụ.

Nó có thể trích xuất bảng từ các tệp Word và Excel cục bộ không?
Có. extract_tables xử lý DOCX và XLSX cũng như PDF, và container đọc các tệp từ thư mục bạn gắn.

Tìm hiểu sâu hơn