À propos du projet
# olmOCR
**olmOCR** est une boîte à outils pour convertir des PDF et d'autres formats de documents basés sur des images (PNG, JPEG) en texte brut ou Markdown propre et lisible. Elle est conçue pour construire des ensembles de données d'entraînement LLM à grande échelle en linéarisant les documents dans un ordre de lecture naturel, même avec des mises en page complexes. Le projet est développé par l'équipe AllenNLP de l'Allen Institute for Artificial Intelligence (AI2).
## Fonctionnalités clés
- **PDF/Image vers Markdown** : convertit les documents PDF, PNG et JPEG en Markdown propre.
- **Ordre de lecture naturel** : préserve la séquence de lecture logique, même dans les documents multi-colonnes ou complexes.
- **Rentable** : moins de 200 USD par million de pages converties (basé sur un VLM de 7B paramètres, nécessite un GPU).
- **Suite de benchmarks** : inclut olmOCR-Bench avec plus de 7 000 cas de test sur 1 400 documents pour mesurer les performances OCR.
- **Inférence flexible** : exécution locale avec GPU, connexion à des serveurs vLLM externes, ou utilisation de fournisseurs cloud (par ex., Cirrascale, DeepInfra, Parasail).
- **Traitement parallèle** : prend en charge le traitement multi-nœuds et multi-travailleurs pour des millions de PDF.
- **Support Docker** : images pré-construites avec ou sans le modèle inclus (~30GB avec le modèle).
- **Filtrage** : filtrage de base pour les PDF anglais (non-formulaires, non-SEO spam).
## Installation
Installez avec pip. Pour le support GPU (recommandé pour l'inférence locale) :
```bash
pip install olmocr[gpu] --extra-index-url https://download.pytorch.org/whl/cu128
```
Pour une utilisation avec un serveur externe (sans dépendances GPU) :
```bash
pip install olmocr
```
Extras optionnels : `beaker` pour l'intégration AI2 Beaker, `bench` pour la suite de benchmarks.
## Démarrage rapide
### Convertir un PDF en Markdown
```bash
# Télécharger un exemple de PDF
wget https://arxiv.org/pdf/2502.18443
# Le convertir en markdown
olmocr ./localworkspace --markdown --pdfs olmocr-sample.pdf
```
### Convertir un fichier image
```bash
olmocr ./localworkspace --markdown --pdfs random_page.png
```
### Utiliser un serveur d'inférence distant
```bash
olmocr ./localworkspace --server http://remote-server:8000/v1 --model allenai/olmOCR-2-7B-1025-FP8 --markdown --pdfs *.pdf
```
Les résultats sont stockés sous forme de fichiers Markdown dans `./localworkspace/markdown/`. Vous pouvez aussi utiliser `python -m olmocr.pipeline` à la place de la commande `olmocr`.
## Options de ligne de commande
Les arguments clés incluent :
- `--pdfs` : chemins vers les PDF (locaux, S3 ou motifs glob).
- `--model` : identifiant du modèle (par défaut : `allenai/olmOCR-7B-0725-FP8`).
- `--server` : URL d'un serveur vLLM externe ou compatible OpenAI.
- `--api_key` : clé API pour les fournisseurs externes.
- `--workers` : nombre de travailleurs parallèles.
- `--markdown` : écrire la sortie en Markdown.
- `--apply_filter` : appliquer le filtrage de base aux PDF anglais.
- `--beaker` : soumettre le travail à AI2 Beaker.
- `--guided_decoding` : activer le décodage guidé pour les sorties YAML structurées.
- `--max_concurrent_requests` : nombre maximal de requêtes simultanées au fournisseur d'inférence.
## Fournisseurs externes
olmOCR a été testé avec plusieurs fournisseurs, avec des coûts par million de tokens :
| Fournisseur | Entrée $/1M | Sortie $/1M | Exemple de commande |
|-------------|------------|-------------|---------------------|
| 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` |
## Utilisation de Docker
Tirez l'image avec le modèle inclus (~30GB) :
```bash
docker pull alleninstituteforai/olmocr:latest-with-model
```
Exécutez une conversion PDF unique :
```bash
docker run --gpus all alleninstituteforai/olmocr:latest-with-model -c "olmocr /workspace/output --markdown --pdfs /workspace/sample.pdf"
```
Pour le traitement par lots :
```bash
docker run --gpus all -v /input:/input -v /output:/output alleninstituteforai/olmocr:latest-with-model -c "olmocr /output --markdown --pdfs /input/*.pdf"
```
## Aperçu du code
Les composants réutilisables incluent :
- **Stratégie de prompting** pour l'analyse de texte naturel (buildsilver.py)
- **Filtrage** par langue et suppression du SEO spam (filter.py)
- **Code de fine-tuning SFT** pour Qwen2.5-VL (train.py)
- **Génération de données synthétiques** (mine_html_templates.py)
- **Pipeline** pour traiter des millions de PDF avec VLLM (pipeline.py)
## Mises à jour récentes
- **v0.4.0 (21 oct. 2025)** : nouvelle version du modèle (olmOCR-2-7B-1025-FP8), +4 points sur olmOCR-bench, introduction de l'entraînement RL.
- **v0.3.0 (13 août 2025)** : nouvelle version du modèle (olmOCR-7B-0825-FP8), corrige la rotation automatique et les hallucinations de documents vierges.
- **v0.2.1 (24 juil. 2025)** : nouvelle version du modèle (olmOCR-7B-0725-FP8), +3 points sur olmOCR-Bench, inférence plus rapide.
- **v0.2.0 (23 juil. 2025)** : nettoyage du code d'entraînement pour faciliter l'entraînement personnalisé.
- **v0.1.75 (17 juin 2025)** : passage de sglang à vllm pour l'inférence, mise à jour de Docker vers CUDA 12.8.
- **v0.1.68 (19 mai 2025)** : lancement de olmOCR-Bench (score 77,4), corrections de bugs dans le pipeline.
## Licence
Apache 2.0. Voir le fichier LICENSE pour plus de détails.
## Équipe
Développé par l'équipe AllenNLP chez AI2, un institut de recherche à but non lucratif.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.