夜雨聆风学习资料网

ARTICLE · 1256456

一站式扫描版PDF到epub电子书制作教程

一站式扫描版PDF到epub电子书制作教程

前言

网上存在大量的扫描版PDF,但是对于手机或者屏幕较小的电子书阅读器,读起来其实很不方便,字很小,比较费眼睛。虽然有很多软件支持扫描版PDF的重排,例如多看、KOReader、K2PDF等,但是效果得不到保证。

本文旨在提供一种自动化的由扫描版的PDF生成epub书籍,目标是尽可能准确,避免人工的介入,以减少工作量,从而将更多的时间用作读书上面,而不是耗费与迷失在各种工具里面。

目标是尽可能生成排版美观的epub格式电子书,毕竟颜值是第一生产力。但是终究是依靠了工具,人介入的部分较少,因此其实也得不到保证。但是其实只要能看,我觉得就够了。排版只是锦上添花。

本教程主要是用于自己转换电子书以及验证这种方式的可行性,以下所述的步骤与方式其实还有很大的优化空间。

工具

先说明下本文需要用到的工具。

  • • Python:Python运行环境,用于运行Python代码。
  • • Sigil:epub电子书编辑、制作软件,用于编辑与预览。
  • • MinerU:将PDF、Office文档等复杂文件转换为LLM可处理的Markdown/JSON格式,用于您的代理工作流。将扫描版PDF转成文本格式主要依靠这个。

步骤

软件安装与环境准备

本地自己跑:

  • • 操作系统:Windows 11(笔记本电脑)
  • • 4060显卡
  • • Python版本:3.10.6(MinerU也会用到,官方要求版本:>=3.10,<3.15)
  • • Sigil下载:2.8.1

Python环境安装

  • • 作用:
    • • Python代码执行环境
    • • MinerU使用
  • • Python下载:

Python下载,官网地址:https://www.python.org/downloads/,根据自己的系统下载对应版本即可。

  • • Python安装:

安装就跟安装普通软件差不多,不会的网上搜一下或者问下DeepSeek/豆包即可。

Sigil安装

  • • 作用:
    • • 编辑epub文件
    • • 预览epub文件
  • • Sigil下载:

Sigil下载,官网地址:https://sigil-ebook.com/sigil/download/,根据自己的系统下载对应版本即可。

  • • Sigil安装:

安装就跟安装普通软件差不多,不会的网上搜一下或者问下DeepSeek/豆包即可。

MinerU安装

MinerU 是一个开源的智能文档解析引擎,能把 PDF、扫描件等复杂文档高精度转换为保留版面、公式和表格的 Markdown/JSON,常用于为大模型和 RAG 构建高质量语料。

MinerU的安装参考了其官方GitHub仓库,地址:https://github.com/opendatalab/MinerU。

MinerU其实提供了在线的使用,官方地址:https://mineru.net/OpenSourceTools/Extractor。但是在线的对解析的文档页数有限制。

同时官方还提供了客户端,下载地址:https://mineru.net/client。不过我没用过客户端,我猜大概应该还是在线的方式。

MinerU的在线是免费使用的,之前使用过。我记得单次上传文档不能超过200页。另外看官方网站也没有看到收费的策略,官方的限流策略里面写的是:“目前暂无商业化收费计划”。但是使用超过限制,也会有一定的限流策略,具体见官网说明:https://mineru.net/apiManage/limit。

此外MinerU还可以在自己的Agent Workflow里面使用,相见官方说明。

本文采用本地部署的方式。(我一直比较喜欢离线的,数据主权和控制权攥在自己手里才放心🤣)。

MinerU安装步骤如下:

  • • 安装好前面的Python,版本需要与官方的说明一致
  • • 在合适的位置创建一个目录,作为MinerU的专属文件夹,我这里创建在E盘,目录为:E:\MinerU
  • • 打开powershell,进入该MinerU专属目录
  • • 安装uv(uv 是一个用 Rust 编写的高速 Python 包与环境管理工具,能一站式替代 pip 和 venv,快速创建虚拟环境并安装依赖。),命令为:pip install uv
  • • 在这个MinerU的专属目录下创建一个名为.mineru的Python虚拟环境,并指定这个环境使用的Python版本,命令为:uv venv .mineru --python 3.12
  • • 在powershell终端里面“激活”刚刚用uv创建的.mineru虚拟环境,让接下来的 python、pip 等命令优先使用这个环境里的解释器和包,而不是系统全局的 Python。命令为:.\.mineru\Scripts\Activate.ps1
  • • 安装MinerU,用 uv 安装 MinerU 4.x 版本的 Python 包,-U 表示升级到满足条件的最新版,>=4.0,<5 锁定主版本为 4,不会误装到 3.x 或未来的 5.x。命令为:uv pip install -U "mineru>=4.0,<5"。可以是使用mineru version --json命令来查看是否安装成功,如果成功,会输出json格式的版本号
  • • 使用命令mineru-kit parse document.pdf -o document.md --tier advanced解析文档到Markdown格式的文档:
    • • mineru-kit parse 是 MinerU 的无状态一次性解析命令,不依赖文档库、不复用缓存,直接把输入文件解析成文件产物。
    • • document.pdf:输入文件。要解析的源文件,替换成你自己的 PDF 路径即可。mineru-kit parse 支持单文件、多文件、目录三种输入;目录只展开一层,不递归。这条命令用的是单文件场景。
    • • -o document.md:输出位置。-o 是 --output 的短形式,必填,程序会自动创建父目录。可选项取决于输入类型:单文件输入:-o 可以是文件路径(如 document.md),也可以是目录路径。写文件路径时,结果直接写入这个 Markdown 文件;写目录时,会在目录下生成对应结果。多文件或目录输入:-o 必须是目录路径,不能写单个文件名。
    • • --tier advanced:解析档位。--tier 控制解析质量与计算投入,可选项有四个:flash、basic、standard(默认)、advanced。各档位定位:         
      档位
      适合场景
      本地执行方式
      flash
      快速预览、建索引、原生文本 PDF
      轻量解析,扫描件走 Flash OCR
      basic
      基础 OCR、公式和表格
      ONNX/Torch 小模型,不需要 VLM
      standard
      复杂版面、日常高质量解析
      小模型 + VLM
      advanced
      追求最高质量,愿意等更久
      与 Standard 共用模型
      ,投入更多推理计算

关于详细的命令说明,请参考官方相关文档,这里不再赘述。后续会直接使用GUI,这里只是为了展示和验证前面的是否安装成功。

这一步会涉及到很多的下载,请保持网络通畅!

  • • 启动WebUI,命令是mineru-kit webui。它启动一个基于 Gradio 的本地网页界面,默认地址通常是 http://127.0.0.1:7860,可以在浏览器里拖拽上传文件进行解析。浏览器的界面如下:

PDF转Markdown

MinerU安装部分其实已经说了如何将扫描版PDF转成Markdown格式的文档了。这里不在赘述。

Markdown转epub

使用提供的Python脚本将Markdown转成给定的epub模板的电子书籍。

使用方式:

  1. 1. 修改提供的python文件(即md_to_epub_files.py)顶部的配置为自己的:
    # ================= 配置区 =================MD_FILE = "document.md"           # 你的 MinerU 生成的 md 文件OUTPUT_DIR = "./epub_output"      # 输出文件夹BOOK_TITLE = "狐"                 # 书名# =========================================
  2. 2. 打开powershell,然后运行python脚本:python md_to_epub_files.py,脚本会在当前目录生成一个 epub_output 文件夹。注意将你的 .md 文件放在python脚本的同级目录,把图片放 images 文件夹。
  3. 3. 运行脚本。
  4. 4. 到 epub_output 目录里,你会发现:把 .xhtml 全部丢进 Text 文件夹。
    1. 1. Text/ 文件夹:里面是按章节排好的 01.xhtml、02.xhtml...
    2. 2. Misc/ 文件夹:里面是生成的 txt 纯文本。
    3. 3. toc.ncx:按你的要求生成的目录。
    4. 4. content.opf:完全自动生成,并且已经正确包含了你所有的 xhtml 文件、txt、图片和 css 文件,而且 spine 的阅读顺序也排好了。
    5. 5. mimetype 没动(因为你不需要在输出目录里放这个,你只要把这个输出目录的内容复制进你真实的模板结构里打包就行)。
  5. 5. 最后,使用Python脚本pack_epub.py打包。注意先将把代码里 INPUT_DIR 改成你那个装好所有东西的文件夹路径(注意保留前面的 r,代表原始字符串)。python pack_epub.py 运行它。它会在当前目录下生成一个 .epub 文件。

**注意:**本模板只是针对纯文字类或者包含图片的数据,对于专业的教材,由于可能包含很多公式、图表等,无法正确处理, 如有需要,可以自己写Python代码以及制作epub电子书模板进行转换。

使用Sigil编辑和调整

由于转换等,文字识别以及格式等可能会有一些偏差,可以再继续Sigil软件继续编辑调整来进行精校。软件具体的使用方式这里不再赘述,可以网上搜教程或者直接问下DeepSeek或者豆包都行。

完成与查看

可以使用自己喜欢的epub阅读器查看,推荐:

  • • 多看
  • • 静读天下
  • • readset
  • • koodo reader

结语

踩坑的地方:

  • • 一开始以为直接右键压缩 ZIP 改后缀就行,结果一导入就报错,后来才知道 mimetype 必须放在第一位且不能压缩……
  • • 第一次跑 600 多页的 PDF 时,电脑直接黑屏重启了,一定要插好电源并且电脑开启狂暴模式……

目前的流程只是完成了 0 到 1,后续甚至可以把写好的 Python 脚本接入大模型 API,自动清洗 OCR 错别字和排版,达到更完美的体验。不过有时间再搞吧。

以上!


附Python脚本/模板和成品:

通过网盘分享的文件:Python脚本与模板和参考成品.zip,1链接: https:删除//pan.bai删除du.com/s/1-2KxyZqTt3x-删除Y8FHH3IikQ 提取码: 8888

#PDF #epub #MinerU #Python #电子书 #电子书制作 #Sigil

相关学习资料