如何确定Apple的Vision框架中哪些语言可用于文本识别?

时间:2019-10-03 13:03:42

标签: ios swift vision

我正在尝试将选项添加到我的应用中,以在使用Apple的Vision框架识别文本时允许使用不同的语言。

似乎有a function用于以编程方式返回受支持的语言,但是我不确定是否正确调用了它,因为我只会得到“ en-US”,而我是相当  确定不是唯一受支持的语言吗?

这是我目前拥有的:

// current revision number of Vision
let revision = VNRecognizeTextRequest.currentRevision
var possibleLanguages: Array<String> = []

do {
    possibleLanguages = try VNRecognizeTextRequest.supportedRecognitionLanguages(for: .accurate, revision: revision)
} catch {
    print("Error getting the supported languages.")
}

print("Possible languages for revision \(revision):\n\(possibleLanguages.joined(separator: "\n"))")

任何帮助将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:4)

您可以使用recognitionLanguages实例属性轻松地告诉Vision框架文本识别需要哪种语言:

var recognitionLanguages: [String] { get set }

根据Apple documentation

recognitionLanguages是数组中语言的顺序,定义了在语言处理和文本识别期间使用语言的顺序。

将语言指定为ISO language codes

因此您的真实代码可能如下所示:

import Vision

let recognizeTextRequest = VNRecognizeTextRequest()
recognizeTextRequest.minimumTextHeight = 0.05

recognizeTextRequest.recognitionLanguages = ["en-US", "ca-ES", "ru-RU", "fr-CA"]

PS

但是目前(2020年3月12日),Vision框架仅支持英语。让我们等待下一版本的Vision,它将支持其他语言。

enter image description here

答案 1 :(得分:2)

从iOS14开始,VNRecognizeTextRequestRevision2以准确的识别级别支持英语,中文,葡萄牙语,法语,意大利语,德语和西班牙语。快速识别级别支持英语,葡萄牙语,法语,意大利语,德语和西班牙语。

您可以使用以下代码段在Playground中签入:

try VNRecognizeTextRequest.supportedRecognitionLanguages(for: .fast, revision: 2)