Help us understand the problem. What is going on with this article?

Firebase MLKitのサンプルを試してみる。

More than 1 year has passed since last update.

Google I/O 2018 で発表になった、FirebaseのMLKitを試してみようと思います。

Firebase MLKit
https://firebase.google.com/products/ml-kit/
Documentation
https://firebase.google.com/docs/ml-kit/

Firebase MLKitは、今のところ下記の機能があります。

・Text recognition:文章読み取り
・Face detection:顔認識
・Barcode scanning:バーコード読み取り
・Image labeling:画像の認識して、ラベルづけ
・Landmark recognition:ランドマーク認識
・Custom model inference:TensorFlowによるカスタムモデルを利用した認識

これらの機能が、
・無料
・Landmark recognition以外の機能がオフラインでも利用可能
であることが魅力的です。

まずは、公式のサンプルプロジェクトを動かしてみます。
https://github.com/firebase/quickstart-ios

実際に動作させた環境は下記の通り
・macOS X 10.12.6
・Xcode 9.2
・CocoaPods 1.5.2
・検証端末のiPhone 6 (iOS 9.2.1)

上記リポジトリの"mlkit"配下のプロジェクトを利用するために行ったことは下記の通り。

・CocoaPodsで関連ライブラリのインストール
・予め用意したFirebaseプロジェクトのGoogleService-Info.plistの追加
・info.plistのbundle identifierを変更(実機で動作確認するため)
・開発用のProvisioning Profileの適用(実機で動作確認するため)
・今回iOS8.0以降でも利用できるか試したかったので、
Realtime Processing機能のカメラ取得部分に下記の変更を加えました。

FrameProcessingViewController.swift
func prepareCamera() {
    captureSession.sessionPreset = AVCaptureSession.Preset.medium
+    if #available(iOS 10.0, *) {
        captureDevice = AVCaptureDevice.DiscoverySession(
            deviceTypes: [.builtInWideAngleCamera],
            mediaType: AVMediaType.video, position:
            AVCaptureDevice.Position.back
            ).devices.first
+    } else {
+        // iOS10未満の場合のcaptureDeviceの取得方法を追加
+        captureDevice = AVCaptureDevice.default(for: .video)
+    }
    beginSession()
  }

AVCaptureDevice.DiscoverySessionは、iOS10以降で利用できるAPIのため、
iOS10未満の場合はAVCaputureDevice.defaultでカメラを取得します。

AVCaptureDevice.DiscoverySession
https://developer.apple.com/documentation/avfoundation/avcapturedevice.discoverysession
default(for:)
https://developer.apple.com/documentation/avfoundation/avcapturedevice/1386589-default

この状態で実機で試すと以下のgifのような動作になります。

マイムービー.mp4.gif

試した感想は、
・英数字であれば問題なく認識してくれる。
・漢字、ひらがな、カタカナの認識はまだうまくできない。
(Google Cloud Visionの機能使えばもしかしたらうまくいくのかな・・・?)
・MLKitとしてできることが、画像認識だけではなく、音声認識が追加されるか気になる。

以上です。
MLKitを使えば、英数字に限定したOCR機能が実現できそうな気がしています。

koji-oura
普段は、Android/iOSアプリ、サーバーサイドの開発しています。
ayudante
いつもユーザー中心で技術者とコンサルタントがとことん考え抜く それがアユダンテです
https://ayudante.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした