Form Recognizer 3.0-s | Előnézet

Fontos

Form Recognizer REST API 3.0-s és -es REST API a válasz JSON-ját.

Form Recognizer 3.0-s (előzetes verzió) verzió számos új funkciót és képességet tartalmaz:

Ebben a cikkben megismeri a Form Recognizer 2.1-es és 3.0-s verziója közötti különbségeket, valamint azt, hogyan lehet az API újabb verziójára lépni.

A végpontok REST API változásai

A 3.0-s REST API az elemzési műveleteket az elrendezéselemzéshez, az előre összeállított modellekhez és az egyéni modellekhez egyetlen műveletpárban egyesíti az elrendezéselemzés (előre összeállított elrendezés) és az előre összeállított modellek documentModels modelId hozzárendelésével.

POST kérés

https://{your-form-recognizer-endpoint}/formrecognizer/documentModels/{modelId}?api-version=2021-07-30-preview

GET kérés

https://{your-form-recognizer-endpoint}/formrecognizer/documentModels/{modelId}/AnalyzeResult/{resultId}?api-version=2021-07-30-preview

Művelet elemzése

  • A kérelem hasznos információja és a hívási minta változatlan marad.
  • Az Elemzés művelet megadja a bemeneti dokumentumot és a tartalomspecifikus konfigurációkat, és visszaadja az elemzés eredményének URL-címét a válaszban Operation-Location fejlécen keresztül.
  • Az elemzés eredményének URL-címének lekérdezése get kérés használatával az elemzés művelet állapotának ellenőrzéséhez (a kérések közötti minimális javasolt időköz 1 másodperc).
  • Sikeres művelet esetén az állapot sikeresre van állítva, és az analyzeResult lesz visszaadva a válasz törzsében. Ha hibákat észlelt, az állapot sikertelen lesz, és hibaüzenetet ad vissza.
Modellezés v2.1 v3.0
Kérés URL-előtagja https://{your-form-recognizer-endpoint}/formrecognizer/v2.1 https://{your-form-recognizer-endpoint}/formrecognizer
🆕 dokumentum N/A /documentModels/prebuilt-document:analyze
Elrendezés /layout/analyze /documentModels/prebuilt-layout:analyze
Egyéni /custom/{modelId}/analyze /documentModels/{modelId}:analyze
Számla /prebuilt/invoice/analyze /documentModels/prebuilt-invoice:analyze
Beérkezési /prebuilt/receipt/analyze /documentModels/prebuilt-receipt:analyze
Azonosító dokumentum /prebuilt/idDocument/analyze /documentModels/prebuilt-idDocument:analyze
Névjegykártya /prebuilt/businessCard/analyze /documentModels/prebuilt-businessCard:analyze

A kérelem törzsének elemzése

Az elemzett tartalmat a kérelem törzse biztosítja. A kérést az URL-cím vagy a base64 kódolású adatokkal lehet összeépíteni.

Nyilvánosan elérhető webes URL-cím megadásához állítsa a Content-Type (Tartalomtípus) értéket application/json (alkalmazás/json) formátumra, és küldje el a   következő JSON-törzset:

{
  "urlSource": "{urlPath}"
}

A Base64-kódolás a Form Recognizer 3.0-s verzióban is támogatott:

{
  "base64Source": "{base64EncodedContent}"
}

További paraméterek

A továbbra is támogatott paraméterek:

  • lapok
  • területi beállítás

A paraméterek már nem támogatottak:

  • includeTextDetails

Az új válaszformátum tömörebb, és mindig a teljes kimenetet visszaadja.

Az eredmények elemzésének változásai

Az Elemzés választ a rendszer a következő felső szintű eredményekre újra lett ásva a többoldalas elemek támogatása érdekében.

  • lapok
  • táblákban
  • keyValuePairs
  • Entitások
  • Stílusok
  • dokumentumokban

Megjegyzés

Az analyzeResult válaszváltozások számos változást tartalmaznak, például felfelé haladnak az oldalak tulajdonsága és az analyzeResult felső tulajdonsága között.


{
// Basic analyze result metadata
"apiVersion": "2021-07-30-preview", // REST API version used
"modelId": "prebuilt-invoice", // ModelId used
"stringIndexType": "textElements", // Character unit used for string offsets and lengths:
// textElements, unicodeCodePoint, utf16CodeUnit // Concatenated content in global reading order across pages.
// Words are generally delimited by space, except CJK (Chinese, Japanese, Korean) characters.
// Lines and selection marks are generally delimited by newline character.
// Selection marks are represented in Markdown emoji syntax (:selected:, :unselected:).
"content": "CONTOSO LTD.\nINVOICE\nContoso Headquarters...", "pages": [ // List of pages analyzed
{
// Basic page metadata
"pageNumber": 1, // 1-indexed page number
"angle": 0, // Orientation of content in clockwise direction (degree)
"width": 0, // Page width
"height": 0, // Page height
"unit": "pixel", // Unit for width, height, and bounding box coordinates
"spans": [ // Parts of top-level content covered by page
{
"offset": 0, // Offset in content
"length": 7 // Length in content
}
], // List of words in page
"words": [
{
"text": "CONTOSO", // Equivalent to $.content.Substring(span.offset, span.length)
"boundingBox": [ ... ], // Position in page
"confidence": 0.99, // Extraction confidence
"span": { ... } // Part of top-level content covered by word
}, ...
], // List of selectionMarks in page
"selectionMarks": [
{
"state": "selected", // Selection state: selected, unselected
"boundingBox": [ ... ], // Position in page
"confidence": 0.95, // Extraction confidence
"span": { ... } // Part of top-level content covered by selection mark
}, ...
], // List of lines in page
"lines": [
{
"content": "CONTOSO LTD.", // Concatenated content of line (may contain both words and selectionMarks)
"boundingBox": [ ... ], // Position in page
"spans": [ ... ], // Parts of top-level content covered by line
}, ...
]
}, ...
], // List of extracted tables
"tables": [
{
"rowCount": 1, // Number of rows in table
"columnCount": 1, // Number of columns in table
"boundingRegions": [ // Bounding boxes potentially across pages covered by table
{
"pageNumber": 1, // 1-indexed page number
"boundingBox": [ ... ], // Bounding box
}
],
"spans": [ ... ], // Parts of top-level content covered by table // List of cells in table
"cells": [
{
"kind": "stub", // Cell kind: content (default), rowHeader, columnHeader, stub, description
"rowIndex": 0, // 0-indexed row position of cell
"columnIndex": 0, // 0-indexed column position of cell
"rowSpan": 1, // Number of rows spanned by cell (default=1)
"columnSpan": 1, // Number of columns spanned by cell (default=1)
"content": "SALESPERSON", // Concatenated content of cell
"boundingRegions": [ ... ], // Bounding regions covered by cell
"spans": [ ... ] // Parts of top-level content covered by cell
}, ...
]
}, ...
], // List of extracted key-value pairs
"keyValuePairs": [
{
"key": { // Extracted key
"content": "INVOICE:", // Key content
"boundingRegions": [ ... ], // Key bounding regions
"spans": [ ... ] // Key spans
},
"value": { // Extracted value corresponding to key, if any
"content": "INV-100", // Value content
"boundingRegions": [ ... ], // Value bounding regions
"spans": [ ... ] // Value spans
},
"confidence": 0.95 // Extraction confidence
}, ...
], // List of extracted entities
"entities": [
{
"category": "DateTime", // Primary entity category
"subCategory": "Date", // Secondary entity category
"content": "11/15/2019", // Entity content
"boundingRegions": [ ... ], // Entity bounding regions
"spans": [ ... ], // Entity spans
"confidence": 0.99 // Extraction confidence
}, ...
], // List of extracted styles
"styles": [
{
"isHandwritten": true, // Is content in this style handwritten?
"spans": [ ... ], // Spans covered by this style
"confidence": 0.95 // Detection confidence
}, ...
], // List of extracted documents
"documents": [
{
"docType": "prebuilt-invoice", // Classified document type (model dependent)
"boundingRegions": [ ... ], // Document bounding regions
"spans": [ ... ], // Document spans
"confidence": 0.99, // Document splitting/classification confidence // List of extracted fields
"fields": {
"VendorName": { // Field name (docType dependent)
"type": "string", // Field value type: string, number, array, object, ...
"valueString": "CONTOSO LTD.",// Normalized field value
"content": "CONTOSO LTD.", // Raw extracted field content
"boundingRegions": [ ... ], // Field bounding regions
"spans": [ ... ], // Field spans
"confidence": 0.99 // Extraction confidence
}, ...
}
}, ...
]
}



Modell összeállítása vagy betanítás

A modellobjektum két frissítésből áll az új API-ban

  • modelId A mostantól egy olyan tulajdonság, amely egy modellen beállítható egy emberi olvasásra képes névhez.
  • A modelName új nevet kapott: description

A build rendszer meghívja a műveletet egy modell betanításán. A kérelem hasznos információja és a hívási minta változatlan marad. A buildművelet meghatározza a modellt és a betanítás adatkészletét, az eredményt a válaszban Operation-Location fejlécen keresztül adja vissza. A modellművelet URL-címének lekérdezése get kérés használatával a buildművelet állapotának ellenőrzéséhez (a kérések közötti minimális javasolt időköz 1 másodperc). A 2.1-estől eltérően ez az URL-cím nem a modell erőforrásának helye. Ehelyett a modell URL-címe az adott modelId-ból is kinyerhető a válasz resourceLocation tulajdonsága alapján. Sikeresség esetén az állapot beállítása , succeeded az eredmény pedig tartalmazza az egyéni modell adatait. Ha hibákba ütközik, az állapot beállítása a következő lesz: , failed és a rendszer hibát ad vissza.

Az alábbi kód egy SAS-jogkivonatot használó minta buildkérés. Figyelje meg a záró perjelet az előtag vagy a mappa elérési útjának beállításakor.

POST https://{your-form-recognizer-endpoint}/formrecognizer/documentModels:build?api-version=2021-09-30-preview

{
  "modelId": {modelId},
  "description": "Sample model",
  "azureBlobSource": {
    "containerUrl": "https://{storageAccount}.blob.core.windows.net/{containerName}?{sasToken}",
    "prefix": "{folderName/}"
  }
}

Az Compose-modell változásai

A modell compose mostantól egyszintű beágyazásra van korlátozva. Az álló modellek mostantól konzisztensek az egyéni modellekkel a és a modelId description tulajdonságokkal.

POST https://{your-form-recognizer-endpoint}/formrecognizer/documentModels:compose?api-version=2021-09-30-preview
{
  "modelId": "{composedModelId}",
  "description": "{composedModelDescription}",
  "componentModels": [
    { "modelId": "{modelId1}" },
    { "modelId": "{modelId2}" },
  ]
}

A másolási modell változásai

A másolási modell hívási mintája változatlan marad:

  • Engedélyezze a másolási műveletet a hívó célerőforrással. authorizeCopy Most egy POST kérés.
  • Küldje el az engedélyt a forráserőforrásnak a modellhívás másolása copy-to
  • A művelet sikeres befejezésének ellenőrzése a visszaadott művelet lekérdezése

A másolási modell függvényének egyetlen változtatása a következő:

  • A HTTP-művelete authorizeCopy mostantól POST kérés.
  • Az engedélyezési hasznos adat tartalmazza a másolási kérelem elküldéshez szükséges összes információt.

A másolat engedélyének

POST https://{targetHost}/formrecognizer/documentModels:authorizeCopy?api-version=2021-09-30-preview
{
  "modelId": "{targetModelId}",
  "description": "{targetModelDescription}",
}

Használja az authorize művelet válasz törzsét a másolatra vonatkozó kérelem felépítéséhez.

POST https://{sourceHost}/formrecognizer/documentModels/{sourceModelId}:copy-to?api-version=2021-09-30-preview
{
  "targetResourceId": "{targetResourceId}",
  "targetResourceRegion": "{targetResourceRegion}",
  "targetModelId": "{targetModelId}",
  "targetModelLocation": "https://{targetHost}/formrecognizer/documentModels/{targetModelId}",
  "accessToken": "{accessToken}",
  "expirationDateTime": "2021-08-02T03:56:11Z"
}

Listamodellek változásai

A listamodellek mostantól előre összeállított és egyéni modelleket is visszaadnak. Az összes előre összeállított modellnév a kezdettől prebuilt- kezdődik. Csak a sikeres állapotú modelleket ad vissza. A sikertelen vagy folyamatban lévő modellek listáról lásd: List Operations (Műveletek listása).

Minta listamodellek kérése

GET https://{your-form-recognizer-endpoint}/formrecognizer/documentModels?api-version=2021-09-30-preview

A modell lekért típusának módosítása

Mivel a get modell már előre összeállított modelleket is tartalmaz, a get művelet egy docTypes szótárt ad vissza. Minden dokumentumtípus a neve, opcionális leírása, mezőséma és a mező megbízhatósága alapján van leírva. A mezőséma a dokumentumtípussal esetlegesen visszaadott mezők listáját írja le.

GET https://{your-form-recognizer-endpoint}/formrecognizer/documentModels/{modelId}?api-version=2021-09-30-preview

Új információ lekért művelet

A info szolgáltatáson a művelet visszaadja az egyéni modellek számát és az egyéni modellkorlátot.

GET https://{your-form-recognizer-endpoint}/formrecognizer/info? api-version=2021-09-30-preview

Mintaválasz

{
  "customDocumentModels": {
    "count": 5,
    "limit": 100
  }
}

Következő lépések

Ebben a migrálási útmutatóban megtanulta, hogyan frissítheti meglévő Form Recognizer a 3.0-s verziós API-k használatára. Továbbra is használhatja a 2.1 API-t az összes GA funkcióhoz, és a 3.0 API-t bármely előzetes verziójú funkcióhoz.