본문 바로가기
AI/LLM

[LLM] 🚀 Claude 3.5로 문서 처리를 빠르고 쉽게! 📝

by 데이터 벌집 2024. 11. 3.
반응형

🚀 Claude 3.5로 문서 처리를 빠르고 쉽게! 📝

오늘은 Claude 3.5를 활용해 문서를 효율적으로 처리하는 방법을 알려드릴게요! Claude 3.5는 지능형 문서 처리 (IDP, Intelligent Document Processing)를 지원하며, 이 기술을 통해 스캔된 이미지나 PDF 같은 비정형 데이터를 구조화된 정보로 변환할 수 있어요. 이제 Claude와 함께 문서를 손쉽게 처리하는 방법을 살펴볼까요? 😊

 

[LLM] 🚀 Claude 3.5로 문서 처리를 빠르고 쉽게! 📝

 

https://claude.ai/

 

Claude

Talk with Claude, an AI assistant from Anthropic

claude.ai

 

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를 사용해 보고 싶지 않으신가요? 🎉 문서 처리를 더욱 간편하게 만들어줄 거예요! 더 궁금한 점이 있거나 다른 활용 예시가 필요하다면 댓글로 알려주세요. 😊✨

 

https://claude.ai/new

반응형