【技術解説】OCRはもう古い?Gomicaleを支えるGeminiマルチモーダル解析とLINE Bot連携の裏側
.png)
引越しのたびに変わる、自治体ごとの「ゴミ出しルール」。新居に越してくるたびに分厚いPDFを読み解き、カレンダーに書き込んだり、専用の自治体アプリをわざわざインストールしたりするのは、地味ながら非常に面倒な作業です。「家族とLINEで簡単にゴミ出しの予定を共有できたらいいのに……」。
Gomicale(ゴミカレ)は、そんな開発者自身のリアルな悩みから生まれました。
全国の自治体が発行するフォーマットがバラバラな「非定型PDF」から、どうやって正確に日付とゴミの種類を抽出し、LINEでサクッと教えてくれるのか。今回は、従来の枠組みに囚われないGomicaleのモダンな技術スタックと、その裏側にある「泥臭いプロンプトエンジニアリング」について、技術的な視点から詳しく解説します。
1. 複雑なOCRソフトを捨て、Geminiのマルチモーダル機能へ
PDFからのデータ抽出と聞くと、OpenCVやPyMuPDF、LayoutParserなどを用いたPythonによるレイアウト解析や、クラウドのOCR APIを思い浮かべる方が多いかもしれません。しかし、Gomicaleではこれらの従来手法を一切使用していません。
採用したのは、生成AIのマルチモーダル機能をダイレクトに活用するアプローチです。 中核となる技術には、PDFドキュメントの視覚的な理解に長けたGoogle Gemini API(gemini-3.1-pro-previewモデル)を使用しています。
ユーザーがアップロードしたカレンダーのPDFファイルは、一時的にCloudflare R2(S3互換ストレージ)に保存されます。その後、AWS Lambda上で動作するバックエンド処理がPDFをBase64エンコードし、直接Gemini APIに投げ込みます。つまり、視覚的レイアウトの解析とテキストの抽出を、別々のシステムで行うのではなく「LLMに一発で同時に行わせる」という非常にモダンでシンプルなアーキテクチャを採用しているのです。
2. LLMの気まぐれを制御する、泥臭いプロンプトエンジニアリング
「AIに丸投げして終わり」かと言えば、決してそうではありません。PDF特有の曖昧さや、LLM特有の「気まぐれな挙動」を抑え込むため、裏側のプロンプト(指示文)にはかなり泥臭い制御が組み込まれています。
例えば、以下のような工夫で精度を極限まで高めています。
- 網羅性の担保: 人間なら一目でわかる「空白セル(収集なし)」や、「毎週火曜」といった表の外に書かれたルールをAIに見落とさせないよう、「PDFに記載された全ての収集日を一件も漏らさず抽出すること」と強く指示しています。
- 表記揺れの防止: AIが気を利かせて「可燃ごみ」を「燃えるゴミ」に変換してしまわないよう、「略称・記号も含めて原文のまま返すこと」を強制し、データベース登録時の整合性を保っています。
- 「年」の推定アルゴリズム: 多くの自治体カレンダーには「4月」としか書かれておらず、西暦が記載されていません。そこで「年が記載されていない場合は、近隣セルの文脈から推定すること」という指示を与え、AIに欠落した情報を補完させています。
さらに、APIのレスポンスにLLM特有の「はい、承知いたしました。以下のJSONを出力します」といった余計な挨拶が含まれてもシステムがクラッシュしないよう、正規表現を使ってJSON部分だけを強引に抽出するフェイルセーフ処理も実装されています。スマートなAIの裏には、こうした堅牢なエラーハンドリングが隠されているのです。
3. SaaSとLLMを糊付けするサーバーレスアーキテクチャとRAG
ユーザーと接するLINE Botの裏側も、サーバーの保守運用コストを下げるためにフルマネージドな構成になっています。
インフラにはVercel上のNext.js API Routesを採用。LINEからのWebhookリクエストを直接受け取り、署名検証を行ってセキュアに処理します。データベースにはSupabase(PostgreSQL)を使用し、ユーザーのLINE IDと解析済みのPDFデータを紐付けて管理しています。
そして、Gomicaleの目玉機能の一つが「画像によるゴミ分別判定」です。 ユーザーがLINEで「このゴミは何?」と写真を送ると、LINE Content API経由で画像を取得。それをSupabaseから引っ張ってきた「そのユーザーの地域のゴミ収集ルール」とセットにして、軽量かつ高速なGemini 3 Flashモデルに投げます。
これは、「この地域ルールにおいて、この画像は何ゴミに分類されるか」を即座に判定させる、高度なRAG(Retrieval-Augmented Generation)的な構成です。複雑な自前インフラを構築せず、Vercel、Supabase、Cloudflare R2といった強力なSaaSと、GeminiというLLMのパワーを巧みに「糊付け(オーケストレーション)」することで、このスムーズなユーザー体験を実現しています。
まとめ:日常の「面倒」をテクノロジーでハックする
引っ越しのたびに発生する「ゴミのルールの把握」というローカルでアナログな悩み。Gomicaleは、従来の複雑な画像解析技術に依存するのではなく、最新のLLMのポテンシャルを最大限に引き出すプロンプトエンジニアリングと、モダンなサーバーレスアーキテクチャの組み合わせによって、この課題を解決しました。
複雑なシステムを構築しなくても、適切なAPIとSaaSを組み合わせれば、日常の面倒をここまでハックできる。Gomicaleの裏側には、そんな開発の楽しさと可能性が詰まっています。
ぜひ、LINEでGomicaleを友だち追加して、最新テクノロジーがもたらす「考えなくていい日常」を体験してみてください!
