我正在使用 VisionKit 构建一个带有 OCR 的文档扫描应用程序。但是,当我使用我的任何文档扫描作为输入时,文本只是乱码。我尝试将输入图像转换为 jpeg 和 png,但仍然产生相同的结果。在调试时,我尝试截取我的一个扫描的屏幕截图,然后使用该图像作为输入图像。OCR 完美地解决了令我困惑的问题。对此问题的任何见解将不胜感激。
let origImage = UIImage(data: scan.originalscan!)! // in jpeg
guard let cgImage = origImage?.cgImage else {
fatalError("could not get cgimage")
}
let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])
var textString = ""
let request = VNRecognizeTextRequest { [weak self] request, error in
guard let observations = request.results as? [VNRecognizedTextObservation],
error == nil else {
print("Failed!")
//self?.copyTV.text = "Failed"
return
}
for observation in observations {
guard let topCandidate = observation.topCandidates(1).first else {
print("no candidate");
continue
}
textString += "\n\(topCandidate.string)"
}
DispatchQueue.main.async {
self?.copyTV.text = textString
}
}
request.customWords = ["custOm"]
request.recognitionLevel = .accurate
request.recognitionLanguages = ["en_US"]
request.usesLanguageCorrection = true
do {
try handler.perform([request])
} catch {
print(error)
}