Я встроил оптическое распознавание текста в мое демонстрационное приложение. Я нажимаю одну кнопку, и пользователь выбирает изображение из галереи или камеры, выбирает отображение изображения при просмотре изображения и нажимает кнопку «Преобразовать в текст». Когда я выбираю «Изображение из галереи» и нажимаю на процессчем получить идеальный текст с изображения, но когда я снимаю изображение с камеры и нажимаю на кнопку обработки, чем текст не идеальный. Отобразить из изображения. Пожалуйста, проверьте ниже код 2, выберите I-: камера и II-: галерея
@IBAction func browse(_ sender: UIButton) {
let imagePickerController = UIImagePickerController()
imagePickerController.delegate = self
let actionSheet = UIAlertController(title:"Photo Source",message: "choose source",preferredStyle: .actionSheet)
actionSheet.addAction(UIAlertAction(title: "camera",style: .default,handler: {(action:UIAlertAction) in
if UIImagePickerController.isSourceTypeAvailable(.camera){
imagePickerController.sourceType = .camera
self.present(imagePickerController,animated: true,completion: nil)
}
else{
print("camera not available")
}
} ))
actionSheet.addAction(UIAlertAction(title: "photo lib",style: .default,handler: {(action:UIAlertAction) in
imagePickerController.sourceType = .photoLibrary
self.present(imagePickerController,animated: true,completion: nil)
} ))
actionSheet.addAction(UIAlertAction(title: "cancel",style: .cancel,handler: nil ))
self.present(actionSheet,animated: true,completion: nil)
}
после выбора изображения и отображения при просмотре изображения используйте код ниже
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
attachment_image_view.image = image
picker.dismiss(animated: true, completion: nil)
}
для выполнения ocr. Я создаю метод runTextRecognition и передаю изображение в этот метод
@IBAction func process_btn(_ sender: UIButton) {
runTextRecognition(with: attachment_image_view.image!)
}
func runTextRecognition(with image: UIImage){
let visionImage = VisionImage(image: image)
textRecognizer.process(visionImage) {(features,error) in
self.processResult(from: features, error: error)
}
}
func processResult(from text: VisionText?,error: Error?){
var lineBunch: String = ""
removeFromParentViewController()
guard let features = text,let image = attachment_image_view.image else { return }
for block in features.blocks {
for line in block.lines{
print("lines==>",line.text)
lineBunch = lineBunch + "\(line.text) \n"
for element in line.elements{
//print("element ==>",element.text)
//self.addFrameView(featureFrame: element.frame,imageSize: image.size,viewFrame: self.attachment_image_view.frame,text: element.text)
}
}
}
print("lineBunch",lineBunch)
ocrText.text = lineBunch
}`
, также добавляю модульфайлы:
pod 'Firebase/Core'
pod 'Firebase/MLVision'
pod 'Firebase/MLVisionTextModel'
pod 'Firebase/MLVision'
так как интегрировать ocr из изображения с камеры. Выше кода, работающего с изображением галереи, но не с изображения с камеры, отметьте