実践的なGemini CLIの使い方をご紹介します。
ポイントは、「一気にAIにお願いする」のではなく、「部分的に完成させながら進める」アプローチです。
その際、AIとプログラミング(スクリプト)の役割分担を明確にすることが重要です。
AIの特長は、入力に対する出力の自由度が高いこと。
一方で、プログラミングは入力に対して一意な出力を得られる点にあります。
これらは裏を返せば、それぞれの弱点でもあります。
AIの出力は不安定になりがちで、プログラミングは柔軟性に乏しいのです。
そこで、それぞれの特性を活かしながら、うまく作業を分担していきます。
特に、AIはコード生成が得意で、Gemini CLIのようなツールでは、AIが自らコードを実行し、修正を繰り返しながら処理を完成させていきます。
こうして出来上がったものはスクリプトであり、その実行結果は一意に定まります。
しかし、AIにすべてを任せようとして、プロンプトをどれだけ丁寧に煮詰めても、完全に一意な出力を得ることはできません。
これは、AIの出力が非決定的(確率的)であることによるものです。わずかな文脈や表現の違いで、出力が変化するからです。
したがって、AIに任せるべき領域は、「OCRによる文字認識」や「複数の自由形式のテキストから家計簿用情報を抽出するような、柔軟性と推測を伴う処理」です。
これは、出力が一意に定まりにくく、精度や表現が毎回異なるAIの特性を活かせる作業です。
そして、それらの処理結果を整理し、定型スクリプトとして一意な出力が得られるかたちに整備していくことで、安定した運用が可能になります。
ちょっと言葉の整理。AIに聞いたら以下だが、私のイメージだと、おっさん(私):プログラミングと言う、若者:スクリプトと言う。上の文章はAIに修正してもらったので入り混じってます。
| 用語 | 一般的なイメージや使われ方 |
|---|---|
| プログラミング | コーディングという作業全般。手続き・設計・実装を含む広い概念 |
| スクリプト | 簡易的・軽量なプログラム。用途が明確で、短めの処理が多い |
こちらの記事の続きになります。
今回使うAI OCRの能力を確認したい場合は、OCR部分が同じコードのWebアプリを作りました。試してみてください。
❤️ イチゲの AI OCR アプリ
2025/12追記:429 You exceeded your current quotaが出る場合は、無料APIの1日の使用制限を超えている状態です。2025/12から無料枠がかなり少なくなったようです。
レシート画像の準備
レシートの画像を用意する。最初は同じフォーマット(同じお店のレシートフォーマット)から始めるのがおすすめです。AIに送るので、重要な情報は、目隠しするか、トリミングしたほうがいいと思います。画像のみ保存してreceiptsディレクトリを作り入れておきます。


スクリプトを順番に作っていく
一気に「receiptsの画像はレシートの画像です。家計簿を作って、すべて読み込んでください。」みたいなプロンプトでやると、多分、うまくいかないと思います。
そこで少しずつ機能を固めていきます。その際、AIが担当するのはOCR作業とOCRの結果のテキストから家計簿に必要な部分を抽出する作業です。
AIが担当する部分は、無料のGemini APIキー(gemini flash1.5→2025/10/3現在はgemini-2.0-flash-liteの無料枠)を利用します。
当初、私が考えていたのはOCRだけAIに任す予定でした。しかし、Gemini CLIがテキストから抽出する部分もAI担当に割り振ってきて、結果もよかったので採用しました。(当初は正規化等を使ってAIを使わないつもりで私は考えていた

