[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 엔드포인트를 구현함으로써 실제 환경에서 활용 가능한 서비스를 구현할 수 있습니다.