文档解析API

Docling Document Parser API是一个强大的REST API,用于解析PDF和文档,支持AI驱动的图像描述功能。

  • by Anshumaan031
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Anshumaan031/docling-parser-Agent-and-MCP

使用说明

Docling文档解析器API

一个强大的REST API,用于使用[工具/方法]解析PDF和文档 Docling(可译为“多灵”或根据具体语境保留原名)借助谷歌Gemini和OpenAI的AI图像描述功能。

特点/特性

文档解析

  • 多种解析模式:
    • standard - 使用默认设置进行均衡提取
    • ocr - 强制对扫描文档使用OCR(光学字符识别)
    • fast - 快速处理,开销极小
    • high_quality - 通过增强的图像提取技术实现最高精度

内容提取

  • 文本提取带有标签和边界框的结构化文本
  • 表格提取将表格导出为CSV、JSON或DataFrames格式
  • 图像提取提取可配置缩放比例(1倍至4倍)的图像
  • 页面元数据尺寸、页码和布局信息

基于人工智能的图像描述

  • **Docling SmolVLM(注:这是一个特定的软件或技术名称,直接翻译可能无法准确传达其含义,因此保留原样。在实际应用中,可能需要根据上下文或官方说明来确定其准确的中文表述。)**内置的视觉模型用于图像理解
  • Google Gemini与Gemini 2.5 Flash集成以提供详细描述
  • **OpenAI GPT-4o(注:这里的“o”可能是版本标识或特定功能的简写,但根据上下文无法确定具体含义,因此直接保留原样翻译)**替代视觉模型支持
  • 自定义提示配置描述风格和详细程度

API特性

  • 异步处理带有状态跟踪的后台作业处理
  • 导出格式Markdown、JSON 和原始图像导出
  • 进度跟踪实时工作状态和进度更新
  • 文件验证大小限制、MIME类型检查和扩展名验证

技术栈

  • 框架FastAPI(异步REST API)
  • 文档处理Docling(IBM研究院)
  • AI视觉Google 生成式人工智能软件开发工具包(SDK),LangChain OpenAI
  • 图像处理PIL(Pillow)
  • 环境Python 3.9+,UV 包管理器

安装

先决条件

设置

  1. 克隆仓库
git clone <repository-url>
cd docling-project
  1. 安装依赖项
uv sync
  1. 配置环境变量
# Create .env file in api/ directory
cp api/.env.example api/.env

编辑 api/.env 并添加您的API密钥:

# Optional: AI Image Description Providers
GEMINI_API_KEY=your_gemini_api_key_here
OPENAI_API_KEY=your_openai_api_key_here

# Server Configuration
API_HOST=0.0.0.0
API_PORT=8000
MAX_FILE_SIZE_MB=50
MAX_CONCURRENT_JOBS=5
  1. 运行API
cd api
uv run uvicorn main:app --reload

API 将提供于 http://localhost:8000

使用

快速入门

访问交互式API文档:

  • Swagger UIhttp://localhost:8000/docs 翻译为中文是:“本地主机上的8000端口文档页面”。不过,通常在实际语境中,我们可能会简化为“本地8000端口的文档页面”或“访问本地8000端口的文档”
  • **ReDoc(可译为“再文档”或根据具体语境译为更贴切的名称,但“ReDoc”本身常作为专有名词使用,直接保留原样也可能更符合某些技术或品牌语境)**http://localhost:8000/redoc 翻译为中文是:“http://本地主机:8000/redoc” 或者更简洁地表述为:“本地主机8000端口的redoc页面”

示例:解析PDF文件

# Upload and parse a document
curl -X POST "http://localhost:8000/api/v1/parse/upload" \
  -F "file=@document.pdf" \
  -F "parsing_mode=standard" \
  -F "extract_images=true" \
  -F "describe_images=true" \
  -F "description_provider=gemini"

# Response includes job_id
{
  "job_id": "abc-123-def",
  "status": "processing",
  "message": "Document uploaded successfully"
}

# Check job status
curl "http://localhost:8000/api/v1/parse/jobs/abc-123-def/status"

# Get results
curl "http://localhost:8000/api/v1/parse/results/abc-123-def"

关键终点(或关键指标)

端点 方法 描述
中文翻译 英文原文 说明/备注
POST 上传并解析文档 /api/v1/parse/jobs/{job_id}/status
GET 检查作业状态 /api/v1/parse/results/{job_id}
GET 获取解析结果 /api/v1/parse/results/{job_id}/export/markdown
GET 导出为Markdown格式 /api/v1/parse/results/{job_id}/export/json
GET 导出为JSON格式 /api/v1/parse/results/{job_id}/images/{image_id}

| GET | 获取提取的图像 |

docling-project/
├── api/
│   ├── main.py              # FastAPI application entry point
│   ├── config.py            # Configuration and settings
│   ├── models.py            # Pydantic data models
│   ├── parser.py            # Document parsing logic
│   ├── utils.py             # Utility functions (file handling, AI descriptions)
│   ├── storage.py           # In-memory job storage
│   ├── .env                 # Environment variables (create this)
│   └── temp/                # Temporary file storage
├── docs/
│   ├── AGENTIC_ARCHITECTURE.md      # Guide for MCP + LangGraph integration
│   └── POTENTIAL_IMPROVEMENTS.md    # Feature roadmap and enhancements
├── examples/                # Example scripts and demos
├── pyproject.toml          # Project dependencies (UV)
└── README.md              # This file

项目结构

配置 api/config.py关键设置在

  • **:**文件上传 MAX_FILE_SIZE_MB :
  • **(默认:50MB)**解析 DEFAULT_PARSING_MODE: DEFAULT_IMAGE_SCALE
  • **,**图像描述 DEFAULT_DESCRIPTION_PROMPT: GEMINI_MODEL
  • **,**工作 JOB_TIMEOUT_SECONDS: MAX_CONCURRENT_JOBS
  • **,**存储 RESULTS_TTL_SECONDS :

(结果缓存生命周期)

  • 支持的文件类型.pdfPDF(
  • ).docxWord 文档( .doc,
  • ).htmlHTML(
  • ).mdMarkdown(
  • ).png图片( .jpg, .tiff,

)

响应结构

  • **该API返回的结构化数据包括:**元数据
  • 文件名、页数、处理时间、文件哈希值统计
  • 文本项、表格、图片的计数内容
    • :
    • 整个文档的Markdown导出
    • 逐页信息
    • 带有标签和位置的文本项
    • 支持CSV/JSON导出的表格
  • 带有可选AI描述的图片出口

下载不同格式结果的URL

未来的改进/增强功能 看 docs/POTENTIAL_IMPROVEMENTS.md 翻译为中文是:docs/潜在改进点.md

  • 关于完整的功能路线图,包括:
  • 带有RAG的文档问答
  • 多文档批量处理
  • 高级表格提取
  • 表单字段检测
  • 文档对比

向量数据库集成

代理集成 要使用此API构建基于代理的应用程序,请参阅 docs/AGENTIC_ARCHITECTURE.md(文件名可译为“文档/AGENTIC架构说明.md”)

  • for:对于;为了;给;因为
  • FastAPI-MCP 服务器设置
  • LangGraph 集成模式
  • 代理文件上传策略

多智能体协同编排示例

致谢/贡献者名单