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

Sönke SchĂ€fer, DatenschĂ€fer bei SeSoft GmbH Web/Database/Solutions, Datenbank-Entwickler fĂŒr Access, SQL-Server, Power Platform usw.

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.

Kategorien: