2025-10-30 09:38:52 +09:00
2025-10-30 09:38:00 +09:00
2025-10-30 09:38:00 +09:00
2025-10-30 09:38:00 +09:00
2025-10-30 09:38:00 +09:00
2025-09-03 10:29:02 +09:00

OCR 정답셋 구축 워크플로우

이 프로젝트는 다양한 OCR 모델의 결과물을 효율적으로 비교하고 수정하여, 고품질의 정답셋(Ground Truth) 데이터셋을 구축하기 위한 워크플로우와 도구를 제공합니다.

주요 기능

OCR 실행 스크립트

  • 일괄 처리: 디렉토리 내의 모든 문서(이미지, PDF)에 대해 OCR 작업을 한 번에 수행합니다.
  • 다중 모델 지원: upstage, pp-ocr, pp-structure 등 여러 OCR 엔진을 선택하여 사용할 수 있습니다.
  • 유연한 실행 방식: 여러 파일을 동시에 처리하는 병렬 모드와 API 요청 제한(RPS)에 대응하기 위한 순차 모드를 모두 지원합니다.
  • 안정적인 실행: API 요청 실패 시 자동으로 재시도하는 로직이 포함되어 안정성을 높였습니다.

정답셋 검수 웹앱 (Streamlit)

  • 3-Way 비교 뷰: 원본 문서, AI 모델 결과, 정답셋 편집기를 한 화면에서 직관적으로 비교하며 작업할 수 있습니다.
  • 세션 기반 협업: 생성된 고유 URL을 공유하여 여러 작업자가 동일한 환경에서 협업할 수 있습니다.
  • 작업 상태 추적: 완료된 파일은 목록에 아이콘으로 표시되어 작업 현황을 쉽게 파악하고 중복 작업을 방지합니다.
  • 결과물 간편 다운로드: 작업이 완료된 모든 정답셋을 .zip 파일 하나로 간편하게 내려받을 수 있습니다.

🗂️ 권장 디렉토리 구조

ocr_macro/
├── source_documents/      # 원본 이미지/PDF 파일
├── results/
│   ├── pp-ocr/            # pp-ocr 결과 JSON 파일
│   └── upstage/           # upstage 결과 JSON 파일
├── workspace/
│   ├── app.py             # 정답셋 검수 웹앱
│   ├── run_ocr3.py        # OCR 자동화 스크립트 (최신 버전)
│   ├── shared_sessions/   # 웹앱 작업 세션 데이터 (자동 생성)
│   └── ...
├── docker-compose.yml
├── requirements.txt
└── README.md              # 현재 파일

🚀 시작하기

1. 사전 준비

  • Python (3.8 이상 권장)
  • Docker 및 Docker Compose

2. 의존성 설치

프로젝트 루트 디렉토리에서 아래 명령어를 실행하여 필요한 Python 라이브러리를 설치합니다.

pip install -r requirements.txt

🛠️ 사용 방법

1단계: OCR 실행 스크립트로 결과 추출하기

workspace/run_ocr3.py 스크립트를 사용하여 원본 문서에서 텍스트를 추출합니다. 이 스크립트는 비동기 API를 호출하고 결과를 JSON 파일로 저장합니다.

사용 예시

예시 1: Upstage 모델로 병렬 처리 (기본)

  • 4개의 워커(worker)를 사용해 동시에 처리합니다.
python workspace/run_ocr3.py ./source_documents ./results/upstage --model upstage

예시 2: pp-ocr 모델 및 워커 수 지정

  • 8개의 워커를 사용해 동시에 처리합니다.
python workspace/run_ocr3.py ./source_documents ./results/pp-ocr --model pp-ocr --workers 8

예시 3: 순차 처리 (API 요청 제한 대응)

  • 각 파일 처리 요청 사이에 3초의 간격을 둡니다.
python workspace/run_ocr3.py ./source_documents ./results/upstage --model upstage --delay 3

참고: run_ocr1.py, run_ocr2.py는 이전 버전 또는 다른 API를 위한 스크립트입니다. 특별한 경우가 아니라면 가장 기능이 안정적인 run_ocr3.py 사용을 권장합니다.

2단계: 정답셋 검수 웹앱 사용하기

OCR 결과 생성이 완료되면, app.py 웹앱을 사용하여 결과를 비교하고 수정하며 최종 정답셋을 만듭니다.

1. 웹앱 실행

프로젝트 루트 디렉토리에서 Docker Compose를 사용하여 웹앱을 실행합니다.

docker-compose up

2. 웹 브라우저 접속

터미널에 표시된 주소(예: http://localhost:8501)로 접속합니다.

3. 작업 흐름

  1. 파일 업로드: 사이드바에서 원본 문서1단계에서 생성된 OCR 결과 JSON 파일들을 업로드합니다.
  2. 세션 생성: ‘업로드 및 세션 생성’ 버튼을 누르면 작업 가능한 고유 URL이 생성됩니다.
  3. 검수 및 수정:
    • 왼쪽 파일 목록에서 작업할 파일을 선택합니다.
    • 오른쪽 정답셋 편집기에서 내용을 정확하게 수정합니다.
  4. 저장: 정답셋으로 저장’ 버튼을 눌러 작업을 완료합니다.
  5. 다운로드: 모든 작업이 끝나면 사이드바 하단의 ‘정답셋 다운로드’ 버튼을 눌러 결과물 전체를 .zip 파일로 내려받습니다.

📚 상세 문서

Description
No description provided
Readme 192 MiB
Languages
Python 100%