خواندن نمودار و اسلاید با کلود؛ از پی‌دی‌اف تا روایت اسلایدها

خواندن نمودار و اسلاید با کلود؛ از پی‌دی‌اف تا روایت اسلایدها

⏱ زمان مطالعه: حدود ۱۱ دقیقه✏️ تمرین دارد🎯 سطح: میانی

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

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

آنچه در این درس یاد می‌گیرید

  • تفاوت «فرستادن متنِ پی‌دی‌اف» با «فرستادن خودِ پی‌دی‌اف» و اینکه چرا برای نمودار فقط دومی جواب می‌دهد
  • شکل دقیق بلوک سند در درخواست و جای درست پرسش نسبت به آن
  • سه ترفندی که دقت مدل را روی نمودارهای شلوغ بالا می‌برد: ماشین‌حساب، توصیف قبل از پاسخ، و شناسایی رنگ با کد رنگی
  • محدودیت‌های واقعی مسیر مستقیم: سقف صفحه و ناسازگاری با سامانه‌های بازیابی
  • الگوی «روایت اسلاید به اسلاید» که یک دفترچهٔ ارائه را به متنی قابل جست‌وجو تبدیل می‌کند
  • چطور خروجی روایت را با یک الگوی ساده جدا کنی و در گام بعدی به کار ببری
خواندن نمودار و اسلاید با کلود؛ از پی‌دی‌اف تا روایت اسلایدها

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

یک گزارش مالی را در نظر بگیر که در آن نوشته شده «درآمد در سال ۱۴۰۲ رشد قابل توجهی داشت» و کنارش یک نمودار میله‌ای هست که عدد دقیق هر سال را نشان می‌دهد. کتابخانه‌های استخراج متن، جملهٔ اول را به تو می‌دهند و نمودار را نادیده می‌گیرند، چون از نظر فایل، آن نمودار مجموعه‌ای از خط و مستطیل است، نه نوشته. یعنی دقیقاً همان چیزی که ارزش داشت از دست می‌رود و آنچه می‌ماند یک جملهٔ تبلیغاتی بی‌عدد است.

وقتی سند را به‌صورت خام می‌فرستی، ماجرا فرق می‌کند: هر صفحه هم به‌عنوان متن و هم به‌عنوان تصویر دیده می‌شود. یعنی مدل هم جدول را می‌خواند و هم می‌تواند به میله‌ها نگاه کند و بگوید ارتفاع کدام از کدام بیشتر است و برچسب زیرش چیست. این تفاوت، تفاوت میان «نمی‌دانم در سند نوشته نشده» و «۵٬۵۸۷ میلیارد» است.

شکل دقیق درخواست

سند را می‌خوانی، به کدگذاری بیس۶۴ تبدیل می‌کنی و آن را به‌عنوان یک بلوک از نوع سند در کنار پرسشت می‌گذاری. کل ماجرا همین چند خط است:

import base64
from anthropic import Anthropic

client = Anthropic()
MODEL_NAME = "claude-sonnet-4-6"

with open("./reports/quarterly.pdf", "rb") as f:
    b64 = base64.b64encode(f.read()).decode("utf-8")

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "document",
                "source": {
                    "type": "base64",
                    "media_type": "application/pdf",
                    "data": b64,
                },
            },
            {"type": "text", "text": "حاشیه سود ناخالص در سه فصل اخیر چقدر بوده؟"},
        ],
    }
]

resp = client.messages.create(
    model=MODEL_NAME, max_tokens=8192, temperature=0, messages=messages
)
print(resp.content[0].text)

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

تا اینجا مقدمه بود. بخش اصلی این درس — نمونه‌ها، پرامپت‌های آماده و تمرین‌ها — برای اعضای ویژه باز می‌شود.

🔒

خواندن نمودار و اسلاید با کلود؛ از پی‌دی‌اف تا روایت اسلایدها

برای دیدن این بخش باید عضو ویژه (VIP) باشی. با شمارهٔ موبایلت وارد شو تا ۱۴ روز دسترسی رایگان فعال شود.

🎁 ورود / ثبت‌نام و شروع ۱۴ روز رایگان
قبلاً عضو شده‌ای؟ فقط کافی است وارد شوی. اشتراک: از ۱۹۹٬۰۰۰ تومان / ماه
(0 رأی)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *