❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- 功能:支持 PDF、Word、PPT 等多种文档格式的智能提取,提供文本、表格、图表和图像的分类提取。
- 技术:基于微服务架构,利用 GPU 加速和 OCR 技术,显著提升文档处理效率。
- 应用:适用于企业内容管理、智能客服、法律合规、金融和医疗保健等领域。
正文(附运行示例)
NVIDIA-Ingest 是什么
NVIDIA-Ingest 是英伟达开源的一款智能文档提取工具,专门用于解析复杂的非结构化文档,如 PDF、Word、PowerPoint 和图像等。它能够将这些文档转换为结构化的元数据和文本,便于嵌入到检索系统中,支持大规模文档处理和生成式应用。
NVIDIA-Ingest 基于微服务架构,每个微服务负责特定的处理任务,如文本提取、图像提取和表格提取等。通过 GPU 加速,特别是 H100 和 A100 GPU,显著提升了文档解析和内容提取的效率。此外,它还集成了多种 OCR 引擎,如 PaddleOCR,进一步提高了文本识别的准确性和效率。
NVIDIA-Ingest 的主要功能
- 多格式支持:支持解析 PDF、Word (Docx)、PowerPoint (Pptx) 和图像等多种复杂的企业文档格式。
- 多方法提取:提供多种提取方法,便于在吞吐量和准确性之间进行权衡。例如,PDF 文档支持 pdfium、Unstructured.io 和 Adobe Content Extraction Services 进行提取。
- 内容分类与提取:将文档内容分类为文本、表格、图表和图像,分别提取这些内容,并通过 OCR 技术将提取的内容转换为定义良好的 JSON 模式。
- 并行处理:支持将文档拆分为页面,并行处理每个页面的内容提取,显著提高处理效率。
- 预处理和后处理:支持多种预处理和后处理操作,包括文本分割和分块、内容转换、过滤、嵌入生成和图像存储。
NVIDIA-Ingest 的技术原理
- 微服务架构:基于微服务架构,每个微服务负责特定的处理任务,如文本提取、图像提取、表格提取等,提高系统的可扩展性和灵活性。
- GPU 加速:基于 NVIDIA 的 GPU 技术,特别是 H100 和 A100 GPU,加速文档解析和内容提取过程。GPU 的并行计算能力显著提高了处理效率,尤其是在处理大量文档时。
- 光学字符识别(OCR):使用 OCR 技术将文档中的图像和表格内容转换为可读的文本。NVIDIA-Ingest 集成多种 OCR 引擎,如 PaddleOCR,提高文本识别的准确性和效率。
如何运行 NVIDIA-Ingest
1. 启动容器
首先,克隆 NVIDIA-Ingest 的 GitHub 仓库并启动所有服务:
git clone https://github.com/nvidia/nv-ingest
cd nv-ingest
docker compose up
2. 安装 Python 依赖
在主机上创建一个 Python 环境并安装客户端依赖:
conda create --name nv-ingest-dev --file ./conda/environments/nv_ingest_environment.yml
conda activate nv-ingest-dev
cd client
pip install .
3. 提交文档提取任务
使用 Python 提交文档提取任务:
import logging, time
from nv_ingest_client.client import NvIngestClient
from nv_ingest_client.primitives import JobSpec
from nv_ingest_client.primitives.tasks import ExtractTask
from nv_ingest_client.util.file_processing.extract import extract_file_content
logger = logging.getLogger("nv_ingest_client")
file_name = "data/multimodal_test.pdf"
file_content, file_type = extract_file_content(file_name)
job_spec = JobSpec(
document_type=file_type,
payload=file_content,
source_id=file_name,
source_name=file_name,
extended_options=
{
"tracing_options":
{
"trace": True,
"ts_send": time.time_ns()
}
}
)
extract_task = ExtractTask(
document_type=file_type,
extract_text=True,
extract_images=True,
extract_tables=True
)
job_spec.add_task(extract_task)
client = NvIngestClient(
message_client_hostname="localhost",
message_client_port=7670
)
job_id = client.add_job(job_spec)
client.submit_job(job_id, "morpheus_task_queue")
result = client.fetch_job_result(job_id, timeout=60)
print(f"Got {len(result)} results")
4. 查看提取结果
提取完成后,可以在 processed_docs
文件夹中查看提取的文本和图像内容:
ls -R processed_docs/
资源
- GitHub 仓库:https://github.com/nvidia/nv-ingest
- 环境配置文档:https://github.com/nvidia/nv-ingest/tree/main/docs/prepare_env/install_guide-zh.md
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦