AI Navigate

n8nとClaudeのVision APIを用いた手書きの食品注文の自動処理

Dev.to / 2026/3/16

💬 オピニオン

要点

  • 記事は、ClaudeのVision APIを使用して手書きの注文伝票をOCRし、それらをGoogle Sheetsに記録する自動ワークフローをn8nで構築する方法を示し、手動データ入力を排除します。

家族の友人が経営する食品ビジネスは、手書きの注文に圧倒されていました。以下の方法で、手書きの注文伝票を読み取る vision API を使い、手作業のデータ入力なしに自動的に Google Sheets に記録する n8n のパイプラインを作成しました。

この記事では、私がどのようにそれを作ったか、途中で直面した具体的な問題、そしてあなたが1日午後で再現できる方法を詳しく解説します。

前提条件:

開始する前に必要なもの:
実行中の n8n インスタンス(クラウドまたはセルフホスト)
Anthropic API キー
Drive と Sheets にアクセスできる Google アカウント
n8n ノードの基本的な知識

トリガーの設定

特定のフォルダ「Orders」を監視するように設定した Google Drive トリガーノードを使用しました。

そのフォルダに新しい画像ファイルが追加されると、手動でドラッグ&ドロップされた場合でも、スマホから送信された場合でも、ワークフローが起動します。

設定方法:

  • n8n に Google Drive トリガー ノードを追加
  • OAuth を使って Google アカウントを接続(後でこの落とし穴について詳しく説明します)
  • イベントを「File Created」に設定
  • 受信した注文のフォルダを指定

Telegram を使用したい場合は、このノードを Telegram Trigger に置き換えることもできます。私はどちらも試しました。共同作業のワークフローには Google Drive を使用する方法の方が効果的です。注文を送るのが自分だけの場合は Telegram の方が適しています。

Claude への画像の送信

トリガーが作動してファイルがダウンロードされると、それを Claude の vision API に HTTP Request ノードで送信します。API エンドポイントは:

POST https://api.anthropic.com/v1/messages
ヘッダに必要なもの:

{
"x-api-key": "YOUR_ANTHROPIC_API_KEY",
"anthropic-version": "2023-06-01",
"content-type": "application/json"
}

本文はプロンプトが入る場所です。私が使用した正確なプロンプトは以下です:

{
"model": "claude-opus-4-6",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "{{ $binary.data.toString('base64') }}"
}
},
{
"type": "text",
"text": "This is a handwritten food order slip. Extract all order items, quantities, and any special instructions. Return the result as a JSON object with the following structure: { \"items\": [ { \"name\": \"\", \"quantity\": 0, \"notes\": \"\" } ], \"table\": \"\", \"timestamp\": \"\" }. Return only the JSON, no explanation."
}
]
}
]
}

Claude のレスポンスの解析

Claude はレスポンスオブジェクトを返します。実際に欲しい内容はその中の次の場所にネストされています:

{{ $json.content[0].text }}

その文字列はあなたの JSON 注文データですが、この時点ではまだ文字列です。n8n の Code ノードを追加し、以下のスニペットを使ってきれいに解析してください:

const raw = $input.first().json.content[0].text;

const parsed = JSON.parse(raw);
return [{ json: parsed }];

このノードの後、ワークフローには注文アイテム、テーブル番号、その他の特別な指示を含むクリーンな JavaScript オブジェクトが出来上がります。

Google Sheets への書き込み

Google Sheets ノードを追加して、行の追加(Append Row)に設定します。Google アカウントを接続し、注文のスプレッドシートを指定し、パース済み出力からフィールドをマッピングします。

シンプルに保ち、次のように拡張できます:

  • タイムスタンプ
  • テーブル
  • アイテム
  • 数量
  • ノート

AI がアイテムの配列を返すため、1枚の注文伝票につき複数の行になることがあります。Sheets ノードの前に Split In Batches ノードを挿入して、配列内の各アイテムを順次処理し、アイテムごとに1行を書き込みます。

実際に躓いた点と学ぶべき教訓

Google OAuth の検証

n8n で Google Drive と Google Sheets を初めて接続すると、セルフホスト環境を使用している場合、Google は OAuth アプリを未検証としてマークします。警告画面が表示されます。開発中は「詳細」をクリックしてから「アプリに移動」を選択すれば問題ありません。これは個人のワークフローには適しています。

手書きの品質

AI の視覚認識は思いがけず乱れた手書きにも比較的対応しますが、非常に薄い鉛筆線や濃く滲んだインクは抽出エラーを引き起こします。戻り値の items 配列が空の場合などの簡単な検証ステップを追加し、画像を手動で確認するよう Telegram のアラートを送信するようにしました。

以上です!
これを作成したり、別の用途に適用したりした場合は、下のコメント欄に投稿してください。