یک عامل هوش مصنوعی نباید جدول را بخواند. باید ابزاری را فراخوانی کند که جدول را بر می‌گرداند و سپس روی ردیف‌ها محاسبه انجام دهد. با اجرای GroupDocs.Parser.Mcp به‌صورت محلی در Docker، یک کلاینت هوش مصنوعی مانند Claude Desktop یا Cursor می‌تواند جداول را از فایل‌های PDF، Word و Excel استخراج کرده و به‌صورت JSON دریافت کند:

موارد خطی را از invoice.pdf به‌صورت JSON استخراج کنید و ستون مبلغ را جمع بزنید.

نسخه گام‌به‌گام با پیکربندی و عیب‌یابی در مستندات موجود است: How to extract tables from documents into structured data .

چه مشکلی پیش می‌آید وقتی مدل خود جدول را می‌خواند؟

گردش کار معمول این است که یک PDF را در چت پیست می‌کنید و از جدول می‌خواهید. مدل یک جریان مسطح از متن می‌بیند، ستون‌ها را استنتاج می‌کند و ردیف‌ها را باز می‌نویسد. هر سلول سپس یک پیش‌بینی می‌شود. یک ستون حذف‌شده، یک ردیف ادغام‌شده یا یک اعشار جابجا‌شده خطایی تولید نمی‌کند؛ بلکه یک جدول با قالب‌بندی خوب اما کمی اشتباه تولید می‌کند. برای فهرست میوه این مهم نیست؛ برای مجموع فاکتورها بسیار مهم است.

این شکست به‌دلیل ظاهر صحیح خروجی به‌راحتی قابل تشخیص نیست. هیچ‌چیزی در پاسخ چت نشان نمی‌دهد کدام سلول‌ها از فایل خوانده شده‌اند و کدام بازسازی شده‌اند.

جایگزین چه‌است به‌جای اینکه مدل حدس بزند؟

خواندن را از مدل جدا کنید. ابزار extract_tables جداول را با موتور سند شناسایی می‌کند و به‌صورت داده باز می‌گرداند:

  • به‌صورت پیش‌فرض Markdown، به‌صورت بخش‌های ### Table N (page N, R×C) که مستقیماً در چت، VS Code و GitHub رندر می‌شوند.
  • به‌صورت JSON با format: "json"، به‌صورت آرایه‌ای از اشیاء { table, page, rows, columns, data } که در آن data یک شبکه از رشته‌هاست.

مدل هرگز یک سلول را رونویسی نمی‌کند. آن data را دریافت می‌کند و با آن کار می‌کند، بنابراین کار آن به‌کارهایی که به‌طور قابل اعتماد انجام می‌دهد محدود می‌شود: جمع‌زدن، مقایسه، فیلتر و توضیح. این ابزار از PDF، DOCX، XLSX، PPTX و HTML پشتیبانی می‌کند، بنابراین همان پرامپت می‌تواند فاکتور تأمین‌کننده، گزارش Word و یک صفحه‌گسترده را پوشش دهد.

چگونه جدول را به‌صورت JSON دریافت کنید؟

قالب را در پرامپت بیان کنید.

موارد خطی را به‌صورت JSON استخراج کنید و ستون مبلغ را جمع بزنید.

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.

از آنجا که عامل ردیف‌ها را در اختیار دارد، گام‌های بعدی سؤالات عادی هستند: کدام ردیف بزرگ‌ترین است، آیا مجموع با عدد چاپ‌شده در متن مطابقت دارد، ردیف‌ها را به‌صورت CSV در پوشه خروجی بنویسید. وقتی محاسبه مهم است، از عامل بخواهید ردیف‌هایی که جمع‌زدند را فهرست کند تا بتوانید آن‌ها را بررسی کنید.

چه زمانی باید به‌جای JSON، Markdown بخواهید؟

وقتی شخصی قرار است نتیجه را ببیند، از Markdown استفاده کنید و وقتی کد است، از JSON. Markdown پیش‌فرض است و سریع‌ترین راه برای نگاه کردن به جدول و قضاوت دربارهٔ صحت یافتن آن است. برای مجموع‌ها، بررسی‌های متقابل و هر چیزی که به‌یک صفحه‌گسترده یا پایگاه‌داده می‌خورد، به JSON سوئیچ کنید. اگر می‌دانید جدول در کجا قرار دارد، فراخوانی را محدود کنید:

جدول صفحه 4 را استخراج کنید.

پارامتر page تشخیص را به یک صفحه محدود می‌کند، که سریع‌تر است و تحت لایسنس‌گذاری متری، ارزان‌تر.

چه مواردی هنوز نیاز به نگاه انسانی دارند؟

محدودیت‌های صادقانه در مورد جداول بیشتر از متن ساده اهمیت دارد.

  • اسکن‌ها جدول ندارند. بدون لایهٔ متنی ساختار جدول وجود ندارد و استخراج خالی برمی‌گردد. در این سرور OCR وجود ندارد.
  • چیدمان‌های پیچیده متفاوت هستند. سلول‌های ادغام‌شده، جداول تو در تو و جداولی که در صفحات متعدد ادامه می‌یابند، همیشه به‌صورت یک شبکهٔ تمیز حفظ نمی‌شوند. قبل از اجرای دوصد سند، یک سند را به‌صورت نمونه بررسی کنید.
  • حالت ارزیابی محدود است. بدون لایسنس، استخراج محدود است؛ محدودیت‌های دقیق در صفحهٔ [licensing page] موجود است. از عامل بخواهید قبل از اجرای واقعی get_license_status را فراخوانی کند.

نصب آن با یک فرمان

سرور فقط به‌صورت تصویر Docker توزیع می‌شود، بنابراین فرمان dnx وجود ندارد. آن را در Claude Code به‌این شکل ثبت کنید و مسیر را با پوشهٔ اسناد خود جایگزین کنید:

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 با GitHub Copilot، Windsurf، Cline و Codex از همان کانتینر با فایل پیکربندی مخصوص کلاینت استفاده می‌کنند؛ هر کدام در [Register in AI clients] فهرست شده‌اند.

پرسش‌های متداول

آیا Claude جداول PDF را به‌دقت می‌خواند؟
این بستگی به فایل و نحوهٔ مسطح‌سازی توسط کلاینت دارد، بنابراین بهتر است خودتان بررسی کنید نه اینکه فرض کنید. با extract_tables ردیف‌ها از تشخیص جدول موتور سند می‌آیند، به‌صورت شبکه‌ای از رشته‌ها باز می‌گردند و Claude از آن‌ها استفاده می‌کند.

چگونه می‌توانم جدول را از PDF به Excel با هوش مصنوعی استخراج کنم؟
جدول را به‌صورت JSON بخواهید، سپس از عامل بخواهید ردیف‌ها را به‌صورت CSV در پوشهٔ خروجی بنویسد؛ Excel این فایل را باز می‌کند. تبدیل ردیف‌ها به CSV گام عامل است؛ مقادیر سلول‌ها از ابزار می‌آیند.

آیا می‌تواند جداول را به‌صورت محلی از Word و Excel استخراج کند؟
بله. extract_tables علاوه بر PDF، DOCX و XLSX را نیز پشتیبانی می‌کند و کانتینر فایل‌ها را از پوشه‌ای که سوار می‌کنید می‌خواند.

عمیق‌تر بروید