Udostępnij przez


Analiza dokumentów: wyodrębnianie zawartości ustrukturyzowanej

Przegląd

Możliwości analizy usługi Azure Content Understanding ułatwiają przekształcanie danych bez struktury na ustrukturyzowane informacje czytelne dla maszyn. Dzięki precyzyjnemu identyfikowaniu i wyodrębnieniu elementów przy zachowaniu ich relacji strukturalnych można tworzyć zaawansowane przepływy pracy przetwarzania dla szerokiej gamy aplikacji.

Obiekt contents z typem document obsługuje dane wyjściowe dla różnych plików wejściowych, w tym dokumentów, obrazów, tekstu i plików strukturalnych. Te dane wyjściowe umożliwiają wyodrębnianie znaczącej zawartości z plików, zachowywanie struktur dokumentów i odblokowywanie pełnego potencjału danych.

Rodzaj zawartości dokumentu zawiera dane wyjściowe dla plików wejściowych, takich jak:

  • Dokumenty: pliki PDF, dokumenty programu Word, prezentacje programu PowerPoint i arkusze kalkulacyjne programu Excel
  • Ilustracje: Zdjęcia, zeskanowane dokumenty, wykresy i diagramy
  • Pliki tekstowe: zwykły tekst, HTML, Markdown i RTF
  • Zawartość ustrukturyzowana: pliki XML, JSON, CSV i TSV
  • Wiadomość e-mail: formaty wiadomości EML i MSG

Aby uzyskać więcej informacji na temat obsługiwanych typów plików, limitów rozmiaru plików i innych ograniczeń, zobacz Limity przydziału i limity usługi.

Struktura odpowiedzi JSON

Interfejs API usługi Content Understanding zwraca wyniki analizy w formacie JSON ze strukturą. Oto ogólna struktura kontenera:

{
  "id": "10a01d32-e21e-46e3-bb5c-361375f184de",
  "status": "Succeeded",
  "result": {
    "analyzerId": "my-analyzer",
    "apiVersion": "2025-05-01-preview",
    "createdAt": "2025-06-18T22:50:34Z",
    "warnings": [],
    "contents": [
      {
        "markdown": "# Example Document\n\n...",
        "fields": { /* extracted field values */ },
        "kind": "document",
        "startPageNumber": 1,
        "endPageNumber": 2,
        "unit": "inch",
        "pages": [ /* page-level elements */ ],
        "paragraphs": [ /* paragraph elements */ ],
        "sections": [ /* section elements */ ],
        "tables": [ /* table elements */ ],
        "figures": [ /* figure elements */ ],
        "hyperlinks": [ /* hyperlink elements */ ],
        "annotations": [ /* annotation elements */ ]
      }
    ]
  }
}

Elementy dokumentu

Następujące elementy dokumentu można wyodrębnić za pomocą analizy dokumentów:

Nie wszystkie elementy zawartości i układu mają zastosowanie lub są obecnie obsługiwane przez wszystkie typy plików dokumentów.

Elementy treści Markdown

Usługa Content Understanding generuje sformatowany język Markdown, który zachowuje strukturę oryginalnego dokumentu. Z tego powodu duże modele językowe mogą lepiej zrozumieć kontekst dokumentu i hierarchiczne relacje na potrzeby zadań analizy i generowania opartej na sztucznej inteligencji. Oprócz wyrazów, znaczników zaznaczenia, kodów kreskowych, formuł i obrazów jako zawartości, język Markdown zawiera również sekcje, tabele i metadane stron na potrzeby renderowania wizualnego i przetwarzania maszynowego. Dowiedz się więcej o tym, jak usługa Content Understanding reprezentuje elementy zawartości i układu w języku Markdown.

Słowa

Wyraz jest elementem zawartości składającym się z sekwencji znaków. Załącznik standardowy Unicode nr 29 definiuje granice wyrazów. W przypadku języków łacińskich, wyrazy mogą być oddzielone od znaków interpunkcyjnych nawet bez występowania spacji. W niektórych językach, takich jak chiński, słowniki wyrazów uzupełniających są używane do włączania łamania wyrazów na granicach semantycznych. Aby uzyskać więcej informacji, zobacz Analiza granic.

Przykład JSON:

{
  "words": [
    {
      "content": "Example",
      "span": {
        "length": 7
      },
      "confidence": 0.992,
      "source": "D(1,1.265,1.0836,2.4972,1.0816,2.4964,1.4117,1.2645,1.4117)"
    }
  ]
}

Zrzut ekranu przedstawiający wykryte wyrazy.

Znaczniki wyboru

Znacznik zaznaczenia jest elementem zawartości reprezentującym wizualny glif, który wskazuje stan zaznaczenia. Znaczniki zaznaczenia mogą być wyświetlane w dokumencie jako pola wyboru, znaczniki wyboru lub przyciski. Możesz zaznaczyć lub wyczyścić znacznik wyboru z inną reprezentacją wizualną, aby wskazać stan. Znaczniki zaznaczenia są kodowane jako wyrazy w wyniku analizy dokumentu przy użyciu znaków Unicode (zaznaczonych) i (wyczyszczone).

Usługa Content Understanding wykrywa znaczniki wyboru wewnątrz komórki tabeli jako znaczniki wyboru w wybranym stanie. Nie wykrywa pustych komórek tabeli jako znaków zaznaczenia w stanie wyczyszczonego.

Przykład JSON:

{
  "words": [
    {
      "content": "☒",
      "span": {
        "length": 1
      },
      "confidence": 0.983,
      "source": "D(1,1.258,2.7952,1.3705,2.7949,1.371,2.9098,1.2575,2.9089)"
    }
  ]
}

Zrzut ekranu przedstawiający wykryte znaczniki wyboru.

Kody kreskowe

Kod kreskowy to element zawartości opisujący kody kreskowe (na przykład UPC lub EAN) i dwuwymiarowe (na przykład kody kreskowe QR lub MaxiCode). Usługa Content Understanding reprezentuje kody kreskowe przy użyciu wykrytego typu i wyodrębnionej wartości. Obecnie obsługiwane są następujące formaty kodów kreskowych:

Typ kodu kreskowego Opis
QRCode Kod QR, zgodnie z definicją w normie ISO/IEC 18004:2015
PDF417 PDF417, zgodnie z definicją w standardze ISO 15438
UPCA GS1 12-cyfrowy kod produktu uniwersalnego
UPCE GS1 6-cyfrowy kod produktu uniwersalnego
Code39 Kod kreskowy 39, zgodnie z definicją w normie ISO/IEC 16388:2007
Code128 Kod kreskowy 128, zgodnie z definicją w normie ISO/IEC 15417:2007
EAN8 GS1 8-cyfrowy numer artykułu międzynarodowego (europejski numer artykułu)
EAN13 GS1 13-cyfrowy numer artykułu międzynarodowego (numer artykułu europejskiego)
DataBar Kod kreskowy GS1 DataBar
Code93 Kod kreskowy 93, zgodnie z definicją w ANSI/AIM BC5-1995
Codabar Kod kreskowy Codabar, zgodnie z definicją w ANSI/AIM BC3-1995
DataBarExpanded Rozszerzony kod kreskowy GS1 DataBar
ITF Kod kreskowy Przeplatany 2 z 5 (ITF) zgodnie z definicją w ANSI/AIM BC2-1995
MicroQRCode Kod Mikro QR, zgodnie z definicją w normie ISO/IEC 23941:2022
Aztec Kod Aztec, zgodnie z definicją w normie ISO/IEC 24778:2008
DataMatrix Kod macierzy danych, zgodnie z definicją w normie ISO/IEC 16022:2006
MaxiCode MaxiCode, zgodnie z definicją w normie ISO/IEC 16023:2000

Przykład JSON:

{
  "barcodes": [
    {
      "kind": "Code39",
      "value": "Hello World",
      "source": "D(1,2.5738,4.8186,3.8617,4.8153,3.8621,4.9894,2.5743,4.9928)",
      "span": {"offset": 192, "length": 10 },
      "confidence": 0.977
    }
  ]
}

Formuły

Formuła to element zawartości reprezentujący wyrażenia matematyczne w dokumencie. Może to być wbudowana formuła osadzona z innym tekstem lub formułą wyświetlania, która zajmuje cały wiersz. Formuły wielowierszowe są reprezentowane jako wiele elementów formuł wyświetlania pogrupowanych w akapity w celu zachowania relacji matematycznych.

Formuła może być rodzajowa inline lub display w zależności od umieszczania formuły w dokumencie.

Przykład JSON:

{
  "formulas": [
    {
      "kind": "inline",
      "value": "x = \\frac { - b \\pm \\sqrt { b ^ { 2 } - 4 a c } } { 2 a }",
      "confidence": 0.708,
      "source": "D(1,3.4282,7.0195,4.0452,7.0307,4.0425,7.1803,3.4255,7.1691)",
      "span": {
        "offset": 394,
        "length": 51
      }
    }
  ]
}

Rysunki

Rysunek to element zawartości reprezentujący osadzony obraz, rysunek lub wykres w dokumencie. Usługa Content Understanding generuje podsumowanie wykrytych liczb, konwertuje wybrane obrazy na reprezentację chart.js i wyodrębnia dowolny osadzony tekst z obrazów oraz skojarzonych podpisów i przypisów dolnych. Wykresy są reprezentowane w treści rysunku przy użyciu składni chart.js, a diagramy są reprezentowane w treści rysunku przy użyciu składni mermaid. Jest to opcjonalna funkcja, którą można włączyć w konfiguracji analizatora, ustawiając enableFigureAnalysis i enableFigureDescription jako true.

Obecnie obsługiwane są następujące typy ilustracji:

Typ rysunku Reprezentacja
Bar chart Chart.js
Line chart Chart.js
Pie chart Chart.js
Radar chart Chart.js
Scatter chart Chart.js
Bubble chart Chart.js
Quadrant chart Chart.js
Mixed chart (e.g. combined bar and line chart) Mermaid.js
Flow chart Mermaid.js
Sequence diagrams Mermaid.js
Gantt chart Mermaid.js

Przykład JSON:

{
  "figures": [
     {
      // enableFigureDescription = True
      "description": "This figure illustrates the sales revenue over the year 2023.",

      // enableFigureAnalysis = True
      "kind": "chart",
      "content": {
        "type": "line",
        "data": {
          "labels": ["January", "February", "March", "April", "May", "June", "July"],
          "datasets": [
            {
              "label": "A",
              "data": [93, -29, -17, -8, 73, 98, 40]
            },
            {
              "label": "B",
              "data": [20, 85, -79, 93, 27, -81, -22]
            }
          ]
        },
        "options": {
          "title": { "text": "Title" }
        }
      }
    },
    {
      "kind": "mermaid",
      "content": "xychart-beta\n    title \"Sales Revenue\"\n    x-axis [jan, feb, mar, apr]..."
    },
  ]
}

Hiperlink to element zawartości reprezentujący osadzony link łączący się z innym zasobem, takim jak strona internetowa w dokumencie. Content Understanding reprezentuje hiperlinki za pomocą osadzonego linku.

Przykład JSON:

{
  "hyperlinks": [
        {
          "content": "Microsoft",
          "url": "https://www.microsoft.com",
          "span": {...},
          "source": "..."
        }
  ]
}

Annotations

Adnotacje są dodatkowymi metadanymi w dokumencie w celu dostarczenia dodatkowych informacji, wyjaśnień lub opinii bez konieczności zmieniania samej zawartości głównej. Istnieje wiele typów adnotacji, które mogą zawierać określone zakresy zawartości, a nawet odwoływać się do określonych pól ograniczenia. Poniżej znajduje się lista typów adnotacji, które obsługujemy.

Uwaga / Notatka

Należy pamiętać, że adnotacje są obecnie obsługiwane tylko w cyfrowych danych wejściowych PDF.

Rodzaj adnotacji
highlight
underline
strikethrough
rectangle
circle
drawing
comments
other

Przykład JSON:

{
  "annotations": [
    {
      "id": "underline-1",
      "kind": "underline",
      "spans": [...],
      "source": "D(pageNumber,l,t,w,h)",
      "comments": [
        {
          "message": "Hi",
          "author": "johndoe",
          "createdAt": "2023-10-01T12:00:00Z",
          "tags": ["approved"]
        }
      ]
      "author": "paulhsu",
      "createdAt": "2023-10-01T12:00:00Z",
      "lastModifiedAt": "2023-10-02T12:00:00Z",
      "tags": [ ... ],
    }
  ]
}

Elementy układu

Elementy układu dokumentu to składniki wizualne i strukturalne, takie jak strony, tabele, akapity, wiersze, tabele, sekcje i ogólna struktura, które ułatwiają interpretację zawartości. Wyodrębnianie tych elementów umożliwia narzędziom efektywne analizowanie dokumentów pod kątem zadań, takich jak pobieranie informacji, interpretacja semantyczna i struktura danych.

Strony

Strona to grupa zawartości, która zazwyczaj odpowiada jednej stronie arkusza papieru. Renderowana strona charakteryzuje się szerokością i wysokością w określonej lekcji. Ogólnie rzecz biorąc, obrazy używają pikseli, podczas gdy pliki PDF używają cali. Właściwość angle opisuje ogólny kąt tekstu w stopniach dla stron, które mogą być obracane.

W przypadku arkuszy kalkulacyjnych, takich jak program Excel, każdy arkusz jest mapowany na stronę. W przypadku prezentacji, takich jak program PowerPoint, każdy slajd jest mapowany na stronę. W przypadku formatów plików, takich jak dokumenty HTML lub Word, które nie mają koncepcji strony natywnej bez renderowania, cała zawartość główna jest traktowana jako pojedyncza strona.

Przykład JSON:

{
  "pages": [
    {
      "pageNumber": 1,
      "angle": 0.0739153,
      "width": 8.5,
      "height": 11,
      "spans": [
        {
          "offset": 0,
          "length": 620
        }
      ],
      "words": [ /* array of word objects */ ],
      "barcodes": [ /* details of barcodes */ ],
      "lines": [ /* array of line objects */ ],
      "formulas": [ /* array of formula objects */ ]
    }
  ]
}

Ustępy

Akapit to uporządkowana sekwencja wierszy tworzących jednostkę logiczną. Zazwyczaj linie mają wspólne wyrównanie i odstępy między liniami. Akapity są często rozdzielane przez wcięcie, dodane odstępy lub punktory/numerowanie. Niektóre akapity mają specjalne role funkcjonalne w dokumencie. Obecnie obsługiwane role obejmują nagłówek strony, stopkę strony, numer strony, tytuł, nagłówek sekcji, przypis dolny i blok formuły.

Przykład JSON:

{
  "paragraphs": [
    {
      "role": "title",
      "content": "Example Document",
      "source": "D(1,1.264,1.0836,4.1584,1.0795,4.1589,1.4083,1.2644,1.4124)",
      "span": {
        "offset": 0,
        "length": 18
      }
    }
  ]
}

Linie

Wiersz to uporządkowana sekwencja kolejnych elementów zawartości, które są często oddzielone spacjami wizualnymi. Elementy zawartości w tej samej płaszczyźnie poziomej (wierszu), ale oddzielone jedną przestrzenią wizualną są najczęściej podzielone na wiele wierszy. Ta funkcja czasami dzieli semantycznie ciągłą zawartość na oddzielne wiersze. Umożliwia również reprezentację zawartości tekstowej podzielonej na wiele kolumn lub komórek. Linie w zapisie pionowym są wykrywane w kierunku pionowym.

Przykład JSON:

{
  "lines": [
    {
      "content": "Example Document",
      "source": "D(1,1.264,1.0836,4.1583,1.0795,4.1589,1.4083,1.2645,1.4117)",
      "span": {
        "offset": 0,
        "length": 16
      }
    }
  ]
}

Tabele

Tabela organizuje zawartość w grupę komórek w układzie siatki. Wiersze i kolumny mogą być wizualnie oddzielone liniami siatki, paskowaniem kolorów lub większym odstępem. Pozycja komórki tabeli jest określana za pośrednictwem indeksów wierszy i kolumn. Komórka może obejmować wiele wierszy i kolumn.

Na podstawie położenia i stylu komórka jest klasyfikowana jako ogólna zawartość, nagłówek wiersza, nagłówek kolumny, nagłówek wycinków lub opis:

  • Komórka nagłówka wiersza jest zazwyczaj pierwszą komórką w wierszu opisającą inne komórki w wierszu.
  • Komórka nagłówka kolumny jest zazwyczaj pierwszą komórką w kolumnie, która opisuje inne komórki w kolumnie.
  • Wiersz lub kolumna może zawierać wiele komórek nagłówka w celu opisania zawartości hierarchicznej.
  • Komórka głowy wycinków jest zazwyczaj komórką w pierwszym wierszu i pierwszej pozycji kolumny. Komórka jest pusta lub opisuje wartości w komórkach nagłówka w tym samym wierszu/kolumnie.
  • Komórka opisu zazwyczaj pojawia się w najbardziej górnym lub najbardziej dolnym obszarze tabeli i opisuje ogólną zawartość tabeli. Czasami może pojawić się w środku tabeli, aby podzielić tabelę na sekcje. Zazwyczaj komórki opisu obejmują wiele komórek w jednym wierszu.

Podpis tabeli określa zawartość, która wyjaśnia tabelę. Tabela może również zawierać zestaw przypisów dolnych. W przeciwieństwie do komórki opisu podpis zwykle znajduje się poza układem siatki. Przypisy dolne tabeli dodają adnotacje do zawartości w tabeli i są często oznaczone symbolami przypisu dolnego. Często znajdują się pod siatką tabeli.

Tabela może obejmować kolejne strony dokumentu. W takiej sytuacji kontynuacje tabeli na kolejnych stronach zwykle zachowują tę samą liczbę kolumn, szerokość i styl. Często powtarzają nagłówki kolumn. Zazwyczaj między początkową tabelą a jej kontynuacjami nie ma żadnych pośredniców zawartości, z wyjątkiem nagłówków stron, stopek i numerów stron.

Tabela może obejmować kolejne strony dokumentu. W takiej sytuacji kontynuacje tabeli na kolejnych stronach zwykle zachowują tę samą liczbę kolumn, szerokość i styl. Często powtarzają nagłówki kolumn. Poza nagłówkami stron, stopkami i numerami stron, zazwyczaj nie ma żadnej pośredniej zawartości między początkową tabelą a jej kontynuacjami.

Uwaga / Notatka

Zakres tabel obejmuje zarówno podstawową zawartość, jak i skojarzone z nią podpisy i przypisy dolne.

Przykład JSON:

{
  "tables": [
    {
      "rowCount": 6,
      "columnCount": 2,
      "cells": [
        {
          "kind": "columnHeader",
          "rowIndex": 0,
          "columnIndex": 0,
          "rowSpan": 1,
          "columnSpan": 1,
          "content": "Category",
          "source": "D(2,1.1674,5.0483,4.1733,5.0546,4.1733,5.2358,1.1674,5.2358)",
          "span": {
            "offset": 798,
            "length": 8
          },
          "elements": [
            "/paragraphs/7"
          ]
        }
      ],
      "source": "D(2,1.1566,5.0425,7.1855,5.0428,7.1862,6.1853,1.1574,6.1858)",
      "span": {
        "offset": 781,
        "length": 280
      },
      "caption": {
        "content": "Table 1: This is a table",
        "source": "D(2,1.1566,5.0425,7.1855,5.0428,7.1862,6.1853,1.1574,6.1858)",
        "span": {
          "offset": 335,
          "length": 30
        }
      }
    }
  ]
}

Zrzut ekranu przedstawiający tabelę korzystającą z funkcji układu.

Sekcje

Sekcja to logiczne grupowanie powiązanych elementów zawartości, które tworzą hierarchiczną strukturę w dokumencie. Często zaczyna się od nagłówka sekcji, będącego pierwszym akapitem. Sekcja może zawierać podsekcje umożliwiające utworzenie zagnieżdżonej struktury dokumentów, która zachowuje relacje semantyczne.

Przykład JSON:

{
  "sections": [
    {
      "span": {
        "offset": 113,
        "length": 77
      },
      "elements": [
        "/paragraphs/3",
        "/paragraphs/4"
      ]
    }
  ]
}

Właściwości elementu

Dokumenty składają się z różnych składników, które są podzielone na elementy strukturalne, tekstowe i związane z formularzem. Te elementy definiują organizację i prezentację dokumentu. Można systematycznie identyfikować i wyodrębniać elementy do dalszej analizy lub aplikacji.

Zakres

Właściwość span określa logiczną pozycję elementu w dokumencie poprzez przesunięcie i długość znaków w odniesieniu do właściwości ciągu najwyższego poziomu markdown. Domyślnie przesunięcia i długości znaków są zwracane w punktach kodu Unicode, które są używane przez język Python 3. Aby obsłużyć różne środowiska programistyczne korzystające z różnych jednostek znaków, można określić stringEncoding parametr zapytania, aby zwrócić przesunięcia i długości zakresu w jednostkach kodu UTF16 (Java, JavaScript lub .NET) lub UTF8 (Go, Rust, Ruby lub PHP).

Źródło

Właściwość source opisuje położenie wizualne elementu w pliku przy użyciu zakodowanego ciągu. W przypadku dokumentów ciąg źródłowy jest w jednym z następujących formatów:

  • Wiązanie wielokąta: D({pageNumber},{x1},{y1},{x2},{y2},{x3},{y3},{x4},{y4})
  • Pole ograniczenia wyrównane do osi: D({pageNumber},{left},{top},{width},{height})

Numery stron to jeden indeksowany. Wielokąt opisuje sekwencję punktów zgodnie z ruchem wskazówek zegara, zaczynając od lewej strony względem naturalnej orientacji elementu. W przypadku czworokątów punkty reprezentują lewy górny, prawy górny, prawy dolny i dolny lewy róg. Każdy punkt reprezentuje współrzędną x,y w jednostce długości określonej przez unit właściwość . Ogólnie rzecz biorąc, jednostka miary dla obrazów to piksele. Pliki PDF używają cali.

Zrzut ekranu przedstawiający wykryte regiony ograniczenia.

Uwaga / Notatka

Obecnie funkcja Content Understanding zwraca tylko czteropunktowy czworokąt jako wielokąt ograniczenia. Przyszłe wersje mogą zwracać inną liczbę punktów, aby opisać bardziej złożone kształty, takie jak krzywe linie lub obrazy nieznaczące. Obecnie źródło jest zwracane tylko dla elementów z renderowanych plików (PDF/image).

Kompletny przykład kodu JSON

W poniższym przykładzie przedstawiono kompletną strukturę odpowiedzi JSON z analizy dokumentu. Ten kod JSON reprezentuje pełne dane wyjściowe z usługi Content Understanding podczas przetwarzania dokumentu PDF z wieloma typami elementów:

Zrzut ekranu przedstawiający pokazowy dokument PDF z przykładowymi zawartościami, w tym polami wyboru, kodami kreskowymi, formułami, obrazami i tabelami.

{
  "id": "10a01d32-e21e-46e3-bb5c-361375f184de",
  "status": "Succeeded",
  "result": {
    "analyzerId": "auto-labeling-model-1750287025291-104",
    "apiVersion": "2025-05-01-preview",
    "createdAt": "2025-06-18T22:50:34Z",
    "warnings": [],
    "contents": [
      {
        "markdown": "# Example Document\n\n\n## 1. Selection Marks (Checkboxes)\n\nEmployee Preferences Form\n☐\nRemote\n☒\nHybrid\n☐\nOn-site\n\n\n## 2. Barcodes\n\nGo check out Azure Content Understanding at the below link\n\n\n## 3. Formulas\n\nBayesian Inference (Posterior Probability):\n\n$$P \\left( \\theta \\mid D \\right) = \\frac { P \\left( D \\mid \\theta \\right) \\cdot P \\left( \\theta \\right) } { P \\left( D \\right) }$$\n\nWhere:\n\n$$P \\left( \\theta \\mid D \\right)$$\nis the posterior\n\n$P \\left( D \\mid \\theta \\right)$ is the likelihood\n$P \\left( \\theta \\right)$ is the prior\n\n$$P \\left( D \\right) i s \\quad t h e \\quad e v i d e n c e$$\n\n<!-- PageBreak -->\n\n\n## 4. Images\n\nSample Product Image\n\n\n<figure>\n\nContent\nUnderstanding\n\n</figure>\n\n\nImage Description: \"A ceramic coffee mug with company logo.\"\n\n\n## 5. Tables\n\n\n<table>\n<tr>\n<th>Category</th>\n<th>Amount ($)</th>\n</tr>\n<tr>\n<td>Rent</td>\n<td>1,200</td>\n</tr>\n<tr>\n<td>Utilities</td>\n<td>150</td>\n</tr>\n<tr>\n<td>Groceries</td>\n<td>300</td>\n</tr>\n<tr>\n<td>Transportation</td>\n<td>100</td>\n</tr>\n<tr>\n<td>Total</td>\n<td>1,750</td>\n</tr>\n</table>\n\n\n## 6. Paragraphs\n\nOur company is committed to fostering a productive and inclusive work environment. All\nemployees are expected to comply with the outlined policies and demonstrate mutual\nrespect in day-to-day operations. Regular reviews will ensure that these policies remain\nrelevant and effective.\n",
        "fields": {
          "EmployeePreferences": {
            "type": "string",
            "valueString": "Hybrid",
            "spans": [
              {
                "offset": 94,
                "length": 6
              }
            ],
            "confidence": 0.987,
            "source": "D(1,1.4104,2.7836,1.8760,2.7823,1.8760,2.9377,1.4110,2.9396)"
          },
          "ImageDescription": {
            "type": "string",
            "valueString": "\"A ceramic coffee mug with company logo.\"",
            "spans": [
              {
                "offset": 722,
                "length": 41
              }
            ],
            "confidence": 0.958,
            "source": "D(2,2.5222,4.2511,5.3236,4.2497,5.3237,4.4422,2.5223,4.4436)"
          }
        },
        "kind": "document",
        "startPageNumber": 1,
        "endPageNumber": 2,
        "unit": "inch",
        "pages": [
          {
            "pageNumber": 1,
            "angle": 0.0739153,
            "width": 8.5,
            "height": 11,
            "spans": [
              {
                "offset": 0,
                "length": 620
              }
            ],
            "words": [
              {
                "content": "Example",
                "span": {
                  "length": 7
                },
                "confidence": 0.992,
                "source": "D(1,1.265,1.0836,2.4972,1.0816,2.4964,1.4117,1.2645,1.4117)"
              },
              {
                "content": "Document",
                "span": {
                  "length": 8
                },
                "confidence": 0.996,
                "source": "D(1,2.6252,1.084,4.1615,1.0886,4.1615,1.3993,2.6241,1.4117)"
              },
              {
                "content": "☒",
                "span": {
                  "length": 1
                },
                "confidence": 0.983,
                "source": "D(1,1.258,2.7952,1.3705,2.7949,1.371,2.9098,1.2575,2.9089)"
              },
              {
                "content": "Hybrid",
                "span": {
                  "length": 6
                },
                "confidence": 0.996,
                "source": "D(1,1.4104,2.7836,1.876,2.7823,1.876,2.9377,1.411,2.9396)"
              }
            ],
            "lines": [
              {
                "content": "Example Document",
                "source": "D(1,1.264,1.0836,4.1583,1.0795,4.1589,1.4083,1.2645,1.4117)",
                "span": {
                  "offset": 0,
                  "length": 16
                }
              }
            ],
            "formulas": [
              {
                "confidence": 0.583
              },
              {
                "confidence": 0.708
              }
            ]
          },
          {
            "pageNumber": 2,
            "angle": 0.1008425,
            "width": 8.5,
            "height": 11,
            "spans": [
              {
                "offset": 620,
                "length": 744
              }
            ],
            "words": [
              {
                "content": "Images",
                "source": "D(2,1.4516,1.0434,2.0254,1.0463,2.0254,1.229,1.4506,1.224)"
              },
              {
                "content": "ceramic",
                "source": "D(2,2.5230,4.2539,2.6591,4.2543,2.6584,4.4392,2.5223,4.4407)"
              }
            ],
            "lines": [
              {
                "content": "4. Images",
                "source": "D(2,1.24,1.0409,2.0238,1.0463,2.0226,1.2284,1.2387,1.223)"
              }
            ]
          }
        ],
        "paragraphs": [
          {
            "role": "title",
            "content": "Example Document",
            "source": "D(1,1.264,1.0836,4.1584,1.0795,4.1589,1.4083,1.2644,1.4124)",
            "span": {
              "offset": 0,
              "length": 18
            }
          },
          {
            "role": "sectionHeading",
            "content": "1. Selection Marks (Checkboxes)",
            "source": "D(1,1.2461,1.8719,3.8532,1.8731,3.8531,2.065,1.246,2.0638)",
            "span": {
              "offset": 21,
              "length": 34
            }
          },
          {
            "content": "Employee Preferences Form ☐ Remote ☒ Hybrid ☐ On-site",
            "source": "D(1,1.246,2.0993,3.1019,2.1007,3.101,3.2724,1.2451,3.2709)",
            "span": {
              "offset": 57,
              "length": 53
            }
          }
        ],
        "sections": [
          {
            "span": {
              "offset": 0,
              "length": 1364
            },
            "elements": [
              "/paragraphs/0",
              "/sections/1",
              "/sections/2",
              "/sections/3",
              "/sections/4",
              "/sections/5",
              "/sections/6"
            ]
          },
          {
            "span": {
              "offset": 21,
              "length": 89
            },
            "elements": [
              "/paragraphs/1",
              "/paragraphs/2"
            ]
          }
        ],
        "tables": [
          {
            "rowCount": 6,
            "columnCount": 2,
            "cells": [
              {
                "kind": "columnHeader",
                "rowIndex": 0,
                "columnIndex": 0,
                "rowSpan": 1,
                "columnSpan": 1,
                "content": "Category",
                "source": "D(2,1.1674,5.0483,4.1733,5.0546,4.1733,5.2358,1.1674,5.2358)",
                "span": {
                  "offset": 798,
                  "length": 8
                }
              },
              {
                "kind": "columnHeader",
                "rowIndex": 0,
                "columnIndex": 1,
                "rowSpan": 1,
                "columnSpan": 1,
                "content": "Amount ($)",
                "source": "D(2,4.1733,5.0546,7.1668,5.0546,7.1668,5.2358,4.1733,5.2358)",
                "span": {
                  "offset": 816,
                  "length": 10
                }
              }
            ],
            "source": "D(2,1.1566,5.0425,7.1855,5.0428,7.1862,6.1853,1.1574,6.1858)",
            "span": {
              "offset": 781,
              "length": 280
            }
          }
        ],
        "figures": [
          {
            "source": "D(2,1.3465,1.8481,3.4788,1.8484,3.4779,3.8286,1.3456,3.8282)",
            "span": {
              "offset": 658,
              "length": 42
            },
            "elements": [
              "/paragraphs/14"
            ],
            "id": "2.1"
          }
        ]
      }
    ]
  }
}

W tym kompletnym przykładzie pokazano, jak usługa Content Understanding wyodrębnia i struktury wszystkich różnych typów elementów z dokumentu. Udostępnia zarówno nieprzetworzone treści, jak i szczegółowe informacje pozycyjne i strukturalne, które umożliwiają zaawansowane przepływy pracy przetwarzania dokumentów.