Руководство. Аналитика документов с помощью служб ИИ Azure

Аналитика документов ИИ Azure — это служба ИИ Azure , которая позволяет создавать автоматизированное приложение для обработки данных с помощью технологии машинного обучения. Из этого руководства вы узнаете, как дополнить данные в Azure Synapse Analytics. Вы будете использовать аналитику документов для анализа форм и документов, извлечения текста и данных и возврата структурированных выходных данных JSON. Вы можете быстро получать точные результаты с учетом специфики содержимого, не выполняя избыточные операции вручную или продолжительную обработку и анализ данных.

В этом руководстве демонстрируется использование аналитики документов с SynapseML для выполнения следующих операций:

  • Извлечение текста и сведений о макете из определенного документа
  • Обнаружение и извлечение данных из квитанций
  • Обнаружение и извлечение данных из визитных карточек
  • Обнаружение и извлечение данных из счетов
  • Обнаружение и извлечение данных из удостоверений личности

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.

Предварительные требования

  • Рабочая область Azure Synapse Analytics с учетной записью хранения Azure Data Lake Storage 2-го поколения, настроенной в качестве хранилища по умолчанию. При работе с файловой системой Data Lake Storage 2-го поколения вам нужно иметь права участника для получения данных Хранилища BLOB-объектов.
  • Пул Spark в рабочей области Azure Synapse Analytics. Дополнительные сведения см. в статье Создание пула Spark в Azure Synapse.
  • Действия по предварительной настройке, описанные в руководстве Настройка служб ИИ Azure в Azure Synapse.

Начало работы

Откройте Synapse Studio и создайте записную книжку. Чтобы приступить к работе, импортируйте SynapseML.

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

Настройка аналитики документов

Используйте связанную аналитику документов, настроенную на этапах предварительной настройки .

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

Анализ макета

Извлекает текст и сведения о макете из заданного документа. Входной документ должен иметь один из поддерживаемых типов содержимого: application/pdf, image/jpeg, image/png или image/tiff.

Пример входных данных

Фотография с примером заказа на покупку.

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

Ожидаемые результаты

Снимок экрана: ожидаемые результаты анализа заказа на покупку.

Анализ квитанций

Служба может находить и извлекать данные из квитанций с помощью функции оптического распознавания символов (OCR) и нашей модели квитанций, которая позволяет легко обнаруживать в подобных документах такие структурированные данные, как имя или название продавца, номер его телефона, дата транзакции, сумма транзакция и т. д.

Пример входных данных

Фотография с примером квитанции.

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

Ожидаемые результаты

Снимок экрана: ожидаемые результаты анализа квитанции.

Анализ визитных карточек

Вы можете находить и извлекать данные из визитных карточек с помощью функции оптического распознавания символов (OCR) и нашей модели визитной карточки, которая позволяет легко обнаруживать в подобных документах такие структурированные данные, как имена контактов, названия компаний, номера телефонов, адреса электронной почты и многое другое.

Пример входных данных

Фотография с примером визитной карточки.

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

Ожидаемые результаты

Снимок экрана: ожидаемые результаты анализа визитной карточки.

Анализ счетов

Вы можете находить и извлекать данные из счетов с помощью функции оптического распознавания символов (OCR) и наших моделей счетов, созданных на базе глубокого обучения, что позволяет легко обнаруживать в подобных документах такие структурированные данные, как клиент, поставщик, идентификатор счета, срок его оплаты, итоговая сумма, сумма по счету, сумма налогов, адрес доставки, плательщик, позиции по счету и т. д.

Пример входных данных

Фотография с примером счета.

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

Ожидаемые результаты

Снимок экрана: ожидаемые результаты анализа счета.

Анализ документов, удостоверяющих личность

Вы можете находить и извлекать данные из удостоверений личности с помощью функции оптического распознавания символов (OCR) и нашей модели для таких удостоверений, которая позволяет легко обнаруживать в подобных документах такие структурированные данные, как имя, фамилия, дата рождения, номер документа и т. д.

Пример входных данных

Фотография с примером водительского удостоверения.

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

Ожидаемые результаты

Снимок экрана: ожидаемые результаты анализа водительского удостоверения.

Очистка ресурсов

Чтобы правильно завершить работу экземпляра Spark, завершите все подключенные сеансы (записные книжки). Пул Apache Spark завершит работу автоматически, когда истечет указанное для него время простоя. Можно также выполнить команду остановки сеанса из строки состояния в верхней правой части записной книжки.

Снимок экрана: кнопка остановки сеанса в строке состояния.

Дальнейшие действия