EBook 图片提取工具
本工具用于批量提取 EPUB/PDF 文件中的图片内容,并将其打包为 ZIP 文件。支持跳过漫画类 EPUB(pre-paginated 类型)、并发处理、多目录扫描、自定义输出路径等功能,适用于图像型电子书(如漫画、插图小说、写真集等)的图像整理与归档
📦 功能简介
- ✅ 支持批量扫描 EPUB/PDF 文件并提取图片
- ✅ 自动跳过漫画类 EPUB(可选)
- ✅ 自动忽略图片比例过低的 EPUB/PDF
- ✅ PDF 空白页检测并自动跳过
- ✅ 保留 EPUB 中的图片目录结构
- ✅ 根据页面标题自动命名提取出的图片
- ✅ 支持并发提取,显著加快处理速度
- ✅ 支持输出目录自定义
- ✅ 支持提取成功后自动删除原始文件(可选)
📦 环境要求
- Python 3.7+
- 安装依赖:
pip install PyMuPDF
🔧 使用方式
命令行执行
python ebook_imgzip.py -d 输入目录 [可选参数]
参数说明:
| 参数 | 说明 |
|---|---|
-d, --dir |
指定包含 EPUB/PDF 文件的目录 |
-o, --output-dir |
输出 ZIP 文件的目录,留空则与 EPUB/PDF 同目录 |
--no-skip-manga |
不跳过漫画类 EPUB(默认跳过) |
--delete-source |
提取成功后删除原始 EPUB/PDF 文件 |
-w, --workers |
最大并发线程数(默认自动设定) |
示例:
# 提取 ./books 目录中所有 EPUB/PDF 中的图片到 ./output 目录,使用 8 个线程,不跳过漫画,提取后删除源文件
python ebook_imgzip.py -d ./books -o ./output --no-skip-manga --delete-source -w 8
交互模式(可选):
你也可以只运行脚本,系统会提示输入参数:
python epub_imgzip.py
🖼️ 命名规则
提取出的图片文件将根据 HTML 页面标题或文件名进行命名,使用如下格式:
0001_页面标题.jpg
0002_页面标题.jpg
...
- 封面命名为
0000_封面.jpg - 若无法提取标题,则使用文件名或序号生成占位标题
🚫 自动跳过规则
以下情况的 EPUB 文件将被跳过提取:
- EPUB 为漫画类(rendition:layout = pre-paginated)
- EPUB 内图片文件比例低于 30%
- EPUB 内部没有图片文件
📁 输出结构示例
如果使用 --output-dir ./output 进行处理,输出结构将与原始目录结构保持一致:
./output/
├── 漫画1.zip
├── 漫画2.zip
└── 子目录/
└── 漫画3.zip
否则将输出到 EPUB/PDF 同一目录下
📝 许可协议
MIT License - 可自由使用、修改和分发
🙋♀️ 反馈建议
如使用过程中遇到任何问题或希望添加新功能,欢迎提交 Issue