프로젝트 소개
# olmOCR
**olmOCR**은 PDF 및 기타 이미지 기반 문서 형식(PNG, JPEG)을 깨끗하고 읽기 쉬운 일반 텍스트 또는 Markdown으로 변환하기 위한 도구 키트입니다. 복잡한 레이아웃에서도 문서를 자연스러운 읽기 순서로 선형화하여 대규모 LLM 학습 데이터 세트를 구축하도록 설계되었습니다. 이 프로젝트는 앨런 인공지능 연구소(AI2)의 AllenNLP 팀이 개발했습니다.
## 주요 기능
- **PDF/이미지를 Markdown으로**: PDF, PNG, JPEG 문서를 깨끗한 Markdown 형식으로 변환합니다.
- **자연스러운 읽기 순서**: 다중 열 또는 복잡한 문서에서도 논리적 읽기 순서를 보존합니다.
- **비용 효율성**: 페이지 100만 개당 미화 200달러 미만 (7B 파라미터 VLM 기준, GPU 필요).
- **벤치마크 제품군**: 1,400개 문서에 걸친 7,000개 이상의 테스트 사례로 구성된 olmOCR-Bench를 포함하여 OCR 성능을 측정합니다.
- **유연한 추론**: GPU가 있는 로컬에서 실행하거나, 외부 vLLM 서버에 연결하거나, 클라우드 제공업체(예: Cirrascale, DeepInfra, Parasail)를 사용할 수 있습니다.
- **병렬 처리**: 수백만 개의 PDF를 처리하기 위한 다중 노드, 다중 워커 처리를 지원합니다.
- **Docker 지원**: 모델 포함 또는 미포함 사전 빌드 이미지(모델 포함 시 약 30GB).
- **필터링**: 영어 PDF에 대한 기본 필터링(비양식, 비-SEO 스팸).
## 설치
pip으로 설치합니다. GPU 지원(로컬 추론에 권장)의 경우:
```bash
pip install olmocr[gpu] --extra-index-url https://download.pytorch.org/whl/cu128
```
외부 서버 사용 시(GPU 종속성 없음):
```bash
pip install olmocr
```
선택적 추가 기능: `beaker`는 AI2 Beaker 통합용, `bench`는 벤치마크 제품군용입니다.
## 빠른 시작
### PDF를 Markdown으로 변환
```bash
# 샘플 PDF 다운로드
wget https://arxiv.org/pdf/2502.18443
# Markdown으로 변환
olmocr ./localworkspace --markdown --pdfs olmocr-sample.pdf
```
### 이미지 파일 변환
```bash
olmocr ./localworkspace --markdown --pdfs random_page.png
```
### 원격 추론 서버 사용
```bash
olmocr ./localworkspace --server http://remote-server:8000/v1 --model allenai/olmOCR-2-7B-1025-FP8 --markdown --pdfs *.pdf
```
결과는 `./localworkspace/markdown/`에 Markdown 파일로 저장됩니다. `olmocr` 명령 대신 `python -m olmocr.pipeline`을 사용할 수도 있습니다.
## 명령줄 옵션
주요 인자는 다음과 같습니다.
- `--pdfs`: PDF 경로 (로컬, S3, 또는 glob 패턴).
- `--model`: 모델 식별자 (기본값: `allenai/olmOCR-7B-0725-FP8`).
- `--server`: 외부 vLLM 또는 OpenAI 호환 서버의 URL.
- `--api_key`: 외부 제공업체용 API 키.
- `--workers`: 병렬 워커 수.
- `--markdown`: 출력을 Markdown으로 작성.
- `--apply_filter`: 영어 PDF에 기본 필터링 적용.
- `--beaker`: AI2 Beaker에 작업 제출.
- `--guided_decoding`: 구조화된 YAML 출력을 위한 유도 디코딩 활성화.
- `--max_concurrent_requests`: 추론 제공업체에 대한 최대 동시 요청 수.
## 외부 제공업체
olmOCR은 여러 제공업체에서 테스트되었으며, 토큰 100만 개당 비용은 다음과 같습니다.
| 제공업체 | 입력 $/1M | 출력 $/1M | 예시 명령 |
|----------|-----------|-------------|-----------------|
| Cirrascale | $0.07 | $0.15 | `olmocr ./workspace --server https://ai2endpoints.cirrascale.ai/api --api_key sk-XXXX --model olmOCR-2-7B-1025 --pdfs *.pdf` |
| DeepInfra | $0.09 | $0.19 | `olmocr ./workspace --server https://api.deepinfra.com/v1/openai --api_key DfXXXX --model allenai/olmOCR-2-7B-1025 --pdfs *.pdf` |
| Parasail | $0.10 | $0.20 | `olmocr ./workspace --server https://api.parasail.io/v1 --api_key psk-XXXX --model allenai/olmOCR-2-7B-1025 --pdfs *.pdf` |
## Docker 사용법
모델이 포함된 이미지를 가져옵니다 (~30GB):
```bash
docker pull alleninstituteforai/olmocr:latest-with-model
```
단일 PDF 변환 실행:
```bash
docker run --gpus all alleninstituteforai/olmocr:latest-with-model -c "olmocr /workspace/output --markdown --pdfs /workspace/sample.pdf"
```
배치 처리의 경우:
```bash
docker run --gpus all -v /input:/input -v /output:/output alleninstituteforai/olmocr:latest-with-model -c "olmocr /output --markdown --pdfs /input/*.pdf"
```
## 코드 개요
재사용 가능한 구성 요소는 다음과 같습니다.
- 자연 텍스트 파싱을 위한 프롬프트 전략 (buildsilver.py)
- 언어 및 SEO 스팸 제거를 위한 필터링 (filter.py)
- Qwen2.5-VL용 SFT 파인튜닝 코드 (train.py)
- 합성 데이터 생성 (mine_html_templates.py)
- VLLM으로 수백만 개의 PDF를 처리하기 위한 파이프라인 (pipeline.py)
## 최근 업데이트
- **v0.4.0 (2025년 10월 21일)**: 새 모델 출시 (olmOCR-2-7B-1025-FP8), olmOCR-bench에서 +4점, RL 학습 도입.
- **v0.3.0 (2025년 8월 13일)**: 새 모델 출시 (olmOCR-7B-0825-FP8), 자동 회전 및 빈 문서 환각 문제 수정.
- **v0.2.1 (2025년 7월 24일)**: 새 모델 출시 (olmOCR-7B-0725-FP8), olmOCR-Bench에서 +3점, 추론 속도 향상.
- **v0.2.0 (2025년 7월 23일)**: 맞춤 학습을 쉽게 하도록 트레이너 코드를 정리했습니다.
- **v0.1.75 (2025년 6월 17일)**: sglang에서 vllm 추론으로 전환, Docker를 CUDA 12.8로 업데이트.
- **v0.1.68 (2025년 5월 19일)**: olmOCR-Bench 출시 (77.4 점), 파이프라인 버그 수정.
## 라이선스
Apache 2.0. 자세한 내용은 LICENSE 파일을 참조하십시오.
## 팀
비영리 연구 기관인 AI2의 AllenNLP 팀이 개발했습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.