一个基于Node.js的文档批量上传和解析工具,支持与mineru.net API集成。
# Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
# 或者使用nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install 18
cd /workspace
npm install
复制.env.example为.env并填写配置:
cp .env.example .env
编辑.env文件,填写以下内容:
# Mineru API配置
API_TOKEN=your_actual_api_token_here
API_BASE_URL=https://mineru.net
# 目录配置
DOCUMENTS_DIR=./documents
RESULTS_DIR=./results
# 轮询配置(毫秒)
POLL_INTERVAL=5000
MAX_POLL_INTERVAL=60000
# 文件配置
MAX_FILE_SIZE=209715200
# 任务超时配置(毫秒)
TASK_TIMEOUT=7200000
将待解析的文档放入documents目录:
# 示例文档
cp your_file.pdf documents/
主要功能(上传+解析+下载):
npm start
开发模式(支持热重载):
npm run dev
仅下载已有结果(如果之前只解析了但没有下载):
npm run download
处理完成后,系统会自动:
results/目录results/目录结果JSON文件格式:
{
"batch_id": "...",
"timestamp": "2025-01-21T...",
"results": [
{
"file_name": "example.pdf",
"state": "done",
"full_zip_url": "https://..."
}
],
"statistics": {
"total": 1,
"done": 1,
"failed": 0,
"running": 0
}
}
.pdf.doc, .docx.pptx.xlsx.txt| 配置项 | 说明 | 默认值 |
|---|---|---|
API_TOKEN | API认证令牌(必填) | - |
API_BASE_URL | API基础URL | https://mineru.net |
DOCUMENTS_DIR | 文档目录 | ./documents |
RESULTS_DIR | 结果目录 | ./results |
POLL_INTERVAL | 初始轮询间隔(毫秒) | 5000 |
MAX_POLL_INTERVAL | 最大轮询间隔(毫秒) | 60000 |
MAX_FILE_SIZE | 最大文件大小(字节) | 209715200 (200MB) |
TASK_TIMEOUT | 任务超时时间(毫秒) | 7200000 (2小时) |
TASK_TIMEOUT配置| 命令 | 说明 |
|---|---|
npm start | 上传文档、解析并自动下载解压 |
npm run dev | 开发模式(支持热重载) |
npm run download | 仅下载已解析的结果 |
npm run view | 查看所有解析结果详情 |
/workspace
├── package.json # 项目配置
├── config.js # 配置管理
├── index.js # 主程序
├── download_results.js # 下载脚本
├── view_results.js # 查看结果脚本
├── services/
│ ├── apiService.js # API调用服务
│ └── fileService.js # 文件处理服务
├── documents/ # 待解析文档目录
└── results/ # 解析结果目录
├── *.json # 解析结果元数据
├── *.zip # 下载的ZIP文件
└── *_extracted/ # 解压的文件
├── full.md # 完整Markdown
├── *_origin.pdf # 原始PDF
├── *_content_list.json # 内容列表
└── layout.json # 布局信息
每个解析成功的文档会生成ZIP文件,解压后包含:
full.md - 完整的Markdown格式内容*_origin.pdf - 原始PDF文件*_content_list.json - 内容列表JSONlayout.json - 页面布局信息使用nodemon实现热重载:
npm run dev
修改代码后,nodemon会自动重启应用。
A: 请在mineru.net官网申请API Token。
A: 检查网络连接、文件大小和API Token是否正确。
A: 如果需要处理超过200个文件,脚本会分批处理。
MIT