Nâng caoHướng dẫnClaude

Multi-modal AI — Kết hợp text, image và code với Claude

Điểm nổi bật

Nhấn để đến mục tương ứng

  1. 1Xác định đúng vấn đề trước khi nghĩ tới giải pháp
  2. 2Khung tư duy nền tảng giúp ra quyết định nhất quán
  3. 3Áp dụng vào thực tế với quy trình 4 bước
  4. 4Tránh những sai lầm phổ biến khi triển khai
Multi-modal AI — Kết hợp text, image và code với Claude

Kỹ thuật sử dụng Claude multimodal: xử lý hình ảnh qua API, document understanding, diagram analysis, và OCR.

Claude Multimodal là gì?

Claude không chỉ xử lý văn bản — từ Claude 3 trở đi, tất cả các model (Opus 4, Sonnet 4, Haiku 3.5) đều hỗ trợ vision, tức là khả năng phân tích và hiểu nội dung hình ảnh. Bạn có thể gửi ảnh chụp màn hình, biểu đồ, sơ đồ, tài liệu scan, ảnh sản phẩm, hay bất kỳ hình ảnh nào và Claude sẽ phân tích cùng với text prompt của bạn.

Khả năng này mở ra nhiều use cases thực tế: phân tích tài liệu không có text layer, đọc biểu đồ/bảng số liệu từ ảnh, review UI/UX design, phân tích code từ screenshot, hay OCR cho tài liệu tiếng Việt.

Gửi hình ảnh qua API

Có hai cách gửi hình ảnh: base64 encoding hoặc URL.

Cách 1: Base64 encoding (cho file local)

import anthropic
import base64

client = anthropic.Anthropic()

# Đọc và encode hình ảnh
with open("chart.png", "rb") as f:
    image_data = base64.standard_b64encode(f.read()).decode("utf-8")

response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": image_data
                    }
                },
                {
                    "type": "text",
                    "text": "Phân tích biểu đồ này và cho tôi biết xu hướng chính."
                }
            ]
        }
    ]
)
print(response.content[0].text)

Cách 2: URL (cho hình ảnh public)

response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "url",
                        "url": "https://example.com/product-screenshot.png"
                    }
                },
                {
                    "type": "text",
                    "text": "Mô tả UI/UX của màn hình này và đề xuất cải thiện."
                }
            ]
        }
    ]
)

Định dạng hình ảnh được hỗ trợ

Định dạng MIME type Ghi chú
JPEG image/jpeg Phổ biến nhất, file nhỏ
PNG image/png Lossless, tốt cho screenshot
GIF image/gif Chỉ frame đầu tiên được phân tích
WebP image/webp Modern format, hiệu quả

Giới hạn

  • Kích thước tối đa: 5MB per image
  • Số lượng images per request: không có giới hạn cứng, nhưng context window áp dụng
  • Độ phân giải tối ưu: Claude resize ảnh về max edge 1568px hoặc 1.15MP trước khi xử lý
  • Ảnh quá nhỏ (dưới 200x200px) có thể giảm chất lượng phân tích

Image Token Pricing

Hình ảnh được quy đổi sang tokens để tính giá. Claude dùng công thức:

# Số tokens của một hình ảnh:
tokens = (width * height) / 750

# Ví dụ:
# 800x600 PNG = 640 tokens
# 1920x1080 screenshot = 2765 tokens (Sonnet 4: ~$0.008)
# 4K image = 13107 tokens (~$0.04 với Sonnet 4)

Claude tự động resize ảnh lớn để tối ưu tokens. Với ảnh chứa nhiều text nhỏ, nên dùng ảnh độ phân giải cao để tăng độ chính xác OCR.

Document Understanding

Claude xử lý PDF và tài liệu phức tạp rất tốt. Với PDF, bạn có thể gửi trực tiếp qua API:

import anthropic
import base64

client = anthropic.Anthropic()

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

response = client.messages.create(
    model="claude-opus-4",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "document",
                    "source": {
                        "type": "base64",
                        "media_type": "application/pdf",
                        "data": pdf_data
                    }
                },
                {
                    "type": "text",
                    "text": "Tóm tắt các điều khoản chính của hợp đồng này."
                }
            ]
        }
    ]
)

# Với Prompt Caching cho document dài:
response = client.messages.create(
    model="claude-opus-4",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "document",
                    "source": {
                        "type": "base64",
                        "media_type": "application/pdf",
                        "data": pdf_data
                    },
                    "cache_control": {"type": "ephemeral"}
                },
                {
                    "type": "text",
                    "text": user_question
                }
            ]
        }
    ]
)

Diagram và Chart Interpretation

Claude đọc hiểu tốt các loại biểu đồ: line chart, bar chart, pie chart, flowchart, architecture diagram, ERD, và sơ đồ tổ chức. Để có kết quả tốt nhất:

prompt_for_chart = """Phân tích biểu đồ này:
1. Loại biểu đồ là gì?
2. Dữ liệu chính được hiển thị là gì?
3. Xu hướng hoặc patterns nổi bật?
4. Bất kỳ điểm dữ liệu đáng chú ý nào?
Trả lời bằng tiếng Việt, súc tích."""

OCR Use Cases

Claude hoạt động như OCR thông minh — không chỉ trích xuất text mà còn hiểu ngữ cảnh và cấu trúc của tài liệu:

Hóa đơn và chứng từ

response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=2048,
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": invoice_b64}},
                {"type": "text", "text": """Trích xuất thông tin từ hóa đơn này theo JSON format:
{
  "so_hoa_don": "",
  "ngay_hoa_don": "",
  "ten_cong_ty": "",
  "tong_tien": "",
  "thue_vat": "",
  "cac_mat_hang": []
}"""}
            ]
        }
    ]
)

Tài liệu tiếng Việt

Claude xử lý khá tốt tiếng Việt có dấu trong hình ảnh, kể cả font chữ in đậm, chữ viết tay in hoa, và tài liệu scan chất lượng trung bình.

So sánh nhiều hình ảnh

Đây là điểm mạnh của Claude multimodal — phân tích và so sánh nhiều ảnh trong một request:

response = client.messages.create(
    model="claude-opus-4",
    max_tokens=2048,
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "So sánh hai design này:"},
                {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": design_v1}},
                {"type": "text", "text": "Design V1 vs"},
                {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": design_v2}},
                {"type": "text", "text": """Design V2.
Đánh giá:
1. Tính dễ đọc (readability)
2. Cấu trúc thông tin (information hierarchy)
3. Phù hợp với mobile
4. Khuyến nghị version nào và tại sao"""}
            ]
        }
    ]
)

Image + Text Prompting Patterns

Pattern 1: Describe then ask

Yêu cầu Claude mô tả ảnh trước, sau đó đặt câu hỏi cụ thể. Hữu ích khi bạn không chắc ảnh chứa gì:

"Mô tả chi tiết nội dung của hình ảnh này. Sau đó cho tôi biết [câu hỏi cụ thể]."

Pattern 2: Structured extraction

Yêu cầu output dạng JSON hoặc table để dễ parse:

"Trích xuất tất cả thông tin sản phẩm từ ảnh catalogue này theo định dạng JSON."

Pattern 3: Critique and improve

Đặc biệt hiệu quả cho design review:

"Đây là landing page hiện tại của tôi. Phân tích và liệt kê 5 vấn đề cụ thể về UX, sau đó đề xuất cải thiện có thể thực hiện ngay."

Batch Processing

Khi cần xử lý nhiều ảnh, dùng Batch API để tối ưu chi phí (giảm 50%):

import anthropic

client = anthropic.Anthropic()

requests = []
for i, image_b64 in enumerate(images_list):
    requests.append({
        "custom_id": f"img-{i}",
        "params": {
            "model": "claude-haiku-3-5",
            "max_tokens": 512,
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": image_b64}},
                        {"type": "text", "text": "Mô tả ngắn gọn nội dung hình ảnh (1-2 câu)."}
                    ]
                }
            ]
        }
    })

batch = client.messages.batches.create(requests=requests)
print(f"Batch ID: {batch.id}")

Limitations

  • Claude không thể xử lý video — chỉ ảnh tĩnh
  • Ảnh có text rất nhỏ (dưới 10px) có thể bị đọc sai
  • Chữ viết tay khó đọc có thể gặp lỗi OCR
  • Ảnh y tế (X-quang, MRI) cần được review bởi chuyên gia — không dùng cho chẩn đoán lâm sàng
  • Một số loại biểu đồ phức tạp (3D charts, heavily overlapping data) có thể không đọc chính xác

Kết luận

Khả năng multimodal của Claude mở ra nhiều ứng dụng thực tế mà text-only AI không thể làm được. Từ tự động hóa xử lý hóa đơn, phân tích dữ liệu từ báo cáo scan, đến review thiết kế và code review từ screenshot — vision API biến Claude thành công cụ đa năng thực sự. Với pricing theo tokens và Batch API, chi phí xử lý hình ảnh rất hợp lý cho most use cases.

Còn thắc mắc về bài này?Claude Assistant đã nắm nội dung bài — hỏi trực tiếp hoặc chọn nhanh:

Bài viết có hữu ích không?

Bản quyền thuộc về tác giả. Vui lòng dẫn nguồn khi chia sẻ.

← Bài trước
Marketing Playbook — Claude cho marketers
Bài sau →
Agentic Coding — Phần 4: Bảo mật codebase khi dùng AI coding agent

Bình luận (0)

Khách
Bạn cần để bình luận