re:Invent2024 で発表されたAmazon Bedrock Data Automation を試してみる

## この記事について
AWS re:Invent 2024で発表されたAmazon Bedrock Data Automation について、AWSドキュメントを読み解きつつ、実際に試しながら解説してみました。

## Amazon Bedrock Data Automationとは？
> Bedrock Data Automation (BDA) is a cloud-based service that simplifies the process of extracting valuable insights from unstructured content—such as documents, images, video, and audio. BDA leverages generative AI to automate the transformation of multi-modal data into structured formats, enabling developers to build applications and automate complex workflows with greater speed and accuracy.

※[Data automation](https://docs.aws.amazon.com/bedrock/latest/userguide/bda.html) より引用

Amazon Bedrock Data Automation （BDA）は、文書、画像、動画、音声などの非構造化データから洞察を得ることができるようなサービスです。

### ユースケース
以下のユースケースがあるようです。
- ドキュメント処理
    - 文書処理タスクをこなす（分類、抽出、正規化、検証など）
- メディア分析
    - 動画データを分析し、各シーンの要約、動画内に表示されるテキストの抽出、不適切な部分を識別するなど
- 生成型AIアシスタント
    - 文書だけでなく、画像や動画、音声などをベースとして回答させるようにすることでRAG機能が強化されたAIアシスタントをアプリケーションに組み込むことができる

### 機能/用語の解説
https://docs.aws.amazon.com/bedrock/latest/userguide/bda-how-it-works.html

#### プロジェクト
画像もしくは音声、動画データの書き起こしをするために作成が必要なものです。
書き起こしたいデータの種類毎に、プロジェクトを作成する、といったところでしょうか。

プロジェクト作成自体は以下の画面のように名前を入れて`プロジェクトを作成`を押下すれば簡単にできます。
![スクリーンショット 2024-12-19 225952.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/84de323c-45b6-6c83-e126-3ed147cc22c7.png)

#### 標準出力
Amazon Bedrock側で事前定義された出力形式に基づいて、出力をしてくれる、というものになります。
結果は`StandardOutPutDocument.json`というファイルに出力されます。
一部分を切り取ってみるとこんな感じです。
![スクリーンショット 2024-12-20 075158.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/1a7f7e27-7c38-7bcb-a57f-9e1a1d1cad64.png)

なお、標準出力においてもプロジェクト毎に出力の仕方がある程度選択可能です。
![スクリーンショット 2024-12-19 230434.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/5a89f7b9-28b7-e162-461a-2538556f0a2a.png)


#### カスタム出力
標準出力にはない出力形式で結果を出力できる、というものになります。後述のブループリントが関わってきます。

##### ブループリント
入力ファイルの目的の出力形式と抽出ロジックを定義できる機能です。
予め、Bedrock側に「ドキュメントをXXの形式で抽出してもらいますよ」というお願いをして、それを元にテキスト抽出をすることができる、といったところでしょうか。


AWS側でいくつかのブループリントが用意されているようです。ユーザー自身が手動で作成することも可能です。実際、サンプルのブループリントを作成し、その使い勝手を試してみました。
テスト用のプロジェクトを作成し、
Invoiceというサンプルのブループリントを作成してみました。

抽出対象の画像に対し事前情報の説明を与えているようです。
>説明
An invoice is a document that contains the list of service rendered or items purchased from a company by a person or another company. It contains details such as when the payment is due and how much is owed.

この「ブループリント」に基づいて、プロジェクト内でアップロードされた画像に関して情報を抽出してくれるようです。
画面右側の「抽出」欄で、事前定義されたフィールド名に該当する結果が見つかるか、またその情報の信頼度を出力してくれています。
![スクリーンショット 2024-12-20 071453.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/d34b5497-a0d4-4009-13af-c3d9420f3bf2.png)
![スクリーンショット 2024-12-20 071437.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/b6c87ebe-26ec-2a88-0b12-27b155d422be.png)






## 実際に試してみる
### 注意点
:::note info
本機能は現状プレビュー版で、2024年12月16日時点で、
利用可能リージョンは米国東部リージョン（オレゴン）のみです。
:::
:::note warn
サービスクォータは以下です。
https://docs.aws.amazon.com/bedrock/latest/userguide/bda-limits.html
また、料金体系の詳細については[料金ページ](https://aws.amazon.com/bedrock/pricing/?nc1=h_ls#:~:text=Data%20Automation-,Data%20Automation,-Region%3A)をご覧ください。
:::

### テスト
:::note info
テスト用のファイルアップロードについては、
AWS側が用意しているサンプル・ローカルから・S3からインポートの3種類の方法があります。
:::
まずはAWS側が用意しているサンプルの`BackStatement.jpg`を試してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/c752a65e-4ab6-2b9f-2ba5-4fbf27ed3a97.png)


書き起こし結果は以下のようでした。中々良い感じに読み取れているようですね。
![スクリーンショット 2024-12-20 082402.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/795e135d-cd4e-1219-7d80-761ff978d3bd.png)

![スクリーンショット 2024-12-20 082414.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/89e7117e-7c50-857e-8041-955c5150809f.png)


また、日本語のドキュメントについても試してみます。[厚生労働省マイナ保険証の利用促進等について](https://www.mhlw.go.jp/content/10200000/001332517.pdf)を読み込もうとしましたが、以下のように21ページ以上のデータをアップロードしようとすると、エラーになってしまうようでした。
![スクリーンショット 2024-12-19 233336.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/3e790a58-63fb-9342-d8d3-3de8461f698f.png)

そのため別の[ドキュメント](https://www.mhlw.go.jp/content/10200000/001332517.pdf)（参照:厚生労働省[「マイナンバーカードの健康保険証利用」](https://www.mhlw.go.jp/stf/newpage_08277.html#kokumin1)）で試しました。
使用したドキュメントがあまり良くなかった(あるいは追加何か設定をしなければいけなかった)可能性はもしかしたらあるかも知れませんが、テスト結果から判断して、
日本語の検出はまだ難しそうでした。
![スクリーンショット 2024-12-19 233736.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/af13a022-86d8-86ab-f7c2-23c1373417f1.png)

<details><summary>抽出結果（一部）</summary>

```text
Ministry of Health Labour and Welfare

# C

0612

![](./0a94359c-6c1b-4ccd-9cd2-53c2b926e5f9.png)
 

# A 8

1234

AP

![](./b642d77b-0cca-45b5-abbd-89f74d42a60c.png)
 ill

C-

-

-

--

![](./d6fa2fa8-a416-46c3-80f4-8f13cf9b716a.png)
 total

******

![](./f6694320-e6e3-4e95-8e50-bbc394e0ad84.png)
 

- .
- ,
- .
- CELLINED, L

()

(07121).

![](./90ec3ed9-e12c-45d8-8773-ef441cb5ff17.png)
 

121

![](./386a1c7f-e373-46bd-b30c-e8fbf335de98.png)
 

ELT .



CloudShell
フィードバック
© 2024, Amazon W
```
</details>



## まとめ
簡単ではありますが、
AWS re:Invent 2024で発表されたAmazon Bedrock Data Automation について、実際に試しながら解説してみました。
日本語への対応はまだまだ難しい？かなと感じましたが、いずれにせよBedrockの機能の幅が広がったことで期待が高まりますね。
本機能は、Bedrockの機能「ナレッジベース」 との連携もできるとのことなので、例えば、Kendraで読み込むことのできない画像PDFデータを代わりにBDAで読み取り、ナレッジベースと連携しRAGを実現する、という手段を取ることもできるなと感じました。
私自身、業務で、「テキスト情報がないためにKendraでインデックス化できないドキュメントに対してRAGをどのように組み込むか」で悩んだ経験がありますが、BDAが今後その解決策を提供してくれるかもしれませんね。
また、 [guidance-for-multimodal-data-processing-using-amazon-bedrock-data-automation](https://github.com/aws-solutions-library-samples/guidance-for-multimodal-data-processing-using-amazon-bedrock-data-automation)というリポジトリもあるようなので、こちらも今後試していきたい所です。