
MinerU将pdf,word等文档转为数据集
MinerU为开源的将pdf、word等文档转为markdown文件的工具文档
安装
下载:
git clone https://github.com/opendatalab/MinerU.git
创建Conda环境
conda create -n MinerU 'python=3.12' -y
启动conda环境
conda activate MinerU
只安装pdf转markdown
pip install -U "magic-pdf[full]" -i https://mirrors.aliyun.com/pypi/simple
完整安装
pip install "mineru[all]>=2.0.0" -i https://mirrors.aliyun.com/pypi/simple
下载模型权重文件 linux下
pip install huggingface_hub
wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/scripts/download_models_hf.py -O download_models_hf.py
python download_models_hf.py
方式一:
pip install huggingface_hub
curl -o download_models_hf.py https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/scripts/download_models_hf.py
python download_models_hf.py
方式二:
pip install modelscope
curl -o download_models.py https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/scripts/download_models.py
python download_models.py
新版本这种方法弃用了,直接运行就可以自动下载模型
下载完成后,系统会自动在用户目录下生成magic-pdf.json配置文件
Windows:C:\Users\用户名
Linux:/home/用户名
macOS:/Users/用户名
使用 CUDA 加速
修改【用户目录】中配置文件 magic-pdf.json 中”device-mode”的值
{ "device-mode":"cuda" }
覆盖安装支持 cuda 的 torch 和 torchvision
CUDA11.8
pip install --force-reinstall torch==2.3.1 torchvision==0.18.1 --index-url https://download.pytorch.org/whl/cu118
CUDA12.4
pip install --force-reinstall torch==2.6.0 torchvision==0.21.1 "numpy<2.0.0" --index-url https://download.pytorch.org/whl/cu124
CUDA12.6
pip install --force-reinstall torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu126
如果使用CUDA12.8建议使用torch 2.7.0
开启OCR加速
pip install paddlepaddle-gpu==2.6.1
测试 如果只安装了magic-pdf则使用以下指令
magic-pdf -p small_ocr.pdf -o ./output
完全安装
mineru -p small_ocr.pdf -o ./output
gradio_app: 基于 Gradio 的 Web 应用
pip install gradio gradio-pdf
安装easy dataset
将 markdown 文件转为 json 格式的数据集文档
客户端安装
github下载:https://github.com/ConardLi/easy-dataset/releases
网盘下载:https://pan.quark.cn/s/ef8d0ef3785a
源码安装
下载:
git clone https://github.com/ConardLi/easy-dataset.git
NPM 启动
cd easy-dataset
安装依赖:
npm install
编译
npm run build
启动服务器
npm run start
docker启动
下载:
git clone https://github.com/ConardLi/easy-dataset.git
cd easy-dataset
构建 Docker 镜像:
docker build -t easy-dataset .
运行容器:
docker run -d -p 1717:1717 -v {YOUR_LOCAL_DB_PATH}:/app/local-db --name easy-dataset easy-dataset
npm install时报错
删除 node_modules 目录和 package-lock.json
这是关闭赞助提示的,可以不用关闭
npm config set fund false --location=global
跳过本次安装的审计
npm install --no-audit
全局关闭审计(不推荐生产环境)
npm set audit false
重新安装
npm install
最后再分享一个快速将情景对话转为 sharegpt 格式的多轮对话数据集的方法:
import json import queue import re from openai import OpenAI import requests class RemoteModelInstance: model_client = None headers = { "Content-Type": "application/json" } def __init__(self, **kwargs): self.base_url = kwargs.get("base_url", "http://127.0.0.1:1234/v1") self.api_key = kwargs.get("api_key", "lm-studio") self.sys_prompt = kwargs.get("sys_prompt", "你是一个ai助手") self.api_type = kwargs.get("api_type", "openai") self.model_name = kwargs.get("model_name", "qwen3-32b") if self.api_type == "openai"or self.api_type == 'lmstudio'or self.api_type == 'lm-studio': self.model_client = OpenAI(base_url=self.base_url, api_key=self.api_key) def single_request(self, content, **kwargs): try: conversion = [ {"role": "system", "content": self.sys_prompt}, {"role": "user", "content": content} ] response = "" if self.api_type == "openai": response = self.model_client.chat.completions.create( model=self.model_name, messages=conversion, **kwargs ) elif self.api_type == "ollama": data = { "model": self.model_name, "messages": conversion, "stream": False } response = requests.post(self.base_url, headers=self.headers, json=data).json() response = response.get("message")["content"] else: return response parts = re.split(r'</think>.*', response, maxsplit=1, flags=0) if len(parts) > 1: response = ' '.join(parts[1:]) else: response = parts[0] return response except Exception as e: print(f"model request Error: {e}") returnNone base_sys_prompt = '你是一个数据标注工程师,你需要将我给的对话片段转换为标准JSON对话格式。' base_sys_prompt += '要求:1. 只需输出结果,不要任何分析解释。' base_sys_prompt += '2. 格式必须严格遵循这个示例:{"conversations": [{"role": "user/assistant","content": "合并后的对话内容和上下文描述"}]}。' base_sys_prompt += '3. 处理规则:将直接引语和旁白描述合并到content字段说,话者作为内容开头,旁白描述转为第三人称叙述。' # model = RemoteModelInstance(base_url='http://192.168.137.163:1234/v1',api_key='lmstudio',api_type='openai',model_name='qwen3:32b') model = RemoteModelInstance(base_url='http://192.168.0.132:11434/api/chat',api_key='ollama',api_type='ollama',model_name='qwen3:32b') user_name = '奥黛丽' assistant_name = '其余' sys_prompt = base_sys_prompt + f'对话中{user_name}的role为user,{assistant_name}的role为assistant' model.sys_prompt = sys_prompt print(model.single_request('“太感谢您了!‘愚者’先生您真是太慷慨了!”奥黛丽欣喜地回应道。她为自己刚才想用金钱购买消息的庸俗忏悔了三秒。克莱恩停止手指的敲动,语气平淡地描述道:“第一个常识,非凡特性不灭定律,非凡特性不会毁灭,不会减少,只是从一个事物转移到另一个事物。”我不知不觉竟然用上了队长的口吻……克莱恩的嘴角下意识就翘了起来。'))
运行结果:
{"conversations": [{"role": "user", "content": "奥黛丽:太感谢您了!‘愚者’先生您真是太慷慨了!她为自己刚才想用金钱购买消息的庸俗忏悔了三秒"}, {"role": "assistant", "content": "克莱恩:第一个常识,非凡特性不灭定律,非凡特性不会毁灭,不会减少,只是从一个事物转移到另一个事物。克莱恩不知不觉竟然用上了队长的口吻,嘴角下意识翘了起来"}]}
完整提示词:
你是一个数据标注工程师,你需要将我给的对话片段转换为标准JSON对话格式。要求:1. 只需输出结果,不要任何分析解释。2. 格式必须严格遵循这个示例:{"conversations": [{"role": "user/assistant","content": "合并后的对话内容和上下文描述"}]}。3. 处理规则:将直接引语和旁白描述合并到content字段说,话者作为内容开头,旁白描述转为第三人称叙述。
可以直接将上面的提示词给官方的Ai,直接使用更方便,效果也会更好。
[超站]友情链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/

随时掌握互联网精彩
- 1 读懂“两山”理念的天下情怀 7903931
- 2 “职业背债人”被200万买断人生 7808432
- 3 多地暂停汽车“国补” 怎么回事 7714016
- 4 一组数据带你回顾2025世运会 7616477
- 5 NBA球星来中国一趟什么都想带回家 7524148
- 6 60岁李国庆谈再婚:妻子是“白月光” 7427846
- 7 “中医堂”涉违规广告 网警提醒 7328300
- 8 牛弹琴:特朗普果然大杀四方 7231939
- 9 父母悬赏上海一套房寻被拐26年儿子 7136159
- 10 今日出伏 三伏天正式结束 7047229