Diese Funktion ist für Zero Data Retention (ZDR) qualifiziert. Wenn deine Organisation eine ZDR-Vereinbarung hat, werden Daten, die über diese Funktion gesendet werden, nicht gespeichert, nachdem die API-Antwort zurückgegeben wurde.
Du kannst Claude zu beliebigen Texten, Bildern, Diagrammen und Tabellen in den von dir bereitgestellten PDFs befragen. Einige Beispiel-Anwendungsfälle:
Claude funktioniert mit jedem Standard-PDF. Stelle sicher, dass deine Anfragegröße diese Anforderungen erfüllt:
| Anforderung | Limit |
|---|---|
| Maximale Anfragegröße | 32 MB (variiert je nach Plattform) |
| Maximale Seiten pro Anfrage | 600 (100, wenn das Kontextfenster der Anfrage unter 1M Token liegt) |
| Format | Standard-PDF (keine Passwörter/Verschlüsselung) |
Beide Limits gelten für die gesamte Anfrage-Payload, einschließlich aller anderen Inhalte, die zusammen mit PDFs gesendet werden. Für große PDFs solltest du in Betracht ziehen, sie mit der Files API hochzuladen und per file_id zu referenzieren, um die Anfrage-Payloads klein zu halten.
Dichte PDFs (viele Seiten mit kleiner Schrift, komplexe Tabellen oder umfangreiche Grafiken) können das Kontextfenster füllen, bevor das Seitenlimit erreicht wird. Anfragen mit großen PDFs können auch fehlschlagen, bevor das Seitenlimit erreicht wird, selbst bei Verwendung der Files API. Versuche, das Dokument in Abschnitte aufzuteilen; bei großen Dateien kann, da jede Seite als Bild verarbeitet wird, auch das Herunterskalieren eingebetteter Bilder helfen.
Da die PDF-Unterstützung auf Claudes Vision-Fähigkeiten basiert, unterliegt sie denselben Einschränkungen und Überlegungen wie andere Vision-Aufgaben.
PDF-Unterstützung ist verfügbar über die Claude API, Claude Platform auf AWS, Amazon Bedrock (siehe Amazon Bedrock PDF-Unterstützung), Google Cloud und Microsoft Foundry. Alle aktiven Modelle unterstützen die PDF-Verarbeitung.
Bei der Verwendung der PDF-Unterstützung über die Converse API, Teil von Claude auf Amazon Bedrock (Legacy), gibt es zwei unterschiedliche Dokumentverarbeitungsmodi:
Wichtig: Um Claudes vollständige visuelle PDF-Verständnisfähigkeiten in der Converse API zu nutzen, musst du Zitationen aktivieren. Ohne aktivierte Zitationen greift die API nur auf die einfache Textextraktion zurück. Erfahre mehr über das Arbeiten mit Zitationen.
Converse Document Chat (Ursprünglicher Modus - nur Textextraktion)
Claude PDF Chat (Neuer Modus - vollständiges visuelles Verständnis)
Wenn Claude bei Verwendung der Converse API keine Bilder oder Diagramme in deinen PDFs erkennt, musst du wahrscheinlich das Zitations-Flag aktivieren. Ohne dieses greift Converse nur auf die einfache Textextraktion zurück.
Dies ist eine bekannte Einschränkung der Converse API. Für Anwendungen, die eine visuelle PDF-Analyse ohne Zitationen erfordern, solltest du stattdessen die InvokeModel API verwenden.
Reine Textdateien wie .txt, .csv oder .md können direkt in Dokumentblöcken verwendet werden: Lade sie mit dem MIME-Typ text/plain in die Files API hoch und referenziere sie per file_id. Binärformate wie .xlsx oder .docx werden in Dokumentblöcken nicht unterstützt und müssen zuerst in Text oder PDF konvertiert werden. Siehe Arbeiten mit anderen Dateiformaten.
Beginnen wir mit einem einfachen Beispiel unter Verwendung der Messages API. Du kannst Claude PDFs auf drei Arten bereitstellen:
document-Inhaltsblöckenfile_id aus der Files APIAuf Amazon Bedrock und Google Cloud sind derzeit nur base64-kodierte Quellen verfügbar. Auf Microsoft Foundry wird die Files API für auf Azure gehostete Deployments nicht unterstützt.
Der einfachste Ansatz ist, ein PDF direkt über eine URL zu referenzieren:
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "url",
"url": "https://assets.anthropic.com/m/1cd9d098ac3e6467/original/Claude-3-Model-Card-October-Addendum.pdf",
},
},
{"type": "text", "text": "What are the key findings in this document?"},
],
}
],
)
print(message.content)Die Antwort liefert Claudes Analyse als Textblöcke in content, mit dem Token-Verbrauch in usage:
{
"id": "msg_01Hfp8YuFjQ55VgWbpdHDehB",
"type": "message",
"role": "assistant",
"model": "claude-opus-4-8",
"content": [
{
"type": "text",
"text": "This document is an addendum to the Claude 3 model card, reporting updated evaluation results. The key findings include..."
}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 45000,
"output_tokens": 300
}
}Wenn du PDFs von deinem lokalen System senden musst oder wenn keine URL verfügbar ist:
import base64
import httpx
# Lade und kodiere zuerst das PDF
pdf_url = "https://assets.anthropic.com/m/1cd9d098ac3e6467/original/Claude-3-Model-Card-October-Addendum.pdf"
pdf_data = base64.standard_b64encode(
httpx.get(pdf_url, follow_redirects=True).content
).decode("utf-8")
# Alternative: Aus einer lokalen Datei laden
# with open("document.pdf", "rb") as f:
# pdf_data = base64.standard_b64encode(f.read()).decode("utf-8")
# Sende es mit Base64-Kodierung an Claude
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "base64",
"media_type": "application/pdf",
"data": pdf_data,
},
},
{"type": "text", "text": "What are the key findings in this document?"},
],
}
],
)
print(message.content)Für PDFs, die du wiederholt verwendest, oder wenn du den Kodierungsaufwand vermeiden möchtest, verwende die Files API (Beta):
client = anthropic.Anthropic()
# Lade die PDF-Datei hoch
with open("/path/to/document.pdf", "rb") as f:
file_upload = client.beta.files.upload(file=("document.pdf", f, "application/pdf"))
# Verwende die hochgeladene Datei in einer Nachricht
message = client.beta.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
betas=["files-api-2025-04-14"],
messages=[
{
"role": "user",
"content": [
{
"type": "document",
"source": {"type": "file", "file_id": file_upload.id},
},
{"type": "text", "text": "What are the key findings in this document?"},
],
}
],
)
print(message.content)Wenn du ein PDF an Claude sendest, laufen die folgenden Schritte ab:
Das System extrahiert den Inhalt des Dokuments.
Claude analysiert sowohl den Text als auch die Bilder, um das Dokument besser zu verstehen.
Claude antwortet und bezieht sich dabei gegebenenfalls auf den Inhalt des PDFs.
Claude kann sich bei seiner Antwort sowohl auf textuelle als auch auf visuelle Inhalte beziehen. Du kannst die Leistung weiter verbessern, indem du die PDF-Unterstützung mit Folgendem kombinierst:
Die Token-Anzahl einer PDF-Datei hängt vom gesamten aus dem Dokument extrahierten Text sowie von der Anzahl der Seiten ab:
Du kannst Token-Zählung verwenden, um die Kosten für deine spezifischen PDFs zu schätzen.
Befolge diese Best Practices für optimale Ergebnisse:
Für die Verarbeitung großer Mengen solltest du diese Ansätze in Betracht ziehen:
Cache PDFs mit Prompt-Caching, um die Leistung bei wiederholten Abfragen zu verbessern:
import base64
import httpx
# Zuerst das PDF laden und kodieren
pdf_url = "https://assets.anthropic.com/m/1cd9d098ac3e6467/original/Claude-3-Model-Card-October-Addendum.pdf"
pdf_data = base64.standard_b64encode(
httpx.get(pdf_url, follow_redirects=True).content
).decode("utf-8")
# Erstelle eine Nachricht mit dem gecachten Dokument
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "base64",
"media_type": "application/pdf",
"data": pdf_data,
},
"cache_control": {"type": "ephemeral"},
},
{
"type": "text",
"text": "Which model has the highest human preference win rates across each use-case?",
},
],
}
],
)
print(message.content)Verwende die Message Batches API, um viele PDFs in einer Anfrage zu verarbeiten:
import base64
import httpx
# Lade und kodiere zuerst das PDF
pdf_url = "https://assets.anthropic.com/m/1cd9d098ac3e6467/original/Claude-3-Model-Card-October-Addendum.pdf"
pdf_data = base64.standard_b64encode(
httpx.get(pdf_url, follow_redirects=True).content
).decode("utf-8")
# Erstelle einen Batch von Anfragen, die das Dokument verwenden
client = anthropic.Anthropic()
message_batch = client.messages.batches.create(
requests=[
{
"custom_id": "my-first-request",
"params": {
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "base64",
"media_type": "application/pdf",
"data": pdf_data,
},
},
{
"type": "text",
"text": "Which model has the highest human preference win rates across each use-case?",
},
],
}
],
},
},
{
"custom_id": "my-second-request",
"params": {
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "base64",
"media_type": "application/pdf",
"data": pdf_data,
},
},
{
"type": "text",
"text": "Extract 5 key insights from this document.",
},
],
}
],
},
},
]
)
print(message_batch)Batches werden asynchron verarbeitet. Um den Fortschritt zu prüfen und Ergebnisse nach Abschluss der Verarbeitung abzurufen, siehe Batch-Verarbeitung.
Claudes Vision-Fähigkeiten ermöglichen es, Bilder zu verstehen und zu analysieren, was spannende Möglichkeiten für multimodale Interaktion eröffnet.
Erkunde praktische Beispiele zur PDF-Verarbeitung im Cookbook-Rezept.
Sieh dir die vollständige API-Dokumentation zur PDF-Unterstützung an.
Was this page helpful?