지난 글에서 PaddleOCR 3.0의 세 가지 모델(PP-OCRv5, PP-StructureV3, PaddleOCR-VL)을 테스트해 봤습니다. PP-OCRv5는 빠르고 가볍고, PaddleOCR-VL은 결과가 좋지만 GPU가 필요했습니다.

문제는 GPU 환경입니다. 매번 Colab 열어서 런타임 연결하고, 모델 로드하고, 이미지 업로드하고... 테스트할 때마다 이 과정을 반복하는 게 번거로웠습니다. 그래서 AWS에 배포해서 웹 브라우저에서 바로 테스트할 수 있는 플레이그라운드를 만들어봤습니다.


PaddleOCR Service란?

PaddleOCR Service는 PaddleOCR 모델들을 AWS 서버리스 인프라에서 테스트할 수 있는 웹 기반 플레이그라운드입니다. 이미지나 PDF를 업로드하면 OCR 결과를 바로 확인할 수 있고, 바운딩 박스 오버레이로 인식 영역도 시각적으로 볼 수 있습니다.

 참고: 프로덕션 솔루션이 아닙니다. PaddleOCR 모델을 AWS 환경에서 실험하고 평가하기 위한 용도로 만들었습니다. 


지원 모델

이전 글에서 테스트했던 세 가지 모델을 모두 지원합니다.

PP-OCRv5

일반적인 텍스트 추출에 최적화된 모델입니다. 80개 이상 언어를 지원하고, 속도가 빠릅니다.

옵션

  • 언어 선택 (한국어, 영어, 중국어, 일본어 등)
  • 문서 방향 자동 보정
  • 문서 왜곡 보정
  • 텍스트 라인 방향 감지

PP-StructureV3

문서 구조 분석 모델입니다. 제목, 본문, 표, 이미지 등 20가지 레이아웃 요소를 구분합니다. 이전 테스트에서 한글 인식률이 낮았던 점은 여전하지만, 영문 문서나 표 추출이 필요한 경우에는 유용합니다.

감지 가능한 레이아웃

  • doc_title: 문서 제목
  • paragraph_title: 섹션 제목
  • text: 본문 텍스트
  • table: 표 (Markdown으로 변환)
  • formula: 수식
  • image, chart: 이미지, 차트
  • 그 외 14가지 요소

PaddleOCR-VL

0.9B VLM 기반 End-to-End 문서 파싱 모델입니다. 이전 테스트에서 가장 결과가 좋았던 모델이죠. 별도 옵션 없이 자동으로 언어와 구조를 인식합니다.

로컬에서 CPU로 돌리면 이미지당 10분씩 걸렸는데, SageMaker GPU 인스턴스에서는 훨씬 빠르게 처리됩니다.


아키텍처

AWS 서버리스 아키텍처로 구성했습니다.

컴포넌트 AWS 서비스 설명
Frontend CloudFront + S3 React 웹 애플리케이션
인증 Cognito 사용자 인증
API API Gateway + Lambda REST API
OCR 엔진 SageMaker Endpoint PaddleOCR 모델 추론
저장소 S3 문서 및 결과 저장
컨테이너 ECR + CodeBuild SageMaker용 Docker 이미지

처리 흐름

  1. Cognito로 로그인
  2. React 프론트엔드에서 이미지 업로드
  3. API Gateway → Lambda → S3 저장
  4. Lambda가 SageMaker 엔드포인트 호출
  5. SageMaker에서 PaddleOCR 추론
  6. 결과를 S3에 저장하고 프론트엔드로 반환

출력 포맷

네 가지 출력 포맷을 지원합니다.

포맷 설명 저장 형식
Markdown 구조화된 텍스트 (표 포함) .md
HTML 웹 표시용 리치 포맷 .html
JSON 프로그래밍용 원본 데이터 .json
Blocks 바운딩 박스와 크롭 이미지 시각화 -

Document 탭에서는 OCR 결과를 직접 편집할 수 있습니다. 잘못 인식된 텍스트를 수정하거나 불필요한 부분을 삭제할 수 있죠. 편집 후 HTML 파일로 저장됩니다.


배포 방법

AWS CloudShell에서 간단하게 배포할 수 있습니다.

# 저장소 클론
git clone https://github.com/yunwoong7/paddle-ocr-service.git
cd paddle-ocr-service

# 배포 스크립트 실행
chmod +x deploy.sh
./deploy.sh

배포 과정에서 관리자 이메일과 SageMaker 인스턴스 타입을 입력하면 됩니다. 전체 배포는 약 20-30분 정도 소요됩니다.

비용 주의

 ⚠️ SageMaker 엔드포인트는 24시간 실행되며, ml.g5.xlarge 기준 월 $1,000 이상 비용이 발생합니다. 

사용하지 않을 때는 엔드포인트를 삭제하세요.

# 엔드포인트만 삭제
./cleanup.sh --endpoint-only

# 전체 리소스 삭제
./cleanup.sh

 


마무리

PaddleOCR을 AWS에서 돌릴 수 있게 만들어봤습니다. 로컬에서 테스트할 때의 번거로움은 줄었고, GPU 환경도 신경 쓸 필요 없어졌습니다. 다만 비용이 만만치 않아서, 상시 운영보다는 필요할 때만 띄워서 테스트하는 용도로 쓰는 게 좋을 것 같습니다.

코드는 GitHub에 공개해뒀습니다.

반응형