OmniParse
[!重要]
OmniParse是一个平台,可以摄取和解析任何非结构化数据,将其转换为结构化的、可操作的数据,专为生成式人工智能(LLM)应用程序优化。无论您处理的是文档、表格、图像、视频、音频文件还是网页,OmniParse都能将您的数据准备得干净、结构化,随时可用于人工智能应用,如RAG、微调等。
立即体验
简介
https://github.com/adithya-s-k/omniparse/assets/27956426/457d8b5b-9573-44da-8bcf-616000651a13
特性
✅ 完全本地化,无需外部API
✅ 适用于T4 GPU
✅ 支持约20种文件类型
✅ 将文档、多媒体和网页转换为高质量的结构化Markdown
✅ 表格提取、图像提取/描述、音频/视频转录、网页爬取
✅ 使用Docker和Skypilot轻松部署
✅ 兼容Colab
✅ 基于Gradio的交互式用户界面
为什么选择OmniParse?
处理数据是一项挑战,因为数据以不同的形式和大小呈现。OmniParse旨在成为一个摄取/解析平台,您可以在其中摄取任何类型的数据,如文档、图像、音频、视频和网页内容,并获得最结构化和可操作的输出,这些输出对生成式人工智能(LLM)友好。
安装
[!重要] 服务器仅在基于Linux的系统上运行。这是由于某些依赖项和系统特定配置与Windows或macOS不兼容。
git clone https://github.com/adithya-s-k/omniparse
cd omniparse
创建虚拟环境:
conda create -n omniparse-venv python=3.10
conda activate omniparse-venv
安装依赖:
poetry install
# 或
pip install -e .
# 或
pip install -r pyproject.toml
🛳️ Docker
要使用Docker运行OmniParse,请执行以下命令:
- 从Docker Hub拉取OmniParse API Docker镜像:
- 运行Docker容器,暴露8000端口: 👉🏼Docker镜像
docker pull savatar101/omniparse:0.1
# 如果您在GPU上运行
docker run --gpus all -p 8000:8000 savatar101/omniparse:0.1
# 否则
docker run -p 8000:8000 savatar101/omniparse:0.1
或者,如果您更喜欢在本地构建Docker镜像: 然后,按如下方式运行Docker容器:
docker build -t omniparse .
# 如果您在GPU上运行
docker run --gpus all -p 8000:8000 omniparse
# 否则
docker run -p 8000:8000 omniparse
使用方法
运行服务器:
python server.py --host 0.0.0.0 --port 8000 --documents --media --web
--documents
:加载所有帮助解析和摄取文档的模型(Surya OCR系列模型和Florence-2)。--media
:加载Whisper模型以转录音频和视频文件。--web
:设置selenium爬虫。
下载模型: 如果您想在启动服务器之前下载模型
python download.py --documents --media --web
--documents
:加载所有帮助解析和摄取文档的模型(Surya OCR系列模型和Florence-2)。--media
:加载Whisper模型以转录音频和视频文件。--web
:设置selenium爬虫。
支持的数据类型
类型 | 支持的扩展名 |
---|---|
文档 | .doc, .docx, .pdf, .ppt, .pptx |
图像 | .png, .jpg, .jpeg, .tiff, .bmp, .heic |
视频 | .mp4, .mkv, .avi, .mov |
音频 | .mp3, .wav, .aac |
网页 | 动态网页, http://<任何域名>.com |
API端点
与Langchain、llamaindex和haystack集成兼容的客户端库即将推出。
文档解析
解析任何文档
端点:/parse_document
方法:POST
解析PDF、PowerPoint或Word文档。
Curl命令:
curl -X POST -F "file=@/path/to/document" http://localhost:8000/parse_document
解析PDF
端点:/parse_document/pdf
方法:POST
解析PDF文档。
Curl命令:
curl -X POST -F "file=@/path/to/document.pdf" http://localhost:8000/parse_document/pdf
解析PowerPoint
端点:/parse_document/ppt
方法:POST
解析PowerPoint演示文稿。
Curl命令:
curl -X POST -F "file=@/path/to/presentation.ppt" http://localhost:8000/parse_document/ppt
解析Word文档
端点:/parse_document/docs
方法:POST
解析Word文档。
Curl命令:
curl -X POST -F "file=@/path/to/document.docx" http://localhost:8000/parse_document/docs
媒体解析
解析图像
端点:/parse_image/image
方法:POST
解析图像文件(PNG、JPEG、JPG、TIFF、WEBP)。
Curl命令:
curl -X POST -F "file=@/path/to/image.jpg" http://localhost:8000/parse_media/image
处理图像
端点:/parse_image/process_image
方法:POST
使用特定任务处理图像。
可能的任务输入:
OCR | OCR with Region | Caption | Detailed Caption | More Detailed Caption | Object Detection | Dense Region Caption | Region Proposal
Curl命令:
curl -X POST -F "image=@/path/to/image.jpg" -F "task=Caption" -F "prompt=Optional prompt" http://localhost:8000/parse_media/process_image
参数:
image
:图像文件task
:处理任务(例如,Caption、Object Detection)prompt
:某些任务的可选提示
解析视频
端点:/parse_media/video
方法:POST
解析视频文件(MP4、AVI、MOV、MKV)。 Curl 命令:
curl -X POST -F "file=@/path/to/video.mp4" http://localhost:8000/parse_media/video
解析音频
端点:/parse_media/audio
方法:POST
解析音频文件(MP3、WAV、FLAC)。
Curl 命令:
curl -X POST -F "file=@/path/to/audio.mp3" http://localhost:8000/parse_media/audio
网站解析
解析网站
端点:/parse_website/parse
方法:POST
解析给定 URL 的网站。
Curl 命令:
curl -X POST -H "Content-Type: application/json" -d '{"url": "https://example.com"}' http://localhost:8000/parse_website
参数:
url
:要解析的网站 URL
即将推出/路线图
🦙 LlamaIndex | Langchain | Haystack 集成即将推出 📚 批量处理数据 ⭐ 基于指定架构的动态分块和结构化数据提取 🛠️ 一个神奇的 API:只需提供文件和需求,我们将处理剩下的一切 🔧 动态模型选择和外部 API 支持 📄 批量处理多个文件 📦 新的开源模型替代 Surya OCR 和 Marker
最终目标:用单一的多模态模型替换目前使用的所有不同模型,以解析任何类型的数据并获取所需信息。
局限性
由于我们使用深度学习模型,需要至少 8~10 GB 显存的 GPU。
文档解析局限性
- 底层 PDF 解析器 Marker 无法将 100% 的方程转换为 LaTeX,因为它需要先检测再转换。
- 它擅长解析英语,但可能在处理中文等语言时遇到困难。
- 表格并非总是 100% 正确格式化;文本可能出现在错误的列中。
- 空白和缩进并非总是得到尊重。
- 并非所有行/跨度都能正确连接。
- 这最适用于不需要大量 OCR 的数字 PDF。它针对速度进行了优化,仅使用有限的 OCR 来修复错误。
- 为了将所有模型装入 GPU,我们使用最小的变体,可能无法提供最佳性能。
许可证
OmniParse 使用 GPL-3.0 许可证。详情请参阅 LICENSE
。
该项目在底层使用 Marker,需要遵循其商业许可。详情如下:
商业使用
Marker 和 Surya OCR 模型旨在尽可能广泛地accessible,同时仍能为开发和训练成本提供资金。研究和个人使用始终被允许,但商业使用有一些限制。 模型权重采用 cc-by-nc-sa-4.0 许可。然而,对于最近 12 个月总收入低于 500 万美元且累计风险投资/天使投资融资低于 500 万美元的任何组织,此限制将被豁免。要删除 GPL 许可要求(双重许可)和/或在超过收入限制的情况下商业使用权重,请查看提供的选项。 有关模型权重许可的更多信息,请参阅 Marker
致谢
本项目基于 Vik Paruchuri 创建的出色的 Marker 项目。我们对该项目提供的灵感和基础表示感谢。特别感谢 Surya-OCR 和 Texify 提供本项目广泛使用的 OCR 模型,以及 Crawl4AI 的贡献。
使用的模型:
- Surya OCR、Detect、Layout、Order 和 Texify
- Florence-2 base
- Whisper Small
感谢这些模型的作者们的贡献。
联系方式
如有任何疑问,请发送邮件至 adithyaskolavi@gmail.com 与我们联系。