Есть ли способ сделать распознавание текста MLVision быстрее? - PullRequest
1 голос
/ 09 июня 2019

Я использую распознавание текста в облаке MLVision для своего приложения. Я делаю снимок / загружаю фотографию и затем начинаю процесс. Когда он распознает изображение и извлекает текст, я разделяю его и добавляю каждый отдельный блок в массив.

Код ниже для всего процесса.

    lazy var vision = Vision.vision()
    var textRecognizer: VisionTextRecognizer!
    var test = [] as Array<String>



override func viewDidLoad() {
        super.viewDidLoad()

        let options = VisionCloudTextRecognizerOptions()
        options.languageHints = ["en","hi"]
        textRecognizer = vision.cloudTextRecognizer(options: options)
    }


//where pickedImage is the image that user captures.
let visionImage = VisionImage(image: pickedImage)
            textRecognizer.process(visionImage, completion: { (features, error) in
                guard error == nil, let features = features else {
                    self.resultView.text = "Could not recognize any text"
                    self.dismiss(animated: true, completion: nil)
                    return
                }

                for block in features.blocks {
                    for line in block.lines{

                        //for element in line.elements{
                        self.resultView.text = self.resultView.text + "\(line.text)"

                    }
                }
                self.separate()

            })

func separate(){
        let separators = CharacterSet(charactersIn: (":)(,•/·]["))
        let ofWordsArray = self.resultView.text.components(separatedBy: separators)

        for word in ofWordsArray{

            let low = word.trimmingCharacters(in: .whitespacesAndNewlines).lowercased()
            if low != ""{
            test.append(low)
            }


        }
        print(test)
    }

Все отлично работает, и я получаю желаемый результат. Проблема в том, что я думаю, что это очень медленно. Это займет около 20 секунд для всего процесса. Есть ли способ сделать это быстрее? Заранее спасибо.

1 Ответ

1 голос
/ 10 июня 2019

Вы используете VisionCloudTextRecognizer. Скорость будет зависеть от вашей связи, в моем случае это было всего несколько секунд. Другой вариант - использовать распознавание текста на устройстве или использовать гибридный подход, при котором вы сначала обнаруживаете на устройстве, а затем исправляете с помощью Cloud API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...