Worum gehtâs?
Du bekommst Dokumente.
Meist Word oder PDF.
Und Du willst wissen:
Ist das ein Arbeitsvertrag, ein NDA oder ein Angebot?
Oder einfach nur eine AGB?
Manuell lesen? Muss nicht sein.
Wir lassen GPT oder Azure Form Recognizer klassifizieren.
Direkt aus Word. Mit VBA.
Was brauchst Du?
- Word 2024 mit Makro-UnterstĂŒtzung
- Einen OpenAI- oder Azure AI-Zugang
- Alternativ: Azure Form Recognizer (Custom Model oder Prebuilt)
- Ein Dokument mit Text
- Etwas Erfahrung mit JSON & HTTP in VBA
Beispielhafte Klassifikationen
Dokumentinhalt | Klassifikation |
---|---|
âDieser Vertrag regelt das ArbeitsverhĂ€ltnisâŠâ | Arbeitsvertrag |
âMit Unterzeichnung dieser GeheimhaltungsvereinbarungâŠâ | NDA |
âHiermit bestĂ€tigen wir Ihnen folgendes AngebotâŠâ | Angebot |
âDie allgemeinen GeschĂ€ftsbedingungenâŠâ | AGB |
Prompt-Vorlage fĂŒr GPT
Analysiere den folgenden Dokumententext. Gib exakt eine der folgenden Kategorien zurĂŒck: Arbeitsvertrag, Geheimhaltungsvereinbarung, Angebot, AGB, Sonstiges.
Text: [Dokumentauszug hier einfĂŒgen]
GPT gibt dann zurĂŒck:
Klassifikation: Angebot
GPT-Klassifikation per VBA in Word
Funktion zur GPT-Anfrage
Function KlassifiziereDokumentGPT(text As String) As String
Dim http As Object
Dim apiKey As String
Dim prompt As String
Dim json As String
Dim result As String
apiKey = "sk-..." ' Dein OpenAI-API-Key
prompt = "Analysiere den folgenden Dokumententext. Gib exakt eine der folgenden Kategorien zurĂŒck: Arbeitsvertrag, Geheimhaltungsvereinbarung, Angebot, AGB, Sonstiges." & vbCrLf & "Text: " & text
json = "{""model"":""gpt-4"",""messages"":[{""role"":""user"",""content"":""" & Replace(prompt, """", "\""") & """}],""temperature"":0}"
Set http = CreateObject("MSXML2.XMLHTTP")
With http
.Open "POST", "https://api.openai.com/v1/chat/completions", False
.setRequestHeader "Content-Type", "application/json"
.setRequestHeader "Authorization", "Bearer " & apiKey
.send json
result = .responseText
End With
Dim startPos As Long, endPos As Long
startPos = InStr(result, """content"":""") + 11
endPos = InStr(startPos, result, """}")
KlassifiziereDokumentGPT = Mid(result, startPos, endPos - startPos)
End Function
Dokumentinhalt auslesen und klassifizieren
Sub DokumentKlassifizieren()
Dim inhalt As String
Dim klasse As String
inhalt = Left(ActiveDocument.Content.Text, 3000) ' Nur ersten Teil nehmen
klasse = KlassifiziereDokumentGPT(inhalt)
MsgBox "Klassifikation: " & klasse, vbInformation
End Sub
Alternative: Azure Form Recognizer
Setup
- Azure Ressource âForm Recognizerâ erstellen
- Prebuilt-Modell: âDocumentâ oder Custom Model trainieren
- PDF oder Word in Base64 oder als URL ĂŒbergeben
Beispielhafte POST-Anfrage (VBA-Ă€hnlich)
' Achtung: hier stark vereinfacht, da Azure OCR PDF oder Base64 erwartet
' JSON-Antwort enthÀlt "documentType" oder "fields"
' Endpoint: https://<region>.api.cognitive.microsoft.com/formrecognizer/documentModels/prebuilt-document:analyze?api-version=2023-07-31
' SetRequestHeader:
' "Content-Type": "application/json"
' "Ocp-Apim-Subscription-Key": "<dein-key>"
Azure erkennt dann z.âŻB.:
"documentType": "contract"
Oder liefert einen Score je Kategorie (bei Custom Model).
Tipps aus der Praxis
- GPT funktioniert gut bei Dokumenten mit klarer Sprache
- Bei Tabellen, juristischen AnhÀngen oder Bildern ist Azure OCR robuster
- Bei sensiblen Dokumenten â Azure in EU-Region verwenden
- Texte ggf. vorher mit
Replace(text, vbCrLf, " ")
glÀtten
Erweiterungsideen
- Ergebnis in Dokument-Eigenschaften oder FuĂzeile schreiben
- Automatisches Ablegen nach Typ (Verzeichnissteuerung)
- Kombination mit Metadaten-Extraktion (z.âŻB. âVertragsbeginnâ)
- DokumentenprĂŒfung: âFehlt Unterschrift?â â Zusatz-Prompt
Wenn Du regelmĂ€Ăig Dokumente einsortieren musst, ohne sie lesen zu wollen â dann lass GPT oder Azure erkennen, was auf dem Tisch liegt.
No responses yet