❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. 功能:支持 PDF、Word、PPT 等多种文档格式的智能提取,提供文本、表格、图表和图像的分类提取。
  2. 技术:基于微服务架构,利用 GPU 加速和 OCR 技术,显著提升文档处理效率。
  3. 应用:适用于企业内容管理、智能客服、法律合规、金融和医疗保健等领域。

正文(附运行示例)

NVIDIA-Ingest 是什么

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/

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦