OCR Libraries for Flutter

## Overvirew

FlutterでOCRアプリを開発する際にどんな方法があるのか調査まとめ。


## [Cloud Vision API](https://cloud.google.com/vision/?hl=ja)

Google Cloud の OCR サービス。
画像から有用な情報を引き出し、事前トレーニング済みの Vision API モデルを使用して感情の検知、テキストの理解など行う。

### Links

- [Flutter : Cloud Vision API を利用して OCRを行う](https://www.typea.info/blog/index.php/2020/04/19/flutter-cloud-vision-api/)


## [ML Kit for Firebase](https://firebase.google.com/docs/ml-kit/)

Google の機械学習の機能を iOS/Android 向けに提供する Firebase SDK。
ただし古いSDKで現在では、 [Firebase ML](https://firebase.google.com/docs/ml) を通して [ML Kit](https://developers.google.com/ml-kit) を扱うように提供されている。

### Links

- [Flutter+ML Kitで賞味期限とバーコードを高速&高精度OCR](https://blog.simnet.co.jp/flutterml-kit-ocr/)
- [FlutterでFirebase ML を使った、文字起こしをやってみる](https://note.com/shogoyamada/n/n4130f99c787e)


## [google_ml_kit](https://pub.dev/packages/google_ml_kit)

ML Kit を Flutter で扱えるライブラリ。
OCR をやりたい場合は、 [Vision API](https://developers.google.com/ml-kit/vision) の [Text Recognition](https://developers.google.com/ml-kit/vision/text-recognition) を用いることになる。

　　　<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82601/e1df1edb-8f2d-242c-4b94-eefd2500a157.png">


Firebase Console の Machine Learning から詳細を確認することができる。
オンデバイスの無料版では、ラテン語（英語）のみしか OCR 対応できないが、クラウドの無料枠（1,000回/月）まで日本語でも OCR 対応ため開発中はこの無料枠を利用し、アプリをリリースするときには次のような金額帯で支払いとなる。

引用： [料金 | Cloud Vision API | Google Cloud](https://cloud.google.com/vision/pricing)


- 最初の 1,000 ユニット/月
    - 無料
- 1,001～5,000,000 ユニット/月
    - $1.50 → 約¥164.78（2021/5/30現在）
- 5,000,001 以上のユニット/月
    - $0.60 → 約¥65.91（2021/5/30現在）

> 料金はリクエスト 1,000 回単位で計算されます。

とのことなので、上記の 1,001 ユニット以上から 1,000 ユニットごとに ＄1.5 または ＄0.6 が請求される計算になる。

例えば、1万ユーザー居るとして、仮に OCR 機能を一人当たり平均 10回/月 使った場合、

10,000 * 10 = 100,000 ユニット

100,000 ユニット - 1,000ユニット（無料枠分） = 90,000ユニット

90,000 ユニット / 1,000 = 90 ユニット

90 ユニット * ＄1.5 = ＄135 → 約¥14,830.43（2021/5/30現在）

という計算になるらしい。もし、ユニット数が千単位以下がある場合は、例えば 90,100 ユニットだと 91,00 ユニットに強制的に次の千単位に繰り上げされて請求されるとのこと。



## [flutter_ml_vision](https://pub.dev/packages/firebase_ml_vision)

[Firebase ML](https://firebase.google.com/docs/ml) for Flutter.

古くなって廃止された模様・・・
![スクリーンショット 2021-05-30 15.49.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82601/fe7bf6bb-ed3c-ca3b-cede-a0ff9aedcd9f.png)

引用：[FirebaseExtended/flutterfire/packages/firebase_ml_vision](https://github.com/FirebaseExtended/flutterfire/tree/master/packages/firebase_ml_vision)

### Links

- [【Flutter】firebase_ml_visionでリアルタイムOCRを実装する](https://hondakenya.work/flutter-firebase-ml-vision-realtime-ocr-sample/)

## [flutter_mobile_vision](https://pub.dev/packages/flutter_mobile_vision)

[Google Mobile Vision](https://developers.google.com/vision/) for Flutter.

### Links

- [OCR In Flutter](https://medium.com/flutterdevs/ocr-in-flutter-5144ed361239)

## [tesseract_ocr](https://pub.dev/packages/tesseract_ocr)

[Tesseract OCR 4.0](https://github.com/tesseract-ocr/tesseract) for flutter.
[Tesseract](https://ja.wikipedia.org/wiki/Tesseract_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)) は、Google が作った様々なOS上で動作する光学式文字認識エンジン。


## [luyongfugx/flutter_ocr](https://github.com/luyongfugx/flutter_ocr)

※ 最新更新日時が3年前で止まっている。

### Links

- [Flutter OCR | It's All Widgets!](https://itsallwidgets.com/add-flutter-ocr-opensource-app)



## [kidneyweakx/flutter-ml-ocr](https://github.com/kidneyweakx/flutter-ml-ocr)

> app using firebase ml-kit and tesseract to OCR

※ Firebase ML Kitは古くなったため、最新更新日時が1年前で止まっている。