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

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

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

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

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

چرا این کار با او‌سی‌آر فرق دارد

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

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

شکل درخواست: عکس و دستور، کنار هم

ساختار پیام یک نکتهٔ کلیدی دارد: عکس و متن هر دو «بلوک محتوا» در همان پیام کاربر هستند. عکس را به شکل رشتهٔ بیس۶۴ می‌فرستی و نوع فایل را هم صریح اعلام می‌کنی.

import base64
from anthropic import Anthropic

client = Anthropic()
MODEL_NAME = "claude-opus-4-8"

def encode_image(path):
    with open(path, "rb") as f:
        return base64.b64encode(f.read()).decode("utf-8")

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image",
                "source": {
                    "type": "base64",
                    "media_type": "image/png",
                    "data": encode_image("form.png"),
                },
            },
            {"type": "text", "text": "این فرم را دقیقا رونویسی کن."},
        ],
    }
]

response = client.messages.create(
    model=MODEL_NAME,
    max_tokens=2048,
    messages=messages,
)
print(response.content[0].text)

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

پنج سناریو که باید بشناسی

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

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

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

فرم ترکیبی. برگه‌ای که بخشی چاپی است، بخشی پرشده با دست، و چند مربع انتخابی دارد. دستور «این فرم را دقیقاً رونویسی کن» کافی است و خروجی، وضعیت مربع‌ها را هم نشان می‌دهد؛ تیک‌خورده و خالی از هم تفکیک می‌شوند. برای همان شرکت پخش دارو، این تنها بخشی است که کل ماجرا را عوض می‌کند.

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

تبدیل مستقیم به دادهٔ ساخت‌یافته. پرکاربردترین حالت برای هر کسی که می‌خواهد نتیجه را وارد پایگاه داده کند.

PROMPT = (
    "این چارت سازمانی را به JSON تبدیل کن و نشان بده هر نفر "
    "به چه کسی گزارش می‌دهد. فقط JSON را خروجی بده و چیز دیگری ننویس."
)

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

هنر نوشتن دستور رونویسی

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

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

تمرین‌ها

✏️ تمرین

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

🔒

این تمرین ویژهٔ اعضاست

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

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

چند نکتهٔ عملی

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

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

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

جمع‌بندی

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

چرا این تکنیک کهنه نمی‌شود

مدل‌ها هر سال دقیق‌تر می‌شوند و شاید روزی برسد که بدترین دست‌خط را هم بی‌خطا بخوانند. اما چیزی که این درس یاد می‌دهد اصلاً دربارهٔ دقت خواندن نیست؛ دربارهٔ این است که تو تعیین کنی خروجی چه شکلی باشد. تا وقتی سازمان‌ها کاغذ دارند و تا وقتی داده باید از شکل انسانی به شکل ماشینی ترجمه شود، این پرسش سر جایش می‌ماند: از این برگه دقیقاً چه می‌خواهی؟ مدلی که هر چیزی را بی‌نقص می‌خواند ولی نمی‌داند تو چه می‌خواهی، هنوز کار تو را راه نمی‌اندازد. مهارت اصلی، پرسیدن درست است و آن کهنه نمی‌شود.

منبع این درس، مستندات رسمی آنتروپیک است؛ ما آن را برای فارسی‌زبان‌ها درس کرده‌ایم: راهنمای رونویسی متن از تصویر در کوک‌بوک آنتروپیک

(0 رأی)

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

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