Llama 3.2-Vision을 사용한 로컬 OCR 애플리케이션 구축하기

OCR(Optical Character Recognition)은 이미지를 텍스트로 변환하는 기술로, 문서 디지털화 및 데이터 추출에 유용하게 활용된다. 이 글에서는 Llama 3.2-Vision 모델과 Ollama 플랫폼을 사용해 로컬 환경에서 OCR 애플리케이션을 구축하는 방법을 소개한다.

1. 사전 준비

애플리케이션 구축 전에 다음 준비가 필요하다.

  • Python 3.7 이상: 프로젝트를 실행하기 위한 필수 요소.
  • Ollama 플랫폼: Llama 3.2-Vision 모델을 실행하는 데 필요한 소프트웨어.

Ollama 설치 방법

  1. Ollama 공식 웹사이트에 접속해 운영 체제에 맞는 설치 패키지를 다운로드한다.
  2. 설치 후, 터미널에서 ollama 명령어를 실행해 설치가 제대로 되었는지 확인한다.

2. Llama 3.2-Vision 모델 설정

Llama 3.2-Vision 모델을 다운로드하고 설정하려면 터미널에서 다음 명령어를 실행한다.

ollama run llama3.2-vision

이 명령어는 모델을 자동으로 다운로드하고 로컬 환경에 설정한다.


3. Python 환경 구성

  1. 프로젝트 디렉토리 생성
    원하는 경로에 새로운 디렉토리를 생성한다.

    mkdir ocr-project && cd ocr-project
  2. 가상 환경 설정 (선택 사항)
    Python의 가상 환경을 설정해 프로젝트 의존성을 관리한다.

    python -m venv venv
    source venv/bin/activate  # Windows는 `venv\Scripts\activate`
  3. 필수 라이브러리 설치
    프로젝트에 필요한 라이브러리를 설치한다.

    pip install requests Pillow

4. OCR 스크립트 작성

다음 Python 코드는 이미지를 Llama 3.2-Vision 모델로 보내 OCR 결과를 반환받는 과정을 보여준다.

코드 예제

import base64
import requests
from PIL import Image

# 이미지 파일을 Base64로 인코딩
def encode_image_to_base64(image_path):
    with open(image_path, "rb") as img_file:
        return base64.b64encode(img_file.read()).decode('utf-8')

# Ollama API 호출 함수
def call_ollama_api(image_base64):
    url = "http://localhost:11434/api"  # Ollama의 기본 API 엔드포인트
    payload = {
        "model": "llama3.2-vision",
        "image": image_base64
    }
    headers = {"Content-Type": "application/json"}
    response = requests.post(url, json=payload, headers=headers)
    return response.json()

# OCR 실행
if __name__ == "__main__":
    image_path = "sample_image.jpg"  # OCR을 실행할 이미지 경로
    image_base64 = encode_image_to_base64(image_path)
    result = call_ollama_api(image_base64)
    print("OCR 결과:", result)

코드 설명

  1. 이미지 인코딩
    이미지 파일을 Base64 형식으로 변환해 API 요청에 포함한다.

  2. API 호출
    Ollama의 로컬 서버로 POST 요청을 보내고 결과를 JSON 형식으로 반환받는다.

  3. 결과 출력
    OCR 결과를 콘솔에 출력한다.


5. 애플리케이션 테스트

위 스크립트를 실행해 sample_image.jpg와 같은 이미지 파일에서 텍스트를 추출할 수 있다. Ollama가 실행 중이어야 하며, API 요청이 정상적으로 처리되면 텍스트 결과가 출력된다.