为 AI Agent 提供各种实用工具的 FastAPI 服务。目前支持 PDF 处理和版面解析功能。
- PDF 转图像:将 PDF 每页转换为高质量 PNG 图像
- OCR 方向校正:自动检测并校正图像中文字的方向
- 自定义 DPI:支持指定输出图像的分辨率
- 图像拼接:支持将多页 PDF 拼接为长图
- 多格式支持:支持图像(JPEG、PNG、GIF、WebP、BMP、TIFF)和 PDF 文件
- Markdown 输出:将文档内容解析为结构化的 Markdown 格式
- 表格识别:支持复杂表格的识别和转换
- 多种输入方式:支持 URL、Base64 编码和文件上传
- 自动 Base64 转换:URL 输入会自动下载并转换为 Base64,避免网络访问问题
AIAgentSupportService/
├── app/
│ ├── routers/
│ │ ├── __init__.py
│ │ ├── pdf.py # PDF 处理路由
│ │ └── layout_parsing.py # 版面解析路由
│ ├── services/
│ │ ├── __init__.py
│ │ ├── pdf_converter.py # PDF 转换服务
│ │ └── layout_parsing_service.py # 版面解析服务
│ ├── __init__.py
│ └── main.py
├── static/ # 生成的图像存储目录
├── uploads/ # 上传的文件临时存储目录
├── docker-compose.yml
├── docker-compose.yml.example
├── Dockerfile
├── openapi.yaml # OpenAPI 规范文档
├── requirements.txt
└── README.md
cd AIAgentSupportService复制示例配置文件并修改:
cp docker-compose.yml.example docker-compose.yml编辑 docker-compose.yml,配置版面解析 API 地址:
environment:
- LAYOUT_PARSING_API_URL=http://your-api-server:port/v2/models/layout-parsing/inferdocker-compose up --build服务将在 http://localhost:8000 启动。
访问 http://localhost:8000/docs 查看 Swagger UI 文档。
curl -X POST "http://localhost:8000/api/v1/process-pdf/" \
-F "file=@/path/to/document.pdf" \
-F "dpi=300"响应示例:
{
"message": "PDF processed successfully",
"image_urls": [
"http://localhost:8000/static/document_page_1.png",
"http://localhost:8000/static/document_page_2.png"
]
}curl -X POST "http://localhost:8000/api/v1/process-pdf-stitched/" \
-F "file=@/path/to/document.pdf" \
-F "dpi=300"通过 URL 或 Base64 编码调用:
curl -X POST "http://localhost:8000/api/v1/layout-parsing/" \
-H "Content-Type: application/json" \
-d '{
"file": "http://example.com/document.png",
"prettify_markdown": true
}'响应示例:
{
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"markdown_results": [
{
"text": "# 文档标题\n\n这是文档内容...",
"is_start": true,
"is_end": true
}
],
"data_info": {
"width": 2481,
"height": 3508,
"type": "image"
},
"full_markdown": "# 文档标题\n\n这是文档内容..."
}直接上传文件进行解析:
curl -X POST "http://localhost:8000/api/v1/layout-parsing/upload/" \
-F "file=@/path/to/document.png"简化版接口,只返回 Markdown 文本:
curl -X POST "http://localhost:8000/api/v1/layout-parsing/markdown-only/" \
-H "Content-Type: application/json" \
-d '{"file": "http://example.com/document.png"}'响应示例:
{
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"full_markdown": "# 文档标题\n\n这是文档内容...",
"page_markdowns": [
{
"page_index": 0,
"markdown": "# 文档标题\n\n这是文档内容..."
}
],
"total_pages": 1
}| 参数 | 类型 | 说明 |
|---|---|---|
file |
string | 图像/PDF 的 URL 或 Base64 编码内容(必填) |
api_url |
string | 版面解析 API 地址(可选,默认从环境变量读取) |
file_type |
integer | 文件类型:0=PDF,1=图像(可选,自动推断) |
visualize |
boolean | 是否返回可视化结果(默认 false) |
prettify_markdown |
boolean | 是否美化 Markdown 输出(默认 true) |
use_layout_detection |
boolean | 是否使用版面检测 |
use_chart_recognition |
boolean | 是否使用图表识别 |
merge_layout_blocks |
boolean | 是否合并版面块 |
docker-compose down不使用 Docker 运行:
# 安装依赖
pip install -r requirements.txt
# 设置环境变量
export LAYOUT_PARSING_API_URL="http://your-api-server:port/v2/models/layout-parsing/infer"
# 启动服务
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload- 版面解析 API 配置:需要配置
LAYOUT_PARSING_API_URL环境变量指向远程版面解析服务 - 文件大小限制:PDF 文件默认只处理前 10 页
- 支持的图像格式:JPEG、PNG、GIF、WebP、BMP、TIFF
- 自动 Base64 转换:传入 URL 时,服务会自动下载并转换为 Base64,避免远程 API 网络访问问题