New Vision API

Hey everyone,

I've been updating my code to take advantage of the new Vision API for text recognition in macOS 15. I'm noticing some very odd behavior though, it seems like in general the new Vision API consistently produces worse results than the old API. For reference here is how I'm setting up my request.

var request = RecognizeTextRequest()
request.recognitionLevel = getOCRMode()  // generally accurate
request.usesLanguageCorrection = !disableLanguageCorrection  // generally true
request.recognitionLanguages = language.split(separator: ",").map { Locale.Language(identifier: String($0)) }  // generally 'en'
let observations = try? await request.perform(on: image) as [RecognizedTextObservation]

Then I will process the results and just get the top candidate, which as mentioned above, typically is of worse quality then the same request formed with the old API.

Am I doing something wrong here?

New Vision API
 
 
Q