Overview
인보이스 및 물류 문서에서 구조화된 데이터를 자동으로 추출하는 end-to-end AI 문서 처리 파이프라인을 구축했습니다.
문서 수집, 전처리, OCR, 문서 이해, 구조화된 데이터 추출까지 전 과정을 자동화하여 클라우드 환경에서 확장 가능하고 효율적인 문서 처리를 가능하게 했습니다.
Architecture
PDF Upload (S3)
↓
Preprocessing (PyMuPDF, OpenCV)
↓
OCR (EasyOCR / Tesseract)
↓
Document Understanding (LayoutLM)
↓
Inference (SageMaker / Local)
↓
JSON Output
↓
API Serving (FastAPI)
Tech Stack
AI / ML
- LayoutLM (Document Understanding)
- PyTorch, HuggingFace Transformers
- OCR (EasyOCR, Tesseract)
- Amazon SageMaker (Model Training / Inference)
- SageMaker Studio (Jupyter Notebook 기반 실험 환경)
- SageMaker Training Jobs (분산 학습 및 하이퍼파라미터 튜닝)
- SageMaker Endpoints (실시간 추론 배포)
Data Processing
- OpenCV (Image preprocessing)
- PyMuPDF (PDF parsing)
- Label Studio (Data annotation)
Backend
- Python, FastAPI
- REST API for AI inference
- Batch processing pipeline
Cloud / Infrastructure
- AWS S3 (Data storage)
- AWS ECS (Containerized service)
- AWS Lambda (Preprocessing)
- AWS CloudFront (Distribution)
- AWS IAM (Access control)
DevOps
- Docker
- Jenkins (CI/CD)
- GitHub
Monitoring
- CloudWatch
- Logging & Debugging
My Role
- End-to-end AI 파이프라인 설계 및 구현
- PDF 및 이미지 입력에 대한 데이터 전처리 로직 개발
- EasyOCR, Tesseract를 활용한 OCR 파이프라인 구축
- LayoutLM 기반 문서 이해 및 추론 로직 구현
- Amazon SageMaker를 활용한 모델 학습 및 추론 워크플로우 구성
- SageMaker Studio Jupyter Notebook 기반 실험 환경 구성 및 데이터 탐색
- SageMaker Training Jobs를 활용한 분산 학습 및 하이퍼파라미터 튜닝
- SageMaker Endpoints를 통한 실시간 추론 API 배포
- FastAPI 기반 추론 API 개발
- AWS 인프라 설계 및 운영 (S3, ECS, Lambda)
- Jenkins를 활용한 CI/CD 파이프라인 구현
- 시스템 성능 모니터링 및 안정성 개선
Key Features
End-to-End Automation 문서 업로드부터 구조화된 JSON 출력까지 전 과정 자동화
Scalable Architecture AWS(S3, ECS, Lambda)를 활용한 클라우드 네이티브 설계
AI-Based Document Understanding LayoutLM을 활용한 key-value 추출
Flexible OCR Pipeline EasyOCR, Tesseract 멀티 엔진 OCR 지원
API-Based Integration 외부 연동을 위한 FastAPI 기반 추론 API 제공
Challenges & Solutions
Problem 1: OCR 정확도 문제
노이즈가 많거나 품질이 낮은 PDF에서 OCR 정확도가 낮은 문제가 발생했습니다.
Solution
- 이미지 전처리 적용 (thresholding, denoising)
- 여러 OCR 엔진을 조합하여 정확도 향상
# 이미지 전처리 예시
import cv2
import numpy as np
def preprocess_image(image):
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
denoised = cv2.fastNlMeansDenoising(gray, h=10)
_, thresh = cv2.threshold(denoised, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
return threshProblem 2: 모델 추론 성능 문제
대용량 모델로 인해 추론 속도가 느린 문제가 발생했습니다.
Solution
- 추론 파이프라인 최적화
- 배치 추론과 실시간 추론 분리
- SageMaker를 활용한 확장 가능한 추론 환경 구성
Problem 3: 데이터 어노테이션 품질 문제
학습 데이터의 레이블링이 일관되지 않는 문제가 있었습니다.
Solution
- Label Studio 워크플로우 도입
- 구조화된 레이블링 가이드라인 정의
Results
- 문서 처리 파이프라인 자동화 구축 완료
- 수동 작업 감소 및 처리 속도 개선
- 안정적인 AI 추론 서비스 운영 가능
What I Learned
- End-to-end AI 시스템 설계 (데이터 → 모델 → 배포)
- 실전 MLOps 개념 (학습, 추론, 배포)
- 실제 환경에서의 OCR 한계 처리 방법
- 확장 가능한 클라우드 기반 AI 서비스 설계