选择你喜欢的标签
我们会为你匹配适合你的网址导航

    确认 跳过

    跳过将删除所有初始化信息

    MinerU将pdf,word等文档转为数据集

    源码 2025-08-19 08:53

    声明:该文章由作者(免子包围熊)发表,转载此文章须经作者同意并请附上出处(0XUCN)及本页链接。。

    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/

    图库