Androidカメラであつ森のカブ価を認識したい
やりたいこと
あつ森のカブ価を表示したとき、Androidのカメラでカブ価の数字のみを認識したい
具体的には、この 560 という数値のみをスキャンし、正規表現で取得したい。
理想は、Switchにスマフォをかざす > アプリがカブ価を認識 > カブ価を嫁にLINEで共有
としたい。
いちいちLINEをひらいて、「○日の午前の株価は〜」と入力したくない。
自作OCRアプリでササッと共有したい
OCRライブラリを調査
以下の3つがネットで見かけたヤツ
Firebase ML Kit
公式ドキュメントを眺めたところ
つまりデバイスモデルで認識できない
日本語はデバイスのみで認識できない、クラウドで認識してもらうしかない
クラウドAPIを使ってもいいが、今回は数字だけ認識したいので、デバイスモデルでの認識に挑戦してみる。
Amazon Rekognition
まさかの日本語非対応、、、なので使用できない
Amazon Rekognition イメージ内のテキスト は日本語に対応していない - Qiita
tess-two
このライブラリは初めて知った。
GitHub Repositoryがアーカイブされて読み取り専用になってるけど大丈夫? (ちょっと不安)
とりあえず今回はFirebase ML Kitで試してみる。
Firebase ML Kitで実装してみた
いきなり完成コード
細かくは説明しないが、やってることだけを雑に説明
- カメラを準備
- useCaseをライフサイクルにバインド
- 文字認識
スキャンしてる様子
こんな感じでスキャン
結果
失敗だった。
カブ価の数値は認識はするんだけど、余計な文字まで認識している。。。
1回目
5 1h7 560NIL Tauä-.
560という数値はあるが、前後の単語まで認識してしまう。
しかも日本語をムリやり英語で認識しているので、意味不明な値に...
2回目
560は見えるが、1回目と文字が微妙に違う
117 560ILTIau-
3回目
3行になった。
おそらく、1行目は「まめきち」
2行目は「ただ今の〜」
3行目がカブ価の
bE5 h7l&, 117 560NILTITu-
うーん、余計な文字が多すぎてカブ価が認識できない
これじゃ正規表現でもムリだなー
別のML Kitサンプルアプリではこのように認識してるらしい
感想
ML Kitのデバイスモデルでの数値(カブ価)のみ認識はできなかった。
原因は分かっている、ちゃんと日本語対応されたクラウドベース APIを使わなきゃダメだ。
(Firebaseプランをアップグレードするのに抵抗はあるが)
参考リンク
ML Kitドキュメント
Recognize Text in Images with ML Kit on Android | Firebase
CameraXドキュメント
CameraX のアーキテクチャ | Android デベロッパー | Android Developers