-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
import tkinter as tk
from tkinter import scrolledtext
import re
--- Regelbasierte Analyse-Funktion --------------------------------------
def analyze_contract(text):
# Regex-Muster für die Klauseln
patterns = {
"Kündigung": r"\bkündigung\b|\bkündbar\b|\bfrist.*künd",
"Rücktritt": r"\brücktritt\b|\brücktrittsrecht\b",
"Vertragsstrafe": r"\bvertrag[s-]?strafe\b|\bstrafe\b",
"Haftung": r"\bhaftung\b|\bhaftbar\b|\bhaftungsbeschränkung\b",
"Gewährleistung": r"\bgewährleistung\b|\bgewährleistet\b|\bmängelhaftung\b",
}
result = []
comments = []
for clause, pattern in patterns.items():
match = re.search(pattern, text, flags=re.IGNORECASE)
if match:
result.append(f"- {clause}")
comments.append(f"Die Klausel **{clause}** wurde im Vertragstext gefunden (regelbasierte Erkennung via Regex).")
else:
comments.append(f"Die Klausel **{clause}** wurde **nicht** gefunden (keine Übereinstimmung im Regex-Muster).")
output = "Gefundene Klauseln:\n" + ("\n".join(result) if result else "Keine der gesuchten Klauseln gefunden.")
output += "\n\nKommentare zur Analyse:\n" + "\n".join(comments)
return output
--- GUI-Funktion ---------------------------------------------------------
def run_analysis():
text = input_field.get("1.0", tk.END)
result = analyze_contract(text)
output_field.delete("1.0", tk.END)
output_field.insert(tk.END, result)
--- GUI Aufbau -----------------------------------------------------------
root = tk.Tk()
root.title("Vertragsanalyse – Regelbasiertes Tool")
Eingabefeld (Vertragstext)
tk.Label(root, text="Vertragstext eingeben:").pack(anchor="w")
input_field = scrolledtext.ScrolledText(root, width=80, height=15)
input_field.pack(padx=10, pady=5)
Analysebutton
analyze_button = tk.Button(root, text="Analyse starten", command=run_analysis)
analyze_button.pack(pady=10)
Ausgabefeld
tk.Label(root, text="Analyseergebnis:").pack(anchor="w")
output_field = scrolledtext.ScrolledText(root, width=80, height=20)
output_field.pack(padx=10, pady=5)
root.mainloop()