langchain / / 2025. 4. 22. 18:10

Langchain을 사용하여 이미지에서 텍스트 추출하기

Langchain과 GPT-4 Vision을 사용하여 이미지에서 텍스트를 추출하는 방법에 대해 알아보자.

준비사항

먼저 필요한 라이브러리를 설치한다.

pip install python-dotenv langchain-openai

환경 설정

OpenAI API 키를 환경변수로 설정하기 위해 .env 파일을 사용한다.

from dotenv import load_dotenv

load_dotenv()

이미지 인코딩 함수 구현

이미지를 base64로 인코딩하는 유틸리티 함수를 만든다.

import base64
import os

def encode_image_from_file(file_path):
    with open(file_path, "rb") as image_file:
        image_content = image_file.read()
        file_ext = os.path.splitext(file_path)[1].lower()
        if file_ext in [".jpg", ".jpeg"]:
            mime_type = "image/jpeg"
        elif file_ext == ".png":
            mime_type = "image/png"
        else:
            mime_type = "image/unknown"
        return f"data:{mime_type};base64,{base64.b64encode(image_content).decode('utf-8')}"

이 함수는:

  • 이미지 파일을 읽어서 바이너리 데이터로 변환
  • 파일 확장자를 확인하여 적절한 MIME 타입 설정
  • base64로 인코딩하여 데이터 URL 형식으로 반환

OCR 실행하기

이제 Langchain을 사용하여 이미지에서 텍스트를 추출해보자.

# 이미지 경로 설정
image_path = "./invoice.jpeg"

# 시스템 프롬프트와 메시지 설정
system_prompt = "이미지에서 텍스트를 추출해줘. 추출한 텍스트만 응답으로 내려줘"
messages = [
    {
        "role": "system",
        "content": system_prompt,
    },
    {
        "role": "user",
        "content": [
            {
                "type": "image_url",
                "image_url": {"url": f"{encode_image_from_file(image_path)}"},
            },
        ],
    },
]

# Langchain ChatOpenAI 모델 초기화 및 실행
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4o-mini")
response = llm.invoke(messages)

결과 확인

실행 결과로 이미지에서 추출된 텍스트를 확인할 수 있ek.

print(response.content)

예제로 사용된 영수증 이미지에서 다음과 같은 텍스트가 추출되었다.

중요 정보는 마스킹했다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유