PDFs abhängig vom Inhalt umbenennen

witzig, habe ich gerade nen prototypen fuer geschrieben, weil ich faul bin. kriegst du python hin?
 
  • Gefällt mir
Reaktionen: Snapuman
Weniger. Woher soll des Programm wissen, was es einschreiben muss...?

Man kann es evtzl über Outlook und VBA machen, Absender dann...

Aber dazu muss man wissen, was die Quelle ist, wo diese Liegen etc.
 
madmax2010 schrieb:
witzig, habe ich gerade nen prototypen fuer geschrieben, weil ich faul bin. kriegst du python hin?
:D

duAffentier schrieb:
Weniger. Woher soll des Programm wissen, was es einschreiben muss...?
Jede anständige Buchhaltungssoftware bekommt es hin, die relevanten Daten aus nem PDF-Dokument auszulesen. Im Grunde brauche ich sowas, nur halt zum Umbenennen.
 
Python:
import pdfplumber
import re
import argparse

# Reguläre Ausdrücke für Rechnungsdatum und Rechnungsnummer (Anpassen je nach Format)
DATE_PATTERN = r'(\d{2}[./-]\d{2}[./-]\d{4})'  # Beispiel: 12.03.2024 oder 12/03/2024
INVOICE_PATTERN = r'(?:Rechnungsnummer|Invoice No\.?|Rechnung-Nr\.?)\s*[:#]?\s*(\d+)'

def extract_text_from_pdf(pdf_path):
    """Extrahiert Text aus einem PDF."""
    text = ""
    with pdfplumber.open(pdf_path) as pdf:
        for page in pdf.pages:
            text += page.extract_text() + "\n"
    return text

def extract_invoice_details(text):
    """Extrahiert Rechnungsdatum und Rechnungsnummer aus dem Text."""
    date_match = re.findall(DATE_PATTERN, text)
    invoice_match = re.search(INVOICE_PATTERN, text)

    invoice_number = invoice_match.group(1) if invoice_match else "Nicht gefunden"
    invoice_date = date_match[0] if date_match else "Nicht gefunden"

    return invoice_date, invoice_number

def main():
    parser = argparse.ArgumentParser(description="Extrahiert Rechnungsnummer und -datum aus einer PDF-Rechnung.")
    parser.add_argument("pdf_path", type=str, help="Pfad zur PDF-Datei")
    args = parser.parse_args()

    text = extract_text_from_pdf(args.pdf_path)
    invoice_date, invoice_number = extract_invoice_details(text)

    print(text)
    print(f"Rechnungsdatum: {invoice_date}")
    print(f"Rechnungsnummer: {invoice_number}")

if __name__ == "__main__":
    main()

habe dir gerade mal kommentare dran gemacht.
Ich brauche halt auch nur datum+rechnungsnummer. Der umbennen und in Ordner mit Kundennamen einsortieren Teil fehlt noch

gerade versuche ich aber erst die regex robuster zu machen und faelle bei denen die Rnr in einer neuen Zeile mit anderen zahlen dazwischen abzubilden.
 
  • Gefällt mir
Reaktionen: N00bn00b, Snooty und dms
Snooty schrieb:
Jede anständige Buchhaltungssoftware
Es kommt aber sehr darauf an, wie die Rechnungen geschrieben wurden.
Da kann ja jeder Händler einen anderen Aufbau haben.

Etwas fertiges wird es wohl eher nicht geben.
Da muss man dann schon selbst etwas zusammen programmieren.
 
  • Gefällt mir
Reaktionen: cumulonimbus8
DHC schrieb:
Da kann ja jeder Händler einen anderen Aufbau haben.
Yep.
Darum habe ich das hier 4 jahre auf der Todo liste Prokrastiniert.
Aber wo du es so explizit sagst, vielleicht hilft zugpferd da ja.. Das ist ja die ganze Idee dahinter gewesen
 
madmax2010 schrieb:
habe dir gerade mal kommentare dran gemacht.
Danke, ich gucks mir mal an.

DHC schrieb:
Es kommt aber sehr darauf an, wie die Rechnungen geschrieben wurden.
Die Software sucht halt im gesamten Dokument nach Schlagwörtern wie Rechnung, Rechnungsnummer, Datum, Rechnungsdatum, Belege, Betrag, Summe, Rechnungsbetrag, ... und findet dann die richtigen Stellen mit den Werten. Ja, das klappt nicht zu 100 % - aber in der Regel schon.

Und wenn da noch eine KI mit drinhinge, würde es sicher noch besser klappen. Wie gesagt, wenn es was kostet, ist's auch ok.
 
Je nach Größe des Firma ist die eRechnung ab 2025 bis 2028 bindend.
Für kleine Einzelkämpfer ab 2028.

Ich habe im neuen Jahr bisher eine eRechnung in die Finger bekommen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: duAffentier
Zurück
Oben