
أداة OCR جاهزة للاستخدام تدعم أكثر من 80 لغة وجميع أنظمة الكتابة الشائعة بما في ذلك اللاتينية والصينية والعربية والديفاناغارية والسيريلية وغيرها.
OCR جاهز للاستخدام مع أكثر من 80 لغة مدعومة وجميع أنظمة الكتابة الشائعة بما في ذلك: اللاتينية، الصينية، العربية، الديفاناغارية، السيريلية، إلخ.
جرّب العرض التجريبي على موقعنا
مدمج في Huggingface Spaces 🤗 باستخدام Gradio. جرّب العرض التجريبي على الويب:
24 سبتمبر 2024 - الإصدار 1.7.2



التثبيت باستخدام pip
للإصدار الثابت الأحدث:
pip install easyocr
للإصدار التطويري الأحدث:
pip install git+https://github.com/JaidedAI/EasyOCR.git
ملاحظة 1: بالنسبة لنظام Windows، يرجى تثبيت torch و torchvision أولاً باتباع التعليمات الرسمية هنا https://pytorch.org. على موقع pytorch، تأكد من تحديد إصدار CUDA الصحيح الذي لديك. إذا كنت تنوي التشغيل في وضع CPU فقط، فحدد CUDA = None.
ملاحظة 2: نوفر أيضًا Dockerfile هنا.
import easyocr
reader = easyocr.Reader(['ch_sim','en']) # this needs to run only once to load the model into memory
result = reader.readtext('chinese.jpg')
سيكون الناتج بتنسيق قائمة، حيث يمثل كل عنصر صندوقًا محيطًا، والنص المكتشف، ومستوى الثقة، على التوالي.
[([[189, 75], [469, 75], [469, 165], [189, 165]], '愚园路', 0.3754989504814148),
([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.40452659130096436),
([[517, 81], [565, 81], [565, 123], [517, 123]], '东', 0.9989598989486694),
([[78, 126], [136, 126], [136, 156], [78, 156]], '315', 0.8125889301300049),
([[514, 126], [574, 126], [574, 156], [514, 156]], '309', 0.4971577227115631),
([[226, 170], [414, 170], [414, 220], [226, 220]], 'Yuyuan Rd.', 0.8261902332305908),
([[79, 173], [125, 173], [125, 213], [79, 213]], 'W', 0.9848111271858215),
([[529, 173], [569, 173], [569, 213], [529, 213]], 'E', 0.8405593633651733)]
ملاحظة 1: ['ch_sim','en'] هو قائمة اللغات التي تريد قراءتها. يمكنك تمرير عدة لغات في وقت واحد ولكن لا يمكن استخدام جميع اللغات معًا. اللغة الإنجليزية متوافقة مع كل لغة، واللغات التي تشترك في أحرف مشتركة عادة ما تكون متوافقة مع بعضها البعض.
ملاحظة 2: بدلاً من مسار الملف chinese.jpg، يمكنك أيضًا تمرير كائن صورة OpenCV (مصفوفة numpy) أو ملف صورة كبايتات. كما أن رابط URL لصورة خام مقبول أيضًا.
ملاحظة 3: السطر reader = easyocr.Reader(['ch_sim','en']) مخصص لتحميل نموذج إلى الذاكرة. يستغرق بعض الوقت ولكنه يحتاج إلى التشغيل مرة واحدة فقط.
يمكنك أيضًا تعيين detail=0 للحصول على ناتج أبسط.
reader.readtext('chinese.jpg', detail = 0)
النتيجة:
['愚园路', '西', '东', '315', '309', 'Yuyuan Rd.', 'W', 'E']
سيتم تنزيل أوزان النموذج للغة المحددة تلقائيًا، أو يمكنك تنزيلها يدويًا من مركز النماذج ووضعها في مجلد '~/.EasyOCR/model'
إذا لم يكن لديك GPU، أو كانت ذاكرة GPU منخفضة، يمكنك تشغيل النموذج في وضع CPU فقط بإضافة gpu=False.
reader = easyocr.Reader(['ch_sim','en'], gpu=False)
لمزيد من المعلومات، اقرأ البرنامج التعليمي ووثائق API.
$ easyocr -l ch_sim en -f chinese.jpg --detail=1 --gpu=True
بالنسبة لنموذج التعرف، اقرأ هنا.
بالنسبة لنموذج الكشف (CRAFT)، اقرأ هنا.
reader = easyocr.Reader(['en'], detection='DB', recognition = 'Transformer')
الفكرة هي أن نتمكن من توصيل أي نموذج حديث (state-of-the-art) في EasyOCR. هناك الكثير من العباقرة يحاولون صنع نماذج كشف/تعرف أفضل، لكننا لا نحاول أن نكون عباقرة هنا. نريد فقط أن نجعل أعمالهم متاحة للجمهور بسرعة ... مجانًا. (حسنًا، نعتقد أن معظم العباقرة يريدون أن يُحدث عملهم تأثيرًا إيجابيًا بأسرع/أكبر قدر ممكن) يجب أن تكون خطوة المعالجة (pipeline) شيئًا مثل المخطط أدناه. الفتحات الرمادية هي عناصر نائبة لوحدات زرقاء فاتحة قابلة للتغيير.

يعتمد هذا المشروع على أبحاث وأكواد من عدة أوراق بحثية ومستودعات مفتوحة المصدر.
يعتمد تنفيذ جميع عمليات التعلم العميق على Pytorch. ❤️
تنفيذ الكشف يستخدم خوارزمية CRAFT من المستودع الرسمي هذا وورقتهم البحثية (شكرًا @YoungminBaek من @clovaai). كما نستخدم نموذجهم المُدرَّب مسبقًا. سكربت التدريب مقدم من @gmuffiness.
نموذج التعرف هو CRNN (الورقة). يتكون من 3 مكونات رئيسية: استخراج الميزات (نستخدم حاليًا Resnet) و VGG، ووضع العلامات على التسلسل (LSTM) وفك التشفير (CTC). خط معالجة التدريب لتنفيذ التعرف هو نسخة معدلة من إطار deep-text-recognition-benchmark. (شكرًا @ku21fan من @clovaai) هذا المستودع جوهرة تستحق المزيد من التقدير.
كود بحث الشعاع (Beam search) مبني على هذا المستودع ومدونته. (شكرًا @githubharald)
توليف البيانات مبني على TextRecognitionDataGenerator. (شكرًا @Belval)
وأيضًا قراءة جيدة حول CTC من distill.pub هنا.
لنقدم الإنسانية معًا من خلال جعل الذكاء الاصطناعي متاحًا للجميع!
ثلاث طرق للمساهمة:
مطوّر البرامج: يرجى إرسال Pull Request (PR) للأخطاء/التحسينات الصغيرة. أما بالنسبة للأكبر، فناقشنا معنا بفتح Issue أولاً. هناك قائمة بالمسائل المحتملة للأخطاء/التحسينات موسومة بـ 'PR WELCOME'.
مستخدم: أخبرنا كيف يفيدك EasyOCR أو يفيد مؤسستك لتشجيع المزيد من التطوير. وانشر أيضًا حالات الفشل في قسم المسائل للمساعدة في تحسين النماذج المستقبلية.
قائد تقني/خبير: إذا وجدت هذه المكتبة مفيدة، فيرجى نشر الخبر! (انظر منشور Yann Lecun عن EasyOCR)
لطلب لغة جديدة، نحتاج منك إرسال PR مع الملفين التاليين:
إذا كانت لغتك تحتوي على عناصر فريدة (مثل 1. العربية: تتغير أشكال الأحرف عند ارتباطها ببعضها + الكتابة من اليمين إلى اليسار 2. التايلاندية: بعض الأحرف يجب أن تكون فوق السطر وبعضها تحته)، فيرجى تثقيفنا بأفضل ما تستطيع و/أو إعطائنا روابط مفيدة. من المهم الاهتمام بالتفاصيل لتحقيق نظام يعمل فعلاً.
أخيرًا، يرجى تفهم أن أولويتنا ستكون للغات الشائعة أو مجموعات اللغات التي تتشارك أجزاء كبيرة من أحرفها مع بعضها البعض (أخبرنا أيضًا إذا كان هذا هو الحال للغتك). يستغرق تطوير نموذج جديد أسبوعًا على الأقل، لذا قد تضطر إلى الانتظار قليلاً حتى يتم إصدار النموذج الجديد.
نظرًا للموارد المحدودة، سيتم إغلاق أي مسألة (Issue) أقدم من 6 أشهر تلقائيًا. يرجى فتح مسألة مرة أخرى إذا كانت حرجة.
لدعم المؤسسات، تقدم Jaided AI خدمة كاملة لأنظمة OCR/AI المخصصة بدءًا من التنفيذ، والتدريب/الضبط الدقيق، ووصولاً إلى النشر. انقر هنا للتواصل معنا.