Warum Azure OCR?
Weil Tesseract manchmal zu viel rÀt.
Und weil Du PDF, JPG oder PNGs sauber analysieren willst â mit Zeilen, Spalten und PrĂ€zision.
Azure Computer Vision bietet Dir genau das â als API.
Access ĂŒbernimmt das Steuern.
Die Cloud liest. Du speicherst.
Ich zeig Dir den Ablauf: Datei senden, Text abholen, Ergebnis weiterverarbeiten.
Was Du brauchst
- Azure-Konto
- Ressource âComputer Visionâ
- API-Key und Endpoint
- Tabelle fĂŒr Dokumente + Texte
- Etwas Geduld bei asynchronen Calls
Tabellenstruktur (Beispiel)
Tabelle | Zweck |
---|---|
tblDokumente | Pfade, Status, OCR-Text |
tblOCRFehler | Fehler und Logs |
Azure vorbereiten
- Gehe zu https://portal.azure.com
- âComputer Visionâ Ressource anlegen
- Key und Endpoint notieren
- Pricing-Tier: âFreeâ reicht zum Testen
Beispiel-Endpoint:
https://westeurope.api.cognitive.microsoft.com/
Schritt 1: Bild als Bytearray laden
Function LadeDateiAlsBytes(pfad As String) As Byte()
Dim bytes() As Byte
Open pfad For Binary As #1
ReDim bytes(LOF(1) - 1)
Get #1, , bytes
Close #1
LadeDateiAlsBytes = bytes
End Function
Schritt 2: OCR-Analyse starten (async)
Function StarteAzureOCR(pfad As String) As String
Dim http As Object
Dim apiKey As String
Dim endpoint As String
Dim imgData() As Byte
apiKey = "DEIN_API_KEY"
endpoint = "https://westeurope.api.cognitive.microsoft.com/vision/v3.2/read/analyze"
imgData = LadeDateiAlsBytes(pfad)
Set http = CreateObject("MSXML2.ServerXMLHTTP")
http.Open "POST", endpoint, False
http.setRequestHeader "Content-Type", "application/octet-stream"
http.setRequestHeader "Ocp-Apim-Subscription-Key", apiKey
http.Send imgData
' Azure liefert nur den Status-Link in Response-Header
If http.Status = 202 Then
StarteAzureOCR = http.getResponseHeader("Operation-Location")
Else
Call LogFehler(pfad, http.responseText)
StarteAzureOCR = ""
End If
End Function
Schritt 3: OCR-Ergebnis abfragen
OCR braucht 1â5 Sekunden â wir rufen es zyklisch ab.
Function HoleOCRResult(operationUrl As String, apiKey As String) As String
Dim http As Object
Dim status As String
Dim response As String
Set http = CreateObject("MSXML2.ServerXMLHTTP")
Do
http.Open "GET", operationUrl, False
http.setRequestHeader "Ocp-Apim-Subscription-Key", apiKey
http.Send
response = http.responseText
status = Mid(response, InStr(response, """status"":""") + 10, 10)
DoEvents
If status Like "*succeeded*" Then Exit Do
If status Like "*failed*" Then Exit Do
Application.Wait Now + TimeValue("00:00:02")
Loop
HoleOCRResult = response
End Function
Schritt 4: Text extrahieren und speichern
Function ExtrahiereOCRText(json As String) As String
Dim sc As Object
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
sc.AddCode "function parse(j){ var l = JSON.parse(j).analyzeResult.readResults; var t = ''; for(var i=0;i<l.length;i++){ for(var j=0;j<l[i].lines.length;j++){ t += l[i].lines[j].text + '\n'; } } return t; }"
ExtrahiereOCRText = sc.Run("parse", json)
End Function
Ablauf in Access
Sub StarteOCRImport(pfad As String)
Dim opURL As String
Dim json As String
Dim ergebnis As String
Dim apiKey As String
apiKey = "DEIN_API_KEY"
opURL = StarteAzureOCR(pfad)
If opURL <> "" Then
json = HoleOCRResult(opURL, apiKey)
ergebnis = ExtrahiereOCRText(json)
Call SpeichereOCR(pfad, ergebnis)
End If
End Sub
Ergebnis speichern
Sub SpeichereOCR(pfad As String, text As String)
CurrentDb.Execute "INSERT INTO tblDokumente (Dateipfad, OCRText, Zeitstempel) VALUES ('" & _
Replace(pfad, "'", "''") & "', '" & Replace(text, "'", "''") & "', Now())"
End Sub
Fehlerlog
Sub LogFehler(pfad As String, meldung As String)
CurrentDb.Execute "INSERT INTO tblOCRFehler (Dateipfad, Fehlertext, Zeitstempel) VALUES ('" & _
Replace(pfad, "'", "''") & "', '" & Replace(meldung, "'", "''") & "', Now())"
End Sub
Formulareingriff
Private Sub btnOCR_Click()
Call StarteOCRImport(Me.txtPfad)
MsgBox "OCR gestartet. Text ist gleich verfĂŒgbar."
End Sub
Was Du damit machen kannst
Anwendung | Nutzen |
---|---|
Rechnungstexte extrahieren | Weiterverarbeitung mit GPT |
Lieferscheine einlesen | Automatische PositionsvorschlÀge |
PrĂŒfberichte digitalisieren | Archiv und Volltextsuche |
Was Du beachten musst
- PDF geht nur, wenn es als Bild vorliegt â kein âechterâ Text
- Achtung bei Handschrift â keine Wunder erwarten
- Der API-Call ist asynchron â Geduld einbauen
- Du kannst bis zu 20 Calls/Minute im Free-Tier senden
âAccess kann nicht lesen â aber er weiĂ, wen er fragen muss.â
Wenn Du Azure OCR einbauen willst â ich helf Dir beim Aufsetzen.
Schnell. Ohne Gefrickel. Direkt aus dem Formular.
No responses yet