📷

AI-OCRとウェブカメラで領収書をバシバシ読み込んでCSV化し会計ソフトにインポート

に公開

アイディアとしては10億番煎じ、デモアプリ作成としては1億番煎じくらいかと思いますが、タイトルの通りのウェブアプリを作ってみました。

AI-OCRにはGoogleのGeminiを使います。領収書データを構造化データとして受け取りテーブルにまとめます。エクスポートされるCSVはマネーフォワード会計で取り込み可能なフォーマットになっています。

スクリーンショット

Vercelにデプロイしていますのでこちらから試すことができます。
https://image2row.vercel.app/

設定ダイアログから gemini の API Key を設定する必要があります。
API Keyや画像はサーバー上に保存されませんのでご安心ください。

GitHubはこちらです。ローカルで試すこともできます。
https://github.com/dotneet/image2row

仕組み

geminiをOCRとして使用し、JSONを出力させます。

レシート画像サンプル

上記サンプルに対するJSON出力

{
  "date": "2024/04/24",
  "vendor": "スーパー",
  "totalAmount": 742,
  "currency": "JPY",
  "taxAmount": 67,
  "paymentMethod": "クレジットカード",
  "items": [
    {
      "description": "ポテトチップス",
      "accountCategory": "消耗品費",
      "debitAccountCategory": "消耗品費",
      "creditAccountCategory": "現金",
      "unitPrice": 298,
      "quantity": 1,
      "amount": 298,
      "taxCategory": "課税10%"
    },
    {
      "description": "チョコレート",
      "accountCategory": "消耗品費",
      "debitAccountCategory": "消耗品費",
      "creditAccountCategory": "現金",
      "unitPrice": 129,
      "quantity": 1,
      "amount": 129,
      "taxCategory": "課税10%"
    },
    {
      "description": "ガム",
      "accountCategory": "消耗品費",
      "debitAccountCategory": "消耗品費",
      "creditAccountCategory": "現金",
      "unitPrice": 99,
      "quantity": 1,
      "amount": 99,
      "taxCategory": "課税10%"
    },
    {
      "description": "ジュース",
      "accountCategory": "消耗品費",
      "debitAccountCategory": "消耗品費",
      "creditAccountCategory": "現金",
      "unitPrice": 149,
      "quantity": 1,
      "amount": 149,
      "taxCategory": "課税10%"
    }
  ]
}

あとはこれをテーブルやCSVにマッピングするだけです。

テーブルは編集可能です。
また、テーブルの一部はプロンプトに参考データとして記述されるため、正確な値に編集しておくと以降の勘定科目などの結果の精度が上がります。

作ってみた所感

主に gemini-2.0-flash で試してますが、gemini-2.0-flashでも使い物になりそうな精度です。デモで作ったものとはいえ、実際に確定申告で使ってみようかなと思えました。
こういう機能が会計ソフトにあって欲しい。

やたら 503 Server Unavailable が発生し、リトライさせられるのでレスポンスが遅いのがネックです。普通に3回くらいリトライさせられたりします。

Discussion