
OmniParse
OmniParse is a platform that ingests/parses any unstructured data into structured, actionable data optimized for GenAI (LLM) applcaitons. Whether working with documents, tables, images, videos, audio files, or web pages, OmniParse prepares your data to be clean, structured and ready for AI applications, such as RAG , fine-tuning and more.
Try it out

Features
✅ Completely local, no external APIs ✅ Fits in a T4 GPU ✅ Supports 10+ file types ✅ Convert documents, multimedia, and web pages to high-quality structured markdown ✅ Table extraction, image extraction/captioning, audio/video transcription, web page crawling ✅ Easily deployable using Docker and Skypilot ✅ Colab friendly
Problem Statement
It's challenging to process data as it comes in different shapes and sizes. OmniParse aims to be an ingestion/parsing platform where you can ingest any type of data, such as documents, images, audio, video, and web content, and get the most structured and actionable output that is GenAI (LLM) friendly.
Installation
Note: The server only works on Linux-based systems. This is due to certain dependencies and system-specific configurations that are not compatible with Windows or macOS. To install OmniParse, you can use
pip
:
git clone https://github.com/adithya-s-k/omniparse
cd omniparse
Create a Virtual Environment:
conda create --name omniparse-venv python=3.10
conda activate omniparse-venv
Install Dependencies:
poetry install
# or
pip install -e .
🛳️ Docker
To use OmniParse with Docker, execute the following commands:
Pull the OmniParse API Docker image from Docker Hub:
Run the Docker container, exposing port 8000: 👉🏼Docker Image
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
Alternatively, if you prefer to build the Docker image locally: Then, run the Docker container as follows:
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
Usage
Run the Server:
python server.py --host 0.0.0.0 --port 8000 --documents --media --web
--documents
: Load in all the models that help you parse and ingest documents (Surya OCR series of models and Florence-2).--media
: Load in Whisper model to transcribe audio and video files.--web
: Set up selenium crawler.
Running the Server
To start the API server, run the following command:
python main.py --host 0.0.0.0 --port 8000
Arguments:
--host
: Host IP address (default: 0.0.0.0)--port
: Port number (default: 8000)
Supported Data Types
Documents
.doc, .docx, .odt, .pdf, .ppt, .pptx
Images
.png, .jpg, .jpeg, .tiff, .bmp, .heic
Video
.mp4, .mkv, .avi, .mov
Audio
.mp3, .wav, .aac
Web
dynamic webpages, http://.com
Coming Soon/ RoadMap
🦙 LlamaIndex | Langchain | Haystack integrations coming soon 📚 Batch processing data ⭐ Dynamic chunking and structured data extraction based on specified Schema 🛠️ One magic API: just feed in your file prompt what you want, and we will take care of the rest 🔧 Dynamic model selection and support for external APIs 📄 Batch processing for handling multiple files at once 📦 New open-source model to replace Surya OCR and Marker
Final goal: replace all the different models currently being used with a single MultiModel Model to parse any type of data and get the data you need.
License
OmniParse is licensed under the GPL-3.0 license. See LICENSE
for more information.
Acknowledgements
This project builds upon the remarkable Marker project created by Vik Paruchuri. We express our gratitude for the inspiration and foundation provided by this project. Special thanks to Surya-OCR and Texify for the OCR models extensively used in this project, and to Crawl4AI for their contributions.
Models being used:
Surya OCR, Detect, Layout, Order, and Texify
Florence-2 base
Whisper Small
Thank you to the authors for their contributions to these models.
Last updated