Delen via


Zelfstudie: Document Intelligence met Azure AI-services

Azure AI Document Intelligence is een Azure AI-service waarmee u een geautomatiseerde gegevensverwerkingstoepassing kunt bouwen met behulp van machine learning-technologie. In deze zelfstudie leert u hoe u eenvoudig uw gegevens kunt verrijken in Azure Synapse Analytics. U gebruikt Document Intelligence om uw formulieren en documenten te analyseren, tekst en gegevens te extraheren en een gestructureerde JSON-uitvoer te retourneren. U krijgt snel nauwkeurige resultaten die zijn afgestemd op uw specifieke inhoud zonder overmatige handmatige tussenkomst of uitgebreide data science-expertise.

In deze zelfstudie wordt het gebruik van Document Intelligence met SynapseML gedemonstreert voor het volgende:

  • Tekst en indeling extraheren uit een bepaald document
  • Gegevens detecteren en extraheren uit ontvangstbewijzen
  • Gegevens detecteren en extraheren uit visitekaartjes
  • Gegevens detecteren en extraheren uit facturen
  • Gegevens detecteren en extraheren uit identificatiedocumenten

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Vereisten

Aan de slag

Open Synapse Studio en maak een nieuw notitieblok. Importeer SynapseML om aan de slag te gaan.

import synapse.ml
from synapse.ml.cognitive import *

Document intelligence configureren

Gebruik de gekoppelde Document Intelligence die u hebt geconfigureerd in de stappen vóór de configuratie .

ai_service_name = "<Your linked service for Document Intelligence>"

Indeling analyseren

Tekst- en indelingsgegevens extraheren uit een bepaald document. Het invoerdocument moet van een van de ondersteunde inhoudstypen zijn: 'application/pdf', 'image/jpeg', 'image/png' of 'image/tiff'.

Voorbeeldinvoer

Foto van een voorbeeld van een inkooporder.

from pyspark.sql.functions import col, flatten, regexp_replace, explode, create_map, lit

imageDf = spark.createDataFrame([
  ("<replace with your file path>/layout.jpg",)
], ["source",])

analyzeLayout = (AnalyzeLayout()
                 .setLinkedService(ai_service_name)
                 .setImageUrlCol("source")
                 .setOutputCol("layout")
                 .setConcurrency(5))


display(analyzeLayout
        .transform(imageDf)
        .withColumn("lines", flatten(col("layout.analyzeResult.readResults.lines")))
        .withColumn("readLayout", col("lines.text"))
        .withColumn("tables", flatten(col("layout.analyzeResult.pageResults.tables")))
        .withColumn("cells", flatten(col("tables.cells")))
        .withColumn("pageLayout", col("cells.text"))
        .select("source", "readLayout", "pageLayout"))

Verwachte resultaten

Schermopname van de verwachte resultaten van het analyseren van de voorbeeldaankooporder.

Ontvangstbewijzen analyseren

Detecteert en extraheert gegevens uit ontvangstbewijzen met behulp van optische tekenherkenning (OCR) en ons ontvangstmodel, zodat u eenvoudig gestructureerde gegevens kunt extraheren uit ontvangstbewijzen zoals de naam van de verkoper, het telefoonnummer van de verkoper, de transactiedatum, het transactietotaal en meer.

Voorbeeldinvoer

Foto van een voorbeeld van een ontvangstbewijs.

imageDf2 = spark.createDataFrame([
  ("<replace with your file path>/receipt1.png",)
], ["image",])

analyzeReceipts = (AnalyzeReceipts()
                 .setLinkedService(ai_service_name)
                 .setImageUrlCol("image")
                 .setOutputCol("parsed_document")
                 .setConcurrency(5))


results = analyzeReceipts.transform(imageDf2).cache()
display(results.select("image", "parsed_document"))

Verwachte resultaten

Schermopname van de verwachte resultaten van het analyseren van de voorbeeldbevestiging.

Visitekaartjes analyseren

Detecteert en extraheert gegevens uit visitekaartjes met behulp van optische tekenherkenning (OCR) en ons visitekaartjesmodel, zodat u eenvoudig gestructureerde gegevens kunt extraheren uit visitekaartjes, zoals contactnamen, bedrijfsnamen, telefoonnummers, e-mailberichten en meer.

Voorbeeldinvoer

Foto van een voorbeeld van een visitekaartje.

imageDf3 = spark.createDataFrame([
  ("<replace with your file path>/business_card.jpg",)
], ["source",])

analyzeBusinessCards = (AnalyzeBusinessCards()
                 .setLinkedService(ai_service_name)
                 .setImageUrlCol("source")
                 .setOutputCol("businessCards")
                 .setConcurrency(5))

display(analyzeBusinessCards
        .transform(imageDf3)
        .withColumn("documents", explode(col("businessCards.analyzeResult.documentResults.fields")))
        .select("source", "documents"))

Verwachte resultaten

Schermopname van de verwachte resultaten van het analyseren van het voorbeeld van een visitekaartje.

Facturen analyseren

Detecteert en extraheert gegevens uit facturen met behulp van optische tekenherkenning (OCR) en onze deep learning-modellen voor factuurbegrip, zodat u eenvoudig gestructureerde gegevens kunt extraheren uit facturen, zoals klant, leverancier, factuur-id, factuurdatum, totaal, verschuldigd factuurbedrag, btw-bedrag, verzending naar, factuur naar, regelitems en meer.

Voorbeeldinvoer

Foto van een voorbeeldfactuur.

imageDf4 = spark.createDataFrame([
  ("<replace with your file path>/invoice.png",)
], ["source",])

analyzeInvoices = (AnalyzeInvoices()
                 .setLinkedService(ai_service_name)
                 .setImageUrlCol("source")
                 .setOutputCol("invoices")
                 .setConcurrency(5))

display(analyzeInvoices
        .transform(imageDf4)
        .withColumn("documents", explode(col("invoices.analyzeResult.documentResults.fields")))
        .select("source", "documents"))

Verwachte resultaten

Schermopname van de verwachte resultaten van het analyseren van de voorbeeldfactuur.

Id-documenten analyseren

Detecteert en extraheert gegevens uit identificatiedocumenten met behulp van optische tekenherkenning (OCR) en ons id-documentmodel, zodat u eenvoudig gestructureerde gegevens kunt extraheren uit id-documenten zoals voornaam, achternaam, geboortedatum, documentnummer en meer.

Voorbeeldinvoer

Foto van een voorbeeld van een rijbewijs-id.

imageDf5 = spark.createDataFrame([
  ("<replace with your file path>/id.jpg",)
], ["source",])

analyzeIDDocuments = (AnalyzeIDDocuments()
                 .setLinkedService(ai_service_name)
                 .setImageUrlCol("source")
                 .setOutputCol("ids")
                 .setConcurrency(5))

display(analyzeIDDocuments
        .transform(imageDf5)
        .withColumn("documents", explode(col("ids.analyzeResult.documentResults.fields")))
        .select("source", "documents"))

Verwachte resultaten

Schermopname van de verwachte resultaten van het analyseren van de voorbeeld-id van het rijbewijs.

Resources opschonen

Om ervoor te zorgen dat de Spark-instantie wordt afgesloten, beëindigt u alle verbonden sessies (notebooks). De pool wordt afgesloten wanneer de niet-actieve tijd is bereikt die is opgegeven in de Apache Spark-pool. U kunt ook sessie stoppen selecteren in de statusbalk in de rechterbovenhoek van het notitieblok.

Schermopname van de knop Sessie stoppen op de statusbalk.

Volgende stappen