Contents
see List개요
AI가 텍스트만 처리하던 시대는 지났습니다. 멀티모달 AI는 텍스트, 이미지, 오디오, 비디오 등 여러 유형의 데이터를 동시에 이해하고 생성할 수 있습니다. GPT-4V, Claude 3.5, Gemini 1.5 등 최신 모델들은 강력한 멀티모달 능력을 기본 탑재하고 있습니다.
이 글에서는 멀티모달 AI의 실전 활용법을 다룹니다. 이미지 분석, 문서 OCR, 차트 해석, 그리고 텍스트와 이미지를 결합한 복합 작업의 구현 방법을 살펴봅니다.
핵심 개념: 멀티모달 처리 방식
멀티모달 AI의 핵심 처리 방식은 다음과 같습니다.
- 비전 인코더(Vision Encoder): 이미지를 토큰 시퀀스로 변환하여 언어모델이 이해할 수 있는 형태로 변환
- 크로스 어텐션(Cross-Attention): 텍스트 토큰과 이미지 토큰 간의 관계를 학습하여 통합 이해
- 통합 임베딩(Unified Embedding): 서로 다른 모달리티를 동일한 벡터 공간에 매핑
실무에서는 API를 통해 이미지와 텍스트를 함께 전송하면 모델이 자동으로 멀티모달 처리를 수행합니다.
실전 예제: 멀티모달 AI 구현
1. 이미지 분석과 설명 생성
import anthropic
import base64
from pathlib import Path
client = anthropic.Anthropic()
# 로컬 이미지 분석
image_data = base64.standard_b64encode(Path("screenshot.png").read_bytes()).decode("utf-8")
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=2048,
messages=[{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": image_data
}
},
{
"type": "text",
"text": "이 스크린샷의 UI를 분석하고, 접근성 개선점을 5가지 제안해주세요."
}
]
}]
)
print(response.content[0].text)
2. 문서 OCR + 구조화된 데이터 추출
# 영수증/인보이스에서 구조화된 데이터 추출
def extract_invoice_data(image_path: str) -> dict:
image_data = base64.standard_b64encode(
Path(image_path).read_bytes()
).decode("utf-8")
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=2048,
messages=[{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": image_data
}
},
{
"type": "text",
"text": "이 인보이스에서 다음 정보를 JSON으로 추출하세요:\n{\n \"vendor\": \"공급자명\",\n \"date\": \"날짜 (YYYY-MM-DD)\",\n \"items\": [{\"name\": \"품목\", \"quantity\": 수량, \"price\": 단가}],\n \"total\": 합계금액,\n \"tax\": 세금\n}"
}
]
}]
)
import json
return json.loads(response.content[0].text)
# 사용
invoice = extract_invoice_data("invoice.png")
print(f"공급자: {invoice['vendor']}, 합계: {invoice['total']}원")
3. 이미지 비교 분석
# 디자인 시안 비교
def compare_designs(before_path: str, after_path: str):
before = base64.standard_b64encode(Path(before_path).read_bytes()).decode()
after = base64.standard_b64encode(Path(after_path).read_bytes()).decode()
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=2048,
messages=[{
"role": "user",
"content": [
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": before}},
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": after}},
{"type": "text", "text": "두 디자인 시안을 비교하세요. 변경된 요소, 개선된 점, 주의할 점을 분석해주세요."}
]
}]
)
return response.content[0].text
활용 팁
- 이미지 해상도 최적화: 너무 큰 이미지는 토큰을 많이 소비합니다. 분석 목적에 맞게 리사이즈하세요. 일반적으로 1568px 이하가 적절합니다.
- 여러 이미지 한번에 전송: 비교 분석이나 문서 여러 페이지를 한 요청에 보내면 맥락을 유지한 분석이 가능합니다.
- 프롬프트에 구체적 지시: "이 이미지를 설명해줘"보다 "이 UI의 색상 대비 비율이 WCAG 2.1 AA 기준을 충족하는지 분석해줘"가 더 유용한 결과를 줍니다.
- 비용 주의: 이미지 토큰은 텍스트보다 비쌉니다. 배치 처리 시 비용을 사전에 추정하세요.
- 에러 처리: 이미지가 손상되었거나 형식이 지원되지 않는 경우를 대비한 예외 처리를 반드시 구현하세요.
마무리
멀티모달 AI는 텍스트 중심 AI의 한계를 넘어 더 풍부한 상호작용을 가능하게 합니다. 문서 처리 자동화, UI/UX 분석, 품질 검사 등 다양한 비즈니스 시나리오에서 실질적인 가치를 제공합니다. 이미지와 텍스트를 결합한 프롬프트 설계 능력이 앞으로 더욱 중요해질 것입니다.