79 lines
3.6 KiB
Markdown
79 lines
3.6 KiB
Markdown
# PaddleOCR 기반 문서 분석 웹 애플리케이션
|
|
|
|
이 프로젝트는 [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)의 강력한 PP-StructureV3 모델을 사용하여 이미지 속 문서의 구조를 분석하고, 그 결과를 시각적으로 보여주는 Streamlit 웹 애플리케이션입니다.
|
|
|
|
사용자는 이미지 파일을 업로드하여 문서의 레이아웃, 텍스트, 표 등을 자동으로 분석하고 구조화된 결과를 확인할 수 있습니다.
|
|
|
|
## ✨ 주요 기능
|
|
|
|
- **간편한 이미지 업로드**: 웹 인터페이스를 통해 손쉽게 이미지 파일(JPG, PNG, BMP 등)을 업로드할 수 있습니다.
|
|
- **지능형 문서 분석**: PP-StructureV3 모델을 사용하여 다음과 같은 복합적인 분석을 수행합니다.
|
|
- **레이아웃 분석 (Layout Analysis)**: 문서 내의 제목, 문단, 표, 그림 등의 영역을 자동으로 식별합니다.
|
|
- **광학 문자 인식 (OCR)**: 이미지 속 모든 텍스트를 정확하게 추출합니다.
|
|
- **표 인식 (Table Recognition)**: 표의 구조를 인식하고 셀 단위로 데이터를 추출하여 HTML로 변환합니다.
|
|
- **자동 보정**: 기울어진 문서를 바로잡는 등 OCR 정확도를 높이기 위한 전처리 작업을 수행합니다.
|
|
- **시각적인 결과 확인**: 분석 과정에서 생성되는 다양한 결과물(영역 감지, OCR 결과 등)을 단계별 이미지와 상세한 설명으로 확인할 수 있습니다.
|
|
- **구조화된 데이터 제공**: 분석된 텍스트와 표 데이터를 화면에 체계적으로 표시하며, 원본 JSON 데이터도 확인할 수 있습니다.
|
|
|
|
## 🛠️ 사용 기술
|
|
|
|
- **애플리케이션 프레임워크**: Streamlit
|
|
- **OCR 및 문서 분석**: PaddleOCR (PP-StructureV3)
|
|
- **패키지 및 환경 관리**: uv
|
|
- **컨테이너화**: Docker, Docker Compose
|
|
|
|
## 🚀 실행 방법
|
|
|
|
이 프로젝트를 실행하는 가장 권장되는 방법은 Docker를 사용하는 것입니다. Docker는 시스템 의존성 문제를 해결하여 어떤 환경에서든 안정적인 실행을 보장합니다.
|
|
|
|
### 1. Docker를 이용한 실행 (권장)
|
|
|
|
**요구사항**: Docker, Docker Compose가 설치되어 있어야 합니다.
|
|
|
|
터미널에서 다음 명령어를 실행하세요.
|
|
|
|
```bash
|
|
docker-compose up --build
|
|
```
|
|
|
|
빌드가 완료되면, 웹 브라우저에서 `http://localhost:8502` 주소로 접속하여 애플리케이션을 사용할 수 있습니다.
|
|
|
|
### 2. 로컬 환경에서 직접 실행
|
|
|
|
**요구사항**: Python 3.12+, `uv`
|
|
|
|
**주의**: 이 방법은 시스템에 `opencv-python`이 필요로 하는 라이브러리(예: `libGL.so.1`)가 설치되어 있지 않으면 오류가 발생할 수 있습니다.
|
|
|
|
1. **가상 환경 생성 및 활성화**:
|
|
```bash
|
|
# 가상 환경 생성
|
|
uv venv
|
|
|
|
# (Linux/macOS)
|
|
source .venv/bin/activate
|
|
```
|
|
|
|
2. **의존성 패키지 설치**:
|
|
```bash
|
|
uv pip install -r pyproject.toml
|
|
```
|
|
|
|
3. **Streamlit 앱 실행**:
|
|
```bash
|
|
streamlit run app.py --server.port=8502
|
|
```
|
|
|
|
이제 웹 브라우저에서 `http://localhost:8502` 주소로 접속할 수 있습니다.
|
|
|
|
## 📂 프로젝트 구조
|
|
|
|
```
|
|
.
|
|
├── 📄 app.py # Streamlit 웹 애플리케이션 메인 코드
|
|
├── 🐳 docker-compose.yml # Docker Compose 설정 파일
|
|
├── 🐳 dockerfile # Docker 이미지 빌드를 위한 설정 파일
|
|
├── 📝 pyproject.toml # Python 프로젝트 설정 및 의존성 목록
|
|
├── 🔒 uv.lock # 의존성 버전 고정 파일
|
|
└── 📖 README.md # 프로젝트 설명서
|
|
```
|