프로젝트 소개

# 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 팀이 개발했습니다.