Клієнти AWS у сфері охорони здоров’я, фінансових послуг, державного сектора та інших галузей зберігають мільярди документів у вигляді зображень або PDF-файлів у Служба простого зберігання Amazon (Amazon S3). Однак вони не можуть отримати інформацію, наприклад використовувати інформацію, заблоковану в документах, для великих мовних моделей (LLM) або здійснювати пошук, доки не витягнуть текст, форми, таблиці та інші структуровані дані. З інтелектуальною обробкою документів AWS (IDP) за допомогою служб AI, таких як Текст Amazon, ви можете скористатися провідною технологією машинного навчання (ML), щоб швидко й точно обробляти дані з PDF-файлів або зображень документів (TIFF, JPEG, PNG). Після вилучення тексту з документів ви можете використовувати його для точного налаштування базової моделі, узагальнити дані за допомогою базової моделіабо надіслати до бази даних.
У цій публікації ми зосередимося на обробці великої колекції документів у необроблені текстові файли та зберіганні їх в Amazon S3. Ми надаємо вам два різних рішення для цього випадку використання. Перший дозволяє запускати сценарій Python з будь-якого сервера або екземпляра, включаючи блокнот Jupyter; це найшвидший спосіб почати роботу. Другий підхід – це розгортання різних компонентів інфраструктури під ключ Набір хмарних розробок AWS (AWS CDK) конструкти. Конструкція AWS CDK забезпечує стійку та гнучку структуру для обробки ваших документів і створення наскрізного конвеєра IDP. Завдяки використанню AWS CDK ви можете розширити його функціональність, включивши редагування, зберегти вихідні дані в Amazon OpenSearchабо додати спеціальний AWS Lambda працювати з вашою власною бізнес-логікою.
Обидва ці рішення дозволяють швидко обробити багато мільйонів сторінок. Перш ніж запускати будь-яке з цих рішень у масштабі, ми рекомендуємо провести тестування з підмножиною ваших документів, щоб переконатися, що результати відповідають вашим очікуванням. У наступних розділах ми спочатку описуємо рішення сценарію, а потім рішення конструкції AWS CDK.
Рішення 1. Використовуйте сценарій Python
Це рішення обробляє документи для необробленого тексту через Amazon Texttract настільки швидко, наскільки це дозволяє служба, з розрахунком, що в разі збою в сценарії процес продовжиться з того місця, на якому він зупинився. Рішення використовує три різні служби: Amazon S3, Amazon DynamoDBі Amazon Texttract.
Наступна діаграма ілюструє послідовність подій у сценарії. Після завершення сценарію статус завершення разом із витраченим часом буде повернено на консоль студії SageMaker.
Ми запакували це рішення в a Скрипт .ipynb та .py скрипт. Ви можете використовувати будь-яке з розгортаних рішень відповідно до ваших вимог.
Передумови
Щоб запустити цей сценарій із блокнота Jupyter, Управління ідентифікацією та доступом AWS Роль (IAM), призначена блокноту, повинна мати дозволи, які дозволяють йому взаємодіяти з DynamoDB, Amazon S3 і Amazon Texttract. Загальне керівництво полягає в тому, щоб надати дозволи з найменшими привілеями для кожної з цих служб AmazonSageMaker-ExecutionRole
роль. Щоб дізнатися більше, зверніться до Розпочніть із політиками, керованими AWS, і перейдіть до дозволів із найменшими привілеями.
Крім того, ви можете запустити цей сценарій з інших середовищ, таких як Обчислювальна хмара Amazon Elastic (Amazon EC2) екземпляр або контейнер, яким ви керуєте, за умови, що Python, Pip3 і AWS SDK для Python (Boto3) встановлені. Знову ж таки, необхідно застосувати ту саму політику IAM, яка дозволяє сценарію взаємодіяти з різними керованими службами.
Проходження
Щоб реалізувати це рішення, вам спочатку потрібно клонувати репозиторій GitHub.
Вам потрібно встановити наступні змінні в сценарії, перш ніж ви зможете його запустити:
- tracking_table – Це ім’я таблиці DynamoDB, яка буде створена.
- input_bucket – Це ваше вихідне розташування в Amazon S3, яке містить документи, які ви хочете надіслати в Amazon Texttract для виявлення тексту. Для цієї змінної введіть назву сегмента, наприклад
mybucket
. - output_bucket – Це призначено для збереження місця, куди ви хочете, щоб Amazon Texttract записував результати. Для цієї змінної введіть назву сегмента, наприклад
myoutputbucket
. - _input_prefix (необов'язковий) – Якщо ви хочете вибрати певні файли з папки у вашому сегменті S3, ви можете вказати назву цієї папки як префікс введення. В іншому випадку залиште значення за замовчуванням порожнім, щоб вибрати всі.
Сценарій виглядає наступним чином:
Під час запуску сценарію створюється така схема таблиці DynamoDB:
Коли сценарій запускається вперше, він перевіряє, чи існує таблиця DynamoDB, і за потреби автоматично створює її. Після створення таблиці нам потрібно заповнити її списком посилань на об’єкти документа з Amazon S3, які ми хочемо обробити. Сценарій за проектом буде перераховувати об’єкти у вказаному input_bucket
і автоматично заповнити нашу таблицю їхніми іменами під час запуску. Потрібно приблизно 10 хвилин, щоб перерахувати понад 100,000 3 документів і заповнити ці імена в таблиці DynamoDB за допомогою сценарію. Якщо у вас є мільйони об’єктів у відрі, ви можете альтернативно скористатися функцією інвентаризації Amazon SXNUMX, яка генерує файл CSV із іменами, а потім заздалегідь заповнити таблицю DynamoDB із цього списку вашим власним сценарієм і не використовувати функцію під назвою fetchAllObjectsInBucketandStoreName
прокоментувавши це. Щоб дізнатися більше, зверніться до Налаштування Amazon S3 Inventory.
Як згадувалося раніше, існує як версія для ноутбука, так і версія зі сценарієм Python. Блокнот — найпростіший спосіб почати роботу; просто запустіть кожну клітинку від початку до кінця.
Якщо ви вирішите запустити сценарій Python з інтерфейсу командного рядка, рекомендується використовувати термінальний мультиплексор, наприклад tmux. Це зроблено для запобігання зупинці сценарію після завершення сеансу SSH. Наприклад: tmux new -d ‘python3 textractFeeder.py’
.
Далі йде точка входу сценарію; тут ви можете закоментувати непотрібні методи:
Наступні поля встановлюються, коли сценарій заповнює таблицю DynamoDB:
- objectName – Назва документа в Amazon S3, який буде надіслано в Amazon Texttract
- bucketName – Відро, де зберігається об’єкт документа
Ці два поля необхідно заповнити, якщо ви вирішите використовувати файл CSV зі звіту про інвентаризацію S3 і пропустите автоматичне заповнення, яке відбувається в сценарії.
Тепер, коли таблицю створено та заповнено посиланнями на об’єкт документа, сценарій готовий розпочати виклик Amazon Texttract StartDocumentTextDetection
API. Amazon Texttract, як і інші керовані служби, має a ліміт за замовчуванням на API, які називаються транзакціями за секунду (TPS). За потреби ви можете подати запит на збільшення квоти з консолі Amazon Texttract. Код розроблено для одночасного використання кількох потоків під час виклику Amazon Texttract, щоб максимізувати пропускну здатність служби. Ви можете змінити це в коді, змінивши threadCountforTextractAPICall
змінна. За замовчуванням встановлено 20 потоків. Сценарій спочатку прочитає 200 рядків із таблиці DynamoDB і збереже їх у списку в пам’яті, який обернено класом для безпеки потоку. Потім запускається кожен потік абонента, який проходить у межах своєї смуги. По суті, потік виклику Amazon Texttract отримає елемент зі списку в пам’яті, який містить посилання на наш об’єкт. Потім він викличе асинхронний start_document_text_detection
API та дочекайтеся підтвердження з ідентифікатором завдання. Потім ідентифікатор завдання оновлюється назад до рядка DynamoDB для цього об’єкта, і потік повторюватиметься, отримуючи наступний елемент зі списку.
Нижче наведено основний код оркестровки сценарій:
Потоки абонентів продовжуватимуть повторюватися, доки в списку не залишиться жодного елемента, після чого кожен з потоків зупиниться. Коли всі потоки, що працюють у межах своїх доріжок, зупиняються, наступні 200 рядків із DynamoDB витягуються та запускається новий набір із 20 потоків, і весь процес повторюється, доки кожен рядок, який не містить ідентифікатора завдання, не буде отримано з DynamoDB і оновлено. Якщо сценарій аварійно завершує роботу через якусь неочікувану проблему, сценарій можна запустити знову з orchestrate()
метод. Це гарантує, що потоки продовжуватимуть обробляти рядки, які містять порожні ідентифікатори завдань. Зауважте, що під час повторного запуску orchestrate()
після зупинки сценарію існує ймовірність того, що кілька документів буде знову надіслано до Amazon Texttract. Це число буде дорівнювати або менше кількості потоків, які працювали на момент збою.
Коли в таблиці DynamoDB більше не буде рядків із порожнім ідентифікатором завдання, сценарій зупиниться. Весь вихід JSON з Amazon Texttract для всіх об’єктів буде знайдено в output_bucket
за замовчуванням під textract_output
папку. Кожна вкладена папка всередині textract_output
буде названо ідентифікатором завдання, який відповідає ідентифікатору завдання, збереженому в таблиці DynamoDB для цього об’єкта. У папці ідентифікатора завдання ви знайдете JSON, який матиме числову назву, починаючи з 1, і потенційно може охоплювати додаткові файли JSON, які будуть позначені як 2, 3 тощо. Охоплення файлів JSON є результатом щільних або багатосторінкових документів, де обсяг вилученого вмісту перевищує стандартний розмір JSON Amazon Texttract у 1,000 блоків. Відноситься до Блокувати для отримання додаткової інформації про блоки. Ці файли JSON міститимуть усі метадані Amazon Texttract, включно з текстом, витягнутим із документів.
Версію блокнота з кодом Python і сценарій для цього рішення можна знайти в GitHub.
Прибирати
Коли сценарій Python буде завершено, ви можете заощадити кошти, вимкнувши або зупинивши Студія Amazon SageMaker блокнот або контейнер, який ви розкрутили.
Тепер перейдемо до нашого другого рішення для великих документів.
Рішення 2. Використовуйте безсерверну конструкцію AWS CDK
Це рішення використовує Функції кроку AWS і функції Lambda для організації конвеєра IDP. Ми використовуємо Конструкції IDP AWS CDK, які спрощують масштабну роботу з Amazon Texttract. Крім того, ми використовуємо a Крок Функції розподіленої карти щоб переглянути всі файли в сегменті S3 і розпочати обробку. Перша функція Lambda визначає, скільки сторінок має ваш документ. Це дозволяє конвеєру автоматично використовувати або синхронний (для односторінкових документів), або асинхронний (для багатосторінкових документів) API. Під час використання асинхронного API додаткова функція Lambda викликається для всіх файлів JSON, які Amazon Texttract створить для всіх ваших сторінок, в один файл JSON, щоб ваші подальші програми могли легко працювати з інформацією.
Це рішення також містить дві додаткові функції Lambda. Перша функція аналізує текст із JSON і зберігає його як текстовий файл в Amazon S3. Друга функція аналізує JSON і зберігає його для показників робочого навантаження.
Наступна діаграма ілюструє робочий процес крокових функцій.
Передумови
Ця база коду використовує AWS CDK і вимагає Docker. Ви можете розгорнути це з AWS Cloud9 екземпляр, у якому вже налаштовано AWS CDK і Docker.
Проходження
Щоб реалізувати це рішення, вам спочатку потрібно клонувати сховище
Після клонування репозиторію встановіть залежності:
Потім використовуйте такий код, щоб розгорнути стек AWS CDK:
Для цього рішення ви повинні вказати вихідний сегмент і префікс джерела (розташування файлів, які потрібно обробити).
Після завершення розгортання перейдіть до консолі Step Functions, де ви повинні побачити кінцевий автомат ServerlessIDPArchivePipeline
.
Відкрийте сторінку деталей кінцевого автомата та на Виконання вкладку, виберіть Почати виконання.
Вибирати Почати виконання знову запустити державну машину.
Після того, як ви запустите кінцевий автомат, ви можете контролювати конвеєр, дивлячись на пробіг карти. Ви побачите Статус обробки товару розділ, як на знімку екрана нижче. Як бачите, це створено для запуску та відстеження того, що було успішно, а що невдало. Цей процес триватиме, доки не будуть прочитані всі документи.
Завдяки цьому рішенню ви зможете обробляти мільйони файлів у своєму обліковому записі AWS, не турбуючись про те, як правильно визначити, які файли надсилати до того чи іншого API, або про те, як пошкоджені файли виходять з ладу у вашому конвеєрі. За допомогою консолі Step Functions ви зможете переглядати та контролювати свої файли в реальному часі.
Прибирати
Після завершення роботи конвеєра, щоб очистити, ви можете повернутися до свого проекту та ввести таку команду:
Це призведе до видалення всіх служб, які були розгорнуті для цього проекту.
Висновок
У цій публікації ми представили рішення, яке дозволяє легко конвертувати зображення документів і PDF-файли в текстові файли. Це ключова передумова для використання ваших документів для генеративного штучного інтелекту та пошуку. Щоб дізнатися більше про використання тексту для навчання або тонкого налаштування ваших базових моделей, див Налаштуйте Llama 2 для створення тексту на Amazon SageMaker JumpStart. Для використання з пошуком див Впровадьте інтелектуальний індекс пошуку документів за допомогою Amazon Texttract і Amazon OpenSearch. Щоб дізнатися більше про розширені можливості обробки документів, які пропонують служби штучного інтелекту AWS, див Керівництво з інтелектуальної обробки документів на AWS.
Про авторів
Тім Конделло є старшим архітектором рішень у сфері штучного інтелекту (AI) і машинного навчання (ML) в Amazon Web Services (AWS). Його фокус — обробка природної мови та комп’ютерне зір. Тім любить використовувати ідеї клієнтів і перетворювати їх на масштабовані рішення.
Девід Гірлінг є старшим архітектором рішень AI/ML з більш ніж двадцятирічним досвідом проектування, керування та розробки корпоративних систем. Девід є частиною команди спеціалістів, яка зосереджена на тому, щоб допомогти клієнтам вивчати, впроваджувати інновації та використовувати ці високопродуктивні служби з їх даними для своїх випадків використання.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- джерело: 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 SageMaker
- Текст Amazon
- Amazon Web Services
- Веб-служби Amazon (AWS)
- кількість
- an
- аналізи
- та
- будь-який
- API
- Інтерфейси
- застосування
- прикладної
- підхід
- приблизно
- ЕСТЬ
- штучний
- штучний інтелект
- Штучний інтелект (AI)
- AS
- призначений
- At
- автоматичний
- автоматично
- AWS
- назад
- база
- В основному
- BE
- було
- перед тим
- мільярди
- блоки
- Bootstrap
- обидва
- будувати
- побудований
- бізнес
- by
- call
- званий
- гість
- покликання
- CAN
- можливості
- здатний
- випадок
- випадків
- осередок
- певний
- зміна
- перевірка
- Вибирати
- клас
- очистити
- хмара
- код
- кодова база
- збір
- коментар
- Коментуючи
- повний
- завершення
- Компоненти
- обчислення
- комп'ютер
- Комп'ютерне бачення
- Консоль
- будувати
- містити
- Контейнер
- містить
- зміст
- продовжувати
- конвертувати
- відповідає
- витрати
- може
- Крах
- створювати
- створений
- виготовлений на замовлення
- клієнт
- Клієнти
- дані
- Database
- Девід
- вирішувати
- дефолт
- залежно
- розгортання
- розгорнути
- розгортання
- описувати
- дизайн
- призначений
- проектування
- деталі
- Виявлення
- Визначати
- визначає
- розвивається
- розробка
- різний
- розподілений
- Docker
- документ
- документація
- Ні
- вниз
- два
- кожен
- Раніше
- або
- дозволяє
- кінець в кінець
- закінчується
- Що натомість? Створіть віртуальну версію себе у
- підприємство
- запис
- середовищах
- рівним
- Події
- Кожен
- приклад
- перевищує
- виконання
- існує
- очікування
- очікування
- досвід
- продовжити
- витяг
- видобуток
- не вдалося
- відсутності
- Провал
- особливість
- кілька
- Поля
- філе
- Файли
- фінансовий
- фінансові послуги
- знайти
- закінчення
- Перший
- перший раз
- гнучкий
- Сфокусувати
- фокусується
- потім
- після
- слідує
- для
- форми
- знайдений
- фонд
- Рамки
- від
- функція
- функціональність
- Функції
- Отримувати
- Загальне
- генерує
- покоління
- генеративний
- Генеративний ШІ
- отримати
- Go
- керівництво
- відбувається
- Мати
- охорона здоров'я
- допомогу
- тут
- дуже
- його
- Як
- How To
- Однак
- HTML
- HTTP
- HTTPS
- i
- ID
- ідеї
- Особистість
- ідентифікатори
- if
- ілюструє
- зображень
- здійснювати
- in
- включати
- У тому числі
- Augmenter
- індекс
- промисловості
- провідний в галузі
- інформація
- Інфраструктура
- спочатку
- ініціювати
- оновлювати
- вхід
- розуміння
- встановлювати
- встановлений
- екземпляр
- Інтелект
- Розумний
- Інтелектуальна обробка документів
- взаємодіяти
- в
- інвентаризація
- IT
- пунктів
- ЙОГО
- робота
- JPG
- json
- ключ
- озеро
- Lane
- мова
- великий
- масштабний
- провідний
- УЧИТЬСЯ
- вивчення
- Залишати
- залишити
- менше
- як
- список
- Лама
- розташований
- розташування
- замкнений
- логіка
- довше
- шукати
- машина
- навчання за допомогою машини
- головний
- зробити
- РОБОТИ
- управляти
- вдалося
- багато
- карта
- Максимізувати
- Зустрічатися
- згаданий
- метадані
- метод
- методика
- Метрика
- мільйони
- хвилин
- ML
- модель
- Моделі
- монітор
- більше
- найбільш
- рухатися
- множинний
- повинен
- ім'я
- Названий
- Імена
- Природний
- Обробка природних мов
- Переміщення
- Необхідність
- необхідний
- Нові
- наступний
- немає
- увагу
- ноутбук
- зараз
- номер
- об'єкт
- об'єкти
- of
- від
- запропонований
- on
- ONE
- операційний
- or
- оркестровка
- Інше
- інакше
- наші
- з
- вихід
- над
- власний
- упаковані
- сторінка
- сторінок
- частина
- для
- Дозволи
- вибирати
- трубопровід
- plato
- Інформація про дані Платона
- PlatoData
- точка
- Політика
- заселений
- пошта
- потенціал
- потенційно
- представлений
- запобігати
- Проблема
- процес
- процеси
- обробка
- виробляти
- проект
- правильно
- забезпечувати
- за умови
- забезпечує
- громадськість
- put
- Python
- найшвидший
- швидко
- Сировина
- Читати
- готовий
- реальний
- реального часу
- рекомендувати
- рекомендований
- запис
- облік
- послатися
- посилання
- посилання
- повторювати
- звітом
- Сховище
- запросити
- вимагається
- Вимога
- Вимагається
- пружний
- результат
- результати
- Роль
- ROW
- прогін
- біг
- пробіжки
- сейф
- Безпека
- мудрець
- то ж
- зберегти
- масштабовані
- шкала
- сценарій
- Sdk
- Пошук
- другий
- розділ
- розділам
- сектор
- побачити
- вибрати
- послати
- старший
- посланий
- Послідовність
- сервер
- Без сервера
- обслуговування
- Послуги
- Сесія
- комплект
- Повинен
- закриття
- аналогічний
- простий
- просто
- Розмір
- розумний
- So
- рішення
- Рішення
- деякі
- Source
- span
- напруга
- спеціаліст
- зазначений
- крутився
- стек
- старт
- почалася
- Починаючи
- стан
- Статус
- Крок
- Стоп
- зупинений
- зупинка
- зберігання
- зберігати
- зберігати
- магазинів
- зберігання
- просто
- рядок
- структурований
- студія
- успішний
- такі
- Переконайтеся
- Systems
- таблиця
- Приймати
- прийняті
- приймає
- взяття
- команда
- Технологія
- термінал
- Тестування
- текст
- ніж
- Що
- Команда
- інформація
- Джерело
- Держава
- їх
- Їх
- потім
- Там.
- Ці
- вони
- це
- ті
- три
- через
- пропускна здатність
- Тім
- час
- до
- до
- TPS
- трек
- поїзд
- Transactions
- Поворот
- під ключ
- два
- не в змозі
- при
- Unexpected
- до
- оновлений
- використання
- використання випадку
- використовує
- використання
- використовувати
- використовує
- змінна
- різний
- версія
- бачення
- чекати
- хотіти
- було
- годинник
- шлях..
- we
- Web
- веб-сервіси
- були
- Що
- коли
- який
- всі
- волі
- з
- в
- без
- Work
- робочий
- турбуватися
- б
- Загорнуті
- запис
- років
- Ти
- вашу
- зефірнет