Multi-modal AI — Kết hợp text, image và code với Claude
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.
Bai viet co huu ich khong?
Bản quyền thuộc về tác giả. Vui lòng dẫn nguồn khi chia sẻ.




