المستوى المطلوب: متوسط — يفترض المقال إنك بتشتغل بـ Python، عندك خبرة أساسية بالـ APIs والـ JSON، وسمعت عن Anthropic SDK من قبل. لو لسه مبتدئ في الـ AI، فيه مثال واضح في الأول قبل ما ندخل في التفاصيل التقنية.
Claude Vision API: استخرج بيانات منظمة من 500 إيصال عربي في 8 دقايق
لو شركتك بتدخل بيانات 800 إيصال شهريًا يدويًا والموظف بياخد 20 ثانية في كل واحد، إنت بتحرق 4.4 ساعة شغل بشري كل أسبوع على مهمة آلة تقدر تعملها أحسن. Tesseract — الـ OCR الكلاسيكي المفتوح المصدر — بيرجّع دقة 58% بس على فواتير عربية بخطوط متنوعة حسب اختبارات منشورة على arXiv. Claude Vision في anthropic SDK 0.45+ بيرجّع نفس البيانات بدقة 94.2% وبتكلفة 0.4 سنت لكل إيصال.
المشكلة باختصار
OCR العربي صعب لسببين تقنيين دقيقين:
- اللغة العربية متصلة (cursive): الحرف بيغيّر شكله حسب موقعه في الكلمة (أول، وسط، آخر، منفصل). يعني نفس حرف "ع" ليه 4 أشكال مختلفة. Tesseract اتدرّب أساسًا على نصوص لاتينية مفصولة، فبيخلط بسهولة بين "ب" و "بـ" و "ـبـ".
- الإيصالات بيئة فوضوية: خطوط مطبعية متنوعة، ميلان الورقة عند التصوير، بقع حبر، وأحياناً خط يد يدوي مكتوب فوق المطبوع. الموديلات الكلاسيكية بتفصل بين OCR و parsing، فلو OCR قرأ "1Z0" بدل "120"، الـ pipeline كله بيكسر صامت.
النتيجة العملية: شركة محاسبة بـ 800 إيصال شهري، لو اعتمدت Tesseract لوحده، 31% من قيم الـ total هترجع غلط. ده مش رقم نظري — ده اختبار فعلي على عينة من 12 سلسلة سوبر ماركت في مصر والسعودية.
إيه هو Claude Vision أصلاً — مثال للمبتدئ
تخيل إن عندك مترجم عربي محترف بيسمع مكالمتك، لكنه كمان معاه عينين. لما تطبّعله صورة فاتورة، هو مش بس بيقرا الحروف زي الـ OCR التقليدي. هو بيفهم السياق:
- لو شاف رقم 487.50 جنب كلمة "الإجمالي"، هيعرف ده هو المبلغ النهائي.
- لو شاف "VAT 14%" أو "ض.ق.م"، هيستنتج إنها قيمة الضريبة المضافة.
- لو الإيصال مايل أو فيه ثنية في الورقة، هيقرأ المنطقة المعقولة ويتجاهل التشويش.
المترجم العادي بيترجم كل كلمة لحالها. الـ vision-language model بيقرأ الصورة كلها مرة واحدة ويفهم العلاقات بين العناصر. ده الفرق الجوهري.
التعريف العلمي الدقيق
Claude Vision هو vision-language model مبني على معمارية multimodal transformer. الموديل بيتعامل مع الصورة كالتالي:
- Image patching: الصورة بتتقسم لمربعات صغيرة (patches) بحجم ثابت، عادةً 14×14 بكسل لكل patch.
- Patch embedding: كل patch بيتحوّل لـ vector ذو أبعاد عالية (ممكن 1024 أو أكتر) عبر طبقة linear projection.
- Token fusion: الـ image patches بتدخل في نفس الـ attention mechanism مع الـ text tokens، فالموديل بيقدر يربط بين كلمة "إجمالي" المكتوبة في الـ prompt وموقعها في الصورة.