Öğretici: Depolanan belgeleri işlemek için Azure İşlevleri ve Python kullanma
Belge Yönetim Bilgileri, Azure İşlevleri ile oluşturulan otomatik veri işleme işlem hattının bir parçası olarak kullanılabilir. Bu kılavuzda, azure blob depolama kapsayıcısına yüklenen belgeleri işlemek için Azure İşlevleri nasıl kullanacağınız gösterilir. Bu iş akışı, Belge Yönetim Bilgileri düzen modelini kullanarak depolanan belgelerden tablo verilerini ayıklar ve tablo verilerini Azure'daki bir .csv dosyasına kaydeder. Ardından Microsoft Power BI kullanarak verileri görüntüleyebilirsiniz (burada ele alınmaz).
Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:
- Bir Azure Depolama hesabı oluşturun.
- bir Azure İşlevleri projesi oluşturun.
- Karşıya yüklenen formlardan düzen verilerini ayıklayın.
- Ayıklanan düzen verilerini Azure Depolama'ya yükleyin.
Önkoşullar
Azure aboneliği - Ücretsiz bir tane oluşturun
Belge Yönetim Bilgileri kaynağı. Azure aboneliğinizi aldıktan sonra anahtarınızı ve uç noktanızı almak için Azure portal bir Belge Yönetim Bilgileri kaynağı oluşturun. Ücretsiz fiyatlandırma katmanını (
F0
) kullanarak hizmeti deneyebilir ve daha sonra üretim için ücretli bir katmana yükseltebilirsiniz.Kaynağınız dağıtıldıktan sonra Kaynağa git'i seçin. Uygulamanızı Belge Yönetim Bilgileri API'sine bağlamak için oluşturduğunuz kaynaktan anahtara ve uç noktaya ihtiyacınız vardır. Anahtarınızı ve uç noktanızı öğreticinin ilerleyen bölümlerinde aşağıdaki koda yapıştıracaksınız:
Python 3.6.x, 3.7.x, 3.8.x veya 3.9.x (Bu proje için Python 3.10.x desteklenmez).
Aşağıdaki uzantıların yüklü olduğu en son Visual Studio Code sürümü (VS Code):
uzantıyı Azure İşlevleri. Yüklendikten sonra sol gezinti bölmesinde Azure logosunu görmeniz gerekir.
Azure İşlevleri Core Tools sürüm 3.x (Sürüm 4.x bu proje için desteklenmiyor).
Visual Studio code için Python Uzantısı. Daha fazla bilgi için bkz.VS Code'da Python ile Çalışmaya Başlama
Azure Depolama Gezgini yüklendi.
Analiz etmek için yerel bir PDF belgesi. Bu proje için örnek pdf belgemizi kullanabilirsiniz.
Azure Depolama hesabı oluşturma
Azure portal genel amaçlı v2 Azure Depolama hesabı oluşturun. Depolama kapsayıcısı ile Azure depolama hesabı oluşturmayı bilmiyorsanız şu hızlı başlangıçları izleyin:
- Depolama hesabı oluşturma. Depolama hesabınızı oluştururken Örnek ayrıntıları>Performans alanında Standart performans'ı seçin.
- Kapsayıcı oluşturma. Kapsayıcınızı oluşturduğunuzda, Yeni Kapsayıcı penceresinde Genel erişim düzeyiniKapsayıcı (kapsayıcılar ve dosyalar için anonim okuma erişimi) olarak ayarlayın.
Sol bölmede Kaynak paylaşımı (CORS) sekmesini seçin ve varsa mevcut CORS ilkesini kaldırın.
Depolama hesabınız dağıtıldıktan sonra input ve output adlı iki boş blob depolama kapsayıcısı oluşturun.
Azure İşlevleri projesi oluşturma
Projeyi içerecek functions-app adlı yeni bir klasör oluşturun ve Seç'i seçin.
Visual Studio Code açın ve Komut Paleti'ni açın (Ctrl+Shift+P). Python'ı arayın ve seçin :Yorumlayıcı'yı seçin → 3.6.x, 3.7.x, 3.8.x veya 3.9.x sürümüne sahip yüklü bir Python yorumlayıcısı seçin. Bu seçim, seçtiğiniz Python yorumlayıcı yolunu projenize ekler.
Sol gezinti bölmesinden Azure logosunu seçin.
Mevcut Azure kaynaklarınızı Kaynaklar görünümünde görürsünüz.
Bu proje için kullandığınız Azure aboneliğini seçin ve aşağıda Azure İşlev Uygulaması'nı görmeniz gerekir.
Listelenen kaynaklarınızın altında yer alan Çalışma Alanı (Yerel) bölümünü seçin. Artı simgesini seçin ve İşlev Oluştur düğmesini seçin.
İstendiğinde Yeni proje oluştur'u seçin ve function-app dizinine gidin. Seç’i seçin.
Birkaç ayar yapılandırmanız istenir:
Bir dil seçin → Python'ı seçin.
Sanal ortam oluşturmak için bir Python yorumlayıcısı seçin → daha önce varsayılan olarak ayarladığınız yorumlayıcıyı seçin.
Bir şablon seçin → Azure Blob Depolama tetikleyiciyi seçin ve tetikleyiciye bir ad verin veya varsayılan adı kabul edin. Onaylamak için Enter tuşuna basın.
Ayar'ı seçin → açılan menüden Yeni yerel uygulama ayarı oluştur'u seçin ➕ .
Aboneliği seçin → oluşturduğunuz depolama hesabıyla Azure aboneliğinizi seçin → depolama hesabınızı seçin → ardından depolama giriş kapsayıcısının adını seçin (bu durumda).
input/{name}
Onaylamak için Enter tuşuna basın.Projenizi nasıl açmak istediğinizi seçin → açılan menüden Projeyi geçerli pencerede aç'ı seçin.
Bu adımları tamamladıktan sonra VS Code, __init__.py Python betiğine sahip yeni bir Azure İşlevi projesi ekler. Bu betik, giriş depolama kapsayıcısına bir dosya yüklendiğinde tetiklenir:
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")
İşlevi test etme
Temel işlevi çalıştırmak için F5 tuşuna basın. VS Code, arabirim oluşturmak için bir depolama hesabı seçmenizi ister.
Oluşturduğunuz depolama hesabını seçin ve devam edin.
Azure Depolama Gezgini açın ve örnek PDF belgesini giriş kapsayıcısına yükleyin. Ardından VS Code terminalini denetleyin. Betik, PDF yüklemesi tarafından tetiklendiğini günlüğe kaydetmelidir.
Devam etmeden önce betiği durdurun.
Belge işleme kodu ekleme
Ardından, Belge Yönetim Bilgileri hizmetini çağırmak ve Belge Yönetim Bilgileri düzen modelini kullanarak karşıya yüklenen belgeleri ayrıştırmak için Python betiğine kendi kodunuzu ekleyeceksiniz.
VS Code'da işlevin requirements.txt dosyasına gidin. Bu dosya, betiğinizin bağımlılıklarını tanımlar. Dosyaya aşağıdaki Python paketlerini ekleyin:
cryptography azure-functions azure-storage-blob azure-identity requests pandas numpy
Ardından __init__.py betiğini açın. Aşağıdaki
import
deyimlerini ekleyin: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
Oluşturulan
main
işlevi olduğu gibi bırakabilirsiniz. Özel kodunuzu bu işlevin içine ekleyeceksiniz.# 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")
Aşağıdaki kod bloğu, karşıya yüklenen belgede Belge Yönetim Bilgileri Çözümleme Düzeni API'sini çağırır. Uç noktanızı ve anahtar değerlerinizi doldurun.
# 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)
Önemli
İşiniz bittiğinde anahtarı kodunuzdan kaldırmayı unutmayın ve asla herkese açık olarak göndermeyin. Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Daha fazla bilgi için bkz . Azure AI hizmetleri güvenliği.
Ardından, hizmeti sorgulamak ve döndürülen verileri almak için kod ekleyin.
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
Azure Depolama çıkış kapsayıcısına bağlanmak için aşağıdaki kodu ekleyin. Depolama hesabı adı ve anahtarı için kendi değerlerinizi doldurun. Anahtarı Azure portal depolama kaynağınızın Erişim anahtarları sekmesinden alabilirsiniz.
# 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")
Aşağıdaki kod döndürülen Belge Yönetim Bilgileri yanıtını ayrıştırır, bir .csv dosyası oluşturur ve çıktı kapsayıcısına yükler.
Önemli
Bu kodu kendi belgelerinizin yapısıyla eşleşecek şekilde düzenlemeniz gerekebilir.
# 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
Son olarak, son kod bloğu ayıklanan tablo ve metin verilerini blob depolama öğenize yükler.
# 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)
İşlevi çalıştırma
İşlevi yeniden çalıştırmak için F5 tuşuna basın.
Giriş depolama kapsayıcısına örnek bir PDF formu yüklemek için Azure Depolama Gezgini kullanın. Bu eylem betiğin çalıştırılmasını tetiklemelidir ve ardından sonuçta elde edilen .csv dosyasını (tablo olarak görüntülenir) çıkış kapsayıcısında görmeniz gerekir.
Bu kapsayıcıyı Power BI'a bağlayarak içerdiği verilerin zengin görselleştirmelerini oluşturabilirsiniz.
Sonraki adımlar
Bu öğreticide, karşıya yüklenen PDF belgelerini otomatik olarak işlemek ve içeriklerini daha veri dostu bir biçimde çıkarmak için Python'da yazılmış bir Azure İşlevi'ni kullanmayı öğrendiniz. Ardından, verileri görüntülemek için Power BI'ı kullanmayı öğrenin.
- Belge Zekası nedir?
- Düzen modeli hakkında daha fazla bilgi edinin