docling-api:基于Docling的文档转换


易于部署和可扩展的后端服务器,有效地将各种文档格式(pdf,docx,pptx,html,图像等)转换为Markdown。它同时支持CPU和GPU处理,非常适合大规模工作流,它提供文本/表格提取、OCR和带有sync/PECC端点的批处理。

该服务由Docling(IBM的高级文档解析器)提供支持,使用FastAPI、Celery和Redis构建,确保快速、高效的处理。该解决方案针对CPU和GPU模式进行了优化,并强烈建议在生产环境中使用GPU,可提供高性能和灵活性,是大规模处理复杂文档的理想之选。

Docling是什么?
IBM推出了一个免费的Python库,可以将任何文档转换为数据。可简化文档处理、解析各种格式(包括高级PDF理解),并提供与Gen AI生态系统的无缝集成。

文档转换架构 对于每种文档格式,文档转换器都知道要使用哪种特定格式的后端来解析文档,使用哪种管道来协调执行,以及任何相关选项。

Docling包括:

  • -用于解析的PDF后端
  • -布局分析模型
  • -基于视觉的表格格式化器
  • -文本OCR

特征:

  • 多种格式支持:支持多种文档类型,包括:
    • PDF文件
    • Microsoft Word documents (DOCX)
    • PowerPoint演示文稿(PPTX)
    • HTML文件
    • 图像(JPG,PNG,TIFF,BMP)
    • AsciiDoc文件
    • Markdown文件
    • CSV文件
 
  • 转换能力:
    • 文本提取和格式化
    • 表检测、提取和转换
    • 图像提取与处理
    • Multi-language OCR support (French, German, Spanish, English, Italian, Portuguese etc)
    • 可配置的图像分辨率缩放
  • API终点:
    • 同步单文档转换
    • 同步批处理文档转换
    • 带有作业跟踪的异步单文档转换
    • 带作业跟踪的异步批处理转换
  • 处理模式:
    • 仅CPU处理标准部署
    • GPU加速处理以提高性能
    • 使用Celery进行分布式任务处理
    • 通过Flower仪表板进行任务监控

本项目先决条件

  • Python 3.8或更高
  • Python包管理器(Python package manager)
  • Redis服务器(用于任务队列)

git clone https://github.com/drmingler/docling-api.git
cd docling-api
poetry install

开发说明

  • API文档可从http://localhost:8080/docs获得
  • Redis被用作Celery任务的消息代理和结果后端
  • 该服务支持同步和异步文档转换
  • 对于开发,服务器运行时启用了自动重新加载

架构
该服务采用分布式架构,包含以下组件:

  1. 为REST API提供服务的FastAPI应用程序
  2. 用于分布式任务处理的Celery worker
  3. Redis作为消息代理和结果后端
  4. 用于任务监控和管理的花
  5. 文件转换的Docling
性能考虑
  • GPU模式可显著加快大型文档的处理速度
  • CPU mode is suitable for smaller deployments or when GPU is not available
  • 可以横向扩展多个工作进程以提高吞吐量

组件: