SwiftUI-我如何識(shí)別單詞并在視覺中獲得位置

下面的代碼只能識(shí)別單詞,但我不知道如何獲得位置。我可以收到短信,但不能收到收件箱。

From: https://medium.com/@jakir/text-recognition-or-ocr-using-vision-framework-ios-swiftui-b9c5df36ec32

import SwiftUI
import Vision

struct ContentView: View {
    
    @State var recognizedText = ""
    
    var body: some View {
        VStack {
            Text("OCR using Vission")
                .font(.title)
            
            Image("quote")
                .resizable()
                .scaledToFit()
            
            Button("Recognize Text"){
                ocr()
            }
            
            TextEditor(text: $recognizedText)
        }
        .padding()
        
    }
    
    func ocr() {
        let image = UIImage(named: "quote")
        
        if let cgImage = image?.cgImage {
            
            // Request handler
            let handler = VNImageRequestHandler(cgImage: cgImage)
            
            let recognizeRequest = VNRecognizeTextRequest { (request, error) in
                
                // Parse the results as text
                guard let result = request.results as? [VNRecognizedTextObservation] else {
                    return
                }
                
                // Extract the data
                let stringArray = result.compactMap { result in
                    result.topCandidates(1).first?.string
                }
                
                // Update the UI
                DispatchQueue.main.async {
                    recognizedText = stringArray.joined(separator: "\n")
                }
            }
            
            // Process the request
            recognizeRequest.recognitionLevel = .accurate
            do {
                try handler.perform([recognizeRequest])
            } catch {
                print(error)
            }
            
        }
    }
}

我訪問了許多網(wǎng)站,但沒有發(fā)現(xiàn)任何結(jié)果

? 最佳回答:

這個(gè)答案告訴如何識(shí)別句子邊界框,而不是單詞在視覺框架中使用VNRecognizeTextRequest的.accept提取Word-Level個(gè)邊界框-SwiftUI

func recognizeText(image: UIImage, completion: @escaping([String], [CGRect]) -> Void) {
    var texts: [String] = []
    var positions: [CGRect] = []
    
    guard let cgImage = image.cgImage else { return }
    let request = VNRecognizeTextRequest { (request, error) in
      guard let observations = request.results as? [VNRecognizedTextObservation], error == nil else {
        print("Text recognition error: \(error?.localizedDescription ?? "Unknown error")")
        return
      }
      for observation in observations {
        guard let topCandidate = observation.topCandidates(1).first else { continue }
        texts.append(topCandidate.string)
        positions.append(observation.boundingBox)
      }
      DispatchQueue.main.async {
        print(texts)
        print(positions)
        completion(texts, positions)
      }
    }
    request.recognitionLevel = .accurate
    
    let handler = VNImageRequestHandler(cgImage: cgImage)
    try? handler.perform([request])
  }
主站蜘蛛池模板: 一区免费在线观看| 亚洲国产精品一区二区成人片国内 | 无码av人妻一区二区三区四区| 国产成人一区二区三区免费视频| 伊人无码精品久久一区二区| 天堂国产一区二区三区| 精品少妇一区二区三区视频 | 亚洲AV色香蕉一区二区| 精品一区二区三区色花堂| 亚洲av不卡一区二区三区| 精品一区二区三区在线观看| 狠狠爱无码一区二区三区| 一区二区3区免费视频| 国产不卡视频一区二区三区| 亚洲AV无码一区二区乱子仑| 国精产品一区一区三区有限在线| 国产福利一区二区三区| 狠狠综合久久av一区二区| 午夜精品一区二区三区在线观看| 亚洲熟妇AV一区二区三区浪潮| 亚洲夜夜欢A∨一区二区三区 | 久久无码精品一区二区三区| 天堂Aⅴ无码一区二区三区| 国产日韩一区二区三区| 亚洲AV无码第一区二区三区| 亚洲国产精品一区二区久久hs| 国产成人一区二区三区视频免费| 久久久久成人精品一区二区| 亚洲一区二区三区夜色| 激情亚洲一区国产精品| 无码一区二区三区在线| 在线精品自拍亚洲第一区| 国产一区风间由美在线观看| 一区二区三区在线观看视频| 日本一区二区三区高清| 男女久久久国产一区二区三区| 国产拳头交一区二区| 高清一区二区三区| 夜夜添无码试看一区二区三区| 久久se精品一区二区国产| 无码人妻一区二区三区一|