把整本 PDF 重建为可审计、可上传验证的 JSON/TXT 电子版
文档
pdf-to-epub-ocr
试用将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式。当用户提到"PDF转EPUB"、"PDF转电子书"、"OCR提取PDF"、"扫描版PDF转换"、"PDF结构化处理"或上传PDF文件要求转换为电子书格式时触发。不适用于纯文本PDF(可直接提取文字的PDF不需要OCR)、图片格式转换或PDF编辑功能。
它能做什么
将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式。当用户提到"PDF转EPUB"、"PDF转电子书"、"OCR提取PDF"、"扫描版PDF转换"、"PDF结构化处理"或上传PDF文件要求转换为电子书格式时触发。不适用于纯文本PDF(可直接提取文字的PDF不需要OCR)、图片格式转换或PDF编辑功能。
技能文档
PDF转EPUB OCR技能
概述
本技能将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式电子书,支持封面提取、智能文本清洗、章节自动识别和元数据管理,生成适合移动设备阅读的电子书文件。
你的工作方式
你是一个专业的PDF到EPUB转换专家,负责将用户提供的扫描版PDF文件转换为结构化的EPUB电子书。工作流程包括:文件分析预处理、OCR文字识别、文本清洗与章节识别、EPUB结构化生成、质量验证与交付。
Phase 1:文件分析与预处理
1.1 文件接收与验证
- 接收用户提供的PDF文件路径
- 验证文件是否存在且为有效的PDF格式
- 检查文件大小(建议小于100MB以避免处理超时)
- 确认PDF是否为扫描版(无文本层需要OCR)
1.2 元数据提取
- 使用PyPDF2提取PDF基础元数据
- 尝试获取书名、作者、出版社、出版日期等信息
- 如果元数据不完整,询问用户补充关键信息(书名、作者)
1.3 封面提取
- 使用pdf2image将PDF第一页转换为图片
- 转换参数:DPI=300,格式=JPEG,质量=95
- 保存为临时封面文件:
cover.jpg
预处理完成确认门:向用户确认提取的元数据信息是否正确,特别是书名和作者。
Phase 2:OCR文字识别
2.1 页面批处理
- 使用pdf2image将PDF逐页转换为图片(DPI=300,格式=PNG)
- 采用分页处理策略,每处理10页输出一次进度
- 大文件建议分批次处理,避免内存溢出
2.2 OCR识别执行
- 使用pytesseract进行OCR识别
- 语言配置:
chi_sim+eng(简体中文+英文) - OCR参数:
--psm 6(假设为统一文本块) - 保留文本坐标信息用于后续章节识别
2.3 识别质量控制
- 设置置信度阈值(默认0.6),低于阈值的文本标记为需要人工校对
- 统计识别准确率和处理进度
- 记录识别失败的页面供后续重试
OCR完成确认门:向用户报告OCR识别统计信息(总页数、识别成功数、平均置信度),询问是否继续。
Phase 3:文本清洗与章节识别
3.1 文本清洗
执行以下清洗步骤,顺序无关:
- 去除页眉页脚:识别并删除页面顶部和底部的重复文本模式
- 去除页码:删除纯数字页码和"第X页"格式的内容
- 去除水印:识别并删除半透明或重复的水印文本
- 规范化空白:将连续空格、换行符、制表符统一处理
- OCR错误校正:修复常见的OCR识别错误(如"0"和"O"混淆)
3.2 章节标题识别
使用正则表达式匹配章节标题模式:
- 中文章节:
第[一二三四五六七八九十百千]+章、第[0-9]+章 - 英文章节:
Chapter [0-9]+、Part [0-9]+ - 其他模式:
[0-9]+\.[0-9]+(如1.1、2.3)
3.3 结构化重组
- 根据章节标题将文本分割为独立章节
- 为每个章节生成唯一ID(chapter_001, chapter_002...)
- 构建章节层级结构(支持多级标题)
清洗完成确认门:向用户展示识别出的章节结构,确认是否正确。
Phase 4:EPUB结构化生成
4.1 EPUB框架创建
- 使用ebooklib创建EPUB2格式电子书
- 设置书名(来自PDF元数据或用户输入)
- 添加作者、出版社、语言等元数据
- 设置唯一标识符(UUID)
4.2 内容组织
- 将封面图片添加为EPUB封面
- 为每个章节创建独立的HTML文件
- 设置正确的MIME类型(text/html, image/jpeg)
- 添加CSS样式文件,优化阅读体验:
- 设置合适的行高和字间距
- 支持中文字体回退
- 响应式布局适配移动设备
4.3 目录生成
- 基于章节结构生成EPUB目录
- 设置章节间的导航链接
- 添加线性阅读属性
4.4 文件输出
- 保存EPUB文件到workspace/output/目录
- 文件名格式:
{原文件名}_converted.epub - 生成转换报告(处理时间、页数、章节数、文件大小)
Phase 5:质量验证与交付
5.1 文件验证
- 检查EPUB文件完整性
- 验证封面、目录、章节是否正确
- 测试在不同设备上的显示效果(如果可能)
5.2 交付物确认
向用户交付以下内容:
- 转换后的EPUB文件
- 转换报告(包含统计信息和质量评估)
- 如有问题,提供改进建议
异常处理
常见问题处理
- OCR识别失败:降低DPI重新转换,或建议用户提供更清晰的PDF
- 章节识别错误:询问用户提供正确的章节划分规则
- 元数据缺失:提示用户手动补充关键信息
- 文件过大:建议分批处理或使用压缩版本
性能优化
- 对于大文件,采用增量处理策略
- 使用多线程加速OCR识别(如果系统支持)
- 缓存中间结果,支持断点续传
工作流示例
示例1:标准PDF转换流程
用户上传扫描版PDF书籍《机器学习实战》,要求转换为EPUB格式。
执行过程:
- 接收文件
machine_learning.pdf,验证PDF格式 - 提取元数据:书名"机器学习实战",作者"张三"
- 提取第一页作为封面
cover.jpg - 逐页OCR识别(共256页),统计识别成功率为92%
- 清洗文本,识别出15个章节
- 生成EPUB文件
machine_learning_converted.epub - 交付文件和转换报告
示例2:包含复杂结构的PDF
用户上传技术文档api_reference.pdf,包含多级标题和代码块。
执行过程:
- 预处理发现PDF包含多级结构(章、节、小节)
- OCR识别时保留格式信息
- 章节识别使用多级正则表达式
- 为代码块添加特殊CSS样式保持格式
- 生成带三级目录的EPUB文件
- 提示用户某些代码块可能需要人工校对
资源目录
本技能包含以下资源目录:
scripts/
pdf_to_epub_converter.py:核心转换脚本,包含完整的PDF到EPUB转换流程ocr_processor.py:OCR处理模块text_cleaner.py:文本清洗和章节识别模块epub_generator.py:EPUB生成模块
references/
ocr_best_practices.md:OCR识别最佳实践和参数调优指南chapter_patterns.md:章节标题识别的正则表达式模式库epub_structure_guide.md:EPUB文件结构说明和样式规范
assets/
default_cover.jpg:默认封面图片(当PDF无法提取封面时使用)epub_style.css:EPUB样式模板文件
技术依赖:
- pytesseract(OCR识别)
- pdf2image(PDF转图片)
- PyPDF2(PDF元数据提取)
- ebooklib(EPUB生成)
- PIL(图像处理)
- Tesseract-OCR(需要系统安装)
相关技能
Convert EPUB e-books to PDF using ebooklib + WeasyPrint with proper CJK font support.
将英文 EPUB 文件逐段翻译为中文(保留原文,译文紧跟其下),自动跳过代码块、保留公式样式、表格采取双表对照。基于 Deepseek 大模型并行翻译。当用户提供 EPUB 并要求翻译/中英对照/汉化时调用。
Use this skill when the user wants to convert ebook or document files between formats with Calibre, including EPUB to PDF, Markdown to EPUB, MOBI to EPUB, AZ...
電子書轉換工具箱:支援 EPUB / PDF / MOBI / AZW3 / FB2 → TXT / Markdown / HTML / JSON;批量轉換、封面萃取、元資料讀寫、圖書館自動分類。
Task-mode-driven EPUB reading and analysis skill with overview, targeted reading, chunked full reading, extraction, complex-content inspection, and batch pro...