Importante
OmniParse é uma plataforma que ingere e analisa quaisquer dados não estruturados em dados estruturados e acionáveis, otimizados para aplicativos GenAI (LLM). Esteja você trabalhando com documentos, tabelas, imagens, vídeos, arquivos de áudio ou páginas da web, o OmniParse prepara seus dados para serem limpos, estruturados e prontos para aplicativos de IA, como RAG, ajuste fino e muito mais
✅ Completamente local, sem APIs externas
✅ Cabe em uma GPU T4
✅ Suporta cerca de 20 tipos de arquivo
✅ Converta documentos, multimídia e páginas da web em descontos estruturados de alta qualidade
✅ Extração de tabela, extração/legenda de imagens, transcrição de áudio/vídeo, rastreamento de páginas da web
✅ Facilmente implantável usando Docker e Skypilot
✅ Colab amigável
✅ UI interativa desenvolvida pela Gradio
É um desafio processar dados, pois eles vêm em diferentes formatos e tamanhos. OmniParse pretende ser uma plataforma de ingestão/análise onde você pode ingerir qualquer tipo de dados, como documentos, imagens, áudio, vídeo e conteúdo da web, e obter a saída mais estruturada e acionável que seja compatível com GenAI (LLM).
Importante
O servidor funciona apenas em sistemas baseados em Linux. Isso se deve a certas dependências e configurações específicas do sistema que não são compatíveis com Windows ou macOS.
git clone https://github.com/adithya-s-k/omniparse
cd omniparse
Crie um ambiente virtual:
conda create -n omniparse-venv python=3.10
conda activate omniparse-venv
Instalar dependências:
poetry install
# or
pip install -e .
# or
pip install -r pyproject.toml
Para usar OmniParse com Docker, execute os seguintes 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, se você preferir construir a imagem do Docker localmente: Em seguida, execute o contêiner do Docker da seguinte maneira:
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
Execute o servidor:
python server.py --host 0.0.0.0 --port 8000 --documents --media --web
--documents
: Carregue todos os modelos que ajudam a analisar e ingerir documentos (série de modelos Surya OCR e Florence-2).--media
: Carrega no modelo Whisper para transcrever arquivos de áudio e vídeo.--web
: Configure o rastreador de selênio.Baixar Modelos: Se você deseja baixar os modelos antes de iniciar o servidor
python download.py --documents --media --web
--documents
: Carregue todos os modelos que ajudam a analisar e ingerir documentos (série de modelos Surya OCR e Florence-2).--media
: Carrega no modelo Whisper para transcrever arquivos de áudio e vídeo.--web
: Configure o rastreador de selênio. Tipo | Extensões suportadas |
---|---|
Documentos | .doc, .docx, .pdf, .ppt, .pptx |
Imagens | .png, .jpg, .jpeg, .tiff, .bmp, .heic |
Vídeo | .mp4, .mkv, .avi, .mov |
Áudio | .mp3, .wav, .aac |
Rede | páginas da web dinâmicas, http://.com |
Biblioteca cliente compatível com integrações Langchain, llamaindex e haystack em breve.
Ponto final: /parse_document
Método: POST
Analisa documentos PDF, PowerPoint ou Word.
Comando de ondulação:
curl -X POST -F "file=@/path/to/document" http://localhost:8000/parse_document
Ponto final: /parse_document/pdf
Método: POST
Analisa documentos PDF.
Comando de ondulação:
curl -X POST -F "file=@/path/to/document.pdf" http://localhost:8000/parse_document/pdf
Ponto final: /parse_document/ppt
Método: POST
Analisa apresentações em PowerPoint.
Comando de ondulação:
curl -X POST -F "file=@/path/to/presentation.ppt" http://localhost:8000/parse_document/ppt
Ponto final: /parse_document/docs
Método: POST
Analisa documentos do Word.
Comando de ondulação:
curl -X POST -F "file=@/path/to/document.docx" http://localhost:8000/parse_document/docs
Ponto final: /parse_image/image
Método: POST
Analisa arquivos de imagem (PNG, JPEG, JPG, TIFF, WEBP).
Comando de ondulação:
curl -X POST -F "file=@/path/to/image.jpg" http://localhost:8000/parse_media/image
Ponto final: /parse_image/process_image
Método: POST
Processa uma imagem com uma tarefa específica.
Possíveis entradas de tarefas: OCR | OCR with Region | Caption | Detailed Caption | More Detailed Caption | Object Detection | Dense Region Caption | Region Proposal
Comando de ondulação:
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
: o arquivo de imagemtask
: a tarefa de processamento (por exemplo, legenda, detecção de objetos)prompt
: prompt opcional para determinadas tarefas Ponto final: /parse_media/video
Método: POST
Analisa arquivos de vídeo (MP4, AVI, MOV, MKV).
Comando de ondulação:
curl -X POST -F "file=@/path/to/video.mp4" http://localhost:8000/parse_media/video
Ponto final: /parse_media/audio
Método: POST
Analisa arquivos de áudio (MP3, WAV, FLAC).
Comando de ondulação:
curl -X POST -F "file=@/path/to/audio.mp3" http://localhost:8000/parse_media/audio
Ponto final: /parse_website/parse
Método: POST
Analisa um site de acordo com seu URL.
Comando de ondulação:
curl -X POST -H "Content-Type: application/json" -d '{"url": "https://example.com"}' http://localhost:8000/parse_website
Argumentos:
url
: o URL do site a ser analisado ? LhamaÍndice | Cadeia Lang | Integrações Haystack em breve Processamento de dados em lote Segmentação dinâmica e extração estruturada de dados com base no esquema especificado
Uma API mágica: basta inserir no seu arquivo o que você deseja e nós cuidaremos do resto
? Seleção dinâmica de modelos e suporte para APIs externas
? Processamento em lote para lidar com vários arquivos de uma vez
? Novo modelo de código aberto para substituir Surya OCR e Marker
Objetivo final : substituir todos os diferentes modelos usados atualmente por um único modelo MultiModel para analisar qualquer tipo de dados e obter os dados necessários.
É necessária uma GPU com VRAM mínimo de 8 ~ 10 GB, pois estamos usando modelos de aprendizado profundo.
Limitações de análise de documentos
OmniParse é licenciado sob a licença GPL-3.0. Consulte LICENSE
para obter mais informações. O projeto utiliza Marker subjacente, que possui licença comercial que precisa ser seguida. Aqui estão os detalhes:
Os modelos Marker e Surya OCR são projetados para serem tão amplamente acessíveis quanto possível, ao mesmo tempo que financiam os custos de desenvolvimento e treinamento. A pesquisa e o uso pessoal são sempre permitidos, mas existem algumas restrições ao uso comercial. Os pesos dos modelos são licenciados sob cc-by-nc-sa-4.0. No entanto, esta restrição é dispensada para qualquer organização com menos de US$ 5 milhões em receita bruta no período de 12 meses mais recente E menos de US$ 5 milhões em financiamento vitalício de VC/anjo arrecadado. Para remover os requisitos de licença GPL (licença dupla) e/ou utilizar comercialmente os pesos acima do limite de receita, verifique as opções fornecidas. Consulte o Marcador para obter mais informações sobre a licença dos pesos do modelo
Este projeto baseia-se no notável projeto Marker criado por Vik Paruchuri. Expressamos nossa gratidão pela inspiração e base fornecidas por este projeto. Agradecimentos especiais a Surya-OCR e Texify pelos modelos de OCR amplamente utilizados neste projeto, e a Crawl4AI por suas contribuições.
Modelos sendo usados:
Obrigado aos autores por suas contribuições para esses modelos.