Artykuł pochodzi z wydania: Czerwiec 2026
Automatyczna analiza dokumentów, takich jak rachunki, umowy, formularze czy faktury, jest jednym z najczęstszych zastosowań AI w firmach. Dzięki usłudze Azure Document Intelligence organizacje mogą automatycznie przetwarzać dokumenty – zamieniając nieustrukturyzowane treści w uporządkowane dane gotowe do wstawienia do baz danych lub dalszej analizy.
Document Intelligence jest jedną z dwóch dostępnych w Azure usług umożliwiających zaawansowaną analizę dokumentów – drugą z nich jest Azure Content Understanding. W tym artykule skupimy się na Document Intelligence i pokażemy, w jakich scenariuszach jest to najlepszy wybór.
Analiza i ekstrakcja
Azure Document Intelligence umożliwia automatyczną analizę i ekstrakcję danych z dokumentów tekstowych. Głównym celem usługi jest przekształcanie nieustrukturyzowanych lub półustrukturyzowanych treści, takich jak pliki PDF, skany, zdjęcia czy dokumenty biurowe, w dane o jasno zdefiniowanej strukturze, możliwe do dalszego przetwarzania w systemach IT.
Usługa łączy w sobie zaawansowane mechanizmy OCR (rozpoznawania tekstu drukowanego i odręcznego) z modelami uczenia maszynowego, które analizują układ dokumentu, relacje pomiędzy elementami oraz znaczenie biznesowe poszczególnych pól.
Document Intelligence umożliwia:
- automatyczne odczytywanie treści dokumentów;
- rozpoznawanie ich struktury (sekcje, tabele, nagłówki);
- ekstrakcję kluczowych danych biznesowych;
- standaryzację danych niezależnie od formatu źródłowego.
Dzięki temu usługa jest często pierwszym krokiem do pełnej automatyzacji procesów biurowych, takich jak księgowość, obsługa zamówień czy zarządzanie dokumentacją.
Usługa jest dostępna jako osobny zasób Document Intelligence, który w darmowej wersji umożliwia przetwarzanie tylko dwóch pierwszych stron dokumentów, lub w ramach Microsoft Foundry. Korzystanie z rozwiązania ułatwia SDK dla wybranych języków programowania – w artykule została pokazana wersja 4.0 SDK dla języka Python (azure-ai-documentintelligence 1.0.2). Utworzenie klienta usługi wymaga podania jej adresu oraz poświadczeń:
load_dotenv(„azure.env”)
endpoint = os.getenv(„AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT”)
print(„Initializing credential chain: Azure CLI -> Interactive
Browser”)
credential = ChainedTokenCredential(
AzureCliCredential(),
InteractiveBrowserCredential(),
)
try:
_ = credential.get_token(„https://cognitiveservices.
azure.com/.default”)
print(„Authentication successful”)
except (CredentialUnavailableError, ClientAuthenticationError)
as ex:
print(„Authentication failed. Run `az login` or complete
browser sign-in.”)
raise
client = DocumentIntelligenceClient(endpoint=endpoint,
credential=credential)
print(„DocumentIntelligenceClient initialized”)
Odczytywanie treści i struktury dokumentów
Usługa udostępnia kilkanaście specjalistycznych modeli.
W pierwszej kolejności przyjrzymy się podstawowemu modelowi prebuilt-read, który umożliwia odczytanie treści dokumentów. Korzystanie z wszystkich modeli usługi wygląda bardzo podobnie – wystarczy wysłać do nich analizowane dokumenty i przetworzyć zwrócone wyniki. Na początku odczytamy treść dostępnego w internecie dokumentu:
read_url = „https://raw.githubusercontent.com/Azure-Samples/
cognitive-services-REST-api-samples/master/curl/
form-recognizer/rest-api/read.png”
poller = client.begin_analyze_document(
„prebuilt-read”,
AnalyzeDocumentRequest(url_source=read_url),
features=[DocumentAnalysisFeature.LANGUAGES], # Enable
language detection
)
result: AnalyzeResult = poller.result()
print(f”Analysis complete. Model: {result.model_id} ,API:
{result.api_version}”)
Analysis complete. Model: prebuilt-read, API: 2024-11-30
Domyślnie wyniki analizy są zwracane w postaci dokumentów JSON zawierających treść kolejnych stron i wierszy tekstu:
for page in result.pages:
print(f”\n— Page {page.page_number} —”)
print(f” Size: {page.width} x {page.height} ({page.
unit})”)
print(f” Lines: {len(page.lines) if page.lines else
0}”)
print(f” Words: {len(page.words) if page.words else
0}”)
if page.lines:
for line_idx, line in enumerate(page.lines):
words = get_words(page, line)
print(f” Line {line_idx:3d}: ‚{line.content}’
({len(words)} words)”)
— Page 1 —
Size: 915.0 x 1190.0 (pixel)
Lines: 86
Words: 696
Line 0: ‚While healthcare is still in the early stages
of its Al journey, we’ (13 words)
Line 1: ‚are seeing pharmaceutical and other life
sciences organizations’ (8 words)
…
[…]
Marcin Szeliga
Autor jest wykładowcą w Wyższej Szkole Zarządzania i Bankowości w Krakowie oraz autorem książek poświęconych analizie danych. Posiada tytuł Microsoft Most Valuable Professional.





