こんにちは、鈴木商店の鎌倉です。
Firebse の ML Kit Text Recognition が日本語にも対応されていたので、
Flutter を用いてiPhone実機で画像からテキストを抽出してみたいと思います。
https://developers.google.com/ml-kit/vision/text-recognition/v2
前提
予め以下をインストール、作成した前提で進めていきます。
- Flutter
https://docs.flutter.dev/get-started/install - Xcode
https://developer.apple.com/jp/xcode/ - Firebase CLI
https://firebase.google.com/docs/cli?authuser=1#install-cli-mac-linux - Firebaseプロジェクトの作成
https://console.firebase.google.com/u/1/
環境 | バージョン |
---|---|
Flutter | 3.48.0 |
Xcode | 14.0 |
iOS | 16.0 |
アプリケーション雛形作成
VScodeで開発していきます。
コマンドパレットを開き、Flutter: New Project
でアプリケーションを作成し、作成された雛形を元に進めます。
なおこちらの拡張機能を使用しています。
コマンドにより画像の雛形が作成されます。
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 を選択
-
TARGETS RUNNER 設定
- General
iOS 16.0
- DisplayName を
pubspec.yaml
ファイルのname
と同じアプリ名で設定
- Signinig & Capabilities
- Team を選択する
- Bundle Identifierを設定
- com.example.
Generalで設定しているDisplayName
- com.example.
- General
-
TARFETS Pods 設定
- Signinig & Capabilities
- 以下のそれぞれのディレクトリで Team を選択する
- MLKitTextRecognition-LatinOCRResources
- MLKitTextRecognitionChinese-ChineseOCRResources
- MLKitTextRecognitionDevanagari-DevanagariOCRResources
- MLKitTextRecognitionJapanese-JapaneseOCRResources
- MLKitTextRecognitionKorean-KoreanOCRResources
- 以下のそれぞれのディレクトリで Team を選択する
- Signinig & Capabilities
-
iPhoneの開発モードをオンにする
設定
→プライバシーとセキュリティ
→デベロッパモード
をオン
-
VScode でデバッグ開始
- 実行→デバッグの開始
抽出したテキストです。
抽出できました!
まとめ
今回 Flutter と Firebase ML を使って実機にて画像からテキストを抽出してみました!
Flutterを触るのは初めてで実機でのビルド等で詰まることもありましたが、テキストの抽出まで行うことができてよかったです。
別の機会にアプリケーションをリリースしてみたいと思います。
- 参考
https://developers.google.com/ml-kit/vision/text-recognition/v2
https://zenn.dev/kazutxt/books/flutter_practice_introduction/viewer/34_chapter4_ml
https://firebase.flutter.dev/
https://api.flutter.dev/flutter/material/SelectionArea-class.html