2017-06-15 40 views
10

Resimdeki metni algılamak için iOS 11'in vizyon çerçevesini kullanıyorum. Metinler başarıyla algılanıyor, ancak tespit edilen metni nasıl alabiliyoruz.iOS 11 Görsel çerçeve - Görüntüden metin çıkarımı

+0

Şimdi CoreML'yi kullanmanız ve okunacak bölgeyi göndermeniz gerekiyor –

+0

@Alex Zaten algılanan bölgeleri almak. Tespit edilen bölgeyi okumak için çözüm lazım. – Abhishek

+1

Olası bir kopyası [VNTextObservation'ın bir String'e Dönüştürülmesi] (https://stackoverflow.com/questions/44533148/converting-a-vision-vntextobservation-to-a-string) –

cevap

-4

Bu algılanan metnin İşte

üzerinde dikdörtgen kutu ile bindirme görüntüsüne dönecektir https://github.com/cyruslok/iOS11-Vision-Framework-Demo

o yararlıdır

// Text Detect 
func textDetect(dectect_image:UIImage, display_image_view:UIImageView)->UIImage{ 
    let handler:VNImageRequestHandler = VNImageRequestHandler.init(cgImage: (dectect_image.cgImage)!) 
    var result_img:UIImage = UIImage.init(); 

    let request:VNDetectTextRectanglesRequest = VNDetectTextRectanglesRequest.init(completionHandler: { (request, error) in 
     if((error) != nil){ 
      print("Got Error In Run Text Dectect Request"); 

     }else{ 
      result_img = self.drawRectangleForTextDectect(image: dectect_image,results: request.results as! Array<VNTextObservation>) 
     } 
    }) 
    request.reportCharacterBoxes = true 
    do { 
     try handler.perform([request]) 
     return result_img; 
    } catch { 
     return result_img; 
    } 
} 

func drawRectangleForTextDectect(image: UIImage, results:Array<VNTextObservation>) -> UIImage { 
    let renderer = UIGraphicsImageRenderer(size: image.size) 
    var t:CGAffineTransform = CGAffineTransform.identity; 
    t = t.scaledBy(x: image.size.width, y: -image.size.height); 
    t = t.translatedBy(x: 0, y: -1); 

    let img = renderer.image { ctx in 
     for item in results { 
      let TextObservation:VNTextObservation = item 
      ctx.cgContext.setFillColor(UIColor.clear.cgColor) 
      ctx.cgContext.setStrokeColor(UIColor.green.cgColor) 
      ctx.cgContext.setLineWidth(1) 
      ctx.cgContext.addRect(item.boundingBox.applying(t)) 
      ctx.cgContext.drawPath(using: .fillStroke) 

      for item_2 in TextObservation.characterBoxes!{ 
       let RectangleObservation:VNRectangleObservation = item_2 
       ctx.cgContext.setFillColor(UIColor.clear.cgColor) 
       ctx.cgContext.setStrokeColor(UIColor.red.cgColor) 
       ctx.cgContext.setLineWidth(1) 
       ctx.cgContext.addRect(RectangleObservation.boundingBox.applying(t)) 
       ctx.cgContext.drawPath(using: .fillStroke) 
      } 
     } 

    } 
    return img 
} 
+2

Soruyu okudun mu? – Tech