首页 > 解决方案 > 视觉 - 文字识别

问题描述

我一直在努力解决这个问题一段时间。我想使用 Vision 框架来识别照片中的文字。

一切正常。识别的文本被传递到文本视图等附加 - 我添加了一个可以在图片中看到的边界框

例子

在此处输入图像描述

他要执行的下一步是从 tex "CRU007" 中识别出元素 ex 并将其传递给

我不知道该怎么做

这是我的代码:

   func setupVision() {
    guard let image = UIImage(named: "example.card.04" ) else {return}
    
    imageView = UIImageView(image: image)
    imageView.contentMode = .scaleAspectFit
    let scaledHeight = view.frame.width / image.size.width * image.size.height
    imageView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: scaledHeight)
    view.addSubview(imageView)
    
    guard let cgImage = image.cgImage else {return}
    
    let myRequestHandler = VNImageRequestHandler(cgImage: cgImage, options: [:])
    
    let request = VNRecognizeTextRequest { (request, error) in
        
        guard let results = request.results as? [VNRecognizedTextObservation] else {return}
        
        for visionResult in results {
            let maximumCandidate = 1
            guard let candidate = visionResult.topCandidates(maximumCandidate).first else {
                continue
            }
            
            self.textView.text += candidate.string
            self.textView.text += "\n"
            

            
            if let range = candidate.string.range(of: "CRU007") {
                let boxObservation = try? candidate.boundingBox(for: range)
                
                print(boxObservation?.boundingBox)

                let x = self.view.frame.width * visionResult.boundingBox.origin.x
                let height = scaledHeight * visionResult.boundingBox.height
                let y = scaledHeight * ( 1 - visionResult.boundingBox.origin.y) - height
                let widht = self.view.frame.width * visionResult.boundingBox.width

                let greenView = UIView()
                greenView.layer.borderWidth = 3
                greenView.layer.borderColor = UIColor.green.cgColor
                greenView.frame = CGRect(x: x, y: y, width: widht, height: height)
                self.view.addSubview(greenView)
            }
        }
    }
    request.recognitionLevel = .accurate
    try? myRequestHandler.perform([request])
}

标签: iosswiftvision

解决方案


推荐阅读