Files
homelab-wiki/services/marker.md

3.0 KiB

title, lifecycle, evidence, last_reviewed, last_verified
title lifecycle evidence last_reviewed last_verified
Marker 文档转换指南 unknown documented 2026-09-16 null

Marker

Marker 用 GPU 将 PDF 转为 Markdown 等格式。本页依据 homelab-infra apps/marker/README.md、 Dockerfile 与 Kubernetes manifests,以及下列上游 API 源码整理,未查询运行环境。 源码 Deployment 仍使用 <your-registry>/marker:latest 占位符,不能据此认定服务已经上线。

使用前提与入口

先由维护者完成镜像构建、部署与可达性确认,再使用集群内入口 http://marker.default.svc.cluster.local:8001。所读配置没有记录外部域名或客户端认证流程。 普通应用无需重新执行 README 中的部署步骤。

镜像未固定 marker-pdf 版本,示例必须与实际部署的 /docs 接口说明核对。 上游当前 marker_server 默认绑定 127.0.0.1,而本地配置只传 --port; 如果所构建版本也如此,维护者需设置 --host 0.0.0.0 才能供 Service 访问。 这是部署前检查点,本轮未修改 manifest 或判定现场故障。

转换一个 PDF

在能访问该 Service 的客户端,准备一份适合测试的 sample.pdf,设置 MARKER_BASE_URL 为已确认的入口。上传会处理文件并占用 GPU,先以单个小文件串行验证:

curl --fail --silent --show-error \
  -F '[email protected];type=application/pdf' \
  -F 'output_format=markdown' \
  "${MARKER_BASE_URL:?请设置已确认的入口}/marker/upload" \
  -o marker-result.json

检查转换是否成功,再将 Markdown 保存到本地:

import json
from pathlib import Path

result = json.loads(Path("marker-result.json").read_text())
if result.get("success") is not True:
    raise SystemExit("转换失败,请检查返回的 error 字段")
Path("sample.md").write_text(result["output"])

接口和返回结构依据 Marker server 源码。 HTTP 成功不等于转换成功,需要检查 success。返回还可能包含图片数据;仅写出 output 不会将图片自动保存为独立附件。需要完整图文时应按实际版本返回的图片字段另行保存并核对引用。

资源与文档边界

本地 README 的目标是适配 4 GB 显存,保持单副本、单 worker,并避免并发转换。 显存不足时先缩小测试文件或处理范围,不直接增加副本或并发。 Pod 没有业务 PVC,消费者应保存转换结果,不能将容器临时目录当文档库。

转换结果需要复核表格、代码、顺序及遗漏,再写入知识库;转换工具不确认文档事实或当前服务状态。 连接失败检查部署入口与监听地址,转换失败检查文件、模型加载及 GPU 资源。 依赖为 Kubernetes、GPU 设备支持、模型与临时磁盘;部署维护入口为 apps/marker/README.md。

来源文件的固定版本与工作区差异见来源追溯。