Kurz: Zpracování uložených dokumentů pomocí Azure Functions a Pythonu
Funkci Document Intelligence je možné použít jako součást kanálu automatizovaného zpracování dat vytvořeného pomocí Azure Functions. V této příručce se dozvíte, jak pomocí Azure Functions zpracovávat dokumenty nahrané do kontejneru úložiště objektů blob v Azure. Tento pracovní postup extrahuje data tabulky z uložených dokumentů pomocí modelu rozložení Document Intelligence a uloží data tabulky do .csv souboru v Azure. Data pak můžete zobrazit pomocí Microsoft Power BI (není zde popsáno).
V tomto kurzu se naučíte:
- Vytvořit účet služby Azure Storage
- Vytvořte projekt Azure Functions.
- Extrahujte data rozložení z nahraných formulářů.
- Nahrajte extrahovaná data rozložení do služby Azure Storage.
Požadavky
Předplatné - AzureVytvořte si ho zdarma
Prostředek Document Intelligence. Jakmile budete mít předplatné Azure, vytvořte v Azure Portal prostředek Document Intelligence, abyste získali klíč a koncový bod. K vyzkoušení služby můžete použít cenovou úroveň Free (
F0
) a později upgradovat na placenou úroveň pro produkční prostředí.Po nasazení prostředku vyberte Přejít k prostředku. Klíč a koncový bod z prostředku, který vytvoříte, potřebujete k připojení aplikace k rozhraní DOCUMENT INTELLIGENCE API. Klíč a koncový bod vložíte do kódu níže v tomto kurzu:
Python 3.6.x, 3.7.x, 3.8.x nebo 3.9.x (Python 3.10.x se v tomto projektu nepodporuje).
Nejnovější verze editoru Visual Studio Code (VS Code) s nainstalovanými následujícími rozšířeními:
Azure Functions rozšíření. Po instalaci by se v levém navigačním podokně mělo zobrazit logo Azure.
Azure Functions Core Tools verze 3.x (verze 4.x není pro tento projekt podporovaná).
Rozšíření Pythonu pro Visual Studio Code. Další informace najdete v tématuZačínáme s Pythonem ve VS Code.
Průzkumník služby Azure Storage nainstalováno.
Místní dokument PDF, který chcete analyzovat. Můžete použít náš ukázkový dokument PDF pro tento projekt.
Vytvoření účtu Azure Storage
V Azure Portal vytvořte účet Azure Storage pro obecné účely verze 2. Pokud nevíte, jak vytvořit účet úložiště Azure s kontejnerem úložiště, postupujte podle těchto rychlých startů:
- Vytvoření účtu úložiště Když vytváříte účet úložiště, v poli Podrobnosti o> instanci Výkon vyberte Výkon úrovně Standard.
- Vytvořte kontejner. Při vytváření kontejneru nastavte úroveň veřejného přístupu na Kontejner (anonymní přístup pro čtení ke kontejnerům a souborům) v okně Nový kontejner .
V levém podokně vyberte kartu Sdílení prostředků (CORS) a odeberte existující zásady CORS, pokud nějaké existují.
Po nasazení účtu úložiště vytvořte dva prázdné kontejnery úložiště objektů blob s názvem input a output.
Vytvoření projektu služby Azure Functions
Vytvořte novou složku functions-app , která bude obsahovat projekt, a zvolte Vybrat.
Otevřete Visual Studio Code a otevřete paletu příkazů (Ctrl+Shift+P). Vyhledejte a zvolte Python:Select Interpreter → zvolte nainstalovaný interpret Pythonu verze 3.6.x, 3.7.x, 3.8.x nebo 3.9.x. Tento výběr přidá cestu interpreta Pythonu, kterou jste vybrali, do projektu.
V levém navigačním podokně vyberte logo Azure.
V zobrazení Prostředky se zobrazí vaše stávající prostředky Azure.
Vyberte předplatné Azure, které používáte pro tento projekt, a níže by se měla zobrazit aplikace Funkcí Azure.
Vyberte část Pracovní prostor (místní) umístěnou pod uvedenými prostředky. Vyberte symbol plus a zvolte tlačítko Vytvořit funkci .
Po zobrazení výzvy zvolte Vytvořit nový projekt a přejděte do adresáře function-app . Zvolte Vybrat.
Zobrazí se výzva ke konfiguraci několika nastavení:
Vyberte jazyk → zvolte Python.
Vyberte interpret Pythonu a vytvořte virtuální prostředí → vyberte interpret, který jste dříve nastavili jako výchozí.
Vyberte šablonu → zvolte Azure Blob Storage aktivační událost a pojmenujte ji nebo přijměte výchozí název. Potvrďte to stisknutím klávesy Enter .
Vyberte nastavení → v rozevírací nabídce zvolte ➕Vytvořit nové nastavení místní aplikace .
Vyberte předplatné → zvolte předplatné Azure s účtem úložiště, který jste vytvořili, → vyberte svůj účet úložiště → pak vyberte název vstupního kontejneru úložiště (v tomto případě
input/{name}
). Potvrďte to stisknutím klávesy Enter .Vyberte, jak chcete projekt otevřít , → v rozevírací nabídce zvolte Open the project in the current window (Otevřít projekt v aktuálním okně ).
Po dokončení těchto kroků přidá VS Code nový projekt Funkce Azure se skriptem Pythonu __init__.py . Tento skript se aktivuje při nahrání souboru do vstupního kontejneru úložiště:
import logging
import azure.functions as func
def main(myblob: func.InputStream):
logging.info(f"Python blob trigger function processed blob \n"
f"Name: {myblob.name}\n"
f"Blob Size: {myblob.length} bytes")
Testování funkce
Stisknutím klávesy F5 spusťte základní funkci. VS Code vás vyzve k výběru účtu úložiště, se kterým budete mít rozhraní.
Vyberte účet úložiště, který jste vytvořili, a pokračujte.
Otevřete Průzkumník služby Azure Storage a nahrajte ukázkový dokument PDF do vstupního kontejneru. Pak zkontrolujte terminál VS Code. Skript by měl protokolovat, že se aktivovalo při nahrání DO SOUBORU PDF.
Než budete pokračovat, zastavte skript.
Přidání kódu pro zpracování dokumentů
Dále do skriptu Pythonu přidáte vlastní kód pro volání služby Document Intelligence a parsování nahraných dokumentů pomocí modelu rozložení Document Intelligence.
Ve VS Code přejděte do souborurequirements.txt funkce. Tento soubor definuje závislosti pro váš skript. Do souboru přidejte následující balíčky Pythonu:
cryptography azure-functions azure-storage-blob azure-identity requests pandas numpy
Pak otevřete skript __init__.py . Přidejte následující příkazy
import
:import logging from azure.storage.blob import BlobServiceClient import azure.functions as func import json import time from requests import get, post import os import requests from collections import OrderedDict import numpy as np import pandas as pd
Vygenerovanou
main
funkci můžete nechat tak, jak je. Do této funkce přidáte vlastní kód.# This part is automatically generated def main(myblob: func.InputStream): logging.info(f"Python blob trigger function processed blob \n" f"Name: {myblob.name}\n" f"Blob Size: {myblob.length} bytes")
Následující blok kódu volá rozhraní API analýza rozložení document intelligence v nahraném dokumentu. Vyplňte hodnoty koncového bodu a klíče.
# This is the call to the Document Intelligence endpoint endpoint = r"Your Document Intelligence Endpoint" apim_key = "Your Document Intelligence Key" post_url = endpoint + "/formrecognizer/v2.1/layout/analyze" source = myblob.read() headers = { # Request headers 'Content-Type': 'application/pdf', 'Ocp-Apim-Subscription-Key': apim_key, } text1=os.path.basename(myblob.name)
Důležité
Až budete hotovi, nezapomeňte klíč z kódu odebrat a nikdy ho nezveřejníte. V produkčním prostředí použijte zabezpečený způsob ukládání a přístupu k přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v tématuZabezpečení služeb Azure AI.
Dále přidejte kód pro dotazování služby a získání vrácených dat.
resp = requests.post(url=post_url, data=source, headers=headers) if resp.status_code != 202: print("POST analyze failed:\n%s" % resp.text) quit() print("POST analyze succeeded:\n%s" % resp.headers) get_url = resp.headers["operation-location"] wait_sec = 25 time.sleep(wait_sec) # The layout API is async therefore the wait statement resp = requests.get(url=get_url, headers={"Ocp-Apim-Subscription-Key": apim_key}) resp_json = json.loads(resp.text) status = resp_json["status"] if status == "succeeded": print("POST Layout Analysis succeeded:\n%s") results = resp_json else: print("GET Layout results failed:\n%s") quit() results = resp_json
Přidejte následující kód pro připojení k výstupnímu kontejneru Azure Storage. Zadejte vlastní hodnoty pro název a klíč účtu úložiště. Klíč můžete získat na kartě Přístupové klíče prostředku úložiště v Azure Portal.
# This is the connection to the blob storage, with the Azure Python SDK blob_service_client = BlobServiceClient.from_connection_string("DefaultEndpointsProtocol=https;AccountName="Storage Account Name";AccountKey="storage account key";EndpointSuffix=core.windows.net") container_client=blob_service_client.get_container_client("output")
Následující kód analyzuje vrácenou odpověď funkce Document Intelligence, vytvoří soubor .csv a nahraje ho do výstupního kontejneru.
Důležité
Pravděpodobně budete muset tento kód upravit tak, aby odpovídal struktuře vašich vlastních dokumentů.
# The code below extracts the json format into tabular data. # Please note that you need to adjust the code below to your form structure. # It probably won't work out-of-the-box for your specific form. pages = results["analyzeResult"]["pageResults"] def make_page(p): res=[] res_table=[] y=0 page = pages[p] for tab in page["tables"]: for cell in tab["cells"]: res.append(cell) res_table.append(y) y=y+1 res_table=pd.DataFrame(res_table) res=pd.DataFrame(res) res["table_num"]=res_table[0] h=res.drop(columns=["boundingBox","elements"]) h.loc[:,"rownum"]=range(0,len(h)) num_table=max(h["table_num"]) return h, num_table, p h, num_table, p= make_page(0) for k in range(num_table+1): new_table=h[h.table_num==k] new_table.loc[:,"rownum"]=range(0,len(new_table)) row_table=pages[p]["tables"][k]["rows"] col_table=pages[p]["tables"][k]["columns"] b=np.zeros((row_table,col_table)) b=pd.DataFrame(b) s=0 for i,j in zip(new_table["rowIndex"],new_table["columnIndex"]): b.loc[i,j]=new_table.loc[new_table.loc[s,"rownum"],"text"] s=s+1
Poslední blok kódu nakonec nahraje extrahovaná tabulka a textová data do elementu úložiště objektů blob.
# Here is the upload to the blob storage tab1_csv=b.to_csv(header=False,index=False,mode='w') name1=(os.path.splitext(text1)[0]) +'.csv' container_client.upload_blob(name=name1,data=tab1_csv)
Spuštění funkce
Stisknutím klávesy F5 spusťte funkci znovu.
Pomocí Průzkumník služby Azure Storage nahrajte ukázkový formulář PDF do kontejneru vstupního úložiště. Tato akce by měla aktivovat spuštění skriptu a pak by se měl ve výstupním kontejneru zobrazit výsledný soubor .csv (zobrazený jako tabulka).
Tento kontejner můžete připojit k Power BI a vytvořit tak bohaté vizualizace dat, která obsahuje.
Další kroky
V tomto kurzu jste zjistili, jak pomocí funkce Azure napsané v Pythonu automaticky zpracovávat nahrané dokumenty PDF a vypisovat jejich obsah ve formátu, který je pro data přívětivější. Dále se dozvíte, jak pomocí Power BI zobrazit data.
- Co je funkce Document Intelligence?
- Další informace o modelu rozložení