Firebase ML を使って画像からテキストを抽出する

2022年09月30日
投稿者:KamakuraHideki
カテゴリ:Firebase, iOS タグ:

こんにちは、鈴木商店の鎌倉です。

Firebse の ML Kit Text Recognition が日本語にも対応されていたので、

Flutter を用いてiPhone実機で画像からテキストを抽出してみたいと思います。

https://developers.google.com/ml-kit/vision/text-recognition/v2

前提

予め以下をインストール、作成した前提で進めていきます。

環境 バージョン
Flutter 3.48.0
Xcode 14.0
iOS 16.0

アプリケーション雛形作成

VScodeで開発していきます。

コマンドパレットを開き、Flutter: New Projectでアプリケーションを作成し、作成された雛形を元に進めます。
なおこちらの拡張機能を使用しています。

image.png

コマンドにより画像の雛形が作成されます。

IMG_9067 2.PNG

Firebase の設定

次にFirebaseの設定を行なっていきます。
以下のコマンドを実施してアプリケーションとの接続や必要なパッケージのインストール等を行なっていきます。

パッケージのインストールによりpubspec.yamlファイルが更新されます。

これでFirebaseの設定は終了です。

カメラとフォトライブラリの読み込み設定

flutter pub add image_picker を叩き image_picker パッケージをインストールしておきます。

https://pub.dev/packages/image_picker/install

今回は以下の最低限の機能を満たすよう進めます。

  • カメラで撮影した画像とフォトライブラリの画像からテキストを抽出
  • 抽出したテキストの選択
    SelectionArea を使用
  • 画面内スクロール
    SingleChildScrollView を使用

以下はmain.dart のソースです。

iOSでカメラやフォトライブラリにアクセスできるように (ios/Runner/)info.plistファイルに以下を追記しておきます。

Xcode設定と実機でビルド

Xcodeを起動し、以下の手順で実機にてアプリケーションを立ち上げてみます。

1 open a project or file (Xcode)
– iOS→Runner.xcworkspace を選択

  1. TARGETS RUNNER 設定

    • General
      • iOS 16.0
      • DisplayName を pubspec.yamlファイルのnameと同じアプリ名で設定
    • Signinig & Capabilities
      • Team を選択する
      • Bundle Identifierを設定
        • com.example.Generalで設定しているDisplayName
  2. TARFETS Pods 設定

    • Signinig & Capabilities
      • 以下のそれぞれのディレクトリで Team を選択する
        • MLKitTextRecognition-LatinOCRResources
        • MLKitTextRecognitionChinese-ChineseOCRResources
        • MLKitTextRecognitionDevanagari-DevanagariOCRResources
        • MLKitTextRecognitionJapanese-JapaneseOCRResources
        • MLKitTextRecognitionKorean-KoreanOCRResources
  3. iPhoneの開発モードをオンにする

    • 設定プライバシーとセキュリティデベロッパモードをオン
  4. VScode でデバッグ開始

    • 実行→デバッグの開始

IMG_9069.PNG

抽出したテキストです。

抽出できました!

まとめ

今回 Flutter と Firebase ML を使って実機にて画像からテキストを抽出してみました!
Flutterを触るのは初めてで実機でのビルド等で詰まることもありましたが、テキストの抽出まで行うことができてよかったです。
別の機会にアプリケーションをリリースしてみたいと思います。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です