Importante
OmniParse es una plataforma que ingiere y analiza cualquier dato no estructurado en datos estructurados y procesables optimizados para aplicaciones GenAI (LLM). Ya sea que esté trabajando con documentos, tablas, imágenes, videos, archivos de audio o páginas web, OmniParse prepara sus datos para que estén limpios, estructurados y listos para aplicaciones de IA como RAG, ajuste fino y más.
✅ Completamente local, sin API externas
✅ Cabe en una GPU T4
✅ Admite ~20 tipos de archivos
✅ Convierta documentos, multimedia y páginas web en rebajas estructuradas de alta calidad
✅ Extracción de tablas, extracción/subtítulos de imágenes, transcripción de audio/vídeo, rastreo de páginas web
✅ Fácilmente implementable usando Docker y Skypilot
✅ Amigable con la colaboración
✅ UI interactiva impulsada por Gradio
Es un desafío procesar datos, ya que vienen en diferentes formas y tamaños. OmniParse pretende ser una plataforma de ingesta/análisis donde se puede ingerir cualquier tipo de datos, como documentos, imágenes, audio, vídeo y contenido web, y obtener el resultado más estructurado y procesable compatible con GenAI (LLM).
Importante
El servidor sólo funciona en sistemas basados en Linux. Esto se debe a ciertas dependencias y configuraciones específicas del sistema que no son compatibles con Windows o macOS.
git clone https://github.com/adithya-s-k/omniparse
cd omniparse
Cree un entorno virtual:
conda create -n omniparse-venv python=3.10
conda activate omniparse-venv
Instalar dependencias:
poetry install
# or
pip install -e .
# or
pip install -r pyproject.toml
Para usar OmniParse con Docker, ejecute los siguientes comandos:
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
Alternativamente, si prefiere crear la imagen de Docker localmente: luego ejecute el contenedor de Docker de la siguiente manera:
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
Ejecute el servidor:
python server.py --host 0.0.0.0 --port 8000 --documents --media --web
--documents
: carga todos los modelos que te ayudan a analizar e ingerir documentos (serie de modelos Surya OCR y Florence-2).--media
: carga en el modelo Whisper para transcribir archivos de audio y video.--web
: configura el rastreador de selenio.Descargar Modelos: Si desea descargar los modelos antes de iniciar el servidor
python download.py --documents --media --web
--documents
: carga todos los modelos que te ayudan a analizar e ingerir documentos (serie de modelos Surya OCR y Florence-2).--media
: carga en el modelo Whisper para transcribir archivos de audio y video.--web
: configura el rastreador de selenio. Tipo | Extensiones compatibles |
---|---|
Documentos | .doc, .docx, .pdf, .ppt, .pptx |
Imágenes | .png, .jpg, .jpeg, .tiff, .bmp, .heic |
Video | .mp4, .mkv, .avi, .mov |
Audio | .mp3, .wav, .aac |
Web | páginas web dinámicas, http://.com |
Próximamente biblioteca de cliente compatible con integraciones de Langchain, llamaindex y haystack.
Punto final: /parse_document
Método: POST
Analiza documentos PDF, PowerPoint o Word.
Comando de rizo:
curl -X POST -F "file=@/path/to/document" http://localhost:8000/parse_document
Punto final: /parse_document/pdf
Método: POST
Analiza documentos PDF.
Comando de rizo:
curl -X POST -F "file=@/path/to/document.pdf" http://localhost:8000/parse_document/pdf
Punto final: /parse_document/ppt
Método: POST
Analiza presentaciones de PowerPoint.
Comando de rizo:
curl -X POST -F "file=@/path/to/presentation.ppt" http://localhost:8000/parse_document/ppt
Punto final: /parse_document/docs
Método: POST
Analiza documentos de Word.
Comando de rizo:
curl -X POST -F "file=@/path/to/document.docx" http://localhost:8000/parse_document/docs
Punto final: /parse_image/image
Método: POST
Analiza archivos de imagen (PNG, JPEG, JPG, TIFF, WEBP).
Comando de rizo:
curl -X POST -F "file=@/path/to/image.jpg" http://localhost:8000/parse_media/image
Punto final: /parse_image/process_image
Método: POST
Procesa una imagen con una tarea específica.
Posibles entradas de tareas: OCR | OCR with Region | Caption | Detailed Caption | More Detailed Caption | Object Detection | Dense Region Caption | Region Proposal
Comando de rizo:
curl -X POST -F "image=@/path/to/image.jpg" -F "task=Caption" -F "prompt=Optional prompt" http://localhost:8000/parse_media/process_image
Argumentos:
image
: El archivo de imagentask
: La tarea de procesamiento (por ejemplo, título, detección de objetos)prompt
: mensaje opcional para ciertas tareas Punto final: /parse_media/video
Método: POST
Analiza archivos de vídeo (MP4, AVI, MOV, MKV).
Comando de rizo:
curl -X POST -F "file=@/path/to/video.mp4" http://localhost:8000/parse_media/video
Punto final: /parse_media/audio
Método: POST
Analiza archivos de audio (MP3, WAV, FLAC).
Comando de rizo:
curl -X POST -F "file=@/path/to/audio.mp3" http://localhost:8000/parse_media/audio
Punto final: /parse_website/parse
Método: POST
Analiza un sitio web dada su URL.
Comando de rizo:
curl -X POST -H "Content-Type: application/json" -d '{"url": "https://example.com"}' http://localhost:8000/parse_website
Argumentos:
url
: La URL del sitio web a analizar. ? LlamaIndice | Cadena larga | Próximamente integraciones de Haystack Procesamiento por lotes de datos Fragmentación dinámica y extracción de datos estructurados basados en un esquema específico
Una API mágica: simplemente introduzca en su archivo lo que desee y nosotros nos encargaremos del resto.
? Selección dinámica de modelos y soporte para API externas
? Procesamiento por lotes para manejar varios archivos a la vez
? Nuevo modelo de código abierto para reemplazar Surya OCR y Marker
Objetivo final : reemplazar todos los diferentes modelos que se utilizan actualmente con un único modelo MultiModel para analizar cualquier tipo de datos y obtener los datos que necesita.
Se necesita una GPU con 8 ~ 10 GB de VRAM mínimo, ya que utilizamos modelos de aprendizaje profundo.
Limitaciones del análisis de documentos
OmniParse tiene la licencia GPL-3.0. Consulte LICENSE
para obtener más información. El proyecto utiliza Marker bajo el capó, que tiene una licencia comercial que debe seguirse. Aquí están los detalles:
Los modelos Marker y Surya OCR están diseñados para ser lo más accesibles posible y al mismo tiempo financiar los costos de desarrollo y capacitación. Siempre se permite el uso personal y de investigación, pero existen algunas restricciones sobre el uso comercial. Los pesos de los modelos tienen licencia cc-by-nc-sa-4.0. Sin embargo, esta restricción no se aplica a cualquier organización con menos de $5 millones de dólares en ingresos brutos en el período de 12 meses más reciente Y menos de $5 millones en fondos de capital de riesgo/ángel recaudados de por vida. Para eliminar los requisitos de la licencia GPL (licencia dual) y/o utilizar los pesos comercialmente por encima del límite de ingresos, consulte las opciones proporcionadas. Consulte Marker para obtener más información sobre la licencia de los pesos del modelo.
Este proyecto se basa en el notable proyecto Marker creado por Vik Paruchuri. Expresamos nuestro agradecimiento por la inspiración y fundamento proporcionados por este proyecto. Un agradecimiento especial a Surya-OCR y Texify por los modelos OCR ampliamente utilizados en este proyecto, y a Crawl4AI por sus contribuciones.
Modelos utilizados:
Gracias a los autores por sus contribuciones a estos modelos.