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

Сколько раз вы заполняли формы с запросом личной информации? Наверное, слишком много раз, чтобы считать. Когда вы находитесь в Интернете и зарегистрированы, вы можете сэкономить много времени благодаря функции автозаполнения в вашем браузере. В других случаях вам часто приходится вводить одни и те же данные вручную, снова и снова. Первые процессоры идентификации Document AI уже доступны и могут помочь вам решить эту проблему.

В этом посте вы увидите, как…

  • Обрабатывать документы, удостоверяющие личность, с помощью Document AI
  • Создать свой собственный автозаполнитель формы удостоверения личности

Примеры использования

Вот несколько ситуаций, с которыми вы наверняка сталкивались:

  • Финансовые счета: Компаниям необходимо подтверждать личность физических лиц. При создании счета клиента необходимо предъявить удостоверение личности, выданное правительством, для ручной проверки.
  • Транспортные сети: Для работы с подписками операторы часто управляют парками пользовательских карт, похожих на удостоверения личности. Эти карты используются для проверки личности, и для их использования требуется фотография удостоверения личности.
  • Ворота для идентификации личности: При пересечении границы (или даже при перелете внутри страны) необходимо пройти проверку личности. Главные ворота имеют упрощенные процессы и, как правило, хорошо оборудованы, чтобы соответствовать интенсивности движения. Напротив, на небольших пропускных пунктах вдоль границ могут применяться ручные процессы — иногда на входе и выходе, — что может привести к длинным очередям и задержкам.
  • Гостиницы: При поездке за границу и регистрации в отеле часто требуется предъявить паспорт для сканирования. Иногда также требуется заполнить более длинную бумажную форму и записать те же данные.
  • Льготы для клиентов: Для получения сертификатов на льготы или карт лояльности обычно требуется предоставить личную информацию, которая может включать портретную фотографию.

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

Процессоры идентификации

Типы процессоров

Каждый процессор идентификации Document AI представляет собой модель машинного обучения, обученную извлекать информацию из стандартного документа, удостоверяющего личность, например:

  • водительские права
  • национальное удостоверение личности
  • Паспорт

Примечание: удостоверение личности может содержать информацию на обеих сторонах, поэтому процессоры идентификации поддерживают до двух страниц в одном документе.

Доступность

По состоянию на июнь 2022 года, вы можете использовать два американских процессора идентификации, находящихся в производстве:

Процессор API type
Парсер водительских прав США US_DRIVER_LICENSE_PROCESSOR
Парсер паспортов США US_PASSPORT_PROCESSOR

В настоящее время доступны в предварительном просмотре:

  • Identity Doc Fraud Detector, позволяющий проверить, был ли подделан документ, удостоверяющий личность.
  • Три французских процессора идентификации
Процессор API type
Identity Doc Fraud Detector ID_FRAUD_DETECTION_PROCESSOR
Парсер водительских прав Франции FR_DRIVER_LICENSE_PROCESSOR
Парсер национального удостоверения личности Франции FR_NATIONAL_ID_PROCESSOR
Парсер паспорта Франции FR_PASSPORT_PROCESSOR

Примечания:

  • Другие процессоры идентификации находятся в процессе разработки.
  • Чтобы запросить доступ к процессорам в Preview, пожалуйста, заполните форму запроса доступа.

Создание процессора

Вы можете создать процессор:

  • Вручную из Cloud Console (веб-интерфейс администратора).
  • программно с помощью API.

Процессоры основаны на местоположении. Это позволяет гарантировать, где будет происходить обработка для каждого процессора.

Вот текущие мультирегиональные местоположения:

Местоположение API location
Соединенные Штаты us
Европейский Союз eu

После создания процессора вы ссылаетесь на него с помощью его идентификатора (PROCESSOR_ID далее).

Примечание: Чтобы управлять процессорами программно, см. codelab Управление процессорами Document AI с помощью Python.

Обработка документов

Вы можете обрабатывать документы двумя способами:

  • Синхронно с онлайн-запросом, чтобы проанализировать один документ и непосредственно использовать результаты.
  • асинхронно с пакетным запросом, чтобы запустить пакетную обработку нескольких или более крупных документов.

Онлайн-запросы

Пример онлайн-запроса REST:

  • Метод называется process.
  • Входным документом здесь является изображение PNG (в кодировке base64).
  • Этот запрос обрабатывается в Европейском Союзе.
  • Ответ возвращается синхронно.
POST https://eu-documentai.googleapis.com
     /v1/projects/PROJECT_ID/locations/eu/processors/PROCESSOR_ID
     :process
Вход в полноэкранный режим Выход из полноэкранного режима
{
  "rawDocument": {
    "content": "iVBORw0KGg…",
    "mimeType": "image/png"
  },
  "skipHumanReview": true
}
Войти в полноэкранный режим Выход из полноэкранного режима

Пакетные запросы

Пример пакетного запроса REST:

  • Метод называется batchProcess.
  • Метод batchProcess запускает пакетную обработку нескольких документов.
  • Этот запрос обрабатывается в США.
  • Ответ возвращается асинхронно; выходные файлы будут сохранены в my-storage-bucket/output/.
POST https://us-documentai.googleapis.com
     /v1/projects/PROJECT_ID/locations/us/processors/PROCESSOR_ID
     :batchProcess
Вход в полноэкранный режим Выход из полноэкранного режима
{
  "inputDocuments": {
    "gcsDocuments": {
      "documents": [
        {
          "gcsUri": "gs://my-storage-bucket/input/id-doc-1.pdf",
          "mimeType": "application/pdf"
        },
        {
          "gcsUri": "gs://my-storage-bucket/input/id-doc-2.tiff",
          "mimeType": "image/tiff"
        },
        {
          "gcsUri": "gs://my-storage-bucket/input/id-doc-3.png",
          "mimeType": "image/png"
        },
        {
          "gcsUri": "gs://my-storage-bucket/input/id-doc-4.gif",
          "mimeType": "image/gif"
        }
      ]
    }
  },
  "documentOutputConfig": {
    "gcsOutputConfig": {
      "gcsUri": "gs://my-storage-bucket/output/"
    }
  },
  "skipHumanReview": true
}
Войти в полноэкранный режим Выход из полноэкранного режима

Интерфейсы

Document AI доступен через обычные интерфейсы Google Cloud:

  • API RPC (gRPC с низкой задержкой)
  • REST API (запросы и ответы в формате JSON)
  • Клиентские библиотеки (обертки gRPC, в настоящее время доступны для Python, Node.js и Java).
  • Cloud Console (веб-интерфейс администратора)

Примечание: С помощью клиентских библиотек вы можете разрабатывать на предпочитаемом языке программирования. Пример вы увидите позже в этом посте.

Поля идентификации

Типичный ответ REST выглядит следующим образом:

  • Поля text и pages включают данные OCR, обнаруженные базовыми ML-моделями. Эта часть является общей для всех процессоров Document AI.
  • Список entities содержит поля, специально обнаруженные процессором идентификации.
{
  "text": "…",
  "pages": [],
  "entities": [
    {
      "textAnchor": {},
      "type": "Family Name",
      "mentionText": "PICHAI",
      "confidence": 0.999945,
      "pageAnchor": {},
      "id": "4"
    },
    {
      "textAnchor": {},
      "type": "Given Names",
      "mentionText": "Sundar",
      "confidence": 0.9999612,
      "pageAnchor": {},
      "id": "5"
    }
    ,
  ]
}
Вход в полноэкранный режим Выход из полноэкранного режима

Ниже перечислены обнаруживаемые поля идентичности:

Тип сущности Комментарий
Portrait Граница (портретная фотография)
Family Name Строка
Given Names Строка
Document Id Строка
Expiration Date Дата (+ нормализация)
Date Of Birth Дата (+ нормализация)
Issue Date Дата (+ нормализация)
Address Строка
MRZ Code Строка (машиночитаемая зона)

Обратите внимание, что Адрес и МРЗ код являются необязательными полями. Например, паспорт США содержит MRZ, но не содержит адреса.

Обнаружение мошенничества

Доступный в предварительной версии детектор мошенничества Identity Doc Fraud Detector помогает обнаружить попытки фальсификации. Обычно, когда документ, удостоверяющий личность, не «проходит» детектор мошенничества, ваш автоматизированный процесс может заблокировать попытку или вызвать проверку человеком.

Вот пример возвращаемых сигналов:

Тип субъекта Пример
fraud-signals/is-identity-document «НЕ_АН_ИД»
fraud-signals/suspicious-words «PASS»
fraud-signals/image-manipulation «ВОЗМОЖНАЯ_МАНИПУЛЯЦИЯ_ИЗОБРАЖЕНИЕМ»

Пример демонстрации

Вы можете обрабатывать документ в реальном времени с помощью всего нескольких строк кода.

Вот пример на языке Python:

import google.cloud.documentai_v1 as docai


def process_document(
    file: typing.BinaryIO,
    mime_type: str,
    project_id: str,
    location: str,
    processor_id: str,
) -> docai.Document:
    api_endpoint = {"api_endpoint": f"{location}-documentai.googleapis.com"}
    client = docai.DocumentProcessorServiceClient(client_options=api_endpoint)

    raw_document = docai.RawDocument(content=file.read(), mime_type=mime_type)
    name = client.processor_path(project_id, location, processor_id)

    request = docai.ProcessRequest(
        raw_document=raw_document,
        name=name,
        skip_human_review=True,
    )
    response = client.process_document(request)

    return docai.Document(response.document)
Вход в полноэкранный режим Выход из полноэкранного режима

Эта функция использует клиентскую библиотеку Python:

  • На вход подается файл (любой формат, поддерживаемый процессором).
  • На выходе получается структурированный документ.

Вы можете собрать обнаруженные поля, разобрав документ entities:

def id_data_from_document(document: docai.Document) -> dict:
    id_data = defaultdict(dict)

    for entity in document.entities:
        key = entity.type_
        page_index = 0
        value = entity.mention_text
        confidence, normalized = None, None

        if entity.page_anchor:
            page_index = entity.page_anchor.page_refs[0].page
        if not value:  # Send the detected portrait image instead
            image = crop_entity(document, entity)
            value = data_url_from_image(image)
        if entity.confidence != 0.0:
            confidence = int(entity.confidence * 100 + 0.5)
        if entity.normalized_value:
            normalized = entity.normalized_value.text

        id_data[key][page_index] = dict(
            value=value,
            confidence=confidence,
            normalized=normalized,
        )

    return id_data
Войти в полноэкранный режим Выйти из полноэкранного режима

Примечание: Эта функция создает отображение, готовое для отправки на фронтенд. Аналогичная функция может быть использована для других специализированных процессоров.

Завершите работу над приложением:

  • Определите пользовательский опыт и архитектуру
  • Реализуйте бэкенд и его API
  • Реализуйте фронтенд с помощью HTML + CSS + JS.
  • Добавьте пару функций: загрузка файлов, образцы документов или захват веб-камеры.
  • Вот и все; вы создали автозаполнитель формы идентификации.

Вот пример веб-приложения в действии:

Здесь показана обработка французского национального удостоверения личности с загрузкой изображений от клиента:

Примечание: Для документов с несколькими страницами можно использовать контейнер PDF или TIFF. В этом примере два загруженных изображения PNG объединяются бэкендом и обрабатываются как файл TIFF.

А это обработка водительских прав США, снятых с помощью веб-камеры ноутбука 720p:

Примечания:

  • Вы заметили, что снимок с веб-камеры перекошен, а обнаруженное портретное изображение прямое? Это потому, что Document AI автоматически выравнивает входные данные на уровне страницы. Документы могут быть даже перевернуты вверх ногами.
  • Некоторые поля (например, даты) возвращаются с нормализованными значениями. Это может значительно упростить хранение и обработку этих значений — и уменьшить вероятность ошибок — для разработчиков.

Исходный код этой демонстрации доступен в нашем репозитории образцов Document AI.

Больше

  • Попробуйте Document AI в вашем браузере
  • Документация по Document AI
  • Руководства по использованию Document AI
  • Отправка запроса на обработку
  • Полный список процессоров и деталей
  • Примечания к выпуску
  • Codelab — Специализированные процессоры с Document AI
  • Code — образцы Document AI

Следите за новостями; семейство процессоров Document AI продолжает расти и расти.

Оцените статью
Procodings.ru
Добавить комментарий