Dokumentklassifikation: Vertragsarten oder Textarten automatisch erkennen per GPT / Azure Form Recognizer

Warum überhaupt klassifizieren?

Du willst wissen, ob ein PDF ein Kaufvertrag, Mietvertrag oder ein Angebot ist?
Oder ob eine E-Mail eine Kündigung, ein Bewerbungsschreiben oder nur Spam enthält?

Das spart Zeit.
Und ist notwendig, wenn Du mit vielen Dokumenten arbeitest.

Zwei Wege zur Lösung

1. GPT-Modell (z. B. über Azure OpenAI)

GPT kann anhand des Textinhalts klassifizieren.
Das geht flexibel – auch bei unstrukturierten Dokumenten.

2. Azure Form Recognizer

Microsofts Tool für strukturierte Dokumentanalyse.
Ideal, wenn Du standardisierte Formulare hast.
Rechnungen, Ausweise, Verträge – alles geht.

Einbindung in Access (Beispiel mit VBA)

Du willst aus Access heraus ein Dokument analysieren lassen?
Kein Problem – mit ein wenig JSON und REST.

Beispiel: Anfrage an GPT API (Azure)

Function GetGPTClassification(docText As String) As String
    Dim http As Object
    Dim jsonRequest As String
    Dim jsonResponse As String
    
    Set http = CreateObject("MSXML2.XMLHTTP")
    
    jsonRequest = "{""messages"":[{""role"":""system"",""content"":""Klassifiziere diesen Text nach Typ (Vertrag, Angebot, Kündigung, etc.):""}," & _
                   "{""role"":""user"",""content"":""" & Replace(docText, """", """""") & """}]}"

    With http
        .Open "POST", "https://deine-azure-openai-api.openai.azure.com/openai/deployments/deinmodell/chat/completions?api-version=2024-05-01", False
        .setRequestHeader "Content-Type", "application/json"
        .setRequestHeader "api-key", "DEIN_API_KEY"
        .send jsonRequest
        jsonResponse = .responseText
    End With

    ' Achtung: hier brauchst Du ggf. eine JSON-Parser-Bibliothek
    GetGPTClassification = jsonResponse
End Function

Beispiel: PDF-Inhalt extrahieren (nur Textinhalt)

Function ExtractPDFText(pdfPath As String) As String
    ' Nutze externes Tool wie pdftotext.exe
    Shell "pdftotext.exe """ & pdfPath & """ -", vbHide
    ' Lies danach Inhalt der Textdatei ein
    ' oder direkt stdout, wenn synchronisiert
End Function

Kombination: Access + PDF + GPT

  • PDF wird lokal eingelesen
  • Text wird an GPT geschickt
  • Klassifikation kommt zurück
  • Access speichert die Zuordnung in Tabelle „tblDokumente“

Beispiel-Tabelle

IDDateinameKlassifikationGPT Confidence
1vertrag_01.pdfKaufvertrag92 %
2email_02.txtBewerbung88 %
3scan_miete03.pdfMietvertrag95 %

Wann besser Form Recognizer?

  • Wenn Du strukturierte Dokumente hast
  • Wenn Layout wiederkehrend ist
  • Wenn Du Felder wie „Kundennummer“ oder „Gesamtbetrag“ extrahieren willst

Beispiel: Azure Form Recognizer in VBA nutzen

Du lädst ein PDF hoch per API und bekommst strukturierte JSON-Antwort zurück.

' Upload eines PDF-Dokuments zur Analyse (nur POST-Vorbereitung)
Function CallFormRecognizer(filePath As String) As String
    Dim http As Object
    Set http = CreateObject("MSXML2.XMLHTTP")

    ' Achtung: multipart/form-data muss korrekt gebaut werden
    ' Alternativ: Datei vorher über PowerShell oder Python hochladen
    ' und nur Ergebnis in Access zurücklesen
End Function

Meine Empfehlung

  • GPT = gut für freie Texte, schnelles Ergebnis
  • Form Recognizer = besser für standardisierte Formulare
  • Kombiniert = ideal bei großen Dokumentmengen

Und in Zukunft?

Wenn Du heute mit Dokumenten arbeitest, die Du manuell einordnest,
dann kannst Du das mit KI deutlich beschleunigen.

Frag mich gern, wie das konkret für Deine Firma aussehen könnte.

Auch ohne Azure-Abo lässt sich viel lokal vorbereiten.
Ich zeig Dir, wie.
Kostenloses Erstgespräch gibt’s wie immer beim Datenschäfer.

Nach oben scrollen