logo
0
0
WeChat Login

Mineru 文档批量上传解析工具

一个基于Node.js的文档批量上传和解析工具,支持与mineru.net API集成。

功能特性

  • 📁 批量扫描文档目录
  • 🔍 文件类型和大小验证
  • 📤 自动上传文档
  • ⏳ 异步任务轮询
  • 📊 结果统计和保存
  • 🔥 支持nodemon热重载

前置要求

  • Node.js >= 14.x
  • npm >= 6.x

安装步骤

1. 安装Node.js(如果未安装)

# 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

2. 安装项目依赖

cd /workspace
npm install

3. 配置环境变量

复制.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

使用方法

1. 准备文档

将待解析的文档放入documents目录:

# 示例文档
cp your_file.pdf documents/

2. 运行脚本

主要功能(上传+解析+下载)

npm start

开发模式(支持热重载)

npm run dev

仅下载已有结果(如果之前只解析了但没有下载):

npm run download

3. 查看结果并下载

处理完成后,系统会自动:

  1. 将任务结果保存为JSON文件到results/目录
  2. 自动下载所有解析成功的ZIP文件到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_TOKENAPI认证令牌(必填)-
API_BASE_URLAPI基础URLhttps://mineru.net
DOCUMENTS_DIR文档目录./documents
RESULTS_DIR结果目录./results
POLL_INTERVAL初始轮询间隔(毫秒)5000
MAX_POLL_INTERVAL最大轮询间隔(毫秒)60000
MAX_FILE_SIZE最大文件大小(字节)209715200 (200MB)
TASK_TIMEOUT任务超时时间(毫秒)7200000 (2小时)

注意事项

  1. 单次上传限制:单次最多处理200个文件
  2. 文件大小限制:单个文件不超过200MB
  3. 上传链接有效期:申请的上传链接有效期为24小时
  4. 超时设置:任务默认超时时间为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 - 内容列表JSON
  • layout.json - 页面布局信息

开发

使用nodemon实现热重载:

npm run dev

修改代码后,nodemon会自动重启应用。

常见问题

Q: 如何获取API Token?

A: 请在mineru.net官网申请API Token。

Q: 上传失败怎么办?

A: 检查网络连接、文件大小和API Token是否正确。

Q: 如何处理大量文件?

A: 如果需要处理超过200个文件,脚本会分批处理。

License

MIT