# OCR Macro: 정답셋 워크플로우 이 프로젝트는 여러 OCR 모델의 결과물을 효율적으로 비교하고 수정하여, 고품질의 정답셋(Ground Truth) 데이터셋을 구축하기 위한 일련의 도구와 워크플로우를 제공합니다. ## 프로젝트 개요 프로젝트는 크게 두 가지 핵심 도구로 구성됩니다. 1. **`run_ocr.py`**: 대량의 문서를 OCR API로 보내고 결과를 자동으로 저장하는 CLI 스크립트. 2. **`app.py`**: OCR 결과물을 원본과 비교하며 수정하고, 정답셋을 생성하는 Streamlit 기반 웹 애플리케이션. ## 구성 요소 상세 ### 1. `workspace/run_ocr.py` 대량의 문서에 대한 OCR을 자동화하는 커맨드 라인 인터페이스(CLI) 스크립트입니다. - **주요 기능**: 병렬 처리, 자동 재시도(Exponential Backoff), OCR 공급자 선택(`paddle`/`upstage`), 순차 처리 모드(API의 RPS 제한 대응). - **사용법**: `docs/run_ocr_readme.md` 파일 참조. ### 2. `workspace/app.py` OCR 결과물을 시각적으로 비교하고 수정하여 정답셋을 생성하는 Streamlit 기반 웹 애플리케이션입니다. - **주요 기능**: 세션 기반 협업, 3-Way 비교 뷰, 동적 레이아웃, 작업 완료 상태 추적, 정답셋 재수정, 결과물 zip 다운로드. - **사용법**: `docs/app_readme.md` 파일 참조. ## 설치 및 실행 ### 설치 프로젝트의 루트 디렉토리에서 다음 명령어를 실행하여 필요한 라이브러리를 설치합니다. ```bash pip install -r requirements.txt ``` ### 실행 #### OCR 자동화 스크립트 ```bash # 예시: upstage 모델을 사용하여 3초 간격으로 순차 처리 python workspace/run_ocr.py ./source_documents ./result_jsons/upstage --provider upstage --delay 3 ``` #### 정답셋 생성 웹 애플리케이션 ```dockerfile docker compose up ``` ## 디렉토리 구조 (권장) ``` ocr_macro/ ├── source_documents/ # 원본 이미지/PDF 파일 ├── result_jsons/ │ ├── paddle_ocr/ # paddle_ocr 결과 JSON 파일 │ └── upstage/ # upstage 결과 JSON 파일 ├── workspace/ │ ├── app.py # 정답셋 생성 웹 앱 │ ├── run_ocr.py # OCR 자동화 스크립트 │ ├── shared_sessions/ # app.py의 작업 세션 데이터 (자동 생성) │ │ └── {seed}/ │ │ ├── docs/ │ │ ├── jsons_paddle_ocr/ │ │ ├── jsons_upstage/ │ │ └── groundtruth/ # 최종 정답셋 (자동 생성) │ └── ... ├── requirements.txt └── README.md # 본 파일 ```