|
|
1 ماه پیش | |
|---|---|---|
| .. | ||
| app | 1 ماه پیش | |
| tests | 1 ماه پیش | |
| Dockerfile | 1 ماه پیش | |
| README.md | 1 ماه پیش | |
| docker-compose.yml | 1 ماه پیش | |
| requirements.txt | 1 ماه پیش | |
单容器、单接口的文档转 Markdown 服务。
POST /convert
请求格式:multipart/form-data
file:待转换文件include_images:是否保留图片,默认 false规则:
include_images=false:过滤全部图片include_images=true:本地图片会内联为 data: URI,远程图片保持原始 URL成功响应:
200 OKContent-Type: text/markdown; charset=utf-8python -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txt
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000
PDF 处理策略:
PyMuPDF4LLM 提取 Markdown。PyMuPDF blocks、pdfplumber、pdfminer.six、pypdf。422。调用示例:
curl.exe -X POST "http://127.0.0.1:8000/convert" -F "file=@D:\path\file.docx" -F "include_images=false"
docker build -t doc2md-service .
docker rm -f doc2md-service
docker run --rm -p 18000:8000 --name doc2md-service doc2md-service
使用 docker compose:
docker compose up -d --build
docker compose logs -f
docker compose down
默认并发策略:
4 个转换任务。8 个请求排队等待。429。如果只是代码有更新,想优先复用缓存、加快构建,直接用:
docker build -t doc2md-service .
只有在依赖或底层环境异常、怀疑缓存脏了时,再用:
docker build --no-cache -t doc2md-service .
查看服务是否启动:
curl.exe http://127.0.0.1:18000/openapi.json
查看容器日志:
docker logs -f doc2md-service
停止容器:
docker rm -f doc2md-service
快速验证 PDF:
curl.exe -X POST "http://127.0.0.1:18000/convert" -F "file=@D:\CodeSpace\personal-secretary\Scripts\Word转Markdown\测试文件\pdf-1.pdf;type=application/pdf" -F "include_images=false"
快速验证 WPS:
curl.exe -X POST "http://127.0.0.1:18000/convert" -F "file=@D:\CodeSpace\personal-secretary\Scripts\Word转Markdown\测试文件\wps-1.wps;type=application/octet-stream" -F "include_images=false"
服务支持以下环境变量:
| 变量名 | 默认值 | 说明 |
|---|---|---|
DOC2MD_HOST |
0.0.0.0 |
本地直接运行 python -m uvicorn 时绑定的主机地址。 |
DOC2MD_PORT |
8000 |
本地直接运行时监听端口。 |
DOC2MD_MAX_WORKERS |
4 |
同时执行转换任务的最大 worker 数。 |
DOC2MD_MAX_QUEUE_SIZE |
8 |
当 worker 已满时,额外允许排队等待的请求数量。超出后返回 429。 |
DOC2MD_MAX_UPLOAD_MB |
100 |
单个上传文件大小上限,超出返回 413。 |
DOC2MD_MAX_RESPONSE_MB |
30 |
单次返回 Markdown 文本大小上限,超出返回 413。 |
DOC2MD_REQUEST_TIMEOUT_SECONDS |
300 |
单次转换任务的总超时时间,超时返回 504。 |
DOC2MD_OFFICE_TIMEOUT_SECONDS |
180 |
doc/wps 标准化为 docx 时,Office/LibreOffice 子进程的超时时间。 |
DOC2MD_CHUNK_SIZE_BYTES |
1048576 |
上传文件时单次读取的块大小。 |
示例:
docker run --rm -p 18000:8000 --name doc2md-service `
-e DOC2MD_MAX_WORKERS=6 `
-e DOC2MD_MAX_QUEUE_SIZE=12 `
-e DOC2MD_MAX_UPLOAD_MB=200 `
doc2md-service
python tests/smoke_samples.py
python tests/smoke_samples.py --include-images