섹션별 상세
비정형 문서에서 특정 정보를 추출하기 위해 복잡한 ML 모델을 학습시키는 대신 LLM의 도구 사용 능력을 활용한다. Claude Tool Use는 사용자가 정의한 JSON 스키마를 바탕으로 모델이 외부 도구를 호출할지 판단하고 필요한 인자를 생성하는 방식이다. 이를 통해 운전면허증이나 보험 카드와 같은 다양한 문서 타입에 유연하게 대응할 수 있다.
전체 시스템은 Amazon S3, AWS Lambda, Amazon Bedrock을 결합한 서버리스 아키텍처로 구성된다. 사용자가 S3 버킷에 이미지를 업로드하면 이벤트 알림이 발생하여 Lambda 함수를 실행하고, Lambda는 이미지를 Base64로 인코딩하여 Bedrock API를 호출한다. 이 구조는 인프라 관리 부담을 최소화하면서 수요에 따라 자동으로 확장되는 이점이 있다.

정확한 데이터 추출을 위해 Lambda 함수 내에서 명확한 도구 스키마(Tool Schema) 정의가 필수적이다. extract_license_fields와 같은 도구 이름과 함께 추출할 필드의 타입 및 필수 여부를 JSON 형태로 정의하여 모델에 전달한다. Claude 4.5 Sonnet은 이 스키마를 이해하고 이미지 내 텍스트를 분석하여 구조화된 JSON 응답을 반환한다.
python
import boto3, json
import base64
def lambda_handler(event, context):
bedrock = boto3.client("bedrock-runtime")
s3 = boto3.client("s3")
bucket = event["Records"][0]["s3"]["bucket"]["name"]
key = event["Records"][0]["s3"]["object"]["key"]
file = s3.get_object(Bucket=bucket, Key=key)
# Convert image to base64
image_data = file["Body"].read()
base64_image = base64.b64encode(image_data).decode('utf-8')
# Define tool schema
tools = [{
"name": "extract_license_fields",
"input_schema": {
"type": "object",
"properties": {
"first_name": { "type": "string" },
"last_name": { "type": "string" },
"issue_date": { "type": "string" },
"license_number": { "type": "string" },
"address": {
"type": "object",
"properties": {
"street": { "type": "string" },
"city": { "type": "string" },
"state": { "type": "string" },
"zip": { "type": "string" }
}
}
},
"required": ["first_name", "last_name", "issue_date", "license_number", "address"]
}
}]
payload = {
"anthropic_version": "bedrock-2023-05-31",
"max_tokens": 2048,
"messages": [{
"role": "user",
"content": [
{ "type": "image", "source": { "type": "base64", "media_type": "image/jpeg", "data": base64_image } },
{ "type": "text", "text": "Extract the driver's license fields from this image." }
]
}],
"tools": tools
}
// ...(중략)S3에서 이미지를 가져와 Base64로 인코딩한 후 Claude 4.5 Sonnet 모델에 도구 스키마와 함께 전달하는 Lambda 함수 핵심 로직
성능 최적화를 위해 Lambda의 메모리와 타임아웃 설정을 조정해야 하며, 특히 고해상도 이미지 처리를 위해 타임아웃을 최소 30초 이상으로 설정할 것이 권장된다. 또한 tool_choice 파라미터를 auto로 설정하여 모델의 자율성을 부여하거나, 특정 도구 이름을 명시하여 결정론적 동작을 유도할 수 있다. 추출된 결과는 CloudWatch Logs를 통해 실시간으로 확인 가능하다.


용어 해설
- 도구 사용 (함수 호출)(Tool Use)
- — LLM이 외부 도구나 API를 호출할 수 있도록 정의된 스키마에 맞춰 인자를 생성하는 능력이다. 모델이 단순히 텍스트를 생성하는 것을 넘어, 특정 구조의 데이터를 출력하여 외부 시스템과 상호작용하게 함으로써 복잡한 작업을 자동화한다.
- 개체명 인식(Entity Recognition)
- — 비정형 텍스트나 이미지 데이터에서 이름, 날짜, 주소와 같은 특정 정보를 식별하고 추출하는 기술이다. 전통적인 방식은 전용 모델 학습이 필요했으나, 최근에는 LLM의 추론 능력을 활용해 유연하게 구현하는 추세이다.
- 서버리스 아키텍처(Serverless Architecture)
- — 개발자가 서버 인프라를 직접 관리하지 않고 코드 실행 시에만 자원을 할당받아 사용하는 방식이다. AWS Lambda와 S3를 결합하면 이벤트 발생 시에만 비용이 발생하며 수요에 따라 자동으로 확장되는 효율적인 시스템 구축이 가능하다.
- JSON 스키마(JSON Schema)
- — JSON 데이터의 구조를 정의하고 유효성을 검사하기 위한 표준 형식이다. LLM에 도구 사용법을 전달할 때 어떤 필드가 필요하고 각 필드의 데이터 타입이 무엇인지 명시하는 용도로 사용된다.
기술
- Amazon Bedrock
- Anthropic Claude 4.5 Sonnet
- AWS Lambda
- Amazon S3
- Python
- Boto3
활용 사례
- 운전면허증 데이터 자동 추출
- 보험 청구서 처리
- 비즈니스 양식 디지털화
언급된 리소스
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 03. 25.수집 2026. 03. 25.출처 타입 RSS
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.