التعرف على النص في التطبيقات — ما هو، OCR وVision

المؤلف: IT Sectr نُشر: 2026-07-18 وقت القراءة: 10 دق

التعرف على النص (OCR — التعرف البصري على الأحرف) هي تقنية لاستخراج النص المطبوع أو المكتوب بخط اليد من الصور وتدفقات الفيديو. في تطوير التطبيقات المحمولة، يُستخدم التعرف على النص لرقمنة المستندات، والتعرف على لوحات الأرقام، وقراءة بطاقات العمل، وترجمة النص في الوقت الفعلي. حلول OCR المحمولة الرئيسية هي: ML Kit Text Recognition (Google)، Vision Framework (Apple)، Tesseract OCR (مفتوح المصدر). وفقًا Google ML Kit، 2025، يعالج Text Recognition V2 إطارًا في 10–30 مللي ثانية بدقة 96% على النص اللاتيني و91% على السيريلية.

النقاط الرئيسية

  • التعرف على النص — استخراج النص من الصور والفيديو (OCR)
  • ML Kit Text Recognition — 45+ لغة، دقة 96% (لاتيني)، 10–30 مللي ثانية
  • Apple Vision — VNRecognizeTextRequest، 13+ لغة، iOS أصلي
  • Tesseract — OCR مفتوح المصدر، 100+ لغة، 50–200 مللي ثانية، CPU
  • الوقت الفعلي — حتى 30 إطارًا في الثانية مع CameraX/AVFoundation على الأجهزة الحديثة

ما هو التعرف على النص: مبادئ OCR

التعرف على النص (OCR) هو عملية رؤية حاسوبية تحول صور النص إلى أحرف قابلة للقراءة آليًا. يتكون OCR من مراحل: معالجة الصورة المسبقة (التحويل إلى ثنائي، إزالة الانحراف، تصحيح الميل)، التجزئة (التقسيم إلى سطور وكلمات وأحرف)، التعرف (تصنيف كل حرف)، والمعالجة اللاحقة (التحقق بالقواميس، تصحيح الأخطاء). تستخدم أنظمة OCR الحديثة (ML Kit، Vision) شبكات عصبية شاملة تجمع جميع المراحل.

أنواع OCR: النص المطبوع — التعرف على النص المكتوب آليًا من المستندات واللافتات والشاشات — دقة 95–99%؛ النص المكتوب بخط اليد — التعرف على الإدخال اليدوي — دقة 80–90% على اللاتينية، 70–80% على السيريلية؛ نص المشهد — النص في المشاهد الطبيعية: أرقام المنازل، لافتات الطرق، أسماء المتاجر — الأكثر صعوبة بسبب تشوهات المنظور والوهج.

CRNN + CTC Loss — البنية المستخدمة في نماذج OCR الحديثة. تستخرج الشبكة العصبية التلافيفية المتكررة (CNN + LSTM) ميزات الصورة، بينما يقوم التصنيف الزمني الاتصالي بفك تشفير تسلسل الأحرف دون الحاجة إلى تجزئة مسبقة. تعمل CRNN مع نصوص من أي طول وهي مقاومة للانحراف والتشوهات. وفقًا لـarXiv (2025)، تحقق نماذج CRNN دقة 97.5% على معيار ICDAR 2019.

حل OCRالدقةالسرعةاللغاتالمنصة
ML Kit V296%10–30 مللي ثانية45+Android، iOS
Apple Vision95%10–40 مللي ثانية13+iOS، macOS
Tesseract 590%50–200 مللي ثانية100+متعدد المنصات
Google Cloud Vision98%500–1000 مللي ثانية200+خادم (API)

CRNN للأجهزة المحمولة — يستخدم ML Kit نموذج MobileNetV2 + CRNN مع تكميم INT8. يبلغ حجم النموذج 2–5 ميجابايت (كامن) ويتم تشغيله على GPU/NPU عبر TFLite Delegate. على عكس Tesseract (خط أنابيب كلاسيكي)، لا يتطلب OCR بالشبكات العصبية تجزئة أحرف منفصلة وهو أكثر مقاومة للضوضاء. العيب: يتطلب GPU أو NPU للوقت الفعلي — على CPU فقط، تنخفض السرعة إلى 5–10 إطارًا في الثانية.

ML Kit Text Recognition على Android وiOS

ML Kit Text Recognition هي أداة OCR الرئيسية للتطبيقات المحمولة. وهي متوفرة في نسختين: V2 (قائم على اللاتينية — محسّن لللاتينية والسيريلية والأرقام) وV1 (لاتيني + CJK — اليابانية والصينية والكورية، لكنها أبطأ). تستخدم V2 نموذج CRNN شامل، بينما تستخدم V1 نموذج CNN + LSTM أقدم. توصي Google باستخدام V2 لجميع الحالات باستثناء الحاجة إلى التعرف على CJK.

هيكل نتيجة ML Kit: Text → TextBlock → Line → Element (Word/Symbol). كل مستوى له صندوق إحاطة وثقة (0..1) ونص تم التعرف عليه. Text هو الكائن الجذر مع fullText (كل النص المُتعرف عليه في سطر واحد). TextBlock هو كتلة نصية منطقية (فقرة، عمود). Line هو سطر نص. Element هو كلمة أو رمز. استخدم confidence لتصفية التعرف غير الدقيق.

kotlin
// ML Kit Text Recognition V2
val recognizer = TextRecognition.getClient(
    TextRecognizerOptions.DEFAULT_OPTIONS
)

recognizer.process(inputImage)
    .addOnSuccessListener { text ->
        val fullText = text.text
        text.textBlocks.forEach { block ->
            val blockText = block.text
            val blockRect = block.boundingBox
            block.lines.forEach { line ->
                line.elements.forEach { element ->
                    val word = element.text
                    val confidence = element.confidence
                }
            }
        }
    }
    .addOnFailureListener { error -> /* error */ }

التعرف على النص على iOS عبر ML Kit: واجهة API مشابهة لـAndroid لكنها تستخدم UIImage/CVPixelBuffer بدلاً من InputImage. يستخدم ML Kit تلقائيًا Apple Neural Engine على A12+ عبر Core ML Delegate. بالنسبة لـiOS، يحقق ML Kit Text Recognition V2 سرعة 15–30 مللي ثانية على iPhone 15 Pro. للحصول على أقصى أداء، قم بتحويل UIImage إلى CVPixelBuffer قبل التمرير — فهذا يقلل من الحمل الزائد للتحويل.

Apple Vision Framework: VNRecognizeTextRequest

Apple Vision Framework يوفر OCR أصليًا عبر VNRecognizeTextRequest (iOS 13+). يستخدم Vision OCR Apple Neural Engine (ANE) ولا يتطلب SDK إضافية. يدعم 13 لغة (EN، FR، IT، DE، ES، PT، ZH، JP، KO، RU، AR، TH، VI). يكتشف Vision تلقائيًا لغة النص (تصحيح اللغة) ويدعم لغات متعددة في إطار واحد. السرعة — 10–40 مللي ثانية على A16+.

ميزات Vision OCR: recognitionLevel (سريع مقابل دقيق)، automaticLanguageDetection، customWords (إضافة مصطلحات محددة)، supportsTop candidates (خيارات تعرف متعددة للنص غير الواضح). يعطي الوضع السريع دقة 90% في 10–20 مللي ثانية، والوضع الدقيق 95% في 30–50 مللي ثانية. للإنتاج، استخدم الوضع الدقيق مع تصفية حسب confidence >= 0.5.

swift
import Vision

let request = VNRecognizeTextRequest { request, error in
    guard let observations = request.results as? [VNRecognizedTextObservation] else { return }
    for observation in observations {
        let topCandidate = observation.topCandidates(1).first
        let text = topCandidate?.string ?? ""
        let confidence = topCandidate?.confidence ?? 0
        let boundingBox = observation.boundingBox
    }
}
request.recognitionLevel = .accurate
request.usesLanguageCorrection = true

let handler = VNImageRequestHandler(cgImage: cgImage, orientation: .up)
try handler.perform([request])

Vision مقابل ML Kit على iOS: Vision أسرع على الأجهزة القديمة (iPhone X–13) بفضل ANE المدمج. ML Kit أكثر دقة على المشاهد المعقدة (التشوهات والانحراف والوهج) بفضل نموذج Google المُدرّب على ملايين من صور نص المشهد. لا يدعم Vision الثقة للأحرف الفردية (فقط للكلمات)، مما يحد من التصفية. للمستندات — Vision (أسرع)، لنص المشهد — ML Kit (أكثر دقة).

Tesseract OCR: بديل مفتوح المصدر

Tesseract OCR هو محرك تعرف على النص مفتوح المصدر طورته HP (1985–1998) وتديره Google (2006+). يستخدم Tesseract 5 (قائم على LSTM) بنية الشبكة العصبية CRNN، مما يوفر زيادة كبيرة في الدقة مقارنة بـTesseract 4 (كلاسيكي + LSTM). يدعم Tesseract 100+ لغة، بما في ذلك السيريلية والعربية والعبرية وCJK. لنظام Android — tess-two (فرع)، لنظام iOS — swift-tesseract.

عيوب Tesseract: السرعة 50–200 مللي ثانية لكل إطار (CPU فقط، بدون تسريع GPU)، يتطلب معالجة مسبقة للصورة (التحويل إلى ثنائي، إزالة الانحراف، اكتشاف الاتجاه) قبل التمرير إلى المحرك، لا يوجد اكتشاف نص مدمج — يجب تمرير منطقة الصورة (غالبًا مع OpenCV Text Detection أو EAST). يحقق Tesseract دقة 90% على المستندات النظيفة و~70% على نص المشهد.

متى تختار Tesseract: إذا كان التطبيق يعمل على أجهزة بدون Google Play (Huawei)، أو يحتاج إلى دعم لغات نادرة (السنسكريتية، العبرية)، أو يتطلب تخصيصًا كاملاً لخط أنابيب OCR (التدريب على خطوط مخصصة). في جميع الحالات الأخرى، ML Kit أو Vision أسرع وأكثر دقة وتتطلب كودًا أقل. Tesseract مبرر فقط عند وجود قيود على SDK الطرف الثالث.

kotlin
// Tesseract OCR عبر tess-two
val tess = TessBaseAPI()
tess.init(dataPath, "rus+eng")
tess.pageSegMode = TessBaseAPI.PageSegMode.PSM_AUTO

val bitmap = BitmapFactory.decodeResource(resources, R.drawable.text)
val gray = Bitmap.createBitmap(bitmap.width, bitmap.height, Bitmap.Config.ARGB_8888)
OpenCV.process(bitmap, gray) // التحويل إلى ثنائي + إزالة الانحراف

tess.setImage(gray)
val result = tess.utF8Text
tess.recycle()

المعالجة المسبقة لـTesseract إلزامية: التحويل إلى تدرج رمادي، التحويل إلى ثنائي (Otsu أو Adaptive)، إزالة الانحراف، إزالة الضوضاء (median blur). بدون معالجة مسبقة، تنخفض دقة Tesseract إلى 50–60%. استخدم OpenCV للمعالجة المسبقة: Imgproc.cvtColor → Imgproc.threshold → Imgproc.erode/dilate → Core.rotate (deskew). للمستندات ذات الخلفية الموحدة، يكفي التحويل إلى ثنائي؛ لنص المشهد، يلزم خط أنابيب كامل.

معالجة الصور المسبقة لـOCR

جودة الصورة هي العامل الرئيسي لدقة OCR. يحتوي ML Kit وVision على معالجة مسبقة مدمجة، ولكن للحالات الصعبة (الصور الداكنة، الضبابية، التعرض الزائد)، تعمل المعالجة الإضافية على تحسين الدقة بنسبة 10–15%. التقنيات الرئيسية: تحسين التباين (CLAHE)، التوضيح (unsharp mask)، تصحيح المنظور (perspective transform)، إزالة الظلال والوهج.

CLAHE (معادلة الرسم البياني التكيفية محدودة التباين) — معادلة رسم بياني تكيفية تحسن التباين في المناطق المحلية. CLAHE فعال لصور المستندات ذات الإضاءة غير المتساوية (جزء في الظل، جزء مضاء). يعطي OpenCV Core.createCLAHE مع clipLimit=2.0 وtileGridSize=(8,8) نتائج مثالية لـOCR. بعد CLAHE، تتحسن دقة ML Kit على المستندات الداكنة من 70% إلى 88%.

تصحيح المنظور — إلزامي لصور المستندات الملتقطة بزاوية. استخدم OpenCV findHomography + warpPerspective لمحاذاة المستند. للكشف التلقائي عن حدود المستند، استخدم Canny edge detection + findContours + approxPolyDP. بعد تصحيح المنظور، تتحسن دقة OCR بنسبة 20–30% للقطات بزوايا >30°.

kotlin
// CLAHE + معالجة OpenCV مسبقة
val mat = Mat()
Utils.bitmapToMat(bitmap, mat)
Imgproc.cvtColor(mat, mat, Imgproc.COLOR_RGB2GRAY)

val clahe = Imgproc.createCLAHE(2.0, Size(8.0, 8.0))
clahe.apply(mat, mat)

Imgproc.GaussianBlur(mat, mat, Size(3.0, 3.0), 0.0)
Imgproc.threshold(mat, mat, 0.0, 255.0, Imgproc.THRESH_BINARY or Imgproc.THRESH_OTSU)

val processedBitmap = Bitmap.createBitmap(mat.cols(), mat.rows(), Bitmap.Config.ARGB_8888)
Utils.matToBitmap(mat, processedBitmap)

اكتشاف النص قبل OCR — لنص المشهد، استخدم EAST (كاشف نص المشهد الفعال والدقيق) أو CRAFT (الوعي بمنطقة الأحرف لاكتشاف النص) قبل التمرير إلى OCR. يكتشف EAST صناديق إحاطة النص في المشهد في 5–15 مللي ثانية. CRAFT أكثر دقة (97%) لكنه أبطأ (50–100 مللي ثانية). يتيح اكتشاف النص تصفية المناطق الخالية من النص وتمرير المناطق ذات الصلة فقط إلى OCR، مما يسرع المعالجة الإجمالية.

تطبيقات OCR في التطبيقات المحمولة

مسح المستندات — أكثر تطبيقات OCR انتشارًا. تستخدم تطبيقات المسح (CamScanner، Adobe Scan، Google Drive) ML Kit أو Vision للتعرف على النص من صور المستندات. خط الأنابيب النموذجي: اكتشاف حدود المستند → تصحيح المنظور → معالجة CLAHE → OCR → التنسيق (PDF، DOCX). يتعامل ML Kit Text Recognition V2 معها في 100–200 مللي ثانية لكل صفحة A4.

ترجمة النص في الوقت الفعلي — مزيج من OCR والترجمة الآلية. تستخدم Google Translate وMicrosoft Translator وYandex Translate ML Kit أو Vision للتعرف على النص من الكاميرا وتراكب الترجمة فوق النص الأصلي (ترجمة AR). المتطلب: زمن استجابة < 200 مللي ثانية لتجربة مستخدم مريحة. يوفر ML Kit V2 + NNAPI 30–80 مللي ثانية لكل إطار، تاركًا هامشًا للترجمة والعرض.

إدخال البيانات تلقائيًا — OCR لاستخراج البيانات من بطاقات العمل وبطاقات البنك والهويات. يتعرف ML Kit على النص، ثم تقوم المعالجة اللاحقة بتحليل البنية: الاسم، الهاتف، البريد الإلكتروني (بطاقات العمل) أو رقم البطاقة، تاريخ الانتهاء، CVV (بطاقات الدفع). لبطاقات العمل، استخدم التعبيرات العادية بعد OCR. لبطاقات البنك — نماذج ML متخصصة (مدفوعة، ~99% دقة).

swift
// OCR + ترجمة AR (مبسطة)
let request = VNRecognizeTextRequest { req, _ in
    guard let results = req.results as? [VNRecognizedTextObservation] else { return }
    for observation in results {
        let text = observation.topCandidates(1).first?.string ?? ""
        let rect = observation.boundingBox
        // الترجمة وعرض AR فوق المستطيل
        DispatchQueue.main.async {
            overlayView.showTranslation(text, at: rect)
        }
    }
}
request.recognitionLevel = .fast
request.usesLanguageCorrection = false

OCR للأشخاص ذوي الإعاقة البصرية — تقنية مساعدة: تقرأ التطبيقات النص من العبوات والقوائم واللافتات بصوت عالٍ. تستخدم ML Kit OCR + تحويل النص إلى كلام (Android TTS / iOS AVSpeechSynthesizer). المتطلب الرئيسي — الوقت الفعلي مع زمن استجابة منخفض (< 100 مللي ثانية). تستخدم Seeing AI (Microsoft) وEnvision AI هذا النهج. لتطبيقات الوصول، استخدم وضع التعرف السريع ولا تقم بالتصفية حسب الثقة — أي نص ذو قيمة للمستخدم.

الأسئلة الشائعة

ما هو التعرف على النص (OCR) في التطبيقات المحمولة؟

التعرف على النص (OCR) هو تقنية تسمح للتطبيق بقراءة النص من الصور والفيديو. تلتقط كاميرا الهاتف الذكي صورة، وتتعرف الشبكة العصبية على الجهاز على الأحرف وتعيد نصًا قابلًا للقراءة آليًا. في التطبيقات المحمولة، يُستخدم OCR لمسح المستندات والترجمة بالكاميرا وإدخال البيانات من بطاقات العمل وإنشاء واجهات يمكن الوصول إليها للأشخاص ذوي الإعاقة البصرية.

أي OCR أفضل لنظام Android: ML Kit أم Tesseract؟

ML Kit Text Recognition هو الخيار الأفضل لنظام Android: دقة 96%، سرعة 10–30 مللي ثانية، 45 لغة، تسريع GPU عبر NNAPI، يجد النص في أي اتجاه. Tesseract هو بديل مفتوح المصدر (دقة 90%، 100+ لغة، CPU)، مناسب للأجهزة بدون Google Play أو اللغات النادرة. لـ95% من المشاريع، اختر ML Kit — فهو أسرع وأكثر دقة ولا يتطلب معالجة مسبقة للصورة.

هل يتطلب OCR على الجهاز المحمول اتصالاً بالإنترنت؟

لا، يعمل ML Kit Text Recognition وApple Vision وTesseract بالكامل على الجهاز. يمكن لـML Kit تنزيل النموذج عند التشغيل الأول (وضع التنزيل)، وبعد ذلك يعمل دون اتصال. Apple Vision مدمج في iOS ولا يتطلب إنترنت. Tesseract يعمل بدون اتصال بالكامل. يعمل OCR السحابي (Google Cloud Vision، AWS Textract) عبر الإنترنت لكنه لا يُستخدم في تطبيقات الوقت الفعلي المحمولة.

ما اللغات التي يدعمها ML Kit Text Recognition؟

يدعم ML Kit Text Recognition V2 45+ لغة من المجموعات اللاتينية والسيريلية: الإنجليزية والروسية والألمانية والفرنسية والإسبانية والإيطالية والبرتغالية والبولندية والأوكرانية والرومانية والتركية وغيرها. V1 (CJK) يدعم بالإضافة إلى ذلك الصينية واليابانية والكورية. القائمة الكاملة — في توثيق TextRecognizerOptions. للتعرف على العربية أو العبرية، استخدم Tesseract (>100 لغة).

كيفية تحسين دقة OCR على صور المستندات؟

الطرق الرئيسية: محاذاة المستند (تصحيح المنظور عبر OpenCV)، تحسين التباين (CLAHE)، التوضيح (unsharp mask)، الإضاءة الجيدة (التعريض التلقائي المستمر)، تثبيت الكاميرا (OIS/EIS). يعالج MLKit التشوهات الأساسية بنفسه، ولكن للمستندات ذات تشوهات المنظور (>30°)، تعمل المعالجة المسبقة على تحسين الدقة بنسبة 20–30%. استخدم وضع التعرف السريع للفيديو.

الملخص

  • التعرف على النص — OCR على الأجهزة المحمولة: نص مطبوع، مكتوب بخط اليد، نص مشهد
  • ML Kit V2 — دقة 96%، 45+ لغة، 10–30 مللي ثانية، تسريع GPU/NPU
  • Apple Vision — OCR أصلي لنظام iOS (iOS 13+)، 13 لغة، عبر ANE
  • Tesseract 5 — مفتوح المصدر، 100+ لغة، 50–200 مللي ثانية (CPU)، بديل لـHuawei
  • المعالجة المسبقة — CLAHE، إزالة الانحراف، تصحيح المنظور تحسن الدقة 10–30%
  • الوقت الفعلي — حتى 30 إطارًا في الثانية عبر CameraX/AVFoundation مع ML Kit أو Vision
  • على الجهاز — كل العمليات الحسابية محلية، خصوصية البيانات مضمونة

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا