DdddOcr هو عبارة عن تعاون بين المؤلف وkerlomz، فهو يُنشئ مجموعات كبيرة من البيانات العشوائية ويُجري تدريبًا عميقًا على الشبكة، ولم يتم تصميمه لأي شركة مصنعة لرمز التحقق. يعتمد تأثير استخدام هذه المكتبة بشكل كامل على الميتافيزيقا يمكن تحديدها.
يعمل DdddOcr، وهو مفهوم الحد الأدنى من الاعتماد، على تقليل تكاليف تكوين المستخدم واستخدامه، على أمل تقديم تجربة مريحة لكل مختبر
عنوان المشروع: اضغط هنا للإرسال
مكتبة بايثون العالمية سهلة الاستخدام للتعرف على كلمة التحقق
استكشف الوثائق الخاصة بهذا المشروع »
· الإبلاغ عن الأخطاء · اقتراح ميزات جديدة
شركاء الرعاية
دليل البدء
الدعم البيئي
خطوات التثبيت
وصف دليل الملفات
الدعم الأساسي للمشروع
استخدام الوثائق
القدرة الأساسية على التعرف على الحروف OCR
القدرة على كشف الهدف
كشف المنزلق
إخراج احتمال التعرف الضوئي على الحروف
استيراد نموذج تدريب التعرف الضوئي على الحروف (OCR) المخصص
التحكم في الإصدار
المقالات أو المشاريع الموصى بها ذات الصلة
مؤلف
يتبرع
تاريخ النجوم
شركاء الرعاية | أسباب التوصية | |
---|---|---|
نعمكابتشا | رمز التحقق من Google reCaptcha/رمز التحقق hCaptcha/رمز التحقق funCaptcha واجهة تعريف الدرجة التجارية انقر فوقي مباشرة إلى VIP4 | |
النسر السوبر | الشركة الرائدة عالميًا في تصنيف الصور الذكية والتعرف عليها، وهي آمنة ودقيقة وفعالة ومستقرة ومفتوحة، مع فريق فني وتحقق قوي يدعم التزامن الكبير. إدارة التقدم الوظيفي 7 * 24 ساعة | |
مالينيا | منصة بوابة IP للوكيل على مستوى المؤسسة من Malenia / برنامج توزيع IP للوكيل | |
نيمبوس VPS | خصم 50% للشهر الأول للتسجيل | عقدة تشجيانغ منخفضة السعر وعرض النطاق الترددي الكبير، 100 مليون 30 يوان شهريا |
نظام | وحدة المعالجة المركزية | GPU | الحد الأقصى لإصدار py المدعوم | ملاحظة |
---|---|---|---|---|
ويندوز 64 بت | √ | √ | 3.12 | تحتاج بعض إصدارات Windows إلى تثبيت مكتبة وقت التشغيل vc |
ويندوز 32 بت | × | × | - | |
لينكس64/ARM64 | √ | √ | 3.12 | |
لينكس 32 | × | × | - | |
ماكوس X64 | √ | √ | 3.12 | M1/M2/M3...مرجع الرقاقة رقم 67 |
أنا
نقطة تثبيت dddddocr
ثانيا. التثبيت من المصدر
استنساخ بوابة https://github.com/sml2h3/ddddocr.gitcd ddddocr بيثون setup.py
الرجاء عدم استيراد dddddocr مباشرة في الدليل الجذر لمشروع dddddocr . يرجى التأكد من أن اسم الدليل الخاص بمشروع التطوير الخاص بك ليس dddddocr. هذا هو المنطق السليم.
على سبيل المثال:
ddddocr ├── MANIFEST.in ├── LICENSE ├── README.md ├── /ddddocr/ │ │── __init__.py 主代码库文件 │ │── common.onnx 新ocr模型 │ │── common_det.onnx 目标检测模型 │ │── common_old.onnx 老ocr模型 │ │── logo.png │ │── README.md │ │── requirements.txt ├── logo.png └── setup.py
يعتمد هذا المشروع على نتائج تدريب dddd_trainer. إطار التدريب الأساسي هو pytorch. يعتمد المنطق الأساسي لـ ddddocr على onnxruntime. لذلك، يعتمد الحد الأقصى للتوافق ودعم إصدار Python لهذا المشروع بشكل أساسي على onnxruntime.
يتم استخدامه بشكل أساسي لتحديد الأسطر الفردية من النص، أي أن جزء النص يحتل الجزء الرئيسي من الصورة، مثل اللغة الإنجليزية الشائعة ورموز التحقق الرقمية، وما إلى ذلك. يمكن لهذا المشروع التعرف على اللغة الصينية والإنجليزية (حالة عشوائية أو حالة عن طريق الإعداد نطاق النتائج)، والأرقام وبعض الأحرف الخاصة.
# example.pyimport ddddocrocr = ddddocr.DdddOcr()image = open("example.jpg", "rb").read()result = ocr.classification(image)print(result)
هناك مجموعتان من نماذج التعرف الضوئي على الحروف (OCR) مدمجة في هذه المكتبة، ولن يتم التبديل بينهما تلقائيًا بشكل افتراضي. تحتاج إلى التبديل بين المعلمات عند تهيئة ddddocr.
# example.pyimport ddddocrocr = ddddocr.DdddOcr(beta=True) # التبديل إلى المجموعة الثانية من نموذج التعرف الضوئي على الحروف image = open("example.jpg", "rb").read()result = ocr.classification(image)print ( نتيجة)
نصائح لدعم التعرف على بعض الصور الشفافة بتنسيق png باللون الأسود: تستخدم طريقة classification
المعلمة png_fix
، والقيمة الافتراضية هي False
ocr.classification(صورة، png_fix=صحيح)
يلاحظ
في السابق، وجدت أن العديد من الأشخاص يرغبون في إعادة تهيئة ddddocr في كل مرة يتم فيها التعرف على التعرف الضوئي على الحروف (OCR)، أي تنفيذ ocr = ddddocr.DdddOcr()
في كل مرة. هذا خطأ بشكل عام، لا يلزم التهيئة إلا مرة واحدة، لأن كل منهما التهيئة وسرعة التعرف الأولى بعد التهيئة بطيئة جدًا.
صورة المثال المرجعي
بما في ذلك على سبيل المثال لا الحصر الصور التالية
يتم استخدامه بشكل أساسي للكشف بسرعة عن موضع الهدف المحتمل في الصورة نظرًا لأن الهدف المكتشف ليس بالضرورة نصًا، فإن هذه الوظيفة توفر فقط موضع bbox للهدف (في اكتشاف الهدف، نستخدم عادةً bbox (المربع المحيط، الاختصار). هو bbox) لوصف موضع الهدف. bbox هو مربع مستطيل، والذي يمكن تحديده من خلال إحداثيات المحور x وy للزاوية اليسرى العليا للمستطيل وإحداثيات المحور x وy للزاوية اليمنى السفلية)
إذا لم تكن هناك حاجة لاستدعاء وظيفة ocr أثناء الاستخدام، فيمكنك إيقاف تشغيل وظيفة ocr عن طريق تمرير المعلمة ocr=False
أثناء التهيئة لتمكين اكتشاف الهدف، تحتاج إلى تمرير المعلمة det=True
استيراد ddddocrimport cv2det = ddddocr.DdddOcr(det=True)with open("test.jpg", 'rb') as f:image = f.read()bboxes = det.detection(image)print(bboxes)im = cv2 .imread("test.jpg") لـ bbox في bboxes:x1, y1, x2, y2 = bboxim = cv2.rectangle(im، (x1، y1)، (x2، y2)، اللون=(0، 0، 255)، سمك=2)cv2.imwrite("result.jpg"، im)
صورة المثال المرجعي
بما في ذلك على سبيل المثال لا الحصر الصور التالية
لم يتم تنفيذ وظيفة الكشف عن شريط التمرير لهذا المشروع من خلال التعرف على الذكاء الاصطناعي، ولكن تم تنفيذها من خلال خوارزمية opencv المدمجة. قد لا يكون الأمر مناسبًا للمستخدمين الذين يلتقطون لقطات شاشة. إذا لم تكن هناك حاجة لاستدعاء وظيفة ocr أو وظيفة اكتشاف الهدف أثناء الاستخدام، فيمكنك إيقاف تشغيل وظيفة ocr أو det=False
ocr=False
أثناء التهيئة إلى. قم بإيقاف تشغيل وظيفة الكشف عن الهدف.
تحتوي هذه الوظيفة على تطبيقين خوارزميين مدمجين، مناسبين لحالتين مختلفتين. يرجى الرجوع إلى الإرشادات التالية للحصول على التفاصيل.
أ. الخوارزمية 1
مبدأ الخوارزمية 1 هو حساب موضع الحفرة المقابلة في صورة الخلفية من خلال حافة صورة شريط التمرير، ويمكن الحصول على صورة شريط التمرير وصورة الخلفية على التوالي.
مخطط منزلق
صورة الخلفية
det = dddddocr.DdddOcr(det=False, ocr=False) مع open('target.png', 'rb') كـ f:target_bytes = f.read() مع open('background.png', 'rb') مثل f:background_bytes = f.read() res = det.slide_match(target_bytes, الخلفية_bytes) طباعة(res)
نظرًا لأن المخطط المنزلق قد يكون به مشكلة في الحدود الشفافة، فقد لا تكون نتائج الحساب دقيقة، ويلزمك تقدير عرض الحدود الشفافة للمخطط المنزلق بنفسك لتصحيح مربع bbox الناتج.
نصيحة: إذا لم يكن شريط التمرير يحتوي على الكثير من الخلفية، فيمكنك إضافة المعلمة simple_target، والتي تكون عادةً صورة بتنسيق jpg أو bmp.
الشريحة = dddddocr.DdddOcr(det=False, ocr=False) مع open('target.jpg', 'rb') كـ f:target_bytes = f.read() مع open('background.jpg', 'rb') مثل f:background_bytes = f.read() res = Slide.slide_match(target_bytes, الخلفية_bytes, simple_target=True) طباعة (الدقة)
أ. الخوارزمية 2
تهدف الخوارزمية 2 إلى تحديد موضع حفرة الهدف المنزلق من خلال مقارنة الاختلافات بين الصورتين.
الرجوع إلى الشكل (أ)، الصورة الكاملة مع ظل الحفرة المستهدفة.
الصورة المرجعية ب، الصورة الكاملة
الشريحة = dddddocr.DdddOcr(det=False, ocr=False)مع open('bg.jpg', 'rb') كـ f:target_bytes = f.read() مع open('fullpage.jpg', 'rb') كما f:background_bytes = f.read() img = cv2.imread("bg.jpg") res = Slide.slide_comparison(target_bytes, الخلفية_بايت)طباعة(res)
من أجل توفير تحكم أكثر مرونة في نتائج التعرف الضوئي على الحروف وتحديد النطاق، يدعم المشروع تقييد نطاق نتائج التعرف الضوئي على الحروف.
يمكنك تمرير probability=True
عند استدعاء طريقة classification
. في هذا الوقت، ستعيد طريقة classification
احتمالية جدول الأحرف بأكمله، بالطبع، يمكنك أيضًا تعيين نطاق أحرف الإخراج من خلال طريقة set_ranges
للحد من الإرجاع نتائج.
Ⅰ. تحدد طريقة set_ranges
أحرف الإرجاع المراد إرجاعها
تقبل هذه الطريقة معلمة واحدة إذا كان الإدخال من النوع int، فهو عبارة عن حد لمجموعة أحرف مضمنة، وإذا كان نوع السلسلة عبارة عن مجموعة أحرف مخصصة،
إذا كان من النوع int، فيرجى الرجوع إلى الجدول التالي
قيمة المعلمة | دلالة |
---|---|
0 | عدد صحيح خالص 0-9 |
1 | الإنجليزية الصغيرة النقية az |
2 | الإنجليزية الكبيرة النقية من الألف إلى الياء |
3 | الإنجليزية الصغيرة az + الإنجليزية الكبيرة AZ |
4 | الإنجليزية الصغيرة az + عدد صحيح 0-9 |
5 | الحروف الإنجليزية الكبيرة AZ + عدد صحيح 0-9 |
6 | الإنجليزية الصغيرة az + الإنجليزية الكبيرة AZ + عدد صحيح 0-9 |
7 | مكتبة الأحرف الافتراضية - الإنجليزية الصغيرة من الألف إلى الياء - الإنجليزية الكبيرة من الألف إلى الياء - عدد صحيح 0-9 |
إذا كان من نوع سلسلة، فيرجى تمرير نص لا يحتوي على مسافات. كل حرف فيه عبارة عن كلمة مرشحة، مثل: "0123456789+-x/=""
import ddddocrocr = ddddocr.DdddOcr()image = open("test.jpg", "rb").read()ocr.set_ranges("0123456789+-x/=")result = ocr.classification(image,احتمال=صحيح )s = ""لأنني في النتيجة["الاحتمالية"]:s += النتيجة ['مجموعات الأحرف'] [i.index (max (i))] الطباعة (الطباعة)
يدعم هذا المشروع استيراد النماذج المدربة المخصصة من dddd_trainer، رمز الاستيراد المرجعي هو
import ddddocrocr = ddddocr.DdddOcr(det=False, ocr=False, import_onnx_path = "myproject_0.984375_139_13000_2022-02-26-15-34-13.onnx"، charsets_path = "charsets.json") مع open('test.jpg "، 'rb') كـ f:image_bytes = f.read()res = ocr.classification(image_bytes)print(res)
يستخدم هذا المشروع Git لإدارة الإصدارات. يمكنك رؤية الإصدارات المتوفرة حاليًا في المستودع.
أحضر لأخيك الأصغر تقنية التعرف الضوئي على الحروف (OCR)، وهو حل شامل للحصول على رموز التحقق من الشبكة محليًا باستخدام VBA الخالص
نسخة الصدأ dddddocr
نسخة معدلة من قاتل الكابتشا
تدريب نموذج CAPTCHA الأبجدي الرقمي وتحديد مكالمات النشر عبر ddddocr
...
مرحبًا بك في تقديم المزيد من الحالات أو البرامج التعليمية الممتازة. يمكنك إنشاء عنوان إصدار جديد مباشرةً بدءًا من [التقديم] وإرفاق رابط إلى موقع البرنامج التعليمي العام، وسأختار عرض الملف التمهيدي بناءً على محتوى المقالة، وهو أمر نسبيًا غير متكرر أو يحتوي على محتوى أساسي شكرًا لكم جميعًا
إذا كان لديك الكثير من الأصدقاء، فقد لا تتمكن من المرور. إذا كان لديك أي أسئلة، يمكنك التواصل في هذه القضية.
هذا المشروع مرخص بموجب ترخيص MIT، يرجى مراجعة الترخيص للحصول على التفاصيل