首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift VNRecognizeTextRequest:传递给不带参数的调用的参数

Swift VNRecognizeTextRequest:传递给不带参数的调用的参数
EN

Stack Overflow用户
提问于 2021-06-20 16:14:13
回答 2查看 720关注 0票数 1

目前,我正在使用SWIFT5.4构建一个小型CLI工具,并希望使用“视觉框架”来提取图像中的所有文本。我为完成这一任务而写的这篇文章是由苹果公司提供的,可以找到这里。如您所见,我的代码与Apple提供的示例相同,目前无法工作。

这是编译错误:

代码语言:javascript
复制
error: argument passed to call that takes no arguments
        let request = VNRecognizeTextRequest(completion: recognizeTextRequestHandler)

这是带有VNRecognizeTextRequest类的代码,在那里,recognizeTextRequestHandler函数被传递给构造函数来处理结果。

代码语言:javascript
复制
@available(macOS 10.13, *)
    public func run() throws {
        // Get the image from argument and create a UIImage
        let file = try Files.File.init(path: arguments[1]).read()
        guard let image = UIImage(data: file)?.cgImage else { return }
        
        
        // request
        let imageRequestHandler = VNImageRequestHandler(cgImage: image)
        // pass handler to process the result
        let request = VNRecognizeTextRequest(completion: recognizeTextRequestHandler)
        
        do {
            // Perform the text-recognition request.
            try imageRequestHandler.perform([request])
        } catch {
            print("Unable to perform the requests: \(error).")
        }
    }

传递给VNRecognizeTextRequest的函数

代码语言:javascript
复制
@available(macOS 10.13, *)
func recognizeTextRequestHandler(request: VNRequest, error: Error?){
    if #available(macOS 10.15, *) {
        guard let observations =
                request.results as? [VNRecognizedTextObservation] else {
            return
        }
        let recognizedStrings = observations.compactMap { observation in
                // Return the string of the top VNRecognizedText instance.
                return observation.topCandidates(1).first?.string
            }
            
            // Process the recognized strings.
            print(recognizedStrings)
    } else {
        exit(EXIT_FAILURE)
    }

谢谢您抽时间见我!如有不清楚之处,请评论。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-20 16:25:40

这篇文章已经过时了--应该是completionHandler,而不是completion。取代:

代码语言:javascript
复制
let request = VNRecognizeTextRequest(completion: recognizeTextRequestHandler)

..。通过以下方式:

代码语言:javascript
复制
let request = VNRecognizeTextRequest(completionHandler: recognizeTextRequestHandler)
票数 4
EN

Stack Overflow用户

发布于 2021-06-20 16:28:26

使用此构造函数

代码语言:javascript
复制
let request = VNRecognizeTextRequest(completionHandler: recognizeTextRequestHandler)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68057783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档