在 Apple 的 Vision 框架中,我如何判断哪些语言可用于文本识别?

Posted

技术标签:

【中文标题】在 Apple 的 Vision 框架中,我如何判断哪些语言可用于文本识别?【英文标题】:How can I tell which languages are available for text recognition in Apple's Vision framework? 【发布时间】:2020-02-01 19:27:10 【问题描述】:

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

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

【问题讨论】:

我认为必须在设备设置中添加语言。在什么设备上运行它?该设备的设置中是否仅设置了英语? 谢谢,我喜欢这个想法,但我使用的是仅限 en-GB 的设备。刚刚尝试在我的设备中添加俄语,但它仍然只显示 en-US。 @mralexhay 你有没有找到任何解决方案。我还必须添加对其他语言的支持。 @Rashid 我还没有害怕。如果您找到解决方案,请告诉我,谢谢! 【参考方案1】:

ios 14 开始,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"]

你可以用这个 sn-p 签入 Playground:

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

【讨论】:

【参考方案2】:

iOS 15

在 iOS 15 中可以调用如下实例方法

func supportedRecognitionLanguages() throws -> [String]

返回请求支持的语言的标识符。

recognitionLanguages属性

您可以使用 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"]

附言

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

【讨论】:

感谢您的回答,这就是我最终拥有的,但我仍然无法识别任何其他语言。我回去观看了关于它的 WWDC 视频,很快他们就说他们只支持第一个版本的 En-US。我相信他们会在 iOS14 中添加更多内容。 @mralexhay,你是对的,它目前只支持英文。

以上是关于在 Apple 的 Vision 框架中,我如何判断哪些语言可用于文本识别?的主要内容,如果未能解决你的问题,请参考以下文章

Apple Vision 框架:LCD/LED 数字识别

Apple Vision Framework 识别人脸

Apple Vision - 无法将单个数字识别为区域

Apple Vision – 条码检测不适用于不同颜色的条码

如何仅在 CGRect 中使用 Apple Vision 检测条形码?

用于对象识别的 ARKit 和 Vision 框架