Problemstellung: Die Warenwirtschaft PDS verarbeitet automatisiert E-Mails, die Rechnungen in einem digitalen Format wie ZugFerD und X-Rechnung enthalten. E-Mails im PDF-Format werden jedoch lediglich in einen Unterordner verschoben und müssen dort manuell geprüft werden. Diese Software nutzt KI, um die abgelehnten E-Mails bzw. deren Anhänge zu analysieren und festzustellen, ob es sich um eine Rechnung handelt. Ist dies der Fall, werden die relevanten Informationen aus der Rechnung extrahiert. Die Rechnung wird gemeinsam mit diesen Informationen im DMS der PDS-Software abgelegt und dadurch revisionssicher gemacht.
Technische Übersicht
1. Ziele der Implementierung
- Automatische Authentifizierung bei Microsoft 365 und Abrufen von E-Mails aus bestimmten Ordnern.
- Extraktion und Verarbeitung von Anhängen (PDF/XML).
- Analyse der Dokumente mithilfe eines Large Language Models (LLM).
- Hochladen relevanter Dokumente in ein DMS.
- Optimierte Fehlerbehandlung und Protokollierung.
2. Architektur der Lösung
Die Lösung ist modular aufgebaut und umfasst die folgenden Komponenten:
- E-Mail-Authentifizierung: Verwendung der Microsoft Authentication Library (MSAL) für die OAuth2-Authentifizierung.
- Dateiverarbeitung: Extraktion von Text aus PDF- und XML-Dateien.
- Analyse durch LLM: Nutzung eines lokal gehosteten LLM-Endpunkts zur Analyse der Dokumente.
- Integration mit DMS: Hochladen relevanter Dokumente in ein SOAP-basiertes DMS.
- Fehlerbehandlung und Logging: Umfangreiche Protokollierung für eine einfache Fehlerdiagnose.
Implementierung im Detail
3. Technologien und Tools
- Python-Bibliotheken:
- requests für HTTP-Anfragen.
- msal für die Authentifizierung bei Microsoft 365.
- pdfplumber für die Textextraktion aus PDF-Dateien.
- zeep für die Kommunikation mit dem SOAP-DMS.
- logging für die Protokollierung.
- Datenquellen:
- Microsoft 365 E-Mail-Dienst (Microsoft Graph API).
- Dokumentenmanagementsystem (SOAP-API).
4. Code-Module
4.1 Authentifizierung bei Microsoft 365
Die Authentifizierung erfolgt über die Microsoft Authentication Library (MSAL). Nach dem Abrufen eines OAuth2-Tokens wird dieses verwendet, um auf die Microsoft Graph API zuzugreifen.
from msal import ConfidentialClientApplication
def get_oauth2_token():
app = ConfidentialClientApplication(
client_id=CONFIG[„client_id“],
client_credential=CONFIG[„client_secret“],
authority=f“https://login.microsoftonline.com/{CONFIG[‚tenant_id‘]}“
)
result = app.acquire_token_for_client(scopes=[GRAPH_SCOPE])
if „access_token“ in result:
return result[„access_token“]
else:
raise Exception(„OAuth2-Token konnte nicht abgerufen werden.“)
4.2 Verarbeitung von Anhängen
Anhänge werden aus E-Mails extrahiert, in einem temporären Ordner gespeichert und analysiert.
import pdfplumber
# Extrahiert Text aus PDFs
with pdfplumber.open(file_path) as pdf:
extracted_text = „\n“.join([page.extract_text() for page in pdf.pages])
4.3 Analyse mit einem LLM
Ein lokal gehosteter Endpunkt wird genutzt, um die Relevanz eines Dokuments zu bestimmen. Das Modell liefert JSON-formatierte Antworten für eine einfache Weiterverarbeitung.
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
return json.loads(response.json()[„choices“][0][„message“][„content“])
4.4 Hochladen von Dokumenten in das DMS
Dokumente werden in das SOAP-basierte DMS hochgeladen. Hierbei wird die Datei in Base64 kodiert und mit relevanten Metadaten versehen.
from zeep import Client
with open(file_path, „rb“) as file:
document_base64 = base64.b64encode(file.read()).decode(„utf-8“)
response = client.service.uploadDocument(dmsUploadRequest={…})
4.5 Fehlerbehandlung und Logging
Die Lösung verwendet das logging-Modul, um Fehler, Warnungen und Statusmeldungen zu protokollieren.
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
Vorteile der Lösung
- Automatisierung: Reduzierung manueller Eingriffe durch automatische Verarbeitung.
- Fehlerreduktion: Verbesserte Datenqualität durch LLM-basierte Analyse.
- Skalierbarkeit: Modularer Code ermöglicht einfache Erweiterungen.
- Nachvollziehbarkeit: Umfassendes Logging zur Nachverfolgung aller Vorgänge.
Fazit
Dieser Ansatz bietet eine robuste und skalierbare Lösung für die automatisierte Verarbeitung von E-Mails mit Anhängen. Durch die Kombination moderner Technologien wie der Microsoft Graph API, eines lokalen LLMs und eines DMS werden Geschäftsprozesse effizienter gestaltet. Die modulare Architektur erleichtert zudem die Wartung und Erweiterung der Lösung.

