哪些语言可用于 Vision 框架中的文本识别?

Which languages are available for text recognition in Vision framework?

我正在尝试向我的应用添加选项,以便在使用 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"))")

非常感谢任何帮助,谢谢。

iOS 15

在iOS15中你可以调用下面的实例方法returns请求(VNRecognizeTextRequest)支持的语言的标识符:

func supportedRecognitionLanguages() throws -> [String]

你可以这样使用它:

print(try! request.supportedRecognitionLanguages())

一个。结果(如果使用 .accurate recognitionLevel):

// ["en-US", "fr-FR", "it-IT", "de-DE", "es-ES", "pt-BR", "zh-Hans", "zh-Hant"]

乙。结果(如果您使用 .fast recognitionLevel):

// ["en-US", "fr-FR", "it-IT", "de-DE", "es-ES", "pt-BR"]


recognitionLanguages 属性

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

var recognitionLanguages: [String] { get set }

根据Apple documentation: recognitionLanguages defines the order in which languages are used during language processing and text recognition.Specify the languages as ISO language codes

真实的代码可能是这样的:

import Vision

let recognizeTextRequest = VNRecognizeTextRequest()
recognizeTextRequest.minimumTextHeight = 0.05
recognizeTextRequest.recognitionLevel = .accurate

recognizeTextRequest.recognitionLanguages = ["en-US", "fr-FR", "zh-Hans"]

P.S.

2020 年初,Vision 仅支持英语。

从 iOS14 开始,VNRecognizeTextRequestRevision2 在 .accurate 识别级别支持英语、法语、意大利语、德语、西班牙语、葡萄牙语和中文(简体和繁体)。

["en-US", "fr-FR", "it-IT", "de-DE", "es-ES", "pt-BR", "zh-Hans", "zh-Hant"]

.fast 识别级别支持英语、法语、意大利语、德语、西班牙语和葡萄牙语。

["en-US", "fr-FR", "it-IT", "de-DE", "es-ES", "pt-BR"]

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

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