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 包管理器
安装
先决条件
- Python 3.9或更高版本
- UV包管理器 (推荐)
设置
- 克隆仓库
git clone
cd docling-project- 安装依赖项
uv sync- 配置环境变量
# 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- 运行API
cd api
uv run uvicorn main:app --reloadAPI 将提供于 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"关键终点(或关键指标)
| 端点 | 方法 | 描述 | |
|---|---|---|---|
| 中文翻译 | 英文原文 | 说明/备注 | /api/v1/parse/upload |
| 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 集成模式
- 代理文件上传策略
多智能体协同编排示例
致谢/贡献者名单
- 构建于: Docling(注:这是一个假设的或特定上下文中的名称,直接翻译为“多林”可能并不准确,因为“Docling”可能是一个品牌名、软件名或特定项目的名称,具体翻译需根据上下文确定。在此处,我们直接音译为“多林”以保留原名的发音特征。)
- 由IBM研究院(或IBM研究部门)
- FastAPI
- 谷歌生成式人工智能
