I have a function to do VNRecognizeTextRequest
on images from documentCameraViewController
Im passing in the minimumTextHeight
to the function but no matter what value i set it to, either 0.9 or .1 it always finds the same amount of text (big and small). Im trying to limit the text so that I can only find headlines or large text.
Why does minimumTextHeight
have no effect?
fileprivate func recognizeText(from images: [CGImage], minimumTextHeight:Float) -> String {
var entireRecognizedText = ""
let recognizeTextRequest = VNRecognizeTextRequest { (request, error) in
guard error == nil else { return }
guard let observations = request.results as? [VNRecognizedTextObservation] else { return }
let maximumRecognitionCandidates = 1
for observation in observations {
guard let candidate = observation.topCandidates(maximumRecognitionCandidates).first else { continue }
entireRecognizedText += "\(candidate.string)\n"
// show location of text in frame
let stringRange = candidate.string.startIndex..<candidate.string.endIndex
let boxObservation = try? candidate.boundingBox(for: stringRange)
let boundingBox = boxObservation?.boundingBox ?? .zero
print(candidate.string, boundingBox.origin.x, boundingBox.origin.y)
}
}
recognizeTextRequest.revision = VNRecognizeTextRequestRevision3
recognizeTextRequest.recognitionLevel = .accurate
recognizeTextRequest.minimumTextHeight = minimumTextHeight
recognizeTextRequest.recognitionLanguages = ["en-US", "en-GB", "de-DE"]
for image in images {
let requestHandler = VNImageRequestHandler(cgImage: image, options: [:])
try? requestHandler.perform([recognizeTextRequest])
}
return entireRecognizedText
}