EÜR in Rekordzeit: So automatisieren Sie Ihre Buchhaltung mit Python-Skripten

EÜR in Rekordzeit: So automatisieren Sie Ihre Buchhaltung


Einleitung

Die Einnahmenüberschussrechnung (EÜR) ist für viele Kleinunternehmer und Freelancer ein zeitraubender Prozess. Besonders dann, wenn hunderte von Rechnungen manuell in eine Buchhaltungssoftware wie JES EÜR eingetragen werden müssen. Doch mit einer klugen Ordnerstruktur und angepassten Python-Skripten lässt sich dieser Aufwand drastisch reduzieren – ganz ohne Programmierkenntnisse.


Das Problem: Manuelle Buchhaltung kostet Zeit

Jedes Jahr dasselbe: Rechnungen müssen für die EÜR erfasst werden. Bei einer größeren Anzahl an Rechnungen kann dies schnell zu einem zeitintensiven Unterfangen werden. Besonders problematisch wird es, wenn die Rechnungen von verschiedenen Anbietern stammen, die jeweils eigene Formate verwenden. Eine einheitliche Lösung für alle Anbieter gibt es nicht. Doch genau das ist der Schlüssel zur Effizienz: Ein Skript pro Anbieter.


Die Lösung: Automatisierung mit Python-Skripten

Mit einer strukturierten Ablage und angepassten Skripten können Sie den Aufwand für die EÜR deutlich verringern. Der Schlüssel liegt darin, für jeden Anbieter ein eigenes Skript zu verwenden, das auf das spezifische Rechnungsformat zugeschnitten ist.

Ordnerstruktur

Eine klare Ordnerstruktur ist der erste Schritt zur Automatisierung. Hier ein Beispiel, wie Sie Ihre Rechnungen organisieren können:

2025/
├── Strato/
│   ├── rechnungen/eingehend/
│   │   ├── Rechnung_001.pdf
│   │   ├── Rechnung_002.xml
│   │   └── pdf_extractor.py  # Spezifisch für STRATO

├── Telekom/
│   ├── rechnungen/eingehend/
│   │   ├── Januar2025.pdf
│   │   ├── Februar2025.pdf
│   │   └── pdf_extractor.py  # Spezifisch für Telekom

└── rechnungen/ausgehend/
    ├── Cy-2025-001.pdf
    ├── Cy-2025-002.pdf
    └── pdf_extractor.py      # Spezifisch für ausgehende Rechnungen

Vorteile dieser Struktur:

  • Jeder Anbieter hat seinen eigenen Ordner mit einem spezifischen Skript.
  • Die Skripte sind auf das Rechnungsformat des jeweiligen Anbieters zugeschnitten.
  • Die Daten können direkt dem richtigen Buchungsschlüssel zugeordnet werden (z. B. 122 für Telekommunikation, 210 für Servermiete).

Praktische Umsetzung

Schritt 1: Python installieren

  1. Python herunterladen:
    Laden Sie die neueste Version von Python von der offiziellen Website herunter.
  2. Python installieren:
    Führen Sie den Installer aus und stellen Sie sicher, dass Sie die Option “Add Python to PATH” aktivieren.
  3. Benötigte Bibliotheken installieren:
    Öffnen Sie die Eingabeaufforderung und führen Sie folgenden Befehl aus:
pip install pdfplumber pandas

Schritt 2: Skripte nutzen

  1. Skript herunterladen:
    Laden Sie die Skripte von meinem Codeberg-Repository herunter und speichern Sie sie in den entsprechenden Ordnern.
  2. Skript anpassen:
    Die Skripte sind bereits auf die gängigsten Anbieter wie STRATO und Telekom zugeschnitten. Falls Sie Rechnungen von anderen Anbietern haben, können die Skripte angepasst werden.
  3. Skript ausführen:
    Öffnen Sie die Eingabeaufforderung im Ordner, in dem das Skript liegt, und führen Sie es aus:
python pdf_extractor.py
  1. CSV-Datei importieren:
    Die generierte CSV-Datei kann direkt in JES EÜR importiert werden.

Beispielskripte

Auf meinem Codeberg-Repository finden Sie Beispielskripte für verschiedene Anbieter. Diese Skripte sind speziell für die Rechnungsformate der jeweiligen Anbieter entwickelt worden und können direkt verwendet werden.

Beispiel: Skript für Telekom-Rechnungen

import pdfplumber
import pandas as pd
import os
import re

def extract_telekom_data(pdf_path):
    with pdfplumber.open(pdf_path) as pdf:
        text = "\n".join(page.extract_text() for page in pdf.pages)

    anbieter = "Telekom Deutschland GmbH"
    rechnungsdatum = "N/A"
    rechnungsnummer = "N/A"
    brutto = "0,00 €"

    # Rechnungsdatum extrahieren
    rechnungsdatum_match = re.search(r"Datum\s*(\d{2}\.\d{2}\.\d{4})", text)
    if rechnungsdatum_match:
        rechnungsdatum = rechnungsdatum_match.group(1)

    # Rechnungsnummer extrahieren
    rechnungsnummer_match = re.search(r"Rechnungsnummer\s*([\d\s-]+)", text)
    if rechnungsnummer_match:
        rechnungsnummer = rechnungsnummer_match.group(1).strip()

    # Bruttobetrag extrahieren
    brutto_match = re.search(r"Rechnungsbetrag\s*([\d,]+\s*)", text)
    if brutto_match:
        brutto = brutto_match.group(1)

    return {
        "Anbieter": anbieter,
        "Rechnungsdatum": rechnungsdatum,
        "Rechnungsnummer": rechnungsnummer,
        "Bruttobetrag": brutto,
        "Dateiname": os.path.abspath(pdf_path)
    }

# Verzeichnis mit PDFs durchlaufen
input_dir = "rechnungen/eingehend"
output_csv = "rechnungen_ausgabe_telekom.csv"

data = []
for filename in os.listdir(input_dir):
    if filename.endswith(".pdf"):
        pdf_path = os.path.join(input_dir, filename)
        invoice_data = extract_telekom_data(pdf_path)
        data.append(invoice_data)

# CSV speichern
df = pd.DataFrame(data)
df.to_csv(output_csv, index=False, encoding="utf-8", sep=";")
print(f"CSV für Telekom-Rechnungen wurde unter {output_csv} gespeichert.")

Vorteile der Automatisierung

AspektVorteil
ZeitersparnisReduzierung des Aufwands um bis zu 80%
FehlerreduzierungWeniger manuelle Eingaben, weniger Fehler
SkalierbarkeitFunktioniert für jede Anzahl an Rechnungen
FlexibilitätAnpassbar an verschiedene Anbieter und Formate

Fazit

Mit einer strukturierten Ablage und angepassten Python-Skripten können Sie den Aufwand für die EÜR deutlich reduzieren. Die Skripte sind speziell für verschiedene Anbieter entwickelt und können direkt verwendet oder angepasst werden. Probieren Sie es aus und sparen Sie wertvolle Zeit!


Hilfe benötigt?

Sie benötigen Unterstützung bei der Anpassung der Skripte? Ich helfe Ihnen gerne weiter. Kontaktieren Sie mich und lassen Sie uns gemeinsam Ihre Prozesse optimieren.


Wichtiger Hinweis:

Die Nutzung beschriebener Tools und Anwendungen erfolgt auf eigene Verantwortung. Der Autor garantiert nicht für die Funktionalität oder Sicherheit der Tools. Schäden durch falsche Anwendung gehen zu Lasten des Nutzers.

Kommentare:

Die Kommentarfunktion ist für diesen Artikel deaktiviert. Falls Sie Fragen oder Anregungen zu diesem Artikel haben, schreiben Sie mir gerne eine Nachricht über das Kontaktformular.