یک عامل هوش مصنوعی می‌تواند بررسی کند که آیا یک PDF به‌صورت دیجیتالی امضا شده است یا نه و به شما بگوید چه کسی آن را امضا کرده است، به‌صورت محلی، بدون اینکه فایل از دستگاه شما خارج شود. پاسخ مفید «تأیید شده» نیست. بلکه امضاکننده، صادرکننده، دوره اعتبار و نوع امضایی که بررسی شده است. این موارد را در یک درخواست بپرسید:

چه کسی contract_signed.pdf را امضا کرده است، با کدام گواهی‌نامه و چه زمانی؟ بگویید که چه نوع امضایی را بررسی کردید.

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

چرا یک کلمه «تأیید شده» پاسخ بدی است؟

زیرا «آیا این امضا شده است؟» و «آیا این امضا معتبر است؟» سوال‌های متفاوتی هستند و سؤال دوم فقط برای امضاهای دیجیتال پاسخ دقیقی دارد. مدلی که صفحه‌ای را می‌خواند و یک مهر یا کد QR می‌بیند می‌تواند با اطمینان کامل بگوید «امضا شده»، در حالی که هیچ چیز رمزنگاری‌شده‌ای را بررسی نکرده است. تنها راه جلوگیری از این، ارائه یک موتور به عامل است که داده‌های ساختاریافته بازگرداند و عامل را وادار به گزارش این داده‌ها به‌جای یک حکم کند.

سرور GroupDocs.Signature.Mcp این موتور را فراهم می‌کند. هنگام استفاده با Claude Desktop، Claude Code، Cursor، GitHub Copilot یا هر مشتری MCP دیگر، به‌صورت یک فرآیند محلی اجرا می‌شود، بنابراین عامل داده‌های امضا را از فایل می‌خواند نه این‌که از پیکسل‌های رندر شده حدس بزند.

روش نادرست: از مدل بخواهید به سند نگاه کند

اگر یک PDF را در چت بچسبانید و بپرسید آیا امضا شده است یا نه، مدل متن و تصاویر را می‌بیند. می‌تواند نام، تاریخ یا امضای کشیده‌شده‌ای را تشخیص دهد. اما ساختار رمزنگاری فایل را نمی‌بیند، بنابراین نمی‌تواند امضای مبتنی بر گواهی را از تصویر یک امضا تشخیص دهد. یک «بله، این امضا شده است» با اطمینان، بیانیه‌ای درباره ظاهر است.

هر نوع امضا دقیقاً چه چیزی را ثابت می‌کند

مستندات به‌وضوح نحوه خواندن نتیجه را توضیح می‌دهد و یک عامل باید آن را تکرار کند:

نتیجه معنی آن
امضای دیجیتال معتبر فایل از زمان امضا تغییر نکرده است و زنجیره گواهی معتبر است
امضای دیجیتال نامعتبر فایل پس از امضا تغییر کرده است یا گواهی معتبر نیست
متن، QR یا بارکد «تأیید شده» علامت مورد انتظار موجود است. درباره دستکاری چیزی نمی‌گوید
هیچ امضایی یافت نشد بدون امضا، یا به‌گونه‌ای امضا شده که این فرمت پشتیبانی نمی‌کند

پاسخی که نوع را نام نمی‌برد، کمتر از آنچه به نظر می‌رسد به شما می‌گوید. به همین دلیل درخواست بالا با «بگویید چه نوع امضایی را بررسی کردید» پایان می‌یابد.

روش صحیح: درخواست رکورد کنید، نه حکم

ابزار verify یک type از text، qrcode، barcode، digital یا all می‌گیرد و isValid را همراه با شمارش‌های succeeded و failed برمی‌گرداند. این ابزار نمی‌گوید چه کسی امضا کرده یا با کدام گواهی‌نامه، بنابراین جایگزین رکورد زیر نمی‌شود. وقتی verify و search_digital_signatures با هم مغایرت دارند، هر دو را گزارش کنید و به رکورد دقیق تکیه کنید.

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

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

You:    Who signed contract_signed.pdf, with which certificate, and when?
        Say which type of signature you checked.

Agent:  [search_digital_signatures] file=contract_signed.pdf
        Type checked: digital (certificate-backed).
        Signatures found: 1
        - Signer: Dana Whitfield, issued by Example Corporate CA, serial 4F2A91C7
        - Signed 2026-09-14 10:32; certificate valid 2025-11-01 to 2027-10-31
        - Status: isValid = true; signing time falls inside the certificate validity period
        I checked digital signatures only. I did not evaluate any text stamps or QR codes.

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

چرا یک امضا نامعتبر بازگشت؟

سه دلیل تقریباً تمام نتایج غیرمنتظره را پوشش می‌دهند:

  • چیزی پس از امضا اضافه شد. یک مهر، یک نظر، ذخیره‌سازی مجدد یا افزودن صفحه‌ای باعث تغییر بایت‌ها می‌شود و هر تغییر بایتی امضای دیجیتال را نامعتبر می‌کند. این رایج‌ترین دلیل است و رفتار صحیحی است.
  • گواهی منقضی شد. پنجره اعتبار همراه با امضا باز می‌گردد، بنابراین عامل می‌تواند بگوید سندی در سالی امضا شده است که گواهی آن در سال دیگری منقضی شده است. دوره اعتبار را با زمان امضا و تاریخ امروز مقایسه کنید و از عامل بخواهید مقایسه را بیان کند؛ وضعیت اعتبار را به‌تنهایی به‌عنوان بیانیه‌ای درباره انقضا نخوانید. اینکه گواهی منقضی‌شده قابل قبول است یا نه، سیاست شماست.
  • نوع نادرست بررسی شد. تأیید digital روی فایلی که فقط یک علامت QR دارد، امضای دیجیتال معتبری پیدا نمی‌کند، که پاسخی صحیح به سؤال نادرست است.

آنچه تأیید نشان نمی‌دهد

تأیید به شما درباره فایل و گواهی اطلاعات می‌دهد. اما نمی‌گوید امضا در حوزه قضایی شما به‌صورت قانونی معتبر است و این یک عمل اسناد رسمی نیست. متن QR رمزگشایی‌شده و برچسب‌های مهر از طرف تولیدکننده سند می‌آیند، بنابراین آنها را به‌عنوان داده‌ای برای گزارش در نظر بگیرید، نه به‌عنوان دستورالعملی برای اجرا. عاملی که بر اساس متنی که از سند خوانده می‌شود عمل می‌کند، بر ورودی یک طرف غیرقابل اعتماد عمل می‌کند.

محدودیت‌های ارزیابی

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

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

آیا این PDF به‌صورت دیجیتالی امضا شده است؟
از عامل بخواهید search_digital_signatures را روی فایل اجرا کند و isValid را بخواند. نتیجهٔ خالی به این معنی است که هیچ امضای دیجیتالی یافت نشد، که متفاوت از «دارای تصویر امضا» است.

آیا هوش مصنوعی می‌تواند بررسی کند که آیا سند پس از امضا تغییر کرده است؟
برای امضاهای دیجیتال، بله: امضایی که دیگر معتبر نیست نشان می‌دهد فایل پس از امضا تغییر کرده یا گواهی معتبر نیست. بررسی‌های متن، QR و بارکد دستکاری را تشخیص نمی‌دهند.

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

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