The new Layout feature of Amazon Textract introduces efficiencies in general purpose and generative AI document processing tasks

Новая функция макета Amazon Textract представляет новые возможности в области обработки документов с использованием общего назначения и генеративного искусственного интеллекта

Amazon Textract – это сервис машинного обучения (ML), который автоматически извлекает текст, почерк и данные из любого документа или изображения. Функция “AnalyzeDocument” Layout – это новая функция, которая позволяет клиентам автоматически извлекать элементы макета, такие как абзацы, заголовки, подзаголовки, шапки, подвалы и многое другое из документов. Layout расширяет обнаружение слов и строк в Amazon Textract, автоматически группируя текст в эти элементы макета и упорядочивая их в соответствии с человеческими шаблонами чтения (то есть порядок чтения слева направо и сверху вниз).

Построение решений по обработке и пониманию документов для финансовых и исследовательских отчетов, медицинских транскрипций, контрактов, медиа-статей и т. д. требует извлечения информации, содержащейся в заголовках, шапках, абзацах и т. д. Например, при каталогизации финансовых отчетов в базе данных документов, извлечение и сохранение заголовка в качестве каталогового индекса облегчает поиск. Раньше клиентам приходилось создавать эти элементы, используя код постобработки и ответы на слова и строки от Amazon Textract.

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

В сентябре 2023 года Amazon Textract запустил функцию Layout, которая автоматически извлекает элементы макета, такие как абзацы, заголовки, списки, шапки и подвалы, и упорядочивает текст и элементы так, как это делает человек. Мы также выпустили обновленную версию набора инструментов постобработки с открытым исходным кодом, специально разработанную для Amazon Textract, известную как Amazon Textract Textractor.

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

Элементы макета

Ключевыми элементами функции Layout Amazon Textract являются новые элементы макета. Функция LAYOUT API AnalyzeDocument теперь может обнаруживать до десяти различных элементов макета на странице документа. Эти элементы макета представлены в виде блокового типа в ответе JSON и содержат уверенность, геометрию (то есть информацию о ограничивающем прямоугольнике и полигоне) и Отношения, которые являются списком идентификаторов, соответствующих блоку с типом LINE.

  • Заголовок – Главный заголовок документа. Возвращается в виде блока типа LAYOUT_TITLE.
  • Шапка – Текст, расположенный в верхнем отступе документа. Возвращается в виде блока типа LAYOUT_HEADER.
  • Подвал – Текст, расположенный в нижнем отступе документа. Возвращается в виде блока типа LAYOUT_FOOTER.
  • Заголовок раздела – Заголовки, расположенные под основным заголовком и представляющие секции в документе. Возвращается в виде блока типа LAYOUT_SECTION_HEADER.
  • Номер страницы – Номер страницы документов. Возвращается в виде блока типа LAYOUT_PAGE_NUMBER.
  • Список – Любая информация, сгруппированная в виде списка. Возвращается в виде блока типа LAYOUT_LIST.
  • Изображение – Указывает на расположение изображения в документе. Возвращается в виде блока типа LAYOUT_FIGURE.
  • Таблица – Указывает на расположение таблицы в документе. Возвращается в виде блока типа LAYOUT_TABLE.
  • Ключ-значение – Указывает на расположение пары ключ-значение в документе. Возвращается в виде блока типа LAYOUT_KEY_VALUE.
  • Текст – Текст, который обычно присутствует как часть абзацев в документах. Он является своего рода “приемником” для текста, отсутствующего в других элементах. Возвращается в виде блока типа LAYOUT_TEXT.
Элементы макета Amazon Textract

Каждый элемент макета может содержать одну или несколько связей LINE, а эти строки составляют фактическое текстовое содержимое элемента макета (например, LAYOUT_TEXT обычно представляет собой параграф текста, содержащий несколько строк LINE). Важно отметить, что элементы макета отображаются в правильной последовательности чтения в ответе API, также как и порядок чтения в документе, что упрощает создание текста макета из JSON-ответа API.

Сферы применения экстракции с учетом макета

Вот несколько распространенных случаев использования новой функции LAYOUT при анализе документа.

  1. Извлечение элементов макета для индексации поиска и каталогизации. Содержимое LAYOUT_TITLE или LAYOUT_SECTION_HEADER, вместе с порядком чтения, можно использовать для правильной маркировки или обогащения метаданных. Это улучшает контекст документа в хранилище документов для улучшения возможностей поиска или организации документов.
  2. Суммирование всего документа или его частей путем извлечения текста в правильном порядке чтения и использования элементов макета.
  3. Извлечение конкретных частей документа. Например, документ может содержать смесь изображений с текстом и другие разделы или параграфы в виде обычного текста. Теперь вы можете выделить текстовые разделы, используя элемент LAYOUT_TEXT.
  4. Улучшение производительности и точности ответов для вопросно-ответных систем и извлечения сущностей с использованием LLM.

Существуют и другие возможные случаи использования автоматизации документов, где макет может быть полезным. Однако в этом посте мы объясняем, как извлекать элементы макета, чтобы помочь понять, как использовать функцию для традиционных решений автоматизации документов. Мы обсуждаем преимущества использования макета для вопросно-ответной системы с использованием LLM с помощью общего метода, известного как Retrieval Augmented Generation (RAG), и для извлечения сущностей. Для результатов обоих этих случаев использования мы представляем сравнительные оценки, которые помогают отличить преимущества текста, учитывающего макет, от обычного текста в качестве единообразного содержимого.

Чтобы подчеркнуть преимущества, мы провели тесты, сравнивая, как текст, извлеченный с использованием растровых сканов с помощью DetectDocumentText, и линеаризованный текст, учитывающий макет и извлеченный с помощью AnalyzeDocument с функцией LAYOUT, влияет на результаты работы в контексте системы вопросно-ответных систем с помощью LLM. Для этого теста мы использовали модель Anthropic’s Claude Instant с Amazon Bedrock. Однако для сложных макетов документа генерация текста в правильном порядке чтения и последующая фрагментация могут быть сложными, в зависимости от сложности макета документа. В следующих разделах мы рассмотрим, как извлечь элементы макета и линеаризовать текст для создания приложения на базе LLM. В частности, мы обсудим сравнительную оценку результатов, сгенерированных LLM для приложения вопросно-ответной системы с использованием растрового сканирования обычного текста и линеаризованного текста, учитывающего макет.

Извлечение элементов макета из страницы

Набор инструментов Textract Textractor для Amazon Textract может обрабатывать документ с помощью API AnalyzeDocument с функцией LAYOUT и далее предоставлять обнаруженные элементы макета через свойство PAGE_LAYOUT страницы и его собственные подсвойства TITLES, HEADERS, FOOTERS, TABLES, KEY_VALUES, PAGE_NUMBERS, LISTS и FIGURES. Каждый элемент имеет свою собственную функцию визуализации, позволяющую увидеть, что именно было обнаружено. Чтобы начать, необходимо установить Textractor с помощью

pip install amazon-textract-textractor

Как показано в следующем фрагменте кода, документ news_article.pdf обрабатывается с помощью API AnalyzeDocument с функцией LAYOUT. Ответом является переменная document, которая содержит обнаруженные блоки макета из свойств.

from textractor import Textractorfrom textractor.data.constants import TextractFeaturesextractor = Textractor(profile_name="default")input_document = "./news_article.pdf"document = extractor.analyze_document(                   file_source=input_document,                   features=[TextractFeatures.LAYOUT],                   save_image=True)document.pages[0].visualize()document.pages[0].page_layout.titles.visualize()document.pages[0].page_layout.headers.visualize()document.pages[0].page_layout.section_headers.visualize()document.pages[0].page_layout.footers.visualize()document.pages[0].page_layout.tables.visualize()document.pages[0].page_layout.key_values.visualize()document.pages[0].page_layout.page_numbers.visualize()document.pages[0].page_layout.lists.visualize()document.pages[0].page_layout.figures.visualize()
Визуализация макета с Amazon Textract Textractor

Подробный пример смотрите в официальной документации Textractor.

Линеаризация текста из ответа макета

Для использования возможностей макета Amazon Textract Textractor был полностью переработан для версии 1.4 для обеспечения линеаризации с более чем 40 параметрами конфигурации, позволяющими настраивать выходной линеаризованный текст для вашего случая использования без особых усилий. Новый линеаризатор поддерживает все доступные на данный момент API-интерфейсы AnalyzeDocument, включая формы и подписи, что позволяет добавлять элементы выбора в полученный текст без изменения кода.

from textractor import Textractorfrom textractor.data.constants import TextractFeaturesfrom textractor.data.text_linearization_config import TextLinearizationConfigextractor = Textractor(profile_name="default")config = TextLinearizationConfig(                         hide_figure_layout=True,                         title_prefix="# ",                         section_header_prefix="## ")document = extractor.analyze_document(                                 file_source=input_document,                                 features=[TextractFeatures.LAYOUT],                                 save_image=True)print(document.get_text(config=config))

Подробные примеры, а также другую информацию, смотрите в официальной документации Textractor.

Мы также добавили красивую печатную версию макета в библиотеку, которая позволяет вызвать одну функцию, передав ответ API-интерфейса макета в формате JSON, и получить линеаризованный текст (по страницам).

python -m pip install -q amazon-textract-prettyprinter

У вас есть возможность форматировать текст в формате markdown, исключать текст из фигур в документе, а также исключать заголовок страницы, нижний колонтитул и извлечение номера страницы из линеаризованного выхода. Вы также можете сохранить линеаризованный выход в виде обычного текста в локальной файловой системе или в местоположении Amazon S3, передав параметр save_txt_path. Следующий фрагмент кода демонстрирует пример использования:

from textractcaller.t_call import call_textract, Textract_Featuresfrom textractprettyprinter.t_pretty_print import get_text_from_layout_jsontextract_json = call_textract(input_document=input_document,                      features=[Textract_Features.LAYOUT,                      Textract_Features.TABLES])layout = get_text_from_layout_json(textract_json=textract_json,exclude_figure_text=True, # опциональноexclude_page_header=True, # опциональноexclude_page_footer=True, # опциональноexclude_page_number=True, # опциональноsave_txt_path="s3://bucket/prefix") # опциональноfull_text = layout[1]print(full_text)

Оценка показателей выполнения LLM для абстрактивных и экстрактивных задач

Текст, учитывающий макет, улучшает производительность и качество текста, созданного с помощью LLM. В частности, мы оцениваем два типа задач LLM – абстрактивные и экстрактивные задачи.

Абстрактивные задачи относятся к заданиям, которые требуют от искусственного интеллекта генерации нового текста, который не содержится прямо в исходном материале. Некоторые примеры абстрактивных задач включают резюмирование и ответы на вопросы. Для этих задач мы используем метрику ROUGE (Recall-Oriented Understudy for Gisting Evaluation), чтобы оценить производительность LLM при ответах на вопросы по сравнению с набором данных истинной информации.

Экстрактивные задачи относятся к действиям, при которых модель определяет и извлекает конкретные части входного текста для составления ответа. В этих задачах модель фокусируется на выборе соответствующих сегментов (таких как предложения, фразы или ключевые слова) из исходного материала, а не на генерации нового контента. Некоторые примеры таких задач – распознавание именованных сущностей (NER) и извлечение ключевых слов. Для этих задач мы используем среднюю нормализованную по Левенштейну метрику сходства (ANLS) для распознавания именованных сущностей на основе линеаризованного текста макета, извлеченного с помощью Amazon Textract.

Анализ показателя ROUGE для задачи абстрактного вопросно-ответного взаимодействия

Наш тест предназначен для выполнения контекстного вопросно-ответного взаимодействия на многоколоночном документе путем извлечения текста, а затем выполнения RAG для получения ответов от LLM. Мы выполняем Q&A для набора вопросов, используя основанный на растровом сканировании сырой текст и учитывающий макет линеаризованный текст. Затем мы оцениваем показатели ROUGE для каждого вопроса, сравнивая машинно-сгенерированный ответ с соответствующим правильным ответом. В данном случае правильными ответами являются те же самые вопросы, на которые ответил человек, что рассматривается как контрольная группа.

Контекстное Q&A с RAG требует извлечения текста из документа, создания более мелких фрагментов текста, генерации векторных вложений для этих фрагментов и их последующего сохранения в векторной базе данных. Это делается, чтобы система могла выполнять поиск релевантных фрагментов текста, наиболее подходящих для заданного вопроса. Эти релевантные фрагменты затем используются для формирования общего контекста и передаются LLM, чтобы он мог точно отвечать на вопрос.

Для теста используется следующий документ из набора данных DocUNet: Document Image Unwarping via a Stacked U-Net. Этот документ является многоколоночным документом с заголовками, названиями, параграфами и изображениями. Мы также определили набор из 20 вопросов, на которые ответил человек в качестве контрольной группы или правильных ответов. Тот же набор из 20 вопросов был использован для генерации ответов от LLM.

Пример документа из набора данных DocUNet

В следующем шаге мы извлекаем текст из этого документа, используя DetectDocumentText API и AnalyzeDocument API с функцией LAYOUT. Поскольку у большинства LLMs ограниченное окно контекста токенов, мы сохраняем небольшой размер фрагмента, примерно 250 символов с перекрытием фрагментов в 50 символов, с помощью RecursiveCharacterTextSplitter от LangChain. В результате получаются два отдельных набора фрагментов документа – один, сгенерированный с использованием сырого текста, и другой – с использованием учитывающего макет линеаризованного текста. Оба набора фрагментов хранятся в векторной базе данных, сгенерированные векторные вложения с помощью модели векторного вложения текста Amazon Titan Embeddings G1 Text.

Формирование фрагментов и внедрение с помощью модели векторного вложения текста Amazon Titan Embeddings G1 Text

Следующий фрагмент кода генерирует сырой текст из документа.

import textractcaller as tcfrom textractcaller.t_call import call_textractfrom textractprettyprinter.t_pretty_print import get_lines_stringplain_textract_json = call_textract(input_document = input_document)plain_text = get_lines_string(textract_json = plain_textract_json)print(plain_text)

Результат (обрезанный для краткости) выглядит следующим образом. Порядок чтения текста неверный из-за отсутствия у API информации о макете, и извлеченный текст охватывает колонки текста.

PHOTONICS FOR A BETTER WORLDUNESCO ENDORSESINTERNATIONAL DAY OF LIGHTFirst celebration in 2018 will become an annualreminder of photonics-enabled technologiesT he executive board of the United Nations Educational,in areas such as science, culture, education, sustainable development,Scientific, and Cultural Organization (UNESCO) has endorsedmedicine, communications, and energy.a proposal to establish an annual International Day of LightThe final report of IYL 2015 was delivered to UNESCO in Paris(IDL) as an extension of the highly successful International Year ofduring a special meeting in October 2016. At this event, SPIE memberLight and Light-based Technologies (IYL 2015)....

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

Визуализация порядка чтения растрового сканирования

Следующий фрагмент кода генерирует линеаризованный текст макета из документа. Вы можете использовать любой из методов для генерации линеаризованного текста из документа при использовании последней версии библиотеки Textract Textractor Python от Amazon Textract.

import textractcaller as tcfrom textractcaller.t_call import call_textract, Textract_Featuresfrom textractprettyprinter.t_pretty_print import get_text_from_layout_jsonlayout_textract_json = call_textract(input_document = input_document,                                     features = [Textract_Features.LAYOUT])layout_text = get_text_from_layout_json(textract_json = layout_textract_json)[1]print(layout_text)

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

ФОТОНИКА ДЛЯ ЛУЧШЕГО МИРАЮНЕСКО ОДОБРЯЕТ МЕЖДУНАРОДНЫЙ ДЕНЬ СВЕТАПервое празднование в 2018 году станет ежегодным напоминанием о фотонике и технологиях, основанных на светеРуководящий совет Объединенной организации Объединенных Наций по вопросам образования, науки и культуры (ЮНЕСКО) одобрил предложение о проведении ежегодного Международного дня света (МДС) в продолжение высокоуспешного Международного года света и светотехнических технологий (МГС 2015). Одобрение проведения Дня света получили SPIE и другие основные партнеры IYL 2015....

Визуальное отображение порядка чтения для сырого текста, извлеченного с помощью AnalyzeDocument с использованием функции LAYOUT, можно увидеть на следующем изображении.

Визуализация порядка чтения с учетом макета

Мы выполнили разделение извлеченного текста, в каждом случае использовали размер фрагмента 250 и перекрытие 50.

Затем мы генерируем векторные вложения для фрагментов и загружаем их в базу данных векторов в двух отдельных коллекциях. Мы использовали открытую базу данных векторов ChromaDB в памяти и установили значение topK равное 3 для поиска релевантных значений. Это означает, что для каждого вопроса наш запрос на поиск релевантных фрагментов текста размером 250 в нашей базе данных ChromaDB возвращает 3 релевантных фрагмента текста. Эти три фрагмента затем используются для построения контекста для LLM. Мы намеренно выбрали меньший размер фрагмента и меньший topK по следующим специфическим причинам.

  1. Сократить общий размер нашего контекста, так как исследования показывают, что LLM работают лучше с более коротким контекстом, хотя модель поддерживает более длинный контекст (через более крупное окно токенов контекста).
  2. Меньший общий размер предложения приводит к более низкой задержке модели генерации текста. Чем больше общий размер предложения (включая контекст), тем дольше модели может потребоваться для генерации ответа.
  3. Соответствие ограниченному окну токенов модели, как это обычно бывает с большинством LLM.
  4. Экономия затрат, так как использование меньшего количества токенов означает более низкую стоимость за вопрос для входных и выходных токенов в совокупности.

Обратите внимание, что Anthropic Claude Instant v1 поддерживает окно токенов размером 100 000 с помощью Amazon Bedrock. Мы намеренно ограничили себя более маленьким размером фрагмента, так как это также делает тесты соответствующими моделям с меньшим количеством параметров и более короткими общими окнами контекста.

Мы использовали метрики ROUGE для оценки автоматически сгенерированного текста по отношению к тексту-ссылке (или истине), измеряя различные аспекты, такие как перекрытие n-граммов, последовательностей слов и пар слов между двумя текстами. Мы выбрали три метрики ROUGE для оценки.

  1. ROUGE-1: Сравнивает перекрытие униграмм (отдельных слов) между сгенерированным текстом и текстом-ссылкой.
  2. ROUGE-2: Сравнивает перекрытие биграмм (двухсловных последовательностей) между сгенерированным текстом и текстом-ссылкой.
  3. ROUGE-L: Измеряет наибольшую общую подпоследовательность (LCS) между сгенерированным текстом и текстом-ссылкой, фокусируясь на наибольшей последовательности слов, которые встречаются в обоих текстах, хотя и не обязательно последовательно.
Расчеты балла ROUGE

Для наших 20 примеров вопросов, связанных с документом, мы проводили Q&A с исходным текстом и линеаризованным текстом, а затем проводили анализ балла ROUGE. Мы заметили почти 50% среднее улучшение в точности в целом. И было значительное улучшение баллов F1 при сравнении линеаризованного текста, сравниваемого с истиной, в отличие от сравнения исходного текста с истиной.

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

График ROUGE на результате задачи Q&A с макетом

Анализ балла ANLS по извлекающим задачам над академическими наборами данных

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

Для наших тестов ANLS мы выполнили задачу NER, где Модель ГПТ была обусловлена извлечением точного значения из извлеченного OCR-текста. Два академических набора данных, используемых для тестов, это DocVQA и InfographicVQA. Мы использовали нулевое подтверждение для попытки извлечения ключевых сущностей. Используемый шаблон для Моделей ГПТ имеет следующую структуру.

template = """Вам задан вопрос, на который следует ответить, используя только предоставленный документ. Ответ на вопрос следует брать из документа и быть как можно кратким. Документ:\n{document}Вопрос: {question}Извлеките ответ из документа с использованием наименьшего количества слов."""

Улучшение точности было замечено во всех наборах данных вопросов и ответов на документ при использовании модели FlanT5-XL с учетом макета и линеаризованного текста, в отличие от исходного текста (сканирование растровых изображений), в ответ на нулевые подсказки. В наборе данных InfographicVQA использование модели FlanT5-XL с учетом макета позволяет меньшей модели с 3B параметрами сравниться по результатам с более крупной моделью FlanT5-XXL (на исходном тексте), которая имеет почти вчетверо больше параметров (11B).

Набор данных ANLS*
FlanT5-XL (3B) FlanT5-XXL (11B)
Не учитывается макет (Растр) Учитывается макет Δ Не учитывается макет (Растр) Учитывается макет Δ
DocVQA 66.03% 68.46% 1.43% 70.71% 72.05% 1.34%
InfographicsVQA 29.47% 35.76% 6.29% 37.82% 45.61% 7.79%

* ANLS измеряется на тексте, извлеченном с помощью Amazon Textract, а не на предоставленной транскрипции документа

Заключение

Запуск Layout – это значительное продвижение в использовании Amazon Textract для создания решений по автоматизации документов. Как обсуждалось в этом сообщении, Layout использует традиционные и генеративные методы искусственного интеллекта для повышения эффективности при создании широкого спектра решений по автоматизации документов, таких как поиск документов, контекстуальный вопросно-ответный анализ, краткое изложение, извлечение ключевых сущностей и многое другое. Поскольку мы продолжаем использовать силу искусственного интеллекта при создании систем обработки и понимания документов, эти усовершенствования, безусловно, положат начало более гибким рабочим процессам, повышенной продуктивности и более глубокому анализу данных.

Для получения дополнительной информации о функции Layout и способах ее использования для решений автоматизации документов обратитесь к документации на функцию AnalyzeDocument, анализу Layout и линейной линеаризации текста для приложений генеративного искусственного интеллекта.