Мысли про порог входа в технологии в 2018, пример простого мобильного приложения и не только

  • Tutorial

Когда-то я учился в 5-ом классе и сейчас мне почему-то кажется, что между мной тогдашним и ребятами, которые сейчас ходят в 5-ый класс, огромная пропасть с точки зрения доступа к технологиям. А так как технологии развиваются все быстрее и быстрее, интересно, что будет происходить, когда ребята, которые сейчас ходят в 5-ый класс, станут моими ровесниками.

В этой короткой статье я на примере простого мобильного приложения для iPhone хочу показать, насколько доступны технологии.

Немного лирики


Прошло около 20 лет с момента, когда мои глаза расширились до предела при виде анимированной скрепки на экране компьютера, которая предлагала мне помочь. Скрепка тогда казалась всемогущей, между тем, что могла она и магией для меня не было большой разницы.



Всего 13 лет назад я впервые подержал в руках КПК (это карманный персональный компьютер). Компьютер. Карманный. C Windows. Работает не от сети 220 В., а от батарейки, имеет доступ в Интернет. Без провода и карточки «Вэб Плас». Доступ в Интернет. В тот самый Интернет, 5 минутный доступ в который получила в подарок за большие заслуги наша группа компьютерного кружка. Нам было разрешено посетить 1 сайт (модем на 33 Кбит). Вся группа долго обсуждала — какой именно это будет сайт. Голосование, дебаты.



Перенесемся в май 2018 года


В Калифорнии проходит конференция Google I/O 2018, в числе десятков прочих анонсов: в сервис Firebase добавили ML Kit — инструмент, дающий возможность на смартфоне или в облаке распознавать содержимое картинок, лица, текст и много другого разного, даже свои модели TensorFlow. Эка невидаль? Что мы не знаем про машинное обучение и нейронные сети?

Ладно, а давайте сделаем приложение, чтобы текст распознавало.
Открываем Xcode — создаем новый проект. Создаем Podfile куда пишем код ниже и устанавливаем:

  pod 'Firebase/Core'
  pod 'Firebase/MLVision'
  pod 'Firebase/MLVisionTextModel'

Интерфейс простой:

  • один UIImageView, куда выведем картину с камеры,
  • две UIButton, первая запустит камеру, вторая запустит чтение



Чтобы iPhone дал доступ к камере, добавим в Info.plist

<key>NSCameraUsageDescription</key>
<string>Предоставьте приложению доступ к камере</string>

Создадим контроллер, подключим к нему UIImageView и нажатия наших двух UIButton.
А пусть нам ещё то, что удалось распознать, смартфон произнесет голосом.

import UIKit
import Firebase
import AVKit
import AVFoundation

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

    //разпознование текста из картинки
    lazy var vision = Vision.vision()
    var textDetector: VisionTextDetector?
    
    //синтез речь
    let synthesizer = AVSpeechSynthesizer()

    override func viewDidLoad() {
        super.viewDidLoad()
        
        textDetector = vision.textDetector()
    }

    //подключаем UIImageView
    @IBOutlet weak var imagePicked: UIImageView!
    
    //включаем камеру после нажатия на кнопку
    @IBAction func openCamera(_ sender: Any) {
        if UIImagePickerController.isSourceTypeAvailable(.camera) {
            var imagePicker = UIImagePickerController()
            imagePicker.delegate = self
            imagePicker.sourceType = .camera
            imagePicker.allowsEditing = false
            self.present(imagePicker, animated: true, completion: nil)
        }
    }
    
    //после нажатия на кнопку текст нужно распознать и произнести
    @IBAction func getText(_ sender: Any) {
        if let image = imagePicked.image as? UIImage {
    let visionImage = VisionImage(image: image)
    
    textDetector?.detect(in: visionImage, completion: { [weak self] (visionTextItems, error) in
        if error != nil {
            print("произошла ошибка \(error)")
            return
        }
        
        if let foundItems = visionTextItems {
            if foundItems.count > 0 {
                for item in foundItems {
                    print("распознан текст: \(item.text)")
                    
                    let utterance = AVSpeechUtterance(string: item.text)
                    utterance.rate = 0.4
                    utterance.voice = AVSpeechSynthesisVoice(language: "en-US")
                    self?.synthesizer.speak(utterance)
                }
            } else {
                print("no images found")
            }
        }
        })
}
     }
    
    //переносим фотографию с камеры в UIImageView
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
        let image = info[UIImagePickerControllerOriginalImage] as! UIImage
        imagePicked.image = image
        dismiss(animated:true, completion: nil)
     }
}

Запускаем, пишем ручкой на листике (с печатным текстом совсем неинтересно), фотографируем



и смотрим в консоль:



Ах да! Все это работает в авиарежиме, то есть без доступа к Интернету. И распознавание рукописного текста, и синтез речи.


Инструменты, методы и задачи, которые казались очень сложными ещё вчера, сегодня доступны быстро и бесплатно прямо «из коробки». А что будет дальше, лет так через 20, а через 50?
Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 33

    +6
    Вся группа долго обсуждала — какой именно это будет сайт. Голосование, дебаты.

    А сайт-то какой выбрали?
      –4
      Возможно порнохаб. Хотя на этом устройстве видео врятли игралось. Да и на модеме это наверное издевательство.
        +2
        Не было в то время видео в интернете (во времена карточек от Вэб-пласа). Там одна только картинка грузилась по несколько минут сверху вниз.
        Специально для этого в формате GIF (тот, что без анимации) был предусмотрен режим чересстрочного отображения изображения.
          +3
          Не было в то время видео в интернете (во времена карточек от Вэб-пласа).

          Ну как это не было? QuickTime и RealPlayer в нашей юности рулили. Маленькое, отвратительное, с постоянными «buffering 70%», но 20 лет назад мой модем вполне его переваривал. Правда, у меня канал в инет был неплохой, модем (вот этот зверь: retropc.org/Modem_Acorp_56_PCI_Conexant_k_2381.html) честно вытягивал целых 49К.
            +5
            Была такая шутка, что если бы GIF догадались сделать загружаемым снизу вверх это бы серьезно сократило мировой трафик.
            –3
            и нет такого слова «врятли».
            Есть «вряд ли»
            0
            У меня тоже сразу же возник этот вопрос, но я подумала наверно что то саязанное с компьютерами и программированием если сегодня все задачи решаются так просто
              +5
              Если я не путаю, то тогда выбрали сайт футбольного клуба Зенит.
                0
                Очень интересно. А я когда первый раз вошла в интернет открыла страницу футбольного клуба Барселона
              –3
              Т.е. продукт Google (Firebase) доступен в IOS?
              Из статьи показалось что даже из коробки.
                +2

                Firebase чуть ли не везде доступен

                +2
                Распознавание текста? А ничего, что оно еще под DOS работало? И тоже без интернета, естественно. Я прекрасно понимаю, что это далеко не все, что может сегодняшний ML, но тем не менее автор слегка лукавит.
                  +3
                  А я вовсе не говорю, что подобных технологий не было, просто их распространение, доступность и порог входа были совсем другими.
                    0
                    Ну да, были конечно. Но тем не менее, текст можно было распознавать уже очень давно.

                    Ну и так, не в качестве претензии — вы в пример кода включили на мой взгляд много лишнего. Доступ к камере, перебор картинок — это все не относится именно к распознаванию, и возможно стоило бы это опустить, и добавить распознавание именно картинок, котиков там, или что оно умеет :)
                    0
                    Помню свой Palm который магически распознавал мои рукописные каракули, которые я старался рисовать по шаблону, нарисованном на резиновой крышке.
                    +8
                    Статья странная.
                    Где мысли про порог входа в технологии?
                    Это сначала кажется, что порог вхождения стал ниже. Из-за фреймворков и обёрточных библиотек люди перестали понимать как оно работает внутри и многие проблемы могут быть от этого непонимания.
                      +3
                      Просто понудеть или есть реальные примеры косяков?
                      +3

                      13 лет назад, когда я искал первую работу, джуниору php достаточно было знать сам язык, немного чистого js и html. Сравните это с современными требованиями...

                        +6

                        open stackoverflow, copy, paste?

                          +1
                          Вы пройдете собеседование с copy — paste? Я не так давно пробовал сунуться в область которую не знаю — не получилось. И хотя я понимаю, что с помощью гугла, стэковер и какой-то матери справлюсь, но результат налицо…
                            0
                            Все зависит от того, на что именно вас будут собеседовать и какие знания проверять.
                              0

                              Вообще-то это сарказм был. Когда я искал первую работу php ещё и в проекте не было, но в остальном я согласен с nikweter.

                            0
                            13 лет назад веб-разработчику и платили, небось, поменьше нынешнего
                            –1
                            Я закончил школу в 2005, программирование начали изучать с одноклассниками с 2002 года. Тогда компьютер дома был у 5 человека из класса, остальные делали домашнее задание в тетрадке, а компилировать приходили в компьютерный класс в школе. Сейчас ребята все разъехались — Германия, США, Франция, Австрия, в общем география широкая. Когда я слышу, что нынешние поколение так гениально, что может в 15 лет написать собственное приложение для Android/iOS, то я просто улыбаюсь и вспоминаю свои школьные годы.
                              +1
                              А где в статье написано про гениально? Написано про другой уровень доступа к технологиям.
                                –2
                                А где у меня в комментарии написано, что в статье написано «Гениально»?
                                В статье как раз небольшой пример, как меняется уровень вхождения.
                                  +3
                                  Из того что вы пишите «Когда я слышу, что нынешнее поколение так гениально...», я просто подумал, что вы где-то в статье это нашли.
                              0

                              Что делает такая ни о чем ная статья в топе?

                                +4

                                В статье скорее про развитие технологий, а не про порог вхождения. Технологии развились, а порог вхождения, наверное, стал даже выше. Когда я учился, компьютер включался за секунду и можно было сразу же написать что-нибудь типа 10 PRINT 2 + 2, никаких предварительных настроек и телодвижений. И знания, что именно написать, можно было подчерпнуть из журнальной статьи в две страницы. А для того, чтобы сделать то, что в статье написано, даже окружение не пять минут надо настраивать. И чтобы настроить, надо еще долго гуглить, что именно скачать и установить. Ну или я не так, как автор понимаю слова "порог вхождения".

                                  0
                                  Чем использование готовых компонентов по сути отличается от использования готового приложения? Я как-то давным давно в борланд билдере свой медиа плеер «написал» — перетащил компонент на форму и готово. Не думаю, что это можно называть «входом в технологии».
                                    0
                                    сам по себе плеер в билдере может большой ценности и не несет, но он может дать вау-эффект его автору, когда своими руками делаешь что-то очень крутое в своих же глазах. а это зачастую сильный мотиватор продолжать изучение и углубляться.
                                    +2
                                    Спасибо за статью.
                                    Начали круто, а закончили, как говорится, за упокой. Статья имеет смысловую незаконченность, она как будто оборвана.
                                    Хотелось бы прочитать больше мыслей и ваших рассуждений по теме. А то видишь спойлер, читаешь, думаешь: хм, круто! А заходишь и видишь просто код приложения и два предложения на этот счет.
                                      0
                                      Как-то не очень показательно. Когда я в школе учился программировать, я писал игры на досовском паскале с ассемблерными вставками, для быстрой работы с видеокартой и звуком. Конечно большинство этих вставок было копипастой из книжки, но в целом понимание происходящего было. Помню, как делал путешествие в трёхмерном космосе со звёздами, астероидами, как на бумажке часами выписывал синусы-котангенсы, чтобы это всё работало. И ведь справлялся и работало. Понятно, что в плане результата это был примитив, но в плане понимания математики и технологий это было мощно. Ваш же пример это просто использование готовых библиотек с копипастом кода из примеров. Человек, который не пойдёт дальше этого, ничего особого не покажет. Тут скорей надо демонстрировать, как школьник сможет научить новую нейронную сеть распознавать какой-нибудь казахский язык и его же произносить. Вот это было бы здорово.

                                      Only users with full accounts can post comments. Log in, please.