通过百度 AI Studio 的 PaddleOCR-VL API,把一个目录里的 PDF 和图片批量转成 Markdown(含图片)。
支持的格式:.pdf、.png、.jpg、.jpeg、.bmp、.tif、.tiff、.webp(图片会被当作单页文档处理)。PDF 和图片可以混放在同一目录里一起处理。
# 1. 创建虚拟环境并安装依赖
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
# 2. 配置 token:复制模板后填入你的 AI Studio access token
cp .env.example .env
# 然后编辑 .env,把 PADDLEOCR_TOKEN 改成你的真实 token# 基本用法:转换某个目录下的所有 PDF / 图片,结果输出到 ./output
.venv/bin/python ocr.py --input "/path/to/files" --output ./output --workers 3# 实际例子:转换爱德基金会那批 PDF
.venv/bin/python ocr.py --input "/Users/liangnuanhui/Downloads/reference/爱德" --output ./output --workers 3# 重新转换(忽略已完成标记,强制全部重跑)
.venv/bin/python ocr.py --input "/path/to/files" --output ./output --workers 3 --force# 单线程运行(最稳,速度慢;调试时用)
.venv/bin/python ocr.py --input "/path/to/files" --output ./output --workers 1| 参数 | 说明 | 默认值 |
|---|---|---|
--input |
存放 PDF / 图片的目录(会递归查找子目录中支持的文件) | 必填 |
--output |
输出目录 | output |
--workers |
并行处理的文件数 | 1 |
--force |
重新处理已标记完成的文件 | 关闭 |
每个输入文件在输出目录下生成一个同名子目录:
output/
└── 文件名/
├── 文件名.md # Markdown 正文,页面间用 <!-- page N --> 分隔
├── imgs/... # 从文档中提取的图片
└── .done # 完成标记,重跑时自动跳过(除非加 --force)
⚠️ 输出子目录按文件名(去掉后缀)命名,所以同一目录下若有report.pdf和report.png,会写入同一个子目录并互相覆盖。混放时注意文件名不要去后缀后重名。
- 已完成的文件(存在
.done)在重跑时会自动跳过。 - 上传后被中断的任务会保存
job_id,下次运行直接从该任务恢复,无需重新上传 PDF。 Ctrl+C可安全中断:排队中的任务被取消,正在轮询的任务会保存进度以便恢复。