我在使用 iOS 15 的应用程序中发现 Vision 框架存在问题。我在字符串中写入识别的文本,但在 iOS 15 下,结果的顺序不正确。
也许举个例子可以更好地解释它:-)
要扫描的文字:
你好,我的名字是迈克尔,我是一个应用程序的程序员
命名为 Scan2Clipboard。
现在我集中了一个问题
VNRecognizeTextRequest 和 iOS 15。
iOS 14 下的结果:
你好,我的名字是迈克尔,我是一个应用程序的程序员
命名为 Scan2Clipboard。
现在我集中了一个问题
VNRecognizeTextRequest 和 iOS 15。
iOS 15 下的结果:
你好,我的名字是迈克尔,我是一个应用程序的程序员
现在我集中了一个问题
命名为 Scan2Clipboard。
VNRecognizeTextRequest 和 iOS 15。
我尝试了 App Store 中的一些其他应用程序(扫描和复印、快速扫描)。他们表现出相同的行为。他们还使用 Vision 框架。其他人也有这个问题吗?
下面第一张图是源图,第二张图是结果。请注意结果中间的“Für den Mürbteig”跳跃:
如果我将 MaximumRecognitionCandidates 从 1 更改为更高的数字,结果会变得更好。当 MaximumRecognitionCandidates 为 3 或更高时,结果的顺序正确,直到 9 为止该值没有区别。当值为 10 时,结果与值 1 相同。
所以这只是目前的一个解决方法。
let maximumRecognitionCandidates = 9
for observation in observations {
guard let candidate = observation.topCandidates(maximumRecognitionCandidates).first else { continue }
entireRecognizedText += "\(candidate.string)\n"
iOS15.1 Beta 3 后错误消失
我通过按
observations
对
boundingBox.minX
进行排序解决了这个问题
for observation in observations.sorted(by: {$0.boundingBox.minX < $1.boundingBox.minX}) {
...
}