نموذج OCR فعال يعتمد على الضغط البصري، يحول صور المستندات إلى تنسيق Markdown، ويدعم الدقة المتعددة والتعرف على اللغات المتعددة.
نظرة عامة مفصلة على مشروع DeepSeek-OCR
نظرة عامة على المشروع
DeepSeek-OCR هو نموذج مبتكر ومفتوح المصدر للتعرف الضوئي على الحروف (OCR) تم تطويره بواسطة فريق DeepSeek AI، ويركز على استكشاف حدود ضغط النص المرئي. يدرس هذا المشروع دور المرمزات البصرية من منظور يركز على نماذج اللغة الكبيرة، حيث يعالج المستندات الكبيرة والمعقدة بعدد أقل بكثير من التوكنات عن طريق استخدام الإدراك البصري كوسيط لضغط المعلومات.
الميزات الأساسية
- ضغط فعال: يحقق معدل ضغط للتوكنات يتراوح بين 7-20 ضعفًا، ويحافظ على دقة فك تشفير تبلغ حوالي 97% عند ضغط 10 أضعاف.
- دعم متعدد الدقة: يدعم دقات أصلية متعددة تتراوح من 512×512 إلى 1280×1280.
- معالجة عالية الأداء: يمكن لوحدة معالجة رسوميات (GPU) واحدة من نوع A100-40G إنتاج أكثر من 200 ألف صفحة من بيانات التدريب يوميًا.
- دعم متعدد اللغات: يدعم التعرف على النصوص بحوالي 100 لغة.
- تعدد الاستخدامات: لا يدعم استخراج النصوص فحسب، بل يمكنه أيضًا فهم الرسوم البيانية والصيغ الكيميائية والرسومات البسيطة.
البنية التقنية
مكونات النموذج
يتكون DeepSeek-OCR من مكونين أساسيين:
DeepEncoder (المرمز البصري)
- عدد المعلمات: حوالي 380 مليون
- تركيبة البنية:
- SAM-ViTDet (نموذج تجزئة من Meta بـ 80 مليون معلمة) للإدراك المحلي للصور.
- ضاغط التفاف من طبقتين، يحقق تخفيضًا للتوكنات بمقدار 16 ضعفًا.
- CLIP ViT-300M (نموذج من OpenAI بـ 300 مليون معلمة) لتجميع المعرفة البصرية العالمية.
مفكك التشفير DeepSeek3B-MoE
- المعلمات النشطة: حوالي 570 مليون
- إجمالي المعلمات: 3 مليار (بنية نموذج مزيج الخبراء)
- الوظيفة: يولد النتائج بناءً على توكنات الصورة ومعلومات المطالبة.
مبدأ العمل
سير عمل معالجة الصور:
- صورة بحجم 1024×1024 بكسل تنتج في البداية 4096 توكنًا.
- تقوم وحدة SAM بمعالجة الانتباه الموجه للنوافذ.
- يقلل الضاغط التوكنات إلى 256 توكنًا (ضغط بمقدار 16 ضعفًا).
- تقوم وحدة CLIP بمعالجة الانتباه العالمي.
- الناتج النهائي هو توكنات بصرية مضغوطة.
أوضاع الدقة:
- وضع الدقة الأصلية:
- Tiny: 512×512 (64 توكنًا بصريًا)
- Small: 640×640 (100 توكن بصري)
- Base: 1024×1024 (256 توكنًا بصريًا)
- Large: 1280×1280 (400 توكن بصري)
- وضع الدقة الديناميكية:
- Gundam: n×640×640 + 1×1024×1024 (يجمع بين الرؤية العالمية والمحلية)
- وضع الدقة الأصلية:
الأداء
نتائج الاختبارات المعيارية
- اختبار Fox المعياري: عند معدل ضغط 10 أضعاف، تصل دقة فك التشفير إلى حوالي 97%.
- اختبار OmniDocBench المعياري:
- تجاوز GOT-OCR2.0 (256 توكن/صفحة) باستخدام 100 توكن بصري فقط.
- تجاوز MinerU2.0 (أكثر من 6000 توكن/صفحة في المتوسط) باستخدام أقل من 800 توكن بصري.
أداء التدريب والاستدلال
- سرعة التدريب:
- بيانات نصية بحتة: 90 مليار توكن يوميًا.
- بيانات متعددة الوسائط: 70 مليار توكن يوميًا.
- أداء الإنتاج: يمكن لعقدة A100-40G واحدة معالجة أكثر من 200 ألف صفحة يوميًا.
- أداء التزامن: معالجة ملفات PDF بحوالي 2500 توكن/ثانية (على A100-40G).
سيناريوهات التطبيق
الوظائف الرئيسية
يدعم DeepSeek-OCR أوضاع مطالبة متعددة:
# تحويل المستند إلى Markdown
prompt = "<image>\n<|grounding|>Convert the document to markdown."
# التعرف الضوئي على الحروف (OCR) العام
prompt = "<image>\n<|grounding|>OCR this image."
# التعرف الضوئي على الحروف (OCR) الحر (بدون تخطيط)
prompt = "<image>\nFree OCR."
# تحليل الرسم البياني
prompt = "<image>\nParse the figure."
# وصف تفصيلي للصورة
prompt = "<image>\nDescribe this image in detail."
# تحديد موقع النص
prompt = "<image>\nLocate <|ref|>xxxx<|/ref|> in the image."
التطبيقات العملية
- رقمنة المستندات: معالجة فعالة للمستندات مثل الأوراق الأكاديمية والكتب والتقارير.
- توليد مجموعات البيانات: توليد كميات هائلة من بيانات التدريب لنماذج اللغة الكبيرة ونماذج اللغة البصرية.
- ضغط سياق روبوتات الدردشة: تخزين سجلات المحادثات القديمة عن طريق تقليل الدقة (على غرار تدهور الذاكرة البشرية).
- استخراج البيانات المهيكلة:
- تحويل الرسوم البيانية المالية إلى بيانات مهيكلة.
- توليد جداول ورسوم بيانية بصيغة Markdown تلقائيًا.
- يدعم التعرف على الصيغ الكيميائية (بصيغة SMILES).
التثبيت والاستخدام
متطلبات البيئة
- Python 3.12.9
- CUDA 11.8
- PyTorch 2.6.0
- Transformers 4.46.3
خطوات التثبيت
# استنساخ المستودع
git clone https://github.com/deepseek-ai/DeepSeek-OCR.git
cd DeepSeek-OCR
# إنشاء بيئة Conda
conda create -n deepseek-ocr python=3.12.9 -y
conda activate deepseek-ocr
# تثبيت التبعيات
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu118
pip install vllm-0.8.5+cu118-cp38-abi3-manylinux1_x86_64.whl
pip install -r requirements.txt
pip install flash-attn==2.7.3 --no-build-isolation
أمثلة الاستخدام
الطريقة الأولى: استخدام Transformers
from transformers import AutoModel, AutoTokenizer
import torch
import os
os.environ["CUDA_VISIBLE_DEVICES"] = '0'
model_name = 'deepseek-ai/DeepSeek-OCR'
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModel.from_pretrained(
model_name,
_attn_implementation='flash_attention_2',
trust_remote_code=True,
use_safetensors=True
)
model = model.eval().cuda().to(torch.bfloat16)
# تهيئة معلمات الاستدلال
prompt = "<image>\n<|grounding|>Convert the document to markdown."
image_file = 'your_image.jpg'
output_path = 'your/output/dir'
# تنفيذ الاستدلال
res = model.infer(
tokenizer,
prompt=prompt,
image_file=image_file,
output_path=output_path,
base_size=1024,
image_size=640,
crop_mode=True,
save_results=True,
test_compress=True
)
الطريقة الثانية: استخدام vLLM (استدلال عالي الأداء)
# تعديل ملف التكوين
cd DeepSeek-OCR-master/DeepSeek-OCR-vllm
# قم بتحرير config.py لتعيين INPUT_PATH/OUTPUT_PATH
# تشغيل OCR للصور (إخراج متدفق)
python run_dpsk_ocr_image.py
# تشغيل OCR لملفات PDF (تزامن عالٍ)
python run_dpsk_ocr_pdf.py
# التقييم الدفعي
python run_dpsk_ocr_eval_batch.py
الابتكارات التقنية
نموذج ضغط النص المرئي
يقدم DeepSeek-OCR نموذجًا جديدًا لضغط النص المرئي:
- الفكرة الأساسية: تحويل النص إلى صور ومعالجتها بواسطة مرمز بصري، بدلاً من تخزين الدلالات في شكل توكنات نصية.
- المزايا:
- استهلاك أقل للذاكرة: التوكنات البصرية أكثر إحكامًا.
- سرعة استدلال أعلى: عدد أقل من التوكنات = حجم حسابي أقل.
- آلية نسيان طبيعية: يمكن تقليل عينات السياق القديم.
- اندماج أسهل للوسائط المتعددة: يعتبر النموذج النص كصورة بالفعل.
الفرق عن التعرف الضوئي على الحروف (OCR) التقليدي
يعتمد التعرف الضوئي على الحروف (OCR) التقليدي على بنية خط أنابيب (الكشف ← التعرف ← المعالجة اللاحقة)، بينما يعتمد DeepSeek-OCR على بنية نموذج لغوي بصري شامل (من البداية إلى النهاية)، مما يبسط نظام OCR بشكل جذري.
روابط الموارد
- مستودع GitHub: https://github.com/deepseek-ai/DeepSeek-OCR
- نموذج Hugging Face: https://huggingface.co/deepseek-ai/DeepSeek-OCR
- الورقة التقنية: DeepSeek_OCR_paper.pdf
- الترخيص: رخصة MIT
شكر وتقدير
يشكر مشروع DeepSeek-OCR مساهمات المشاريع مفتوحة المصدر التالية:
- Vary
- GOT-OCR2.0
- MinerU
- PaddleOCR
- OneChart
- Slow Perception
بالإضافة إلى مجموعات بيانات الاختبار المعيارية: Fox و OmniDocBench.
الملخص
يمثل DeepSeek-OCR ابتكارًا كبيرًا في تقنية التعرف الضوئي على الحروف (OCR)، حيث يعالج تحديات معالجة السياق الطويل في نماذج اللغة الكبيرة من خلال نموذج الضغط البصري. إن قدرته الفعالة على ضغط التوكنات (7-20 ضعفًا)، ودقته الممتازة (97% دقة عند ضغط 10 أضعاف)، وقدرته القوية على المعالجة (معالجة 200 ألف صفحة يوميًا بوحدة معالجة رسوميات واحدة)، تجعله خيارًا مثاليًا لرقمنة المستندات، وتوليد بيانات تدريب الذكاء الاصطناعي، وتطبيقات الوسائط المتعددة.
إن طبيعة المشروع مفتوحة المصدر ووثائقه الشاملة تجعل من السهل دمجه في مختلف سيناريوهات التطبيق، مما يوفر أداة قوية للباحثين والمطورين لاستكشاف حدود ضغط النص المرئي.