水曜日, 7月 2, 2025
水曜日, 7月 2, 2025
- Advertisment -
ホームニューステックニュースBedrockのPDFサポートについて検証しましたが、、 #AWS - Qiita

BedrockのPDFサポートについて検証しましたが、、 #AWS – Qiita



BedrockのPDFサポートについて検証しましたが、、 #AWS - Qiita

Bedrockにアップデートきました!!Claudeモデルの引用とPDFサポートです!

もうブログが出てます!

ブログ出てますが、自分の手を動かすのが大事!二番煎じバンザイ!

引用とPDFサポートとは?

この2つの機能は、Anthropic社が提供しているAPIでは以前から提供されていた機能です。

引用

Claudeは、ドキュメントに関する質問に回答する際に詳細な引用を提供することができ、レスポンス内の情報ソースを追跡して検証するのに役立ちます。

PDFサポート

Claudeを使用してPDFを処理します。ドキュメントからテキストを抽出し、グラフを分析し、視覚的なコンテンツを理解します。

疑問。

ところで、Bedrockって、前からPDFサポートありませんでした?

はい。BedrockのConverse APIはPDFをサポートしています。一年ほど前のアップデートです。なんか知らんけど

で、今回検証したところ、違いがありました!!

Converse APIのドキュメントサポートとの違い

Converse APIは、PDFからテキストを抽出して処理を行います。
対して、今回追加されたClaudeのPDFサポート機能は、PDFから抽出した文字に加え、各ページも画像化したうえで処理を行います。

これは、大きな違いです! (←最近よく目にするコーディングエージェントの返し文句)

検証

検証しました。

AWSのWhat’s Newを画像化して更にPDFにしました。なので、テキストは全く含まれないPDFです。

(画像にした状態)
image.png

検証1:Converse API

まず、Converse APIです。

import boto3

with open("document.pdf", mode="rb") as f:
    pdf_data = f.read()


client = boto3.client("bedrock-runtime", region_name="ap-northeast-1")

model_id = "apac.anthropic.claude-sonnet-4-20250514-v1:0"

response = client.converse(
    modelId=model_id,
    messages=[
        {
            "role": "user",
            "content": [
                {"text": "PDFドキュメントに書かれている内容を要約してください。"},
                {
                    "document": {
                        "name": "PDF",
                        "format": "pdf",
                        "source": {"bytes": pdf_data},
                    }
                },
            ],
        }
    ],
)

print(json.dumps(response, indent=2, ensure_ascii=False))
申し訳ございませんが、提供されたPDFドキュメントの内容が空白のようです。document_contentの部分に何も表示されていないため、要約することができません。

PDFの内容を要約するためには、以下のいずれかをお試しください:

1. PDFファイルを再度アップロードしてください
2. PDFの内容がテキストとして正しく読み取れているか確認してください
3. 画像形式のPDFの場合は、OCR処理が必要な場合があります

PDFの内容が正しく表示されましたら、喜んで要約させていただきます。

はい。期待通り空白でしたね。

Converse APIのPDFサポートは画像の中の文字は読めない

検証2:ClaudeのPDFサポート機能

続いて、ClaudeのPDFサポート機能ですが、 スマートな指定の仕方がわかりません!!

わかっている方法は以下の2つです。

  • 引用を有効にする
  • InvokeModel APIを使う

引用を有効にする

引用を有効にする

+ import json
  
  import boto3
  
  with open("document.pdf", mode="rb") as f:
      pdf_data = f.read()
  
  
  client = boto3.client("bedrock-runtime", region_name="ap-northeast-1")
  
  model_id = "apac.anthropic.claude-sonnet-4-20250514-v1:0"
  
  response = client.converse(
      modelId=model_id,
      messages=[
          {
              "role": "user",
              "content": [
                  {"text": "PDFドキュメントに書かれている内容を要約してください。"},
                  {
                      "document": {
                          "name": "PDF",
                          "format": "pdf",
                          "source": {"bytes": pdf_data},
+                         "citations": {"enabled": True},
                      }
                  },
              ],
          }
      ],
  )
  
- print(response["output"]["message"]["content"][0]["text"])
+ print(
+     json.dumps(response["output"]["message"]["content"], indent=2, ensure_ascii=False)
+ )
[
  {
    "text": "このPDFドキュメントは、Amazon BedrockのClaude モデルに新しく追加されたCitations APIとPDFサポート機能について説明しています。以下に要約をまとめます:\n\n## 主要な発表内容\n\n"
  },
  {
    "text": "Amazon Bedrock introduces Citations API and PDF support for Anthropic's Claude Models that empower developers to build more trustworthy AI applications and expand document processing capabilities."
  },
  {
    "text": "\n\n## Citations APIの機能\n\n"
  },
  {
    "text": "The Citations API allows Claude to ground its answers in source documents, providing detailed references to the exact sentences and passages used to generate responses. This leads to more verifiable and trustworthy outputs, crucial for applications requiring high accuracy and transparency."
  },
  {
    "text": "\n\n## 活用分野\n\n"
  },
  {
    "text": "With the new Citations API, developers can enhance the reliability of their AI-powered applications. This feature is particularly valuable in fields such as legal research, academic writing, and fact-checking, where the ability to trace information back to its source is critical."
  },
  {
    "text": "\n\n## PDFサポート機能\n\n"
  },
  {
    "text": "PDF support for Claude further extends Amazon Bedrock's capabilities, allowing users to extract text, analyze charts, and understand visual content from PDF documents. This comprehensive document analysis enables more efficient processing of complex documents, making it easier for businesses to derive insights from their existing PDF libraries."
  },
  {
    "text": "\n\n## 対応モデルと利用可能性\n\n"
  },
  {
    "text": "The Citations API and PDF support for Claude are available for Claude Opus 4, Claude Sonnet 4, Claude Sonnet 3.7, Claude Sonnet 3.5v2."
  },
  {
    "text": " "
  },
  {
    "text": "These features can be accessed through Amazon Bedrock's Invoke Model and Converse APIs, allowing for seamless integration into existing workflows and applications."
  },
  {
    "text": "\n\nこのアップデートは、AI アプリケーションの信頼性向上と、文書処理能力の拡張を目的とした重要な機能追加となっています。"
  }
]

画像中の文字もいい感じに取得してくれてます!
ただ、textが複数に分かれてちょっと気まずい。。

引用を有効にしてConverse APIを使うと、ClaudeのPDFサポート機能が使われる

この例では引用は生成してくれてないですが、引用がつくと更に複雑な構造になります。ドキュメントから抜粋します。

image.png

InvokeModel APIを使う

InvokeModel APIを使う

import base64
import json

import boto3

with open("document.pdf", mode="rb") as f:
    pdf_data = base64.standard_b64encode(f.read()).decode("utf-8")

client = boto3.client("bedrock-runtime", region_name="ap-northeast-1")

model_id = "apac.anthropic.claude-sonnet-4-20250514-v1:0"

response = client.invoke_model(
    modelId=model_id,
    body=json.dumps(
        {
            "anthropic_version": "bedrock-2023-05-31",
            "max_tokens": 1024,
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "text",
                            "text": "PDFドキュメントに書かれている内容を要約してください。",
                        },
                        {
                            "type": "document",
                            "source": {
                                "type": "base64",
                                "media_type": "application/pdf",
                                "data": pdf_data,
                            },
                        },
                    ],
                }
            ],
        }
    ),
    contentType="application/json",
)

response_body = json.loads(response["body"].read())
response_text = response_body["content"][0]["text"]

print(response_text)
このPDFドキュメントは、Amazon BedrockでのClaudeモデル向けの新機能について説明したAWSの発表記事です。

## 主な内容の要約

**発表日:** 2025年6月30日

**新機能:**
1. **Citations API(引用API)** - ClaudeがソースドキュメントのURL、ページ、段落を引用し、回答の根拠を明確にする機能
2. **PDF対応** - PDFドキュメントからのテキスト抽出、図表分析、視覚的コンテンツの理解が可能

**主なメリット:**
- **信頼性向上:** 回答に対する詳細な参照情報により、検証可能で信頼性の高い出力を実現
- **透明性の確保:** 高精度と透明性が求められるアプリケーションに最適
- **効率的な文書処理:** 複雑なPDF文書の包括的な分析が可能

**対象モデル:** Claude Opus 4、Claude Sonnet 4、Claude Sonnet 3.7、Claude Sonnet 3.5v2

**活用分野:** 法務調査、学術執筆、ファクトチェックなど、情報源の追跡が重要な分野

**アクセス方法:** Amazon BedrockのInvoke ModelおよびConverse APIを通じて利用可能

これらの機能により、開発者はより信頼性の高いAIアプリケーションを構築し、既存のPDFライブラリから効率的にインサイトを得ることができるようになります。

一つのテキストで取得できました。レスポンスの扱いはこれが一番簡単かもですね。

InvokeModel APIを使うと、ClaudeのPDFサポート機能を使うことが可能

まとめ

  • ClaudeのPDFサポートは、Converse APIのものより精度は良くなりそう!
  • ただし、画像化して使ってるので、利用トークンは増加
  • 引用付き or InvokeModel のどちらかを使う必要がある。スマートじゃない気がする





Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -