Dela via


Skapa en anpassad analys via REST-API:er

Innehållstolkningsanalyserare definierar hur du bearbetar och extraherar insikter från ditt innehåll. De säkerställer en enhetlig bearbetnings- och utdatastruktur i allt innehåll för att ge tillförlitliga och förutsägbara resultat. Vi erbjuder fördefinierade analysverktyg för vanliga användningsfall. Den här guiden visar hur dessa analysverktyg kan anpassas så att de passar dina behov bättre.

I den här guiden använder vi kommandoradsverktyget cURL. Om den inte är installerad kan du ladda ned rätt version för utvecklingsmiljön.

Definiera ett analysschema

Om du vill skapa en anpassad analysator definierar du ett fältschema som beskriver de strukturerade data som du vill extrahera. I följande exempel skapar vi ett analysverktyg baserat på en fördefinierad dokumentanalysator för bearbetning av ett kvitto.

Skapa en JSON-fil med namnet request_body.json med följande innehåll:

{
  "description": "Sample receipt analyzer",
  "baseAnalyzerId": "prebuilt-documentAnalyzer",
  "config": {
    "returnDetails": true,
    "enableFormula": false,
    "disableContentFiltering": false,
    "estimateFieldSourceAndConfidence": true,
    "tableFormat": "html"
  },
 "fieldSchema": {
    "fields": {
      "VendorName": {
        "type": "string",
        "method": "extract",
        "description": "Vendor issuing the receipt"
      },
      "Items": {
        "type": "array",
        "method": "extract",
        "items": {
          "type": "object",
          "properties": {
            "Description": {
              "type": "string",
              "method": "extract",
              "description": "Description of the item"
            },
            "Amount": {
              "type": "number",
              "method": "extract",
              "description": "Amount of the item"
            }
          }
        }
      }
    }
  }
}

Skapa analysverktyg

PUT-begäran

curl -i -X PUT "{endpoint}/contentunderstanding/analyzers/{analyzerId}?api-version=2025-05-01-preview" \
  -H "Ocp-Apim-Subscription-Key: {key}" \
  -H "Content-Type: application/json" \
  -d @request_body.json

PUT-svar

201-svaret Created innehåller en Operation-Location rubrik som innehåller en URL som du kan använda för att spåra statusen för den här asynkrona åtgärden för att skapa analysverktyg.

201 Created
Operation-Location: {endpoint}/contentunderstanding/analyzers/{analyzerId}/operations/{operationId}?api-version=2025-05-01-preview

När processen är klar och en HTTP GET-operation utförs på URL:en för åtgärden returneras "status": "succeeded".

curl -i -X GET "{endpoint}/contentunderstanding/analyzers/{analyzerId}/operations/{operationId}?api-version=2025-05-01-preview" \
  -H "Ocp-Apim-Subscription-Key: {key}"

Analysera fil

Skicka fil

Du kan nu använda den anpassade analysatorn som du skapade för att bearbeta filer och extrahera de fält som du definierade i schemat.

Innan du kör cURL-kommandot gör du följande ändringar i HTTP-begäran:

  1. Ersätt {endpoint} och {key} med slutpunkts- och nyckelvärdena från Azure-portalens Azure AI Foundry-instans.
  2. Ersätt {analyzerId} med namnet på den anpassade analysatorn som skapades tidigare.
  3. Ersätt {fileUrl} med en offentligt tillgänglig URL för filen som ska analyseras, till exempel en sökväg till en Azure Storage Blob med en signatur för delad åtkomst (SAS) eller exempel-URL:en https://github.com/Azure-Samples/azure-ai-content-understanding-python/raw/refs/heads/main/data/receipt.png.

POST-förfrågan

curl -i -X POST "{endpoint}/contentunderstanding/analyzers/{analyzerId}:analyze?api-version=2025-05-01-preview" \
  -H "Ocp-Apim-Subscription-Key: {key}" \
  -H "Content-Type: application/json" \
  -d "{\"url\":\"{fileUrl}\"}"

POST-svarmeddelande

Svaret 202 Accepted innehåller det {resultId} som du kan använda för att spåra statusen för den här asynkrona åtgärden.

{
  "id": {resultId},
  "status": "Running",
  "result": {
    "analyzerId": {analyzerId},
    "apiVersion": "2025-05-01-preview",
    "createdAt": "YYYY-MM-DDTHH:MM:SSZ",
    "warnings": [],
    "contents": []
  }
}

Hämta analysera resultat

  1. Ersätt {endpoint} och {key} med slutpunkts- och nyckelvärdena från Azure-portalens Azure AI Foundry-instans.
  2. Ersätt {resultId} med resultId i POST-svaret.

GET-begäran

curl -i -X GET "{endpoint}/contentunderstanding/analyzerResults/{resultId}?api-version=2025-05-01-preview" \
  -H "Ocp-Apim-Subscription-Key: {key}"

GET-svar

Ett 200 OK svar innehåller ett status fält som visar åtgärdens förlopp.

  • status är Succeeded om åtgärden har slutförts framgångsrikt.
  • Om det är running eller notStartedanropar du API:et igen manuellt eller med ett skript: vänta minst en sekund mellan begäranden.
Exempelsvar
{
  "id": {resultId},
  "status": "Succeeded",
  "result": {
    "analyzerId": {analyzerId},
    "apiVersion": "2025-05-01-preview",
    "createdAt": "YYYY-MM-DDTHH:MM:SSZ",
    "warnings": [],
    "contents": [
      {
        "markdown": "Contoso\n\n123 Main Street\nRedmond, WA 98052\n\n987-654-3210\n\n6/10/2019 13:59\nSales Associate: Paul\n\n\n<table>\n<tr>\n<td>2 Surface Pro 6</td>\n<td>$1,998.00</td>\n</tr>\n<tr>\n<td>3 Surface Pen</td>\n<td>$299.97</td>\n</tr>\n</table> ...",
        "fields": {
          "VendorName": {
            "type": "string",
            "valueString": "Contoso",
            "spans": [{"offset": 0,"length": 7}],
            "confidence": 0.996,
            "source": "D(1,774.0000,72.0000,974.0000,70.0000,974.0000,111.0000,774.0000,113.0000)"
          },
          "Items": {
            "type": "array",
            "valueArray": [
              {
                "type": "object",
                "valueObject": {
                  "Description": {
                    "type": "string",
                    "valueString": "2 Surface Pro 6",
                    "spans": [ { "offset": 115, "length": 15}],
                    "confidence": 0.423,
                    "source": "D(1,704.0000,482.0000,875.0000,482.0000,875.0000,508.0000,704.0000,508.0000)"
                  },
                  "Amount": {
                    "type": "number",
                    "valueNumber": 1998,
                    "spans": [{ "offset": 140,"length": 9}
                    ],
                    "confidence": 0.957,
                    "source": "D(1,952.0000,482.0000,1048.0000,482.0000,1048.0000,508.0000,952.0000,509.0000)"
                  }
                }
              }, ...
            ]
          }
        },
        "kind": "document",
        "startPageNumber": 1,
        "endPageNumber": 1,
        "unit": "pixel",
        "pages": [
          {
            "pageNumber": 1,
            "angle": -0.0848,
            "width": 1743,
            "height": 878,
            "spans": [
              {
                "offset": 0,
                "length": 375
              }
            ],
            "words": [
              {
                "content": "Contoso",
                "span": {"offset": 0,"length": 7 },
                "confidence": 0.995,
                "source": "D(1,774,72,974,70,974,111,774,113)"
              }, ...

            ],
            "lines": [
              {
                "content": "Contoso",
                "source": "D(1,774,71,973,70,974,111,774,113)",
                "span": {"offset": 0,"length": 7}
              }, ...
            ]
          }
        ],
        "paragraphs": [
          {
            "content": "Contoso",
            "source": "D(1,774,71,973,70,974,111,774,113)",
            "span": {"offset": 0,"length": 7}
          }, ...
        ],
        "sectios": [
          {
            "span": {"offset": 0,"length": 374 },
            "elements": ["/paragraphs/0","/paragraphs/1", ...]
          }
        ],
        "tables": [
          {
            "rowCount": 2,
            "columnCount": 2,
            "cells": [
              {
                "kind": "content",
                "rowIndex": 0,
                "columnIndex": 0,
                "rowSpan": 1,
                "columnSpan": 1,
                "content": "2 Surface Pro 6",
                "source": "D(1,691,471,911,470,911,514,691,515)",
                "span": {"offset": 115,"length": 15},
                "elements": ["/paragraphs/4"]
              }, ...
            ],
            "source": "D(1,759,593,1056,592,1057,741,760,742)",
            "span": {"offset": 223,"length": 151}
          }
        ]
      }
    ]
  }
}