Automatisierte Quittungsverarbeitung und Steuerklassifizierung mit PDF Vector und Google Drive

Fortgeschritten

Dies ist ein Invoice Processing, AI Summarization, Multimodal AI-Bereich Automatisierungsworkflow mit 9 Nodes. Hauptsächlich werden Code, GoogleDrive, GoogleSheets, ManualTrigger, PdfVector und andere Nodes verwendet. Automatisierte Belegverarbeitung und Steuerklassifizierung mit PDF Vector und Google Drive

Voraussetzungen
  • Google Drive API-Anmeldedaten
  • Google Sheets API-Anmeldedaten
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "meta": {
    "instanceId": "placeholder"
  },
  "nodes": [
    {
      "id": "overview-note",
      "name": "Belegübersicht",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        50,
        50
      ],
      "parameters": {
        "color": 5,
        "width": 350,
        "height": 180,
        "content": "## 🧾 Receipt & Tax Tracker\n\nAutomated expense management:\n• **Monitors** receipt folder hourly\n• **Extracts** data from photos/PDFs\n• **Categorizes** for tax purposes\n• **Calculates** deductions\n• **Syncs** with QuickBooks"
      },
      "typeVersion": 1
    },
    {
      "id": "input-note",
      "name": "Eingabequellen",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        450,
        450
      ],
      "parameters": {
        "width": 250,
        "height": 150,
        "content": "## 📸 Receipt Input\n\nHandles all formats:\n• Phone photos\n• Scanned PDFs\n• Email forwards\n• Poor quality images\n\n💡 OCR enhancement"
      },
      "typeVersion": 1
    },
    {
      "id": "tax-note",
      "name": "Steuerkategorien",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        850,
        450
      ],
      "parameters": {
        "color": 4,
        "width": 260,
        "height": 160,
        "content": "## 💰 Tax Logic\n\n**Auto-categorizes:**\n• Travel expenses\n• Office supplies\n• Meals (50% deduction)\n• Utilities\n\n⚠️ Consult tax advisor!"
      },
      "typeVersion": 1
    },
    {
      "id": "manual-trigger",
      "name": "Manueller Auslöser",
      "type": "n8n-nodes-base.manualTrigger",
      "notes": "Process receipt",
      "position": [
        250,
        300
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "google-drive",
      "name": "Google Drive - Beleg abrufen",
      "type": "n8n-nodes-base.googleDrive",
      "notes": "Retrieve receipt from Drive",
      "position": [
        450,
        300
      ],
      "parameters": {
        "fileId": "={{ $json.fileId }}",
        "operation": "download"
      },
      "typeVersion": 3
    },
    {
      "id": "pdfvector-extract",
      "name": "PDF Vector - Beleg extrahieren",
      "type": "n8n-nodes-pdfvector.pdfVector",
      "notes": "Extract receipt data",
      "position": [
        650,
        300
      ],
      "parameters": {
        "prompt": "Extract all receipt information from this document or image including merchant name and address, transaction date and time, all items with descriptions and prices, subtotal, tax amount and rate, tip if applicable, total amount, payment method, and any loyalty or membership numbers. Use OCR if this is a scanned receipt or image.",
        "schema": "{\"type\":\"object\",\"properties\":{\"merchant\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"address\":{\"type\":\"string\"},\"phone\":{\"type\":\"string\"},\"taxId\":{\"type\":\"string\"}}},\"transaction\":{\"type\":\"object\",\"properties\":{\"date\":{\"type\":\"string\"},\"time\":{\"type\":\"string\"},\"receiptNumber\":{\"type\":\"string\"},\"cashier\":{\"type\":\"string\"}}},\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"quantity\":{\"type\":\"number\"},\"unitPrice\":{\"type\":\"number\"},\"totalPrice\":{\"type\":\"number\"},\"taxable\":{\"type\":\"boolean\"}}}},\"financial\":{\"type\":\"object\",\"properties\":{\"subtotal\":{\"type\":\"number\"},\"taxRate\":{\"type\":\"number\"},\"taxAmount\":{\"type\":\"number\"},\"tip\":{\"type\":\"number\"},\"total\":{\"type\":\"number\"},\"currency\":{\"type\":\"string\"}}},\"payment\":{\"type\":\"object\",\"properties\":{\"method\":{\"type\":\"string\"},\"lastFourDigits\":{\"type\":\"string\"},\"authCode\":{\"type\":\"string\"}}},\"loyalty\":{\"type\":\"object\",\"properties\":{\"memberNumber\":{\"type\":\"string\"},\"pointsEarned\":{\"type\":\"number\"},\"pointsBalance\":{\"type\":\"number\"}}}},\"required\":[\"merchant\",\"financial\"],\"additionalProperties\":false}",
        "resource": "document",
        "inputType": "file",
        "operation": "extract",
        "binaryPropertyName": "data"
      },
      "typeVersion": 1
    },
    {
      "id": "pdfvector-categorize",
      "name": "PDF Vector - Steuerkategorisierung",
      "type": "n8n-nodes-pdfvector.pdfVector",
      "notes": "Categorize for taxes",
      "position": [
        850,
        300
      ],
      "parameters": {
        "prompt": "Based on this receipt document or image, determine: 1) The most appropriate tax category (meals, travel, supplies, equipment, etc.), 2) Whether this is likely tax deductible for business, 3) If this is a meal receipt, what percentage would typically be deductible, 4) Any special considerations for tax purposes. Process any image format using OCR if needed.",
        "resource": "document",
        "inputType": "file",
        "operation": "ask",
        "binaryPropertyName": "data"
      },
      "typeVersion": 1
    },
    {
      "id": "process-expense",
      "name": "Ausgabendaten verarbeiten",
      "type": "n8n-nodes-base.code",
      "notes": "Validate and categorize",
      "position": [
        1050,
        300
      ],
      "parameters": {
        "jsCode": "// Process receipt data and tax categorization\nconst receiptData = $node['PDF Vector - Extract Receipt'].json.data;\nconst taxCategory = $node['PDF Vector - Tax Categorization'].json.answer;\n\n// Validate financial calculations\nlet validationErrors = [];\nif (receiptData.items && receiptData.items.length > 0) {\n  const calculatedSubtotal = receiptData.items.reduce((sum, item) => sum + (item.totalPrice || 0), 0);\n  if (Math.abs(calculatedSubtotal - receiptData.financial.subtotal) > 0.02) {\n    validationErrors.push('Item totals do not match subtotal');\n  }\n}\n\n// Calculate tax consistency\nconst expectedTax = receiptData.financial.subtotal * (receiptData.financial.taxRate / 100);\nif (Math.abs(expectedTax - receiptData.financial.taxAmount) > 0.02) {\n  validationErrors.push('Tax calculation inconsistency');\n}\n\n// Determine expense category and deductibility\nlet expenseCategory = 'Other';\nlet deductiblePercentage = 100;\nlet taxNotes = '';\n\nif (taxCategory.toLowerCase().includes('meal')) {\n  expenseCategory = 'Meals & Entertainment';\n  deductiblePercentage = 50; // Typical meal deduction\n  taxNotes = 'Business meal - 50% deductible';\n} else if (taxCategory.toLowerCase().includes('travel')) {\n  expenseCategory = 'Travel';\n  deductiblePercentage = 100;\n  taxNotes = 'Business travel expense';\n} else if (taxCategory.toLowerCase().includes('supplies')) {\n  expenseCategory = 'Office Supplies';\n  deductiblePercentage = 100;\n  taxNotes = 'Business supplies';\n}\n\n// Create processed expense record\nconst processedExpense = {\n  // Receipt data\n  merchant: receiptData.merchant.name,\n  date: receiptData.transaction.date,\n  amount: receiptData.financial.total,\n  currency: receiptData.financial.currency || 'USD',\n  \n  // Tax information\n  expenseCategory,\n  deductiblePercentage,\n  deductibleAmount: (receiptData.financial.total * deductiblePercentage / 100).toFixed(2),\n  taxNotes,\n  \n  // Original data\n  originalReceipt: receiptData,\n  aiCategorization: taxCategory,\n  \n  // Validation\n  isValid: validationErrors.length === 0,\n  validationErrors,\n  \n  // Metadata\n  processedAt: new Date().toISOString(),\n  taxYear: new Date(receiptData.transaction.date).getFullYear()\n};\n\nreturn [{ json: processedExpense }];"
      },
      "typeVersion": 2
    },
    {
      "id": "save-spreadsheet",
      "name": "In Ausgabenliste speichern",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Track in spreadsheet",
      "position": [
        1250,
        300
      ],
      "parameters": {
        "data": "={{ [[$json.date, $json.merchant, $json.expenseCategory, $json.amount, $json.deductibleAmount, $json.deductiblePercentage + '%', $json.taxNotes, $json.processedAt]] }}",
        "range": "A:H",
        "sheetId": "{{ $json.taxYear }}-expenses",
        "operation": "append"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "manual-trigger": {
      "main": [
        [
          {
            "node": "google-drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "process-expense": {
      "main": [
        [
          {
            "node": "save-spreadsheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "google-drive": {
      "main": [
        [
          {
            "node": "pdfvector-extract",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "pdfvector-extract": {
      "main": [
        [
          {
            "node": "pdfvector-categorize",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "pdfvector-categorize": {
      "main": [
        [
          {
            "node": "process-expense",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Fortgeschritten - Rechnungsverarbeitung, KI-Zusammenfassung, Multimodales KI

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes9
Kategorie3
Node-Typen6
Schwierigkeitsbeschreibung

Für erfahrene Benutzer, mittelkomplexe Workflows mit 6-15 Nodes

Autor
PDF Vector

PDF Vector

@pdfvector

A fully featured PDF APIs for developers - Parse any PDF or Word document, extract structured data, and access millions of academic papers - all through simple APIs.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34