مرحبًا بدعم اللغة العربية في استخراج النصوص من الصور

في iOS18 شركة Apple دعمت اللغة العربية في Live Text

والجميل ايضاً بأنها دعمت اللغة العربية ايضا في الـ VNRecognizeTextRequest

من تجربتي النتائج كانت دقيقة جداً مع مختلف النصوص ولكن بالنسبة للخط اليد فالنتائج كانت متفاوته

import Vision

    func ocr(image: UIImage?) -> String {
        
        var text: String = ""
        
        guard let image = image else {
            print("Failed to load image")
            return ""
        }
        
        guard let cgImage = image.cgImage else {
            print("Failed to get CGImage from UIImage")
            return ""
        }
        
        let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])
        
        let recognizeRequest = VNRecognizeTextRequest { (request, error) in
                        
            if let error = error {
                print("Failed to recognize text: \(error.localizedDescription)")
                return
            }
            
            guard let results = request.results as? [VNRecognizedTextObservation] else {
                print("No text found")
                return
            }
            
            let stringArray = results.compactMap { result in
                result.topCandidates(1).first?.string
            }
            
            let recognizedString = stringArray.joined(separator: "\n")
            
            let singleLineText = recognizedString
                .components(separatedBy: .newlines)
                .joined(separator: " ")

            text = singleLineText
        }

        recognizeRequest.automaticallyDetectsLanguage = true
        
        recognizeRequest.recognitionLevel = .accurate
        
        
        do {
            try handler.perform([recognizeRequest])
        } catch {
            print("Failed to perform text recognition: \(error.localizedDescription)")
        }
        
        return text
    }

شرح الكود

لإستخراج النص نحتاج نضيف import Vision

ومن ثم استخدام VNRecognizeTextRequest لإستخراج النص من الصوره OCR

الخطوات المهمه هنا هيا اضافة هذا السطر

recognizeRequest.automaticallyDetectsLanguage = true

فائدته هو السماح للـ Vision لتحديد اللغة بشكل تلقائي ، تم اضافته في iOS16
سابقاً كان يجب تحدد اللغة التي تريد استخراج النص منها ولكن من iOS16 فقط تحتاج اضافة السطر السابق

السطر الأخر الذي يجب إضافته هو

recognizeRequest.recognitionLevel = .accurate

الـ recognitionLevel هناك نوعين fast او accurate

مع اللغة العربية يجب اختيار نوع accurate

فيديو يوضح دقة نتائج الـ OCR مع اللغة العربية