我正在浏览Apple的Vision API文档,我看到了几个与文本检测有关的类UIImages:
1) class VNDetectTextRectanglesRequest
看起来他们可以检测到角色,但我没有看到对角色做任何事情的方法.一旦你检测到了角色,你会如何将它们变成可被解释的东西NSLinguisticTagger?
这是一篇简短的概述Vision.
谢谢你的阅读.
例如,给定以下字符串:
let textEN = "The quick brown fox jumps over the lazy dog"
let textES = "El zorro marrón rápido salta sobre el perro perezoso"
let textAR = "?????? ????? ?????? ???? ??? ????? ??????"
let textDE = "Der schnelle braune Fuchs springt über den faulen Hund"
Run Code Online (Sandbox Code Playgroud)
我想检测每个声明的字符串中使用的语言.
我们假设已实现函数的签名是:
func detectedLangauge<T: StringProtocol>(_ forString: T) -> String?
Run Code Online (Sandbox Code Playgroud)
如果没有检测到语言,则返回可选字符串.
因此,适当的结果将是:
let englishDetectedLangauge = detectedLangauge(textEN) // => English
let spanishDetectedLangauge = detectedLangauge(textES) // => Spanish
let arabicDetectedLangauge = detectedLangauge(textAR) // => …Run Code Online (Sandbox Code Playgroud) 有谁知道为什么会这样?
在任何模拟器上都可以找到所有方案,代码如下:
NSArray<NSLinguisticTagScheme> *availSchemes = [NSLinguisticTagger availableTagSchemesForLanguage:@"en"];
for (NSLinguisticTagScheme scheme in availSchemes) {
NSLog(@"Tag scheme %@", scheme);
}
Run Code Online (Sandbox Code Playgroud)
得出以下结论:
2018-02-13 09:12:54.066970-0500 MY_APP[79671:5737063] Tag scheme Language
2018-02-13 09:12:54.067160-0500 MY_APP[79671:5737063] Tag scheme Script
2018-02-13 09:12:54.067300-0500 MY_APP[79671:5737063] Tag scheme TokenType
2018-02-13 09:12:54.067425-0500 MY_APP[79671:5737063] Tag scheme LexicalClass
2018-02-13 09:12:54.067541-0500 MY_APP[79671:5737063] Tag scheme NameType
2018-02-13 09:12:54.067655-0500 MY_APP[79671:5737063] Tag scheme NameTypeOrLexicalClass
2018-02-13 09:12:54.067768-0500 MY_APP[79671:5737063] Tag scheme Lemma
Run Code Online (Sandbox Code Playgroud)
但是,在我的设备(iPhone 6s iOS 11.2)上,我收到以下内容..
2018-02-13 09:13:09.834879-0500 MY_APP[4327:313598] Tag scheme Language
2018-02-13 09:13:09.835256-0500 MY_APP[4327:313598] Tag scheme …Run Code Online (Sandbox Code Playgroud) 我有文本方向代码,它在 swift 3 中运行良好,但在迁移到 swift 4 后,我收到错误
let tagScheme = [NSLinguisticTagScheme.language]
let tagger = NSLinguisticTagger(tagSchemes: tagScheme, options: 0)
tagger.string = self.text
let lang = tagger.tag(at: 0, scheme: NSLinguisticTagScheme.language,
tokenRange: nil, sentenceRange: nil)
if lang?.range(of: "he") != nil || lang?.range(of: "ar") != nil { //Value of type 'NSLinguisticTag' has no member 'range'
self.textAlignment = NSTextAlignment.right
} else {
self.textAlignment = NSTextAlignment.left
}
Run Code Online (Sandbox Code Playgroud)
有人知道怎么修这个东西吗?谢谢