Important
OmniParse est une plate-forme qui ingère et analyse toutes les données non structurées en données structurées et exploitables optimisées pour les applications GenAI (LLM). Que vous travailliez avec des documents, des tableaux, des images, des vidéos, des fichiers audio ou des pages Web, OmniParse prépare vos données pour qu'elles soient propres, structurées et prêtes pour les applications d'IA telles que RAG, le réglage fin, etc.
✅ Entièrement local, pas d'API externe
✅ S'adapte à un GPU T4
✅ Prend en charge environ 20 types de fichiers
✅ Convertissez des documents, des fichiers multimédias et des pages Web en démarques structurées de haute qualité
✅ Extraction de tableaux, extraction/sous-titrage d'images, transcription audio/vidéo, exploration de pages Web
✅ Facilement déployable à l'aide de Docker et Skypilot
✅ Compatible avec les collaborations
✅ Interface utilisateur interactive optimisée par Gradio
Il est difficile de traiter les données car elles se présentent sous différentes formes et tailles. OmniParse vise à être une plate-forme d'ingestion/analyse où vous pouvez ingérer tout type de données, tels que des documents, des images, de l'audio, de la vidéo et du contenu Web, et obtenir la sortie la plus structurée et la plus exploitable compatible avec GenAI (LLM).
Important
Le serveur ne fonctionne que sur les systèmes basés sur Linux. Cela est dû à certaines dépendances et configurations spécifiques au système qui ne sont pas compatibles avec Windows ou macOS.
git clone https://github.com/adithya-s-k/omniparse
cd omniparse
Créez un environnement virtuel :
conda create -n omniparse-venv python=3.10
conda activate omniparse-venv
Installer les dépendances :
poetry install
# or
pip install -e .
# or
pip install -r pyproject.toml
Pour utiliser OmniParse avec Docker, exécutez les commandes suivantes :
docker pull savatar101/omniparse:0.1
# if you are running on a gpu
docker run --gpus all -p 8000:8000 savatar101/omniparse:0.1
# else
docker run -p 8000:8000 savatar101/omniparse:0.1
Alternativement, si vous préférez créer l'image Docker localement : exécutez ensuite le conteneur Docker comme suit :
docker build -t omniparse .
# if you are running on a gpu
docker run --gpus all -p 8000:8000 omniparse
# else
docker run -p 8000:8000 omniparse
Exécutez le serveur :
python server.py --host 0.0.0.0 --port 8000 --documents --media --web
--documents
: chargez tous les modèles qui vous aident à analyser et à ingérer des documents (série de modèles Surya OCR et Florence-2).--media
: Charger dans le modèle Whisper pour transcrire les fichiers audio et vidéo.--web
: Configurer le robot d'exploration Selenium.Télécharger les modèles : si vous souhaitez télécharger les modèles avant de démarrer le serveur
python download.py --documents --media --web
--documents
: chargez tous les modèles qui vous aident à analyser et à ingérer des documents (série de modèles Surya OCR et Florence-2).--media
: Charger dans le modèle Whisper pour transcrire les fichiers audio et vidéo.--web
: Configurer le robot d'exploration Selenium. Taper | Extensions prises en charge |
---|---|
Documents | .doc, .docx, .pdf, .ppt, .pptx |
Images | .png, .jpg, .jpeg, .tiff, .bmp, .heic |
Vidéo | .mp4, .mkv, .avi, .mov |
Audio | .mp3, .wav, .aac |
Web | pages Web dynamiques, http://.com |
Bibliothèque client compatible avec les intégrations Langchain, lamaindex et haystack à venir.
Point de terminaison : /parse_document
Méthode : POST
Analyse les documents PDF, PowerPoint ou Word.
Commande Curl :
curl -X POST -F "file=@/path/to/document" http://localhost:8000/parse_document
Point final : /parse_document/pdf
Méthode : POST
Analyse les documents PDF.
Commande Curl :
curl -X POST -F "file=@/path/to/document.pdf" http://localhost:8000/parse_document/pdf
Point final : /parse_document/ppt
Méthode : POST
Analyse les présentations PowerPoint.
Commande Curl :
curl -X POST -F "file=@/path/to/presentation.ppt" http://localhost:8000/parse_document/ppt
Point de terminaison : /parse_document/docs
Méthode : POST
Analyse les documents Word.
Commande Curl :
curl -X POST -F "file=@/path/to/document.docx" http://localhost:8000/parse_document/docs
Point de terminaison : /parse_image/image
Méthode : POST
Analyse les fichiers image (PNG, JPEG, JPG, TIFF, WEBP).
Commande Curl :
curl -X POST -F "file=@/path/to/image.jpg" http://localhost:8000/parse_media/image
Point de terminaison : /parse_image/process_image
Méthode : POST
Traite une image avec une tâche spécifique.
Entrées de tâches possibles : OCR | OCR with Region | Caption | Detailed Caption | More Detailed Caption | Object Detection | Dense Region Caption | Region Proposal
Commande Curl :
curl -X POST -F "image=@/path/to/image.jpg" -F "task=Caption" -F "prompt=Optional prompt" http://localhost:8000/parse_media/process_image
Arguments :
image
: Le fichier imagetask
: La tâche de traitement (par exemple, Légende, Détection d'objet)prompt
: Invite facultative pour certaines tâches Point de terminaison : /parse_media/video
Méthode : POST
Analyse les fichiers vidéo (MP4, AVI, MOV, MKV).
Commande Curl :
curl -X POST -F "file=@/path/to/video.mp4" http://localhost:8000/parse_media/video
Point de terminaison : /parse_media/audio
Méthode : POST
Analyse les fichiers audio (MP3, WAV, FLAC).
Commande Curl :
curl -X POST -F "file=@/path/to/audio.mp3" http://localhost:8000/parse_media/audio
Point de terminaison : /parse_website/parse
Méthode : POST
Analyse un site Web en fonction de son URL.
Commande Curl :
curl -X POST -H "Content-Type: application/json" -d '{"url": "https://example.com"}' http://localhost:8000/parse_website
Arguments :
url
: L'URL du site Web à analyser ? LamaIndex | Langchain | Intégrations Haystack à venir Traitement par lots des données Segmentation dynamique et extraction de données structurées basées sur un schéma spécifié
Une API magique : indiquez simplement dans votre invite de fichier ce que vous voulez, et nous nous occuperons du reste
? Sélection dynamique de modèles et prise en charge des API externes
? Traitement par lots pour gérer plusieurs fichiers à la fois
? Nouveau modèle open source pour remplacer Surya OCR et Marker
Objectif final : remplacer tous les différents modèles actuellement utilisés par un seul modèle multimodèle pour analyser tout type de données et obtenir les données dont vous avez besoin.
Il est nécessaire d'avoir un GPU avec 8 à 10 Go de VRAM minimum car nous utilisons des modèles d'apprentissage en profondeur.
Limites de l'analyse de documents
OmniParse est sous licence GPL-3.0. Voir LICENSE
pour plus d’informations. Le projet utilise Marker sous le capot, qui possède une licence commerciale qui doit être respectée. Voici les détails :
Les modèles Marker et Surya OCR sont conçus pour être aussi largement accessibles que possible tout en finançant les coûts de développement et de formation. La recherche et l'utilisation personnelle sont toujours autorisées, mais il existe certaines restrictions concernant l'utilisation commerciale. Les poids des modèles sont sous licence cc-by-nc-sa-4.0. Cependant, cette restriction est levée pour toute organisation ayant moins de 5 millions de dollars de revenus bruts au cours de la période de 12 mois la plus récente ET moins de 5 millions de dollars de financements providentiels/VC à vie levés. Pour supprimer les exigences de licence GPL (double licence) et/ou utiliser les poids commercialement au-delà de la limite de revenus, consultez les options proposées. Veuillez vous référer à Marker pour plus d'informations sur la licence des poids modèles.
Ce projet s'appuie sur le remarquable projet Marker créé par Vik Paruchuri. Nous exprimons notre gratitude pour l’inspiration et les fondations fournies par ce projet. Un merci spécial à Surya-OCR et Texify pour les modèles OCR largement utilisés dans ce projet, et à Crawl4AI pour leurs contributions.
Modèles utilisés :
Merci aux auteurs pour leurs contributions à ces modèles.