برای استخراج دسته‌جمعی داده‌ها از اسناد با یک عامل هوش مصنوعی، طرح‌واره را در پرامپت بنویسید، عامل را به یک پوشه اشاره کنید و در انتها فهرست استثناها را درخواست کنید. سرور GroupDocs.Parser.Mcp خواندن را به‌صورت محلی در یک کانتینر Docker انجام می‌دهد، بنابراین هر فایل از همان ابزارهای استخراج عبور می‌کند و هیچ سندی از ماشین خارج نمی‌شود. مدل زبان بزرگ (LLM) ترتیب کار را تعیین می‌کند؛ موتور فایل‌ها را می‌خواند.

برای هر PDF در پوشه اسناد من: جداول را به‌صورت JSON استخراج کنید، ستون مبلغ را جمع کنید و یک جدول شامل نام فایل، مجموع و تعداد صفحات به من بدهید.

نسخه گام‌به‌گام همراه با پیکربندی و عیب‌یابی در مستندات موجود است: چگونه داده‌ها را یک‌باره از یک پوشه اسناد استخراج کنیم.

چرا استخراج دستی داده‌ها منجر به ناهماهنگی می‌شود؟

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

چگونه جریان کاری را می‌سازید؟

پوشه را به‌عنوان /data درون کانتینر سوار کنید، مقدار GROUPDOCS_MCP_STORAGE_PATH=/data را تنظیم کنید و این مراحل را به عامل بدهید.

  1. بررسی مجوز. پرامپت: “Run get_license_status and tell me the mode.” استخراج بدون مجوز محدود است و خواندن جزئی از یک پوشه منجر به یک مجموعه دادهٔ نادرست می‌شود.
  2. ارزیابی اولیه پوشه. پرامپت: “For each file, report format, page count and whether text extraction returns anything.” get_document_info نوع، تعداد صفحات و اندازه را فراهم می‌کند و یک فراخوانی یک‌صفحه‌ای extract_text نشان می‌دهد آیا متنی وجود دارد یا نه.
  3. اصلاح طرح‌واره. پرامپت: “For each readable file, extract the line-items table as JSON. Columns: item, quantity, amount. Total the amount column.” این کار از extract_tables استفاده می‌کند.
  4. جمع‌آوری خطاها به‌صورت صریح. پرامپت: “List every file that failed, was password-protected, or returned no table, with the reason.” یک دسته که فقط موفقیت‌ها را گزارش می‌دهد، استثناها را پنهان می‌کند.
  5. نوشتن خروجی. پرامپت: “Write one row per file to a CSV in the output folder.”

فایل‌ها داخل کانتینر بر اساس نام حل می‌شوند، بنابراین عامل invoice-014.pdf را می‌فرستد، نه مسیر میزبان.

عامل چه تصمیمی می‌گیرد و موتور چه کاری انجام می‌دهد؟

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

تقسیم‌بندی نکتهٔ کلیدی است. استخراج مقادیر کار تعیین‌کنندهٔ موتور است؛ قضاوت و ترکیب آن‌ها کار عامل است.

مثال جلسه (مختصر):

You:    Check the license, triage the folder, then extract line items from every readable PDF and list the exceptions.
Agent:  [calls get_license_status, get_document_info x12, extract_text, extract_tables x10]
        License mode: evaluation. Results below are a smoke test.
        12 files: 10 with a text layer, 1 scan, 1 password-protected.
        Totals written for 10 files. Exceptions: scan-007.pdf (no text layer), hr-020.pdf (password required).

چه اتفاقی برای فایل‌هایی می‌افتد که مناسب نیستند؟

یک اسکن لایهٔ متنی ندارد، بنابراین استخراج جدول برای آن هیچ‌چیزی برنمی‌گرداند. آن‌ها را جدا کنید یا اجازه دهید عامل به extract_barcodes برود وقتی صفحه شامل شماره پیگیری یا کد سفارش باشد. فهرست عبوری به‌عنوان موجودی‌ای از بخش‌های اسکن‌شدهٔ آرشیو عمل می‌کند. یک فایل محافظت‌شده با رمز عبور فراخوانی خود را شکست می‌دهد، بنابراین از عامل بخواهید آن را گزارش کند و ادامه دهد؛ ابزارها وقتی رمز عبور دارید، آرگومان password را می‌پذیرند.

چگونه اجرای بزرگ را مقرون‌به‌صرفه نگه دارید؟

  • محدود کردن بر حسب صفحه وقتی داده در مکان شناخته‌شده‌ای قرار دارد، مانند صفحهٔ اول هر فاکتور.
  • از extract_images به‌صورت دسته‌جمعی خودداری کنید. این کار برای هر تصویر یک فایل می‌نویسد و یک پوشهٔ شامل گزارش‌های تصویری صدها فایل تولید می‌کند.
  • به استفادهٔ متری توجه کنید. تحت مجوز متری هر فراخوانی به‌عنوان پردازش هزینه‌بر است، بنابراین یک اسکن هدفمند هزینهٔ کمتری نسبت به اسکن کامل دارد.

محدودیت‌ها چیستند؟

بدون مجوز، استخراج محدود است؛ محدودیت‌های دقیق در صفحهٔ مجوزدهی کتابخانه آمده است. سرور OCR ندارد، بنابراین متن اسکن‌شده قابل استخراج نیست. این سرویس فقط به‌صورت تصویر Docker ارائه می‌شود؛ هیچ فرمان dnx وجود ندارد.

چگونه سرور را ثبت کنید؟

یک ورودی دستی حداقل برای Cursor، Claude Desktop یا Windsurf، با استفاده از مسیرهای کانتینر از مستندات پیکربندی Parser:

{
  "mcpServers": {
    "groupdocs-parser": {
      "command": "docker",
      "args": ["run", "--rm", "-i",
               "-v", "/path/to/documents:/data",
               "-e", "GROUPDOCS_MCP_STORAGE_PATH=/data",
               "ghcr.io/groupdocs-parser/parser-net-mcp:latest"]
    }
  }
}

سؤالات متداول

آیا می‌توانم یک پوشه فاکتور را با هوش مصنوعی پردازش کنم بدون اینکه آن‌ها را بارگذاری کنم؟
بله. کانتینر پوشهٔ سوارشده را می‌خواند و از طریق stdio با کلاینت شما ارتباط برقرار می‌کند، بنابراین فاکتورها روی دستگاه شما می‌مانند.

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

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

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