Quay lai Blog
Hướng dẫn

Hướng Dẫn PDF Support Claude API — Đọc và Phân Tích Tài Liệu PDF

Đoàn Đình Tỉnh29 tháng 3, 202610 phut doc
Hướng Dẫn PDF Support Claude API — Đọc và Phân Tích Tài Liệu PDF
📘 Bản dịch tiếng Việt từ tài liệu chính thức của Anthropic. Cập nhật: 28/03/2026

Hướng Dẫn PDF Support Claude API — Đọc và Phân Tích Tài Liệu PDF

Claude API hỗ trợ xử lý tài liệu PDF một cách mạnh mẽ — không chỉ trích xuất văn bản mà còn phân tích biểu đồ, bảng số liệu và nội dung hình ảnh trong tài liệu. Đây là tính năng đặc biệt hữu ích cho doanh nghiệp SME Việt Nam cần xử lý tự động các tài liệu kinh doanh, báo cáo tài chính, hợp đồng hay hóa đơn.

Một số ứng dụng thực tế phổ biến:

  • Phân tích báo cáo tài chính, đọc hiểu biểu đồ và bảng số liệu
  • Trích xuất thông tin quan trọng từ hợp đồng, tài liệu pháp lý
  • Hỗ trợ dịch thuật tài liệu
  • Chuyển đổi thông tin trong tài liệu sang định dạng có cấu trúc (JSON, CSV, v.v.)
💡 Lưu ý về Zero Data Retention (ZDR): Tính năng này đủ điều kiện cho Zero Data Retention. Khi tổ chức của bạn có thỏa thuận ZDR, dữ liệu gửi qua tính năng này sẽ không được lưu trữ sau khi trả về API response.

Yêu cầu và giới hạn PDF

Claude hoạt động với mọi file PDF tiêu chuẩn. Đảm bảo request của bạn đáp ứng các yêu cầu sau:

Yêu cầu Giới hạn
Kích thước request tối đa 32 MB (có thể thay đổi theo nền tảng)
Số trang tối đa mỗi request 600 trang (100 trang cho model context window 200k token)
Định dạng PDF tiêu chuẩn (không mật khẩu, không mã hóa)

Cả hai giới hạn trên áp dụng cho toàn bộ payload request, bao gồm cả nội dung khác gửi cùng PDF. Với PDF dung lượng lớn, hãy cân nhắc upload qua Files API và tham chiếu bằng file_id để giữ payload nhỏ gọn.

💡 Mẹo với PDF dày đặc: PDF có nhiều trang chữ nhỏ, bảng phức tạp hoặc nhiều hình ảnh có thể lấp đầy context window trước khi đến giới hạn trang. Hãy thử chia tài liệu thành các phần nhỏ hơn. Vì mỗi trang được xử lý như một hình ảnh, việc giảm độ phân giải ảnh nhúng cũng có thể giúp ích.

Vì PDF Support dựa trên khả năng vision của Claude, tính năng này chịu ảnh hưởng bởi cùng giới hạn của Vision API.

Nền tảng và model hỗ trợ

PDF Support hiện được hỗ trợ qua direct API và Google Vertex AI. Tất cả các model Claude đang hoạt động đều hỗ trợ xử lý PDF.

Trên Amazon Bedrock, PDF Support có sẵn với một số điểm cần lưu ý quan trọng:

Hai chế độ xử lý PDF trên Amazon Bedrock Converse API

1. Converse Document Chat (Chế độ gốc — chỉ trích xuất văn bản):

  • Cung cấp trích xuất văn bản cơ bản từ PDF
  • Không thể phân tích hình ảnh, biểu đồ hoặc bố cục hình ảnh trong PDF
  • Tiêu thụ khoảng 1.000 token cho 3 trang PDF
  • Tự động được dùng khi không bật citations

2. Claude PDF Chat (Chế độ mới — hiểu hình ảnh đầy đủ):

  • Cung cấp phân tích hình ảnh hoàn chỉnh của PDF
  • Có thể phân tích biểu đồ, đồ thị, hình ảnh và bố cục hình ảnh
  • Xử lý mỗi trang dưới dạng văn bản lẫn hình ảnh để hiểu toàn diện
  • Tiêu thụ khoảng 7.000 token cho 3 trang PDF
  • Yêu cầu bật citations trong Converse API
⚠️ Lưu ý quan trọng: Để truy cập khả năng hiểu PDF hình ảnh đầy đủ của Claude trong Converse API, bạn phải bật citations. Nếu không bật citations, API sẽ chỉ dùng chế độ trích xuất văn bản cơ bản. Nếu khách hàng báo Claude không thấy được hình ảnh hoặc biểu đồ trong PDF khi dùng Converse API, rất có thể họ cần bật cờ citations.

Gửi yêu cầu PDF đầu tiên

Bạn có thể cung cấp PDF cho Claude theo 3 cách: URL trực tiếp, base64 encoding, hoặc qua Files API.

Cách 1: Dùng URL (đơn giản nhất)

Cách đơn giản nhất là tham chiếu trực tiếp PDF từ URL:

import anthropic

client = anthropic.Anthropic()
message = client.messages.create(
    model="claude-opus-4-6",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "document",
                    "source": {
                        "type": "url",
                        "url": "https://example.com/bao-cao-tai-chinh.pdf",
                    },
                },
                {"type": "text", "text": "Những kết quả quan trọng nhất trong tài liệu này là gì?"},
            ],
        }
    ],
)

print(message.content)

Cách 2: Base64-encoded PDF

Dùng khi bạn cần gửi PDF từ hệ thống cục bộ hoặc khi không có URL:

import anthropic
import base64
import httpx

# Tải và mã hóa PDF
pdf_url = "https://example.com/document.pdf"
pdf_data = base64.standard_b64encode(httpx.get(pdf_url).content).decode("utf-8")

# Hoặc đọc từ file local:
# with open("document.pdf", "rb") as f:
#     pdf_data = base64.standard_b64encode(f.read()).decode("utf-8")

client = anthropic.Anthropic()
message = client.messages.create(
    model="claude-opus-4-6",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "document",
                    "source": {
                        "type": "base64",
                        "media_type": "application/pdf",
                        "data": pdf_data,
                    },
                },
                {"type": "text", "text": "Tóm tắt nội dung chính của tài liệu này."},
            ],
        }
    ],
)

print(message.content)

Cách 3: Files API (khuyến nghị cho PDF dùng nhiều lần)

Với PDF bạn sẽ dùng nhiều lần, upload một lần qua Files API và tái sử dụng bằng file_id — tiết kiệm băng thông và cải thiện hiệu suất đáng kể:

import anthropic

client = anthropic.Anthropic()

# Bước 1: Upload PDF lên Files API
with open("document.pdf", "rb") as f:
    file_upload = client.beta.files.upload(
        file=("document.pdf", f, "application/pdf")
    )

# Bước 2: Dùng file_id trong các message tiếp theo
message = client.beta.messages.create(
    model="claude-opus-4-6",
    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": "Phân tích tài liệu này."},
            ],
        }
    ],
)

print(message.content)

Cách PDF Support hoạt động

Khi bạn gửi PDF cho Claude, hệ thống thực hiện các bước sau:

  1. Trích xuất nội dung tài liệu: Hệ thống chuyển đổi mỗi trang thành hình ảnh và trích xuất văn bản từ mỗi trang.
  2. Claude phân tích cả văn bản lẫn hình ảnh: Tài liệu được cung cấp dưới dạng kết hợp văn bản và hình ảnh. Điều này cho phép phân tích các yếu tố hình ảnh như biểu đồ, sơ đồ và nội dung phi văn bản.
  3. Claude phản hồi, tham chiếu nội dung PDF khi cần: Claude có thể tham chiếu cả nội dung văn bản lẫn hình ảnh trong phản hồi, tích hợp tốt với prompt caching, batch processing và tool use.

Ước tính chi phí token

Chi phí token của một file PDF phụ thuộc vào tổng văn bản trích xuất và số trang:

  • Chi phí token văn bản: Mỗi trang thường dùng 1.500–3.000 token tùy mật độ nội dung. Áp dụng giá API tiêu chuẩn, không có phí PDF bổ sung.
  • Chi phí token hình ảnh: Vì mỗi trang được chuyển thành hình ảnh, cách tính chi phí dựa trên hình ảnh sẽ được áp dụng tương tự như Vision API.

Bạn có thể dùng token counting API để ước tính chi phí cho PDF cụ thể trước khi xử lý hàng loạt.

Tối ưu hóa xử lý PDF

Một số thực hành tốt nhất để đạt hiệu quả cao nhất:

  • Đặt PDF trước văn bản trong request
  • Dùng font chữ tiêu chuẩn trong PDF
  • Đảm bảo văn bản rõ ràng, dễ đọc
  • Xoay trang về đúng chiều đứng trước khi gửi
  • Dùng số trang logic (từ PDF viewer) khi viết prompt
  • Chia PDF lớn thành các phần nhỏ khi cần
  • Bật prompt caching cho phân tích lặp lại

Dùng Prompt Caching với PDF

Khi phân tích cùng một PDF nhiều lần với các câu hỏi khác nhau, hãy bật prompt caching để giảm đáng kể chi phí và thời gian xử lý:

import anthropic
import base64
import httpx

client = anthropic.Anthropic()

pdf_data = base64.standard_b64encode(
    httpx.get("https://example.com/bao-cao-nam.pdf").content
).decode("utf-8")

# Lần đầu — thiết lập cache
message1 = client.messages.create(
    model="claude-opus-4-6",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "document",
                    "source": {
                        "type": "base64",
                        "media_type": "application/pdf",
                        "data": pdf_data,
                    },
                    "cache_control": {"type": "ephemeral"},  # Bật cache
                },
                {"type": "text", "text": "Doanh thu quý nào cao nhất?"},
            ],
        }
    ],
)

# Lần sau — đọc từ cache, rẻ hơn nhiều
message2 = client.messages.create(
    model="claude-opus-4-6",
    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": "Lợi nhuận ròng năm nay là bao nhiêu?"},
            ],
        }
    ],
)

print(message2.content)

Xử lý hàng loạt PDF

Để xử lý lượng lớn tài liệu (ví dụ: hàng trăm hóa đơn, hợp đồng hoặc báo cáo), dùng Message Batches API để tối ưu chi phí và hiệu suất — giảm tới 50% chi phí so với xử lý từng request:

import anthropic
import base64
import httpx

client = anthropic.Anthropic()

# Giả sử bạn có danh sách PDF cần xử lý
pdf_files = [
    {"url": "https://example.com/hoa-don-001.pdf", "question": "Tổng giá trị hóa đơn?"},
    {"url": "https://example.com/hoa-don-002.pdf", "question": "Ngày thanh toán hóa đơn?"},
]

# Chuẩn bị batch requests
requests = []
for i, pdf_info in enumerate(pdf_files):
    pdf_data = base64.standard_b64encode(
        httpx.get(pdf_info["url"]).content
    ).decode("utf-8")

    requests.append({
        "custom_id": f"invoice-{i+1}",
        "params": {
            "model": "claude-opus-4-6",
            "max_tokens": 1024,
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "document",
                            "source": {
                                "type": "base64",
                                "media_type": "application/pdf",
                                "data": pdf_data,
                            },
                        },
                        {"type": "text", "text": pdf_info["question"]},
                    ],
                }
            ],
        },
    })

# Gửi batch
batch = client.messages.batches.create(requests=requests)
print(f"Batch ID: {batch.id}")
print(f"Trạng thái: {batch.processing_status}")
🚀 Khám phá thêm về Claude
Xem đầy đủ thông tin về Claude tại trang Claude Anthropic trên Agentwork.vn. Tìm hiểu thêm về Vision API của Claude hoặc Tool Use để tự động hóa quy trình. Khám phá thêm các nền tảng AI hàng đầu khác phù hợp cho doanh nghiệp của bạn.
Chia se bai viet
ĐĐ

Đoàn Đình Tỉnh

admin

Bai viet lien quan

Chat ZaloGoi: 0911.000.000Chat Telegram