2026.09.26(土) / 00:54
スマホでレシートを撮影して家計簿へ自動入力する機能を作ろうとしている
- 最終更新
- 2026.09.26
自作しているお金管理アプリに、スマートフォンでレシートを撮影して、支出情報を自動入力する機能を追加した。

やりたかったことはシンプル。
レシートを撮影すると、
- 日付
- 合計金額
- 店舗名
を画像から読み取り、既存の入出金登録フォームへ自動で反映する。
最後に内容を確認して「保存する」を押せば、支出として登録できる。
まずはローカルで実装
23:33。
Codexに、
スマートフォンからレシートを撮影し、画像から支出情報を抽出して、既存の入出金登録フォームへ自動入力できる機能を追加してください。
と依頼した。
5分34秒後、実装完了。
「入出金 → 新しく登録」に「レシートから入力」というエリアが追加された。
できるようになったことは、
- スマートフォンでレシートを撮影
- 画像ファイルを選択
- 日付・合計金額・店舗名を読み取る
- 結果を確認・修正
- 既存フォームへ反映
- 保存
という流れ。
自動テストも12件通過していた。
ただ、この段階ではまだローカル環境だけ。
本番には反映していない。

スマホからMacのローカル環境を開く
次にやりたかったのは、実際にiPhoneでレシートを撮影して試すこと。



Mac上では、
127.0.0.1:3001
でアプリを動かしている。
ただし、127.0.0.1はその端末自身を意味するため、そのままではiPhoneからMacのRailsアプリへアクセスできない。
そこでRailsを、
0.0.0.0:3001
で待ち受けるようにして起動した。
MacとiPhoneを同じWi-Fiに接続して、
192.168.110.104:3001
へアクセス。
これでスマホから、自分のMacで動いているMoneyAppを開くことができた。
最初の実機テストは「読み取りに失敗」
23:53。
実際のバローのレシートをスマホから選択してみた。
画像自体はきちんとプレビューされた。
ただ、その下に表示されたのは、
読み取りに失敗しました。通信環境を確認するか、明るい場所で撮り直してください。手入力も利用できます。
というメッセージ。

ここで、
AIを組み込むとうまくいきますか?
と考えた。
画像を理解できるAIを使えば、傾いたレシートや複雑なレイアウトでも読み取りやすくなる。
ただし、AIを使うとなると、
- APIキー
- 従量課金
- 外部サービスへの画像送信
なども発生する。


今回の仕組みは、レシート画像を外部に送信せず、端末内でOCRする設計だった。
なので、いきなりAIを追加するのではなく、まず現在のOCRがなぜ失敗しているのかを調べることにした。
原因はOCRライブラリの読み込み方だった
調査してもらうと、最初のエラーの原因が判明した。
OCRライブラリの読み込み方法のミスだった。
つまり、
「OCRでは読み取れない」
のではなく、
「そもそもOCRが正しく起動していない」
状態だった。
修正後、OCRエンジンそのものでは日付や金額を抽出できることが確認できた。
新しいAIサービスを追加する必要はなかった。

深夜0:41、もう一度iPhoneで試す
日付が変わって0:41。
同じレシートを使って、もう一度iPhoneから試した。
今度は前回と明らかに挙動が違った。
画像を選択すると、
読み取り中… 0%
と表示された。

OCR処理そのものは動き始めている。
0:42には、
読み取り中… 39%
まで進んだ。

最初の「即エラー」からは一歩前進した。
ただし、しばらく待っても39%付近から進まない。
そして0:43。
最終的に、
読み取りが時間内に完了しませんでした。
通信環境や画像を確認して再度お試しください。
というメッセージが表示された。

今回使ったレシートには、
- 店舗:Valor
- 日付:2026年9月24日
- 合計:3,275円
とはっきり印刷されている。
しかしスマホでの今回のテストでは、OCR処理が完了する前にタイムアウトしたため、金額などをフォームへ自動入力するところまでは到達しなかった。
画面に表示されていた「2026/09/26」もレシートの日付ではなく、登録フォーム側の当日の日付だった。
それでも、一段階は前に進んだ
今回のスマホ実機テストでは、最終的な読み取りにはまだ成功していない。
ただ、最初と2回目では問題が違う。
最初は、
OCRライブラリ自体が正しく動いていなかった。
修正後は、
OCRは起動し、0% → 39%まで処理が進んだものの、スマホ上では時間内に終了しなかった。
という状態になった。
つまり次に調べるべきポイントもかなり絞られた。
考えられるのは、
- スマホでのOCR処理速度
- 読み込ませる画像サイズ
- OCR前の画像縮小
- タイムアウト時間
- 日本語OCRデータの読み込み時間
- 初回のみ発生するOCRエンジンのダウンロード時間
など。
「読み取りに失敗した」という一つの現象でも、原因は毎回同じとは限らない。
自宅のWi-Fiの通信環境が途切れるタイミングがあることが原因かもしれない。(この問題は以前から継続している)
この記事がよかったら、いいねで応援してください。


