[python] FastAPI로 OCR(광학 문자 인식) 서비스 구현하기

이 기술 블로그 포스트에서는 Python의 FastAPI를 사용하여 OCR(광학 문자 인식) 서비스를 구현하는 방법에 대해 알아보겠습니다.

목차

FastAPI 소개

FastAPI는 높은 성능과 빠른 개발 속도를 가진 현대적인 웹 프레임워크입니다. 이를 통해 간편하게 API 서비스를 구축할 수 있습니다. 또한, FastAPI는 타입 힌팅(Type Hinting)을 지원함으로써 IDE에서 자동 완성 및 정적 분석을 용이하게 합니다.

OCR 서비스 구현하기

FastAPI 프로젝트 설정

먼저, FastAPI 프로젝트를 설정합니다. 가상 환경을 만들고 FastAPI를 설치한 후, 기본적인 프로젝트 구조를 설정합니다.

mkdir ocr_service
cd ocr_service
python -m venv venv
source venv/bin/activate
pip install fastapi uvicorn

OCR 모델 통합

OCR 기능을 제공하기 위해 OCR 모델을 사용합니다. 예를 들어, pytesseract를 사용하여 이미지에서 텍스트를 추출하는 기능을 구현할 수 있습니다.

import pytesseract
from PIL import Image

def ocr_image(image_path):
    img = Image.open(image_path)
    text = pytesseract.image_to_string(img)
    return text

API 엔드포인트 구현

이제 FastAPI를 사용하여 OCR API 엔드포인트를 구현합니다.

from fastapi import FastAPI, UploadFile, File
from fastapi.responses import PlainTextResponse
from typing import List

app = FastAPI()

@app.post("/ocr", response_class=PlainTextResponse)
async def ocr(files: List[UploadFile] = File(...)):
    texts = []
    for file in files:
        text = ocr_image(file.filename)
        texts.append(text)
    return '\n'.join(texts)

위의 코드는 /ocr 엔드포인트를 통해 이미지를 업로드하고, 해당 이미지에서 추출한 텍스트를 반환하는 기능을 구현한 것입니다.

결론

이렇게 FastAPI를 사용하여 OCR 서비스를 구현할 수 있습니다. FastAPI의 높은 성능과 빠른 개발 속도를 통해 빠르게 안정적인 API를 구축할 수 있습니다. OCR 모델을 통합하고 API 엔드포인트를 구현함으로써 실제 환경에서 활용 가능한 서비스를 구현할 수 있습니다.

참고 자료