VNRecognizedText confidence values are only 0.5 and 1.0

I'm using Vision to conduct some OCR from a live camera feed. I've setup my VNRecognizeTextRequests as follows:

let request = VNRecognizeTextRequest(completionHandler: recognizeTextCompletionHandler)
request.recognitionLevel = .accurate
request.usesLanguageCorrection = false

And I handle the results as follows:

guard let observations = request.results as? [VNRecognizedTextObservation] else { return }
for observation in observations {
if let recognizedText = observation.topCandidates(1).first {
guard recognizedText.confidence >= self.confidenceLimit, // set to 0.5
let foundText = validateRegexPattern(text: recognizedText.string, regexPattern: self.regexPattern),
let foundDecimal = Double(foundText) else { continue }
}

This is actually working great and yielding very accurate results, but the confidence values I'm receiving from the results are generally either 0.5 or 1.0, and rarely 0.3. I find these to be pretty nonsensical confidence values and I'm wondering if this is the intended result or some sort of bug. Conversely, using recognitionLevel = .fast yields more realistic and varied confidence values, but much less accurate results overall (even though fast is recommended for OCR from a live camera feed, I've had significantly better results using the accurate recognition level, which is why I've been using the accurate recognition level)

VNRecognizedText confidence values are only 0.5 and 1.0
 
 
Q