Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
18
Help us understand the problem. What is going on with this article?
@koji-oura

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

More than 3 years have 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機能が実現できそうな気がしています。

18
Help us understand the problem. What is going on with this article?
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
koji-oura
普段は、Android/iOSアプリ、サーバーサイドの開発しています。
ayudante
いつもユーザー中心で技術者とコンサルタントがとことん考え抜く それがアユダンテです

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
18
Help us understand the problem. What is going on with this article?