iOS 视觉:VNRecognizedText boundingBox(for:) 方法为任何范围返回相同的边界框

iOS Vision: VNRecognizedText boundingBox(for:) method returning identical bounding box for any range

我正在使用 iOS 视觉框架通过 VNRecognizeTextRequest 调用执行 OCR,我试图在结果 VNRecognizedText 观察中定位每个单独的字符。但是,当我在任何 VNRecognizedText 对象上调用 boundingBox(for range: Range<String.Index>) 方法并针对已识别文本中的任何有效范围调用时,我会得到相同的边界框。这个边界框对应整个字符串的边界框。

我是不是误解了 boundingBox(for:) 方法,还是有其他方法可以在识别的文本观察中获取单个字符的离散位置信息?

提前致谢!

编辑:

在进一步研究之后,我意识到有某种 link 带有词组和空格。 考虑具有字符串值 "Foo bar" 的已识别文本观察。为 "Foo" returns 中的每个字符调用 boundingBox(for:) 完全相同的边界框,根据维度,它似乎对应于整个子字符串 "Foo" 而不是单个字符我们传递给 boundingBox 方法的范围。然后,在另一个奇怪的行为中,空白字符的 boundingBox 只是原点处的一个空白区域,其边缘与其两侧的子字符串不对应。最后,第二个子字符串的行为与第一个相同:"bar" 中的每个字符都有相同的边界框。

经过几个小时的进一步调查,我决定联系 Apple Developer Tech Support。果然,这是个bug!当 VNRecognizeTextRequest.recognitionLevel 设置为 .accurate 时,错误就出现了。当 recognitionLevel 设置为 .fast 时,结果按预期运行,每个字符都有离散的边界框。