Клиенты AWS из сферы здравоохранения, финансовых услуг, государственного сектора и других отраслей хранят миллиарды документов в виде изображений или PDF-файлов в Простой сервис хранения Amazon (Амазонка S3). Однако они не могут получить ценную информацию, например, использовать информацию, заблокированную в документах, для больших языковых моделей (LLM) или выполнить поиск, пока не извлекут текст, формы, таблицы и другие структурированные данные. Благодаря интеллектуальной обработке документов AWS (IDP) с использованием сервисов искусственного интеллекта, таких как Амазонка Текст, вы можете воспользоваться преимуществами ведущей в отрасли технологии машинного обучения (ML) для быстрой и точной обработки данных из PDF-файлов или изображений документов (TIFF, JPEG, PNG). После того, как текст извлечен из документов, вы можете использовать его для точной настройки модели фундамента. обобщить данные, используя базовую модельили отправить его в базу данных.
В этом посте мы сосредоточимся на обработке большой коллекции документов в необработанные текстовые файлы и их хранении в Amazon S3. Мы предлагаем вам два разных решения для этого варианта использования. Первый позволяет запускать скрипт Python с любого сервера или экземпляра, включая блокнот Jupyter; это самый быстрый способ начать. Второй подход — развертывание различных компонентов инфраструктуры «под ключ» с использованием Комплект для разработки облачных сервисов AWS (ЦДК АМС) конструкции. Конструкция AWS CDK обеспечивает отказоустойчивую и гибкую структуру для обработки ваших документов и построения сквозного конвейера IDP. Используя AWS CDK, вы можете расширить его функциональность, включив в него редактирование, сохранить результат в Amazon OpenSearchили добавьте собственный AWS Lambda функционировать с вашей собственной бизнес-логикой.
Оба эти решения позволяют быстро обрабатывать многие миллионы страниц. Прежде чем запускать любое из этих решений в большом масштабе, мы рекомендуем протестировать подмножество ваших документов, чтобы убедиться, что результаты соответствуют вашим ожиданиям. В следующих разделах мы сначала описываем решение сценария, а затем решение конструкции AWS CDK.
Решение 1. Используйте скрипт Python
Это решение обрабатывает документы для необработанного текста через Amazon Textract так быстро, как это позволяет сервис, с расчетом на то, что в случае сбоя в сценарии процесс продолжится с того места, где он был остановлен. Решение использует три разных сервиса: Amazon S3, Amazon DynamoDBи Amazon Textract.
Следующая диаграмма иллюстрирует последовательность событий в сценарии. Когда сценарий завершится, статус завершения вместе с затраченным временем будет возвращен на консоль студии SageMaker.
Мы упаковали это решение в .ipynb скрипт и .py-скрипт. Вы можете использовать любое из развертываемых решений в соответствии с вашими требованиями.
Предпосылки
Чтобы запустить этот скрипт из блокнота Jupyter, Управление идентификацией и доступом AWS (IAM), назначенная записной книжке, должна иметь разрешения, позволяющие ей взаимодействовать с DynamoDB, Amazon S3 и Amazon Textract. Общее руководство заключается в предоставлении разрешений с наименьшими привилегиями для каждой из этих служб вашему AmazonSageMaker-ExecutionRole
роль. Чтобы узнать больше, обратитесь к Начните работу с политиками, управляемыми AWS, и переходите к разрешениям с наименьшими привилегиями..
Кроме того, вы можете запустить этот сценарий из других сред, например Эластичное вычислительное облако Amazon (Amazon EC2), которым вы будете управлять, при условии, что Python, Pip3 и AWS SDK для Python (Boto3) установлены. Опять же, необходимо применить те же политики IAM, которые позволяют сценарию взаимодействовать с различными управляемыми службами.
Прохождение
Чтобы реализовать это решение, сначала необходимо клонировать репозиторий. GitHub.
Вам необходимо установить следующие переменные в скрипте, прежде чем вы сможете его запустить:
- таблица_отслеживания – Это имя таблицы DynamoDB, которая будет создана.
- input_bucket – Это ваше исходное местоположение в Amazon S3, содержащее документы, которые вы хотите отправить в Amazon Textract для обнаружения текста. Для этой переменной укажите имя сегмента, например
mybucket
. - выходной_бакет – Это предназначено для хранения места, куда вы хотите, чтобы Amazon Textract записывал результаты. Для этой переменной укажите имя сегмента, например
myoutputbucket
. - _input_prefix (необязательно) – Если вы хотите выбрать определенные файлы из папки в корзине S3, вы можете указать это имя папки в качестве входного префикса. В противном случае оставьте значение по умолчанию пустым, чтобы выбрать все.
Сценарий выглядит следующим образом:
При запуске скрипта создается следующая схема таблицы DynamoDB:
При первом запуске сценария он проверит, существует ли таблица DynamoDB, и при необходимости автоматически создаст ее. После создания таблицы нам необходимо заполнить ее списком ссылок на объекты документов из Amazon S3, которые мы хотим обработать. Сценарий по замыслу будет перебирать объекты в указанном input_bucket
и автоматически заполнять нашу таблицу их именами при запуске. Перебор более 10 100,000 документов и занесение этих имен в таблицу DynamoDB из сценария занимает около 3 минут. Если у вас есть миллионы объектов в корзине, вы можете в качестве альтернативы использовать функцию инвентаризации Amazon SXNUMX, которая генерирует CSV-файл с именами, а затем заранее заполнить таблицу DynamoDB из этого списка своим собственным скриптом и не использовать функцию под названием fetchAllObjectsInBucketandStoreName
закомментировав это. Чтобы узнать больше, обратитесь к Настройка инвентаризации Amazon S3.
Как упоминалось ранее, существует как версия для ноутбука, так и версия сценария Python. Блокнот — самый простой способ начать работу; просто прогоните каждую ячейку от начала до конца.
Если вы решите запустить сценарий Python из CLI, рекомендуется использовать терминальный мультиплексор, например tmux. Это сделано для предотвращения остановки сценария в случае завершения сеанса SSH. Например: tmux new -d ‘python3 textractFeeder.py’
.
Ниже приводится точка входа скрипта; отсюда вы можете закомментировать ненужные методы:
Следующие поля задаются, когда скрипт заполняет таблицу DynamoDB:
- имя_объекта – Имя документа, расположенного в Amazon S3, который будет отправлен в Amazon Textract.
- ведронаме – Корзина, в которой хранится объект документа.
Эти два поля должны быть заполнены, если вы решите использовать CSV-файл из отчета об инвентаризации S3 и пропустить автоматическое заполнение, которое происходит в сценарии.
Теперь, когда таблица создана и заполнена ссылками на объекты документа, сценарий готов начать вызов Amazon Textract. StartDocumentTextDetection
API. Amazon Textract, как и другие управляемые сервисы, имеет предел по умолчанию на API, называемых транзакциями в секунду (TPS). При необходимости вы можете запросить увеличение квоты в консоли Amazon Textract. Код предназначен для одновременного использования нескольких потоков при вызове Amazon Textract для максимизации пропускной способности сервиса. Вы можете изменить это в коде, изменив threadCountforTextractAPICall
переменная. По умолчанию установлено 20 потоков. Первоначально скрипт прочитает 200 строк из таблицы DynamoDB и сохранит их в списке в памяти, обернутом классом для обеспечения потокобезопасности. Затем каждый вызывающий поток запускается и выполняется в пределах своей собственной дорожки. По сути, вызывающий поток Amazon Textract извлекает элемент из списка в памяти, который содержит ссылку на наш объект. Затем он вызовет асинхронный start_document_text_detection
API и дождитесь подтверждения с идентификатором задания. Затем идентификатор задания снова обновляется до строки DynamoDB для этого объекта, и поток повторяется, получая следующий элемент из списка.
Ниже приведен основной код оркестровки. скрипт:
Потоки вызывающего объекта будут продолжать повторяться до тех пор, пока в списке не останется никаких элементов, после чего каждый из потоков остановится. Когда все потоки, работающие в пределах своих дорожек, останавливаются, из DynamoDB извлекаются следующие 200 строк и запускается новый набор из 20 потоков, и весь процесс повторяется до тех пор, пока каждая строка, не содержащая идентификатор задания, не будет получена из DynamoDB и обновлено. Если сценарий выйдет из строя из-за какой-либо неожиданной проблемы, его можно будет запустить снова из orchestrate()
метод. Это гарантирует, что потоки продолжат обработку строк, содержащих пустые идентификаторы заданий. Обратите внимание, что при повторном запуске orchestrate()
после остановки сценария существует вероятность того, что несколько документов будут снова отправлены в Amazon Textract. Это число будет равно или меньше количества потоков, работавших на момент сбоя.
Когда в таблице DynamoDB больше не останется строк, содержащих пустой идентификатор задания, сценарий остановится. Весь вывод JSON из Amazon Textract для всех объектов будет найден в файле output_bucket
по умолчанию под textract_output
папка. Каждая подпапка внутри textract_output
будет называться с идентификатором задания, соответствующим идентификатору задания, хранящемуся в таблице DynamoDB для этого объекта. В папке с идентификатором задания вы найдете JSON, который будет иметь числовое имя, начиная с 1, и потенциально может охватывать дополнительные файлы JSON, которые будут иметь метки 2, 3 и т. д. Объединение файлов JSON является результатом плотных или многостраничных документов, в которых объем извлеченного контента превышает размер JSON по умолчанию Amazon Textract, равный 1,000 блоков. Ссылаться на Заблокировать дополнительную информацию о блоках. Эти файлы JSON будут содержать все метаданные Amazon Textract, включая текст, извлеченный из документов.
Вы можете найти версию блокнота с кодом Python и сценарий для этого решения в GitHub.
Убирать
Когда сценарий Python будет завершен, вы можете сэкономить затраты, выключив или остановив Студия Amazon SageMaker блокнот или контейнер, который вы раскрутили.
Теперь перейдем к нашему второму решению для документов в большом масштабе.
Решение 2. Используйте бессерверную конструкцию AWS CDK.
Это решение использует Шаговые функции AWS и функции Lambda для организации конвейера IDP. Мы используем Конструкции IDP AWS CDK, что упрощает работу с Amazon Textract в любом масштабе. Кроме того, мы используем Распределенная карта функций шага чтобы перебрать все файлы в корзине S3 и начать обработку. Первая функция Lambda определяет количество страниц в ваших документах. Это позволяет конвейеру автоматически использовать либо синхронный (для одностраничных документов), либо асинхронный (для многостраничных документов) API. При использовании асинхронного API дополнительная функция Lambda вызывается для всех файлов JSON, которые Amazon Textract создаст для всех ваших страниц, в один файл JSON, чтобы упростить работу последующих приложений с информацией.
Это решение также содержит две дополнительные функции Lambda. Первая функция анализирует текст из JSON и сохраняет его как текстовый файл в Amazon S3. Вторая функция анализирует JSON и сохраняет его для показателей рабочей нагрузки.
Следующая диаграмма иллюстрирует рабочий процесс Step Functions.
Предпосылки
Эта база кода использует AWS CDK и требует Docker. Вы можете развернуть это из Облако AWS9 экземпляр, в котором уже настроены AWS CDK и Docker.
Прохождение
Чтобы реализовать это решение, сначала необходимо клонировать репозиторий.
После клонирования репозитория установите зависимости:
Затем используйте следующий код для развертывания стека AWS CDK:
Для этого решения вы должны указать как исходный сегмент, так и исходный префикс (расположение файлов, которые вы хотите обработать).
После завершения развертывания перейдите к консоли Step Functions, где вы должны увидеть конечный автомат. ServerlessIDPArchivePipeline
.
Откройте страницу сведений о конечном автомате и на Казни , выберите Начать выполнение.
Выберите Начать выполнение снова, чтобы запустить конечный автомат.
После запуска конечного автомата вы можете отслеживать конвейер, просматривая карту выполнения. Вы увидите Статус обработки товара раздел, как показано на следующем снимке экрана. Как видите, он создан для запуска и отслеживания того, что было успешным, а что нет. Этот процесс будет продолжаться до тех пор, пока все документы не будут прочитаны.
Благодаря этому решению вы сможете обрабатывать миллионы файлов в своей учетной записи AWS, не беспокоясь о том, как правильно определить, какие файлы отправлять в какой API или о поврежденных файлах, которые выходят из строя в вашем конвейере. С помощью консоли Step Functions вы сможете просматривать и контролировать свои файлы в режиме реального времени.
Убирать
После завершения работы вашего конвейера для очистки вы можете вернуться в свой проект и ввести следующую команду:
При этом будут удалены все службы, развернутые для этого проекта.
Заключение
В этом посте мы представили решение, которое упрощает преобразование изображений и PDF-файлов ваших документов в текстовые файлы. Это ключевое условие использования ваших документов для генеративного искусственного интеллекта и поиска. Дополнительные сведения об использовании текста для обучения или точной настройки базовых моделей см. Точная настройка Llama 2 для генерации текста на Amazon SageMaker JumpStart. Для использования с поиском см. Внедрите интеллектуальный индекс поиска документов с помощью Amazon Textract и Amazon OpenSearch.. Чтобы узнать больше о расширенных возможностях обработки документов, предлагаемых сервисами AWS AI, см. Руководство по интеллектуальной обработке документов на AWS.
Об авторах
Тим Конделло — старший специалист по разработке решений в области искусственного интеллекта (ИИ) и машинного обучения (ML) в Amazon Web Services (AWS). Его сфера деятельности — обработка естественного языка и компьютерное зрение. Тиму нравится брать идеи клиентов и превращать их в масштабируемые решения.
Дэвид Гирлинг — старший архитектор решений AI/ML с более чем двадцатилетним опытом проектирования, управления и разработки корпоративных систем. Дэвид входит в команду специалистов, которая помогает клиентам изучать, внедрять инновации и использовать эти высокоэффективные сервисы с их данными для своих сценариев использования.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- PlatoData.Network Вертикальный генеративный ИИ. Расширьте возможности себя. Доступ здесь.
- ПлатонАйСтрим. Интеллект Web3. Расширение знаний. Доступ здесь.
- ПлатонЭСГ. Углерод, чистые технологии, Энергия, Окружающая среда, Солнечная, Управление отходами. Доступ здесь.
- ПлатонЗдоровье. Биотехнологии и клинические исследования. Доступ здесь.
- Источник: https://aws.amazon.com/blogs/machine-learning/create-a-document-lake-using-large-scale-text-extraction-from-documents-with-amazon-textract/
- :имеет
- :является
- :нет
- :куда
- $UP
- 000
- 1
- 10
- 100
- 12
- 20
- 200
- 7
- 710
- 8
- a
- в состоянии
- О нас
- доступ
- Учетная запись
- точно
- Добавить
- дополнительный
- Дополнительно
- продвижение
- продвинутый
- плюс
- После
- снова
- AI
- Услуги искусственного интеллекта
- AI / ML
- Все
- позволять
- позволяет
- вдоль
- уже
- причислены
- Amazon
- Amazon EC2
- Создатель мудреца Амазонки
- Амазонка Текст
- Amazon Web Services
- Веб-службы Amazon (AWS)
- количество
- an
- анализы
- и
- любой
- API
- API
- Приложения
- прикладной
- подхода
- примерно
- МЫ
- искусственный
- искусственный интеллект
- Искусственный интеллект (AI)
- AS
- назначенный
- At
- автоматический
- автоматически
- AWS
- назад
- Использование темпера с изогнутым основанием
- в основном
- BE
- было
- до
- миллиарды
- Блоки
- Начальная загрузка
- изоферменты печени
- строить
- построенный
- бизнес
- by
- призывают
- под названием
- гость
- вызова
- CAN
- возможности
- способный
- случаев
- случаев
- ячейка
- определенный
- изменение
- проверка
- Выберите
- класс
- чистым
- облако
- код
- кодовая база
- лыжных шлемов
- комментарий
- Комментируя
- полный
- завершение
- компоненты
- Вычисление
- компьютер
- Компьютерное зрение
- Консоли
- строить
- содержать
- Container
- содержит
- содержание
- продолжать
- конвертировать
- соответствует
- Расходы
- может
- Crash
- Создайте
- создали
- изготовленный на заказ
- клиент
- Клиенты
- данным
- База данных
- Давид
- решать
- По умолчанию
- Зависимости
- развертывание
- развернуть
- развертывание
- описывать
- Проект
- предназначенный
- проектирование
- подробнее
- обнаружение
- Определять
- определяет
- развивающийся
- Развитие
- различный
- распределенный
- Docker
- документ
- Документация
- не
- вниз
- два
- каждый
- Ранее
- или
- позволяет
- впритык
- окончания поездки
- Enter
- Предприятие
- запись
- средах
- равный
- События
- Каждая
- пример
- превышает
- выполнение
- существует
- ожидание
- ожидания
- опыт
- продлить
- извлечение
- добыча
- Oшибка
- отсутствии
- Ошибка
- Особенность
- несколько
- Поля
- Файл
- Файлы
- финансовый
- финансовые услуги
- Найдите
- окончание
- Во-первых,
- Впервые
- гибкого
- Фокус
- фокусируется
- следует
- после
- следующим образом
- Что касается
- формы
- найденный
- Год основания
- Рамки
- от
- функция
- функциональность
- Функции
- Gain
- Общие
- генерирует
- поколение
- генеративный
- Генеративный ИИ
- получить
- Go
- руководство
- происходит
- Есть
- здравоохранение
- помощь
- здесь
- очень
- его
- Как
- How To
- Однако
- HTML
- HTTP
- HTTPS
- i
- ID
- идеи
- Личность
- идентификаторы
- if
- иллюстрирует
- изображений
- осуществлять
- in
- включают
- В том числе
- Увеличение
- индекс
- промышленности
- отрасли
- информация
- Инфраструктура
- первоначально
- инициировать
- обновлять
- вход
- размышления
- устанавливать
- установлен
- пример
- Интеллекта
- Умный
- Интеллектуальная обработка документов
- взаимодействовать
- в
- инвентаризация
- IT
- пункты
- ЕГО
- работа
- JPG
- JSON
- Основные
- озеро
- Переулок
- язык
- большой
- крупномасштабный
- ведущий
- УЧИТЬСЯ
- изучение
- Оставлять
- оставил
- Меньше
- такое как
- Список
- Лама
- расположенный
- расположение
- запертый
- логика
- дольше
- искать
- машина
- обучение с помощью машины
- Главная
- сделать
- ДЕЛАЕТ
- управлять
- управляемого
- многих
- карта
- Максимизировать
- Встречайте
- упомянутый
- Метаданные
- метод
- методы
- Метрика
- миллионы
- Минут
- ML
- модель
- Модели
- монитор
- БОЛЕЕ
- самых
- двигаться
- с разными
- должен
- имя
- Названный
- имена
- натуральный
- Обработка естественного языка
- Откройте
- Необходимость
- необходимый
- Новые
- следующий
- нет
- в своих размышлениях
- ноутбук
- сейчас
- номер
- объект
- объекты
- of
- от
- предложенный
- on
- ONE
- операционный
- or
- оркестровка
- Другое
- в противном случае
- наши
- внешний
- выходной
- за
- собственный
- в упаковке
- страница
- страниц
- часть
- для
- Разрешения
- выбирать
- трубопровод
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- Точка
- сборах
- населенный
- После
- потенциал
- потенциально
- представлены
- предотвращать
- Проблема
- процесс
- Процессы
- обработка
- производит
- Проект
- должным образом
- обеспечивать
- при условии
- приводит
- что такое варган?
- положил
- Питон
- самый быстрый
- быстро
- Сырье
- Читать
- готовый
- реальные
- реального времени
- рекомендовать
- Управление по борьбе с наркотиками (DEA)
- запись
- учет
- относиться
- ссылка
- Рекомендации
- повторять
- отчету
- хранилище
- запросить
- обязательный
- Требования
- требуется
- упругий
- результат
- Итоги
- Роли
- РЯД
- Run
- Бег
- работает
- безопасный
- Сохранность
- sagemaker
- то же
- Сохранить
- масштабируемые
- Шкала
- скрипт
- SDK
- Поиск
- Во-вторых
- Раздел
- разделах
- сектор
- посмотреть
- выберите
- Отправить
- старший
- послать
- Последовательность
- сервер
- Serverless
- обслуживание
- Услуги
- Сессия
- набор
- должен
- закрытие
- аналогичный
- просто
- просто
- Размер
- умный
- So
- Решение
- Решения
- некоторые
- Источник
- пролет
- напряженность
- специалист
- указанный
- вращаться
- стек
- Начало
- и политические лидеры
- Начало
- Область
- Статус:
- Шаг
- Stop
- остановившийся
- остановка
- диск
- магазин
- хранить
- магазины
- хранение
- простой
- строка
- структурированный
- студия
- успешный
- такие
- Убедитесь
- системы
- ТАБЛИЦЫ
- взять
- приняты
- принимает
- с
- команда
- Технологии
- Терминал
- Тестирование
- текст
- чем
- который
- Ассоциация
- информация
- Источник
- Государство
- их
- Их
- тогда
- Там.
- Эти
- они
- этой
- те
- три
- Через
- пропускная способность
- Тим
- время
- в
- к
- TPS
- трек
- Train
- Сделки
- Поворот
- тюремщик
- два
- не в состоянии
- под
- Неожиданный
- до
- обновление
- использование
- прецедент
- использования
- через
- использовать
- использует
- переменная
- различный
- версия
- видение
- ждать
- хотеть
- законопроект
- Смотреть
- Путь..
- we
- Web
- веб-сервисы
- были
- Что
- когда
- , которые
- все
- будете
- в
- без
- Работа
- рабочий
- беспокоиться
- бы
- Завернутый
- записывать
- лет
- Ты
- ВАШЕ
- зефирнет