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
- Python herunterladen:
Laden Sie die neueste Version von Python von der offiziellen Website herunter. - Python installieren:
Führen Sie den Installer aus und stellen Sie sicher, dass Sie die Option “Add Python to PATH” aktivieren. - Benötigte Bibliotheken installieren:
Öffnen Sie die Eingabeaufforderung und führen Sie folgenden Befehl aus:
pip install pdfplumber pandas
Schritt 2: Skripte nutzen
- Skript herunterladen:
Laden Sie die Skripte von meinem Codeberg-Repository herunter und speichern Sie sie in den entsprechenden Ordnern. - 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. - Skript ausführen:
Öffnen Sie die Eingabeaufforderung im Ordner, in dem das Skript liegt, und führen Sie es aus:
python pdf_extractor.py
- 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
| Aspekt | Vorteil |
|---|---|
| Zeitersparnis | Reduzierung des Aufwands um bis zu 80% |
| Fehlerreduzierung | Weniger manuelle Eingaben, weniger Fehler |
| Skalierbarkeit | Funktioniert für jede Anzahl an Rechnungen |
| Flexibilität | Anpassbar 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.
Weiterführende Links
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.
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.