🚀 Claude 3.5로 문서 처리를 빠르고 쉽게! 📝
오늘은 Claude 3.5를 활용해 문서를 효율적으로 처리하는 방법을 알려드릴게요! Claude 3.5는 지능형 문서 처리 (IDP, Intelligent Document Processing)를 지원하며, 이 기술을 통해 스캔된 이미지나 PDF 같은 비정형 데이터를 구조화된 정보로 변환할 수 있어요. 이제 Claude와 함께 문서를 손쉽게 처리하는 방법을 살펴볼까요? 😊
IDP 기본 워크플로우
1️⃣ 문서 로드: 여러 형식의 문서를 수집해 OCR을 사용하여 이미지를 기계가 읽을 수 있는 텍스트로 변환합니다.
2️⃣ 분류 및 문서 분할: 문서를 개별 페이지 또는 섹션으로 분리하고, AI 모델을 사용해 각 문서를 분류합니다. 예를 들어, 송장, 계약서, 영수증 등으로 나눌 수 있어요.
3️⃣ 데이터 추출: 문서 유형에 맞게 특정 데이터를 추출합니다. 예를 들어 송장에서 총 금액이나 계약서에서 주요 조건을 추출하는 식입니다.
이 모든 과정을 거치면 JSON 형식의 구조화된 데이터로 결과를 얻게 됩니다. 🤖✨
Claude 3.5를 사용한 예제
예제 1: 이미지 입력만 사용하기
Claude 모델에 이미지를 직접 보내서 텍스트를 추출해볼까요? 이 방법은 Claude의 이미지 처리 기능을 활용하여 문서를 이해하고 텍스트를 추출합니다.
import anthropic
import base64
# Anthropic API 클라이언트 초기화
client = anthropic.Anthropic(api_key="your_anthropic_api_key")
def encode_image_to_base64(image_path):
"""
이미지 파일을 base64로 인코딩하는 함수
Args:
image_path: 이미지 파일 경로
Returns:
base64로 인코딩된 이미지 문자열
"""
with open(image_path, "rb") as img_file:
return base64.b64encode(img_file.read()).decode('utf-8')
def extract_text_from_image(image_path):
"""
이미지에서 텍스트를 추출하는 함수
Args:
image_path: 이미지 파일 경로
Returns:
추출된 텍스트
"""
# 이미지를 base64로 인코딩
encoded_image = encode_image_to_base64(image_path)
# Claude API 호출하여 텍스트 추출
response = client.messages.create(
model="claude-3-haiku-20240307",
max_tokens=1000,
temperature=0,
system="You are an advanced OCR that extracts markdown text from the image.",
messages=[
{
"role": "user",
"content": f"Extract text from the following image:\n\n{encoded_image}"
}
]
)
return response.content[0].text
# 사용 예시
image_path = "path/to/document.jpg" # 이미지 파일 경로 지정
extracted_text = extract_text_from_image(image_path)
print(extracted_text)
예제 2: PDF 텍스트와 이미지 입력 사용하기
이번에는 PDF에서 텍스트를 먼저 추출한 후 Claude 모델에 텍스트와 이미지를 함께 보내볼게요. 이 방법은 PyPDF를 활용해 PDF에서 텍스트를 추출하고, Claude의 이미지 처리 기능과 결합하여 더 나은 결과를 얻습니다.
import anthropic
import base64
from PyPDF2 import PdfReader
from pdf2image import convert_from_path
# Anthropic API 클라이언트 초기화
client = anthropic.Anthropic(api_key="your_anthropic_api_key")
def extract_text_from_pdf(pdf_path):
"""
PDF 파일에서 텍스트를 추출하는 함수
Args:
pdf_path: PDF 파일 경로
Returns:
추출된 텍스트
"""
reader = PdfReader(pdf_path)
extracted_text = ""
# 각 페이지에서 텍스트 추출
for page in reader.pages:
page_text = page.extract_text()
if page_text:
extracted_text += page_text + "\n"
return extracted_text
def convert_pdf_to_image(pdf_path):
"""
PDF 첫 페이지를 이미지로 변환하는 함수
Args:
pdf_path: PDF 파일 경로
Returns:
변환된 이미지 객체
"""
# PDF 첫 페이지만 이미지로 변환 (DPI=200)
images = convert_from_path(pdf_path, dpi=200, first_page=1, last_page=1)
if images:
return images[0]
return None
def encode_image_to_base64(image):
"""
이미지 객체를 base64로 인코딩하는 함수
Args:
image: PIL Image 객체
Returns:
base64로 인코딩된 이미지 문자열
"""
from io import BytesIO
buffered = BytesIO()
image.save(buffered, format="JPEG")
return base64.b64encode(buffered.getvalue()).decode('utf-8')
def extract_data_from_pdf(pdf_path):
"""
PDF에서 텍스트와 이미지 데이터를 추출하여 분석하는 함수
Args:
pdf_path: PDF 파일 경로
Returns:
Claude가 분석한 결과 텍스트
"""
# PDF에서 텍스트 추출
text_content = extract_text_from_pdf(pdf_path)
# PDF 첫 페이지를 이미지로 변환
image = convert_pdf_to_image(pdf_path)
if image:
encoded_image = encode_image_to_base64(image)
else:
encoded_image = ""
# Claude API 호출하여 텍스트와 이미지 분석
response = client.messages.create(
model="claude-3-haiku-20240307",
max_tokens=1000,
temperature=0,
system="You are an advanced OCR that extracts markdown text from the image and combines it with provided text.",
messages=[
{
"role": "user",
"content": f"Extract text from the following content:\n\nText:\n{text_content}\n\nImage:\n{encoded_image}"
}
]
)
return response.content[0].text
# 사용 예시
pdf_path = "path/to/document.pdf" # PDF 파일 경로 지정
extracted_data = extract_data_from_pdf(pdf_path)
print(extracted_data)
사용하기 전 준비사항
필요한 라이브러리 설치:
pip install anthropic
pip install PyPDF2
pip install pdf2image
PDF 이미지 변환을 위한 Poppler 설치:
- Windows: poppler-windows를 다운로드하여 설치
- Mac: brew install poppler
- Linux: apt-get install poppler-utils
Anthropic API 키 준비:
- Anthropic 웹사이트에서 API 키를 발급받아 코드의 your_anthropic_api_key 부분을 교체하세요.
결론
Claude 3.5는 문서 처리에 강력한 기능을 제공하여, 데이터를 효율적으로 추출하고 정리할 수 있도록 도와줍니다. 특히 이미지와 텍스트를 결합하여 다양한 형식의 문서에서 정보를 쉽게 가져올 수 있어요. 🤓
추가 팁
- 대용량 문서 처리 시에는 적절한 메모리 관리가 필요합니다.
- PDF 변환 시 DPI 값을 조절하여 이미지 품질과 처리 속도를 최적화할 수 있습니다.
- 에러 처리를 추가하여 더 안정적인 프로그램을 만드는 것을 추천합니다.
여러분도 Claude 3.5를 사용해 보고 싶지 않으신가요? 🎉 문서 처리를 더욱 간편하게 만들어줄 거예요! 더 궁금한 점이 있거나 다른 활용 예시가 필요하다면 댓글로 알려주세요. 😊✨
'AI > LLM' 카테고리의 다른 글
[LLM] 클로드 Claude AI를 이용해서 AI 감정 분석 봇을 만들어보자! AI Sentiment Bot Project (1) | 2024.11.08 |
---|---|
[LLM] 허깅페이스란? Hugging Face? (5) | 2024.11.05 |
[LLM] 🦙 Llama 3.2: Meta의 새로운 멀티모달 AI 모델 (5) | 2024.10.25 |
[LLM] LLM을 이용한 유닛 테스트 작성: 간단한 가이드 (4) | 2024.09.04 |
[LLM] LLM을 이용한 페어 프로그래밍: GEMINI API 활용 방법 (6) | 2024.09.03 |