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()