À 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.