「Amazon Textractの新しいレイアウト機能は、一般的な目的と生成型のAIドキュメント処理タスクに効率をもたらします」
「Amazon Textractの新しいレイアウト機能:一般的な目的と生成型のAIドキュメント処理タスクの効率向上」
Amazon Textractは、どんなドキュメントや画像からも自動的にテキスト、手書き文字、データを抽出する機械学習(ML)サービスです。 AnalyzeDocument レイアウトは、顧客がドキュメントから段落、タイトル、副題、ヘッダー、フッターなどのレイアウト要素を自動的に抽出できる新機能です。レイアウトは、テキストをこれらのレイアウト要素に自動的にグループ化し、人間の読み方に従って左から右へ、上から下への順序で配置します。
金融レポートや研究レポート、医療書記録、契約書、メディア記事などのドキュメント処理と理解のソリューションを構築するには、タイトル、ヘッダー、段落などに含まれる情報を抽出する必要があります。たとえば、ドキュメントデータベースに金融レポートを分類する場合、タイトルをカタログの索引として抽出して保存することで簡単に取り出すことができます。この機能が導入される前には、顧客はAmazon Textractの単語と行の応答を使用してこれらの要素を後処理コードと組み立てる必要がありました。
複数の列や複雑なレイアウトを持つドキュメントでこのコードを実装する複雑さは増します。この発表により、ドキュメントから一般的に発生するレイアウト要素を簡単に抽出できるようになり、顧客はより少ないコードで効率的なドキュメント処理ソリューションをより早く構築できます。
2023年9月、Amazon Textractはレイアウト機能を導入しました。この機能により、段落、タイトル、リスト、ヘッダー、フッターなどのレイアウト要素が自動的に抽出され、人間が読むようにテキストと要素が順序立てられます。また、Amazon Textract向けのオープンソースの後処理ツールキットであるAmazon Textract Textractorの最新バージョンもリリースしました。
- 「Amazon SageMaker JumpStartを使用したスケーラブルなテキスト埋め込みと文の類似性検索」
- 「MATLABとAmazon SageMakerによる機械学習」
- Amazon MusicはSageMakerとNVIDIAを使用してMLの訓練および推論のパフォーマンスとコストを最適化しています
この記事では、顧客がこの機能をドキュメント処理のワークロードに活用する方法について説明します。また、大規模な言語モデル(LLM)を使用したドキュメント処理ワークロードにおける抽象的なタスクや抽出的なタスクのジェネレーティブ人工知能(AI)の精度を改善するレイアウトの質的研究についても説明します。
レイアウト要素
Amazon Textractのレイアウト機能の中心には、新しいレイアウト要素があります。 AnalyzeDocument APIのLAYOUT
機能により、ドキュメントのページで最大10種類の異なるレイアウト要素を検出することができます。これらのレイアウト要素はレスポンスJSON内ではブロックタイプとして表され、信頼度、ジオメトリ(境界ボックスおよびポリゴン情報)、およびRelationships
(LINE
ブロックタイプに対応するIDのリスト)が含まれます。
- タイトル – ドキュメントのメインタイトル。
LAYOUT_TITLE
ブロックタイプとして返されます。 - ヘッダー – ドキュメントの上部マージンにあるテキスト。
LAYOUT_HEADER
ブロックタイプとして返されます。 - フッター – ドキュメントの下部マージンにあるテキスト。
LAYOUT_FOOTER
ブロックタイプとして返されます。 - セクションタイトル – ドキュメント内のメインタイトルの下に配置されるセクションを表すタイトル。
LAYOUT_SECTION_HEADER
ブロックタイプとして返されます。 - ページ番号 – ドキュメントのページ番号。
LAYOUT_PAGE_NUMBER
ブロックタイプとして返されます。 - リスト – リスト形式でまとめられた情報。
LAYOUT_LIST
ブロックタイプとして返されます。 - 図 – ドキュメント内の画像の位置を示します。
LAYOUT_FIGURE
ブロックタイプとして返されます。 - テーブル – ドキュメント内の表の位置を示します。
LAYOUT_TABLE
ブロックタイプとして返されます。 - キーバリュー – ドキュメントのフォームキーバリューペアの位置を示します。
LAYOUT_KEY_VALUE
ブロックタイプとして返されます。 - テキスト – 通常はドキュメントの段落の一部として存在するテキスト。他の要素に存在しないテキストを収集するためのものです。
LAYOUT_TEXT
ブロックタイプとして返されます。
各レイアウト要素には、1つ以上のLINE
の関係が含まれ、これらの行はレイアウト要素の実際のテキストコンテンツを構成します(例えば、LAYOUT_TEXT
は通常、複数のLINE
を含むテキストの段落です)。重要なことは、レイアウト要素がAPIの応答でドキュメントの読み取り順に表示されることです。これにより、APIのJSON応答からレイアウトテキストを簡単に構築することができます。
レイアウト認識抽出の用途
以下は、新しいAnalyzeDocument LAYOUT
機能の一般的な使用例です。
- 検索インデックス化およびカタログ作成のためにレイアウト要素を抽出します。レイアウトの
LAYOUT_TITLE
またはLAYOUT_SECTION_HEADER
の内容と読み取り順を使用して、適切にタグ付けまたはメタデータを豊かにすることができます。これにより、ドキュメントリポジトリ内のドキュメントのコンテキストが向上し、検索機能やドキュメントの整理が向上します。 - レイアウト要素を使用して、ドキュメント全体または一部の要約を抽出します。
- ドキュメントの特定の部分を抽出します。例えば、ドキュメントには、その中にテキストを含む画像と他の純テキストのセクションまたは段落が混在している場合があります。これにより、
LAYOUT_TEXT
要素を使用してテキストセクションを分離することができます。 - LLMを使用したインコンテキストのドキュメントQ&Aおよびエンティティ抽出において、より高いパフォーマンスと正確な回答を提供します。
レイアウトを使用できる場合には、他の可能なドキュメント自動化の使用例も考えられます。ただし、この記事では、従来のドキュメント自動化ソリューションの機能を活用するために、レイアウト要素を抽出する方法について説明します。RAG(Retrieval Augmented Generation)として知られる一般的な方法を使用したLLMを使用したドキュメントQ&Aの使用例とエンティティ抽出の使用例について、レイアウト認識テキストの利点について議論します。これらの使用例の結果については、単なるプレーンテキストと比較することで、レイアウト認識テキストの利点を明確にします。
利点を強調するために、我々は、DetectDocumentText
を使用してラスタースキャンで抽出されたプレーンテキストと、AnalyzeDocument
とLAYOUT
機能を使用して抽出されたレイアウト認識テキストが、LLMによるインコンテキストQ&Aの出力結果に与える影響を比較するテストを実行しました。このテストでは、Amazon BedrockにAnthropicのClaude Instantモデルを使用しました。ただし、複雑なドキュメントレイアウトの場合、適切な読み取り順でテキストを生成し、適切に区切ることは、ドキュメントレイアウトの複雑さによって異なる場合があります。次のセクションでは、レイアウト要素を抽出し、テキストを線形化してLLMベースのアプリケーションを構築する方法について説明します。具体的には、ラスタースキャンベースのプレーンテキストとレイアウト認識テキストによって生成される応答の比較評価について説明します。
ページからレイアウト要素を抽出する
Amazon Textract Textractorツールキットは、ドキュメントをAnalyzeDocument APIを使用してLAYOUT
機能付きで処理し、ページのPAGE_LAYOUT
プロパティとそのサブプロパティTITLES
、HEADERS
、FOOTERS
、、TABLES
、KEY_VALUES
、PAGE_NUMBERS
、LISTS
、およびFIGURES
で検出されたレイアウト要素を公開します。各要素には、検出された内容を確認するための視覚化関数があります。始めるために、Textractorを以下のコマンドでインストールします。
pip install amazon-textract-textractor
次のコードスニペットで示されるように、ドキュメントnews_article.pdfはAnalyzeDocument
APIを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()
詳細な例は、公式のTextractorドキュメンテーションをご覧ください。
レイアウトレスポンスからテキストを線形化する
レイアウトの機能を使用するには、1.4リリース向けにAmazon Textract Textractorを大幅に改良し、40以上の設定オプションで線形化を提供しました。これにより、ダウンストリームで使用するテキストの出力を容易にカスタマイズできます。新しい線形化は現在利用可能なすべてのAnalyzeDocument
API(フォームと署名を含む)をサポートしており、コードの変更なしに結果のテキストに選択項目を追加することができます。
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ドキュメンテーションをご覧ください。
また、JSON形式のレイアウトAPIレスポンスを渡し、ページごとに線形化されたテキストを返すレイアウトプリティプリンタもライブラリに追加しました。
python -m pip install -q amazon-textract-prettyprinter
テキストを見やすい形式でフォーマットするオプション、ドキュメント内の図形からテキストを除外するオプション、ページヘッダー、フッター、ページ番号の抽出を線形化された出力から除外するオプションがあります。また、save_txt_path
パラメータを渡すことで、線形化された出力をローカルファイルシステムやAmazon S3の場所に平文形式で保存することもできます。以下のコードスニペットは、サンプルの使用方法を示しています。
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によって生成されるテキストのパフォーマンスと品質を向上させることがわかっています。具体的には、2つのタイプのLLMタスク、抽象化タスクと抽出タスクを評価します。
抽象化タスクは、AIによって直接ソース素材には存在しない新しいテキストを生成する課題を指します。抽象化タスクの例には、要約や質問応答があります。これらのタスクでは、Recall-Oriented Understudy for Gisting Evaluation(ROUGE)メトリックを使用して、LLMのパフォーマンスを真のデータセットに対して評価します。
抽出タスクは、モデルが入力テキストの特定の部分を識別して抽出し、応答を構築する活動を指します。これらのタスクでは、モデルは新しいコンテンツを生成するのではなく、ソース素材から関連するセグメント(文章、句、キーワードなど)を選択することに焦点を当てています。名前の付いたエンティティ認識(NER)やキーワード抽出などが該当します。これらのタスクでは、Amazon Textractによって抽出されたレイアウト線形化テキストに対して、平均正規化レーベンシュタイン類似度(ANLS)を使用します。
要約的な質問応答タスクでのROUGEスコアの分析
私たちのテストは、マルチカラムのドキュメント上で文脈に沿ったQ&Aを実行するために、テキストを抽出し、その後LLMから回答応答を取得するためにRAGを実行することが設定されています。私たちは、ラスタースキャンベースの生のテキストとレイアウトに対応した線形化されたテキストを使用して、一連の質問に対してQ&Aを実行します。そして、機械生成応答と対応する正解の回答と比較して、各質問に対してROUGE指標を評価します。この場合、正解は人間によって回答された同じ質問のセットであり、これは対照群と見なされます。
RAGを使用した文脈に沿ったQ&Aには、ドキュメントからテキストを抽出し、テキストの小さなチャンクを作成し、チャンクのベクトル埋め込みを生成してベクトルデータベースに格納する必要があります。これにより、システムはベクトルデータベース上で質問との関連性検索を実行して、質問に関連性の高いテキストのチャンクを返すことができます。これらの関連するチャンクは、全体の文脈を構築するために使用され、LLMに提供されます。そして、LLMは正確に質問に答えることができます。
テストに使用される以下のドキュメントは、DocUNet:スタックされたU-Netによるドキュメント画像の非歪みデータセットから取得されました。このドキュメントは、ヘッダー、タイトル、段落、および画像を持つマルチカラムのドキュメントです。また、人間によって回答された一連の20の質問をコントロールグループまたは正解として定義しました。同じ20の質問のセットは、LLMからの応答を生成するために使用されました。
次のステップでは、DetectDocumentText
APIとAnalyzeDocument
APIを使用して、このドキュメントからテキストを抽出します。また、LAYOUT
機能を使用します。LLMのトークンコンテキストウィンドウが制限されているため、チャンクサイズを小さく保ちました。チャンクのサイズは約250文字で、チャンクのオーバーラップは50文字でした。これにはLangChainのRecursiveCharacterTextSplitter
を使用しました。これにより、生のテキストを使用して生成された1つのドキュメントチャンクセットと、レイアウトに対応した線形化されたテキストを使用して生成されたもう1つのドキュメントチャンクセットの2つのセットが作成されました。両方のチャンクセットは、Amazon Titan Embeddings G1 Text埋め込みモデルを使用してベクトル埋め込みを生成してベクトルデータベースに格納されました。
以下のコードスニペットは、ドキュメントから生のテキストを生成します。
import textractcaller as tc
from textractcaller.t_call import call_textract
from textractprettyprinter.t_pretty_print import get_lines_string
plain_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 WORLD
UNESCO ENDORSES
INTERNATIONAL DAY OF LIGHT
First celebration in 2018 will become an annual
reminder of photonics-enabled technologies
T he executive board of the United Nations Educational,
in areas such as science, culture, education, sustainable development,
Scientific, and Cultural Organization (UNESCO) has endorsed
medicine, communications, and energy.
a proposal to establish an annual International Day of Light
The final report of IYL 2015 was delivered to UNESCO in Paris
(IDL) as an extension of the highly successful International Year of
during a special meeting in October 2016. At this event, SPIE member
Light and Light-based Technologies (IYL 2015)....
以下の画像で、DetectDocumentText
で抽出された生のテキストの読み取り順序のビジュアルが見られます。
次のコードスニペットは、ドキュメントからレイアウト線形化テキストを生成します。Amazon Textract Textractor Pythonライブラリの最新バージョンを使用して、ドキュメントから線形化テキストを生成するためのいずれかの方法を使用できます。
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機能を使用したため、テキストの読み取り順序は保持され、テキストがより意味をなしています。
PHOTONICS FOR A BETTER WORLDUNESCO ENDORSES INTERNATIONAL DAY OF LIGHTFirst celebration in 2018 will become an annualreminder of photonics-enabled technologiesT he executive board of the United Nations Educational,Scientific, and Cultural Organization (UNESCO) has endorseda proposal to establish an annual International Day of Light(IDL) as an extension of the highly successful International Year ofLight and Light-based Technologies (IYL 2015).The endorsement for a Day of Light has beenembraced by SPIE and other founding partners ofIYL 2015....
以下の画像で、LAYOUT機能を使用してAnalyzeDocumentで抽出された生のテキストの読み取り順序のビジュアルが見られます。
抽出されたテキストの両方に対して、チャンク処理を行い、チャンクのサイズを250、オーバーラップを50としました。
次に、チャンク用のベクトル埋め込みを生成し、それらを2つの別々のコレクションにロードします。私たちはオープンソースのChromaDBをメモリ内ベクトルデータベースとして使用し、関連検索にはtopK値3を使用しました。これは、すべての質問に対して、ChromaDBを使用した関連検索クエリがサイズ250のテキストチャンクを3つ返すことを意味します。これらの3つのチャンクは、LLMのコンテキストを構築するために使用されます。以下の特別な理由のため、わざとより小さなチャンクサイズと小さなtopKを選択しました。
- 短いコンテキスト全体のサイズを短縮することにより、短いコンテキストの方がLLMの性能が向上するという研究結果があります([参考](https://www.voagi.com/researchers-at-meta-ai-propose-advanced-longcontext-llms-to-surpass-the-performance-of-gpt35turbo16k.html))。モデルはより長いコンテキスト(より大きなトークンコンテキストウィンドウを通じて)をサポートしていても、短いコンテキストの方が良いとされています。
- 全体的なプロンプトサイズが大きいと、モデルが応答を生成するのに時間がかかるため、全体的なテキスト生成モデルのレイテンシーが低下します。
- ほとんどのLLMでトークンコンテキストウィンドウが制限されているため、モデルの制限されたトークンコンテキストウィンドウに準拠します。
- 入力と出力のトークン合計にわたるトークン数が少ないため、コスト効率が向上します。
注意:Anthropic Claude Instant v1はAmazon Bedrockを介して100,000トークンのコンテキストウィンドウをサポートしています。私たちは意図的により小さなチャンクサイズに制限しており、これにより、パラメータが少なく全体的に短いコンテキストウィンドウを持つモデルにも関連性のあるテストが可能になります。
ROUGEメトリクスを使用して、機械生成されたテキストをリファレンステキスト(またはグラウンドトゥルース)と比較し、n-gramのオーバーラップ、単語シーケンス、および単語ペアなどのさまざまな側面を測定しました。評価用に3つのROUGEメトリックを選択しました。
- ROUGE-1:生成されたテキストとリファレンステキストのユニグラム(単語単位)のオーバーラップを比較します。
- ROUGE-2:生成されたテキストとリファレンステキストのバイグラム(2つの単語シーケンス)のオーバーラップを比較します。
- ROUGE-L:生成されたテキストとリファレンステキストの最長共通部分列(LCS)を測定し、両方のテキストに出現する単語の最長のシーケンスに焦点を当てますが、必ずしも連続的に出現する必要はありません。
ドキュメントに関連する20のサンプル質問について、生のテキストと直線化テキストにそれぞれQ&Aを実行し、それからROUGEスコアの分析を実行しました。全体的に、精度の平均改善率が約50%増加しました。また、配置が直線化されたテキストとグラウンドトゥルースと比較した場合、生のテキストとグラウンドトゥルースを比較した場合において、F1スコアにも大幅な改善が見られました。
これは、直線化されたテキストと小さなチャンキングの助けを借りて、モデルが正しい回答を生成する能力が向上したことを示しています。これにより、精度が向上し、精度と再現率のバランスが有利に精度にシフトし、F1スコアが上昇しました。精度と再現率のバランスをとる増加したF1スコアは、改善を示しています。これらの指標の変化の実用的な影響を考慮することは非常に重要です。例えば、偽陽性が高コストなシナリオでは、精度の増加が非常に有益です。
学術データセットの抽出タスクにおけるANLSスコアの分析
我々はANLSまたは平均正規化レーベンシュタイン類似度を測定します。これは、オープンソースのFlanT5-XLモデルを使用したドキュメントの質問応答データセット全体でレイアウト感知型の直線化テキストを使用した場合、正確性の向上が観察されました。InfographicVQAデータセットでは、レイアウト感知型の直線化テキストを使用することで、3BパラメータのFlanT5-XLモデルがパラメータ数が4倍多いFlanT5-XXLモデル(生のテキスト)のパフォーマンスに匹敵することが可能になりました。
データセット | 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は伝統的なAIメソッドと生成的なAIメソッドを使用して、ドキュメント検索、コンテキストに基づいた質問応答、要約、重要なエンティティの抽出など、さまざまなドキュメント自動化ソリューションの効率を向上させるための取り組みです。AIの力を活用してドキュメント処理や理解システムを構築するにあたり、これらの改善策は確実に効率的なワークフロー、高い生産性、より深いデータ分析を実現する道を開くことでしょう。
Layout機能の詳細な情報やドキュメント自動化ソリューションにこの機能を活用する方法については、AnalyzeDocument、Layout分析、および生成的AIアプリケーションのドキュメンテーションのテキスト線形化を参照してください。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- NVIDIAは、Generative AIを用いて薬物探索を加速させるためにGenentechと協力
- 「基本的なアルゴリズムと機械学習の最新のアルゴリズムを使用して、コンピュータ科学の問題に取り組む」
- 「13/11から19/11までの週の最も重要なコンピュータビジョンの論文トップです」
- 「LanguageChainを使用して大規模言語モデルをあなたのソフトウェアとうまく連携させる方法」
- ユレカ:大規模な言語モデルをコーディングすることによる人間レベルの報酬設計
- 「OpenAI Dev Day 2023 創設者サム・オルトマンの基調講演からの4つの重要発表、見逃せません!」
- このAI論文では、マルチビューの冗長性を超えるための新しいマルチモーダル表現学習手法であるFACTORCLを提案しています