Dela via


Självstudie: Dokumentinformation med Azure AI-tjänster

Azure AI Document Intelligence är en Azure AI-tjänst som gör att du kan skapa automatiserade databehandlingsprogram med hjälp av maskininlärningsteknik. I den här självstudien lär du dig att enkelt utöka dina data i Azure Synapse Analytics. Du använder Dokumentinformation för att analysera formulär och dokument, extraherar text och data och returnerar strukturerade JSON-utdata. Du får snabbt korrekta resultat som är skräddarsydda för ditt specifika innehåll utan överdriven manuell inblandning eller omfattande datavetenskaplig expertis.

Den här självstudien visar hur du använder Dokumentinformation med SynapseML för att:

  • Extrahera text och layout från ett visst dokument
  • Identifiera och extrahera data från kvitton
  • Identifiera och extrahera data från visitkort
  • Identifiera och extrahera data från fakturor
  • Identifiera och extrahera data från identifieringsdokument

Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

Förutsättningar

Kom igång

Öppna Synapse Studio och skapa en ny notebook-fil. Kom igång genom att importera SynapseML.

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

Konfigurera dokumentinformation

Använd den länkade dokumentinformation som du konfigurerade i förkonfigurationsstegen .

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

Analysera layout

Extrahera text- och layoutinformation från ett visst dokument. Indatadokumentet måste vara av någon av de innehållstyper som stöds – "application/pdf", "image/jpeg", "image/png" eller "image/tiff".

Exempel på indata

Foto av en exempelköpsorder.

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"))

Förväntat resultat

Skärmbild av förväntade resultat från analys av exempelköpsordern.

Analysera kvitton

Identifierar och extraherar data från kvitton med hjälp av optisk teckenläsning (OCR) och vår kvittomodell, så att du enkelt kan extrahera strukturerade data från kvitton, till exempel försäljningsnamn, handelstelefonnummer, transaktionsdatum, transaktionssumma med mera.

Exempel på indata

Fotografi av ett exempelkvitto.

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"))

Förväntat resultat

Skärmbild av förväntade resultat från analys av exempelkvittot.

Analysera visitkort

Identifierar och extraherar data från visitkort med hjälp av optisk teckenläsning (OCR) och vår visitkortsmodell, så att du enkelt kan extrahera strukturerade data från visitkort som kontaktnamn, företagsnamn, telefonnummer, e-postmeddelanden med mera.

Exempel på indata

Foto av ett exempel på visitkort.

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"))

Förväntat resultat

Skärmbild av förväntade resultat från analys av visitkortsexemplet.

Analysera fakturor

Identifierar och extraherar data från fakturor med hjälp av optisk teckenläsning (OCR) och vår djupinlärningsmodeller för faktura, så att du enkelt kan extrahera strukturerade data från fakturor som kund, leverantör, faktura-ID, fakturaförfallodatum, totalsumma, fakturabelopp, skattebelopp, transport till, faktura till, radobjekt med mera.

Exempel på indata

Foto av en exempelfaktura.

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"))

Förväntat resultat

Skärmbild av förväntade resultat från analys av exempelfakturan.

Analysera ID-dokument

Identifierar och extraherar data från identifieringsdokument med hjälp av optisk teckenläsning (OCR) och vår ID-dokumentmodell, så att du enkelt kan extrahera strukturerade data från ID-dokument som förnamn, efternamn, födelsedatum, dokumentnummer med mera.

Exempel på indata

Foto av ett exempel på körkorts-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"))

Förväntat resultat

Skärmbild av förväntade resultat från analys av exempel på körkorts-ID.

Rensa resurser

För att säkerställa att Spark-instansen stängs av avslutar du alla anslutna sessioner (notebook-filer). Poolen stängs av när den inaktivitetstid som anges i Apache Spark-poolen nås. Du kan också välja stoppa session från statusfältet längst upp till höger i anteckningsboken.

Skärmbild som visar knappen Stoppa session i statusfältet.

Nästa steg