葬儀見積書のスキャン取り込み(画像→見積登録フォーム初期値化) #9

Closed
opened 2026-09-27 10:19:30 +00:00 by joe · 1 comment
Owner

要望

葬儀社の見積書をスマホで撮影し、Gemini APIで読み取って見積登録フォームに自動入力したい(領収書OCRの見積版)。

抽出対象

  • 葬儀社名(company_name)
  • 見積日(estimate_date)
  • 合計金額(total_amount)
  • 明細(items: name/amount/note) ※見積書は項目別明細があることが多い

設計案

  • POST /estimates/scan — 画像アップロード→extract_estimate_info()(receipt_ocr.pyに追加)→estimates/form.htmlに初期値表示→ユーザー確認後保存
  • GET /estimates/scan — スキャン画面(カメラ起動)
  • APIキー未設定時の案内、OCR失敗時のフォールバックは経費と同様

制約(v1)

  • 単一画像のみ(複数ページ見積書は未対応。必要なら複数画像対応を別途検討)
  • 抽出結果はあくまで初期値。保存前にユーザーが確認・修正する
## 要望 葬儀社の見積書をスマホで撮影し、Gemini APIで読み取って見積登録フォームに自動入力したい(領収書OCRの見積版)。 ## 抽出対象 - 葬儀社名(company_name) - 見積日(estimate_date) - 合計金額(total_amount) - 明細(items: name/amount/note) ※見積書は項目別明細があることが多い ## 設計案 - `POST /estimates/scan` — 画像アップロード→`extract_estimate_info()`(receipt_ocr.pyに追加)→estimates/form.htmlに初期値表示→ユーザー確認後保存 - `GET /estimates/scan` — スキャン画面(カメラ起動) - APIキー未設定時の案内、OCR失敗時のフォールバックは経費と同様 ## 制約(v1) - 単一画像のみ(複数ページ見積書は未対応。必要なら複数画像対応を別途検討) - 抽出結果はあくまで初期値。保存前にユーザーが確認・修正する
Author
Owner

実装しました。mainにマージ済み(コミット 875c959)。

実装内容

  • GET/POST /estimates/scan — スマホカメラで見積書を撮影→Gemini APIで{company_name, estimate_date, total_amount, items[]}を抽出→登録フォームに初期値表示
  • funeral_estimates.estimate_imageカラム追加(起動時に自動ALTER TABLE。既存データは保持)
  • 抽出結果はユーザ確認後に保存。失敗時は手入力フォームへフォールバック
  • 画像は instance/uploads/ に証憑として保存、一覧・編集画面から閲覧可

補足

  • v1は単一画像のみ(複数ページ見積書は未対応)
  • OCRプロンプトはgemini-2.5-flash-lite向け。実際の見積書で精度を確認して、必要ならプロンプト調整・モデル変更を別issueで

テスト6件追加、全50件パス。

実装しました。`main`にマージ済み(コミット 875c959)。 ## 実装内容 - `GET/POST /estimates/scan` — スマホカメラで見積書を撮影→Gemini APIで`{company_name, estimate_date, total_amount, items[]}`を抽出→登録フォームに初期値表示 - `funeral_estimates.estimate_image`カラム追加(起動時に自動ALTER TABLE。既存データは保持) - 抽出結果はユーザ確認後に保存。失敗時は手入力フォームへフォールバック - 画像は `instance/uploads/` に証憑として保存、一覧・編集画面から閲覧可 ## 補足 - v1は単一画像のみ(複数ページ見積書は未対応) - OCRプロンプトは`gemini-2.5-flash-lite`向け。実際の見積書で精度を確認して、必要ならプロンプト調整・モデル変更を別issueで テスト6件追加、全50件パス。
joe closed this issue 2026-09-27 10:26:17 +00:00
Sign in to join this conversation.
No labels
bug
cleanup
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
joe/sougi#9
No description provided.