{"id":"394c75cb-5420-411f-8966-9d5431e56d15","entityType":"agent","slug":"clawhub-erich1566-pdf-to-epub-ocr","name":"pdf-to-epub-ocr","canonicalUrl":"https://www.xpersona.co/agent/clawhub-erich1566-pdf-to-epub-ocr","canonicalPath":"/agent/clawhub-erich1566-pdf-to-epub-ocr","generatedAt":"2026-10-10T02:24:21.627Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T15:23:40.208Z","emptyReason":null},"description":"将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式。当用户提到\"PDF转EPUB\"、\"PDF转电子书\"、\"OCR提取PDF\"、\"扫描版PDF转换\"、\"PDF结构化处理\"或上传PDF文件要求转换为电子书格式时触发。不适用于纯文本PDF（可直接提取文字的PDF不需要OCR）、图片格式转换或PDF编辑功能。 Skill: pdf-to-epub-ocr Owner: erich1566 Summary: 将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式。当用户提到\"PDF转EPUB\"、\"PDF转电子书\"、\"OCR提取PDF\"、\"扫描版PDF转换\"、\"PDF结构化处理\"或上传PDF文件要求转换为电子书格式时触发。不适用于纯文本PDF（可直接提取文字的PDF不需要OCR）、图片格式转换或PDF编辑功能。 Tags: latest:0.1.0 Version history: v0.1.0 | 2026-08-07T10:35:59.297Z | auto Initial release of PDF-to-EPUB OCR skill. - Scanned PDF ebooks can be converted to structured, reflowable EPUB files using OCR. - Suppo","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.4K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17amde2emhcgwty2p2w954ebn84yrw7:pdf-to-epub-ocr","sourceUrl":"https://clawhub.ai/erich1566/pdf-to-epub-ocr","homepage":"https://clawhub.ai/erich1566/skills/pdf-to-epub-ocr","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/erich1566/pdf-to-epub-ocr","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/erich1566/skills/pdf-to-epub-ocr","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":68,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式。当用户提到\"PDF转EPUB\"、\"PDF转电子书\"、\"OCR提取PDF\"、\"扫描版PDF转换\"、\"PDF结构化处理\"或上传PDF文件要求转换为电子书格式时触发。不适用于纯文本PDF（可直接提取文字的PDF不需要OCR）、图片格式转换或PDF编辑功能。 S"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T15:23:40.208Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T15:23:40.208Z","emptyReason":null},"stars":null,"forks":null,"downloads":2401,"packageName":null,"latestVersion":"0.1.0","tractionLabel":"2.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T15:23:40.179Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T15:23:40.208Z","lastCrawledAt":"2026-10-09T15:23:40.179Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T15:23:40.179Z","lastVerifiedAt":null,"highlights":[{"version":"0.1.0","createdAt":"2026-08-07T10:35:59.297Z","changelog":"Initial release of PDF-to-EPUB OCR skill. - Scanned PDF ebooks can be converted to structured, reflowable EPUB files using OCR. - Supports cover image extraction, automatic chapter detection, text cleaning, and metadata management. - Handles multi-stage workflow: file validation, OCR processing, text structuring, EPUB generation, and quality checks. - Excludes pure-text PDFs and offers guidance for common issues (e.g., low quality scans, missing metadata). - Included resource directories for scripts, best practices, and templates.","fileCount":17,"zipByteSize":31662}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17amde2emhcgwty2p2w954ebn84yrw7:pdf-to-epub-ocr","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-erich1566-pdf-to-epub-ocr/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-erich1566-pdf-to-epub-ocr/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-erich1566-pdf-to-epub-ocr/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-erich1566-pdf-to-epub-ocr/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-erich1566-pdf-to-epub-ocr/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-erich1566-pdf-to-epub-ocr/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T02:24:21.627Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-erich1566-pdf-to-epub-ocr/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-erich1566-pdf-to-epub-ocr/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-erich1566-pdf-to-epub-ocr/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-erich1566-pdf-to-epub-ocr/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T15:23:40.208Z","emptyReason":null},"readme":"Skill: pdf-to-epub-ocr\n\nOwner: erich1566\n\nSummary: 将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式。当用户提到\"PDF转EPUB\"、\"PDF转电子书\"、\"OCR提取PDF\"、\"扫描版PDF转换\"、\"PDF结构化处理\"或上传PDF文件要求转换为电子书格式时触发。不适用于纯文本PDF（可直接提取文字的PDF不需要OCR）、图片格式转换或PDF编辑功能。\n\nTags: latest:0.1.0\n\nVersion history:\n\nv0.1.0 | 2026-08-07T10:35:59.297Z | auto\n\nInitial release of PDF-to-EPUB OCR skill.\n\n- Scanned PDF ebooks can be converted to structured, reflowable EPUB files using OCR.\n- Supports cover image extraction, automatic chapter detection, text cleaning, and metadata management.\n- Handles multi-stage workflow: file validation, OCR processing, text structuring, EPUB generation, and quality checks.\n- Excludes pure-text PDFs and offers guidance for common issues (e.g., low quality scans, missing metadata).\n- Included resource directories for scripts, best practices, and templates.\n\nArchive index:\n\nArchive v0.1.0: 17 files, 31662 bytes\n\nFiles: .gitignore (416b), assets (0b), assets/epub_style.css (7172b), README.md (4756b), references (0b), references/chapter_patterns.md (7087b), references/epub_structure_guide.md (8619b), references/ocr_best_practices.md (5220b), requirements.txt (1047b), scripts (0b), scripts/epub_generator.py (9896b), scripts/ocr_processor.py (6794b), scripts/pdf_to_epub_converter.py (7595b), scripts/text_cleaner.py (8738b), skill-card.md (3208b), SKILL.md (7090b), _meta.json (134b)\n\nFile v0.1.0:SKILL.md\n\n---\nname: pdf-to-epub-ocr\ndescription: 将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式。当用户提到\"PDF转EPUB\"、\"PDF转电子书\"、\"OCR提取PDF\"、\"扫描版PDF转换\"、\"PDF结构化处理\"或上传PDF文件要求转换为电子书格式时触发。不适用于纯文本PDF（可直接提取文字的PDF不需要OCR）、图片格式转换或PDF编辑功能。\n---\n\n# PDF转EPUB OCR技能\n\n## 概述\n\n本技能将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式电子书，支持封面提取、智能文本清洗、章节自动识别和元数据管理，生成适合移动设备阅读的电子书文件。\n\n## 你的工作方式\n\n你是一个专业的PDF到EPUB转换专家，负责将用户提供的扫描版PDF文件转换为结构化的EPUB电子书。工作流程包括：文件分析预处理、OCR文字识别、文本清洗与章节识别、EPUB结构化生成、质量验证与交付。\n\n## Phase 1：文件分析与预处理\n\n### 1.1 文件接收与验证\n- 接收用户提供的PDF文件路径\n- 验证文件是否存在且为有效的PDF格式\n- 检查文件大小（建议小于100MB以避免处理超时）\n- 确认PDF是否为扫描版（无文本层需要OCR）\n\n### 1.2 元数据提取\n- 使用PyPDF2提取PDF基础元数据\n- 尝试获取书名、作者、出版社、出版日期等信息\n- 如果元数据不完整，询问用户补充关键信息（书名、作者）\n\n### 1.3 封面提取\n- 使用pdf2image将PDF第一页转换为图片\n- 转换参数：DPI=300，格式=JPEG，质量=95\n- 保存为临时封面文件：`cover.jpg`\n\n**预处理完成确认门**：向用户确认提取的元数据信息是否正确，特别是书名和作者。\n\n## Phase 2：OCR文字识别\n\n### 2.1 页面批处理\n- 使用pdf2image将PDF逐页转换为图片（DPI=300，格式=PNG）\n- 采用分页处理策略，每处理10页输出一次进度\n- 大文件建议分批次处理，避免内存溢出\n\n### 2.2 OCR识别执行\n- 使用pytesseract进行OCR识别\n- 语言配置：`chi_sim+eng`（简体中文+英文）\n- OCR参数：`--psm 6`（假设为统一文本块）\n- 保留文本坐标信息用于后续章节识别\n\n### 2.3 识别质量控制\n- 设置置信度阈值（默认0.6），低于阈值的文本标记为需要人工校对\n- 统计识别准确率和处理进度\n- 记录识别失败的页面供后续重试\n\n**OCR完成确认门**：向用户报告OCR识别统计信息（总页数、识别成功数、平均置信度），询问是否继续。\n\n## Phase 3：文本清洗与章节识别\n\n### 3.1 文本清洗\n执行以下清洗步骤，顺序无关：\n1. **去除页眉页脚**：识别并删除页面顶部和底部的重复文本模式\n2. **去除页码**：删除纯数字页码和\"第X页\"格式的内容\n3. **去除水印**：识别并删除半透明或重复的水印文本\n4. **规范化空白**：将连续空格、换行符、制表符统一处理\n5. **OCR错误校正**：修复常见的OCR识别错误（如\"0\"和\"O\"混淆）\n\n### 3.2 章节标题识别\n使用正则表达式匹配章节标题模式：\n- 中文章节：`第[一二三四五六七八九十百千]+章`、`第[0-9]+章`\n- 英文章节：`Chapter [0-9]+`、`Part [0-9]+`\n- 其他模式：`[0-9]+\\.[0-9]+`（如1.1、2.3）\n\n### 3.3 结构化重组\n- 根据章节标题将文本分割为独立章节\n- 为每个章节生成唯一ID（chapter_001, chapter_002...）\n- 构建章节层级结构（支持多级标题）\n\n**清洗完成确认门**：向用户展示识别出的章节结构，确认是否正确。\n\n## Phase 4：EPUB结构化生成\n\n### 4.1 EPUB框架创建\n- 使用ebooklib创建EPUB2格式电子书\n- 设置书名（来自PDF元数据或用户输入）\n- 添加作者、出版社、语言等元数据\n- 设置唯一标识符（UUID）\n\n### 4.2 内容组织\n- 将封面图片添加为EPUB封面\n- 为每个章节创建独立的HTML文件\n- 设置正确的MIME类型（text/html, image/jpeg）\n- 添加CSS样式文件，优化阅读体验：\n  - 设置合适的行高和字间距\n  - 支持中文字体回退\n  - 响应式布局适配移动设备\n\n### 4.3 目录生成\n- 基于章节结构生成EPUB目录\n- 设置章节间的导航链接\n- 添加线性阅读属性\n\n### 4.4 文件输出\n- 保存EPUB文件到workspace/output/目录\n- 文件名格式：`{原文件名}_converted.epub`\n- 生成转换报告（处理时间、页数、章节数、文件大小）\n\n## Phase 5：质量验证与交付\n\n### 5.1 文件验证\n- 检查EPUB文件完整性\n- 验证封面、目录、章节是否正确\n- 测试在不同设备上的显示效果（如果可能）\n\n### 5.2 交付物确认\n向用户交付以下内容：\n1. 转换后的EPUB文件\n2. 转换报告（包含统计信息和质量评估）\n3. 如有问题，提供改进建议\n\n## 异常处理\n\n### 常见问题处理\n- **OCR识别失败**：降低DPI重新转换，或建议用户提供更清晰的PDF\n- **章节识别错误**：询问用户提供正确的章节划分规则\n- **元数据缺失**：提示用户手动补充关键信息\n- **文件过大**：建议分批处理或使用压缩版本\n\n### 性能优化\n- 对于大文件，采用增量处理策略\n- 使用多线程加速OCR识别（如果系统支持）\n- 缓存中间结果，支持断点续传\n\n## 工作流示例\n\n### 示例1：标准PDF转换流程\n用户上传扫描版PDF书籍《机器学习实战》，要求转换为EPUB格式。\n\n**执行过程**：\n1. 接收文件`machine_learning.pdf`，验证PDF格式\n2. 提取元数据：书名\"机器学习实战\"，作者\"张三\"\n3. 提取第一页作为封面`cover.jpg`\n4. 逐页OCR识别（共256页），统计识别成功率为92%\n5. 清洗文本，识别出15个章节\n6. 生成EPUB文件`machine_learning_converted.epub`\n7. 交付文件和转换报告\n\n### 示例2：包含复杂结构的PDF\n用户上传技术文档`api_reference.pdf`，包含多级标题和代码块。\n\n**执行过程**：\n1. 预处理发现PDF包含多级结构（章、节、小节）\n2. OCR识别时保留格式信息\n3. 章节识别使用多级正则表达式\n4. 为代码块添加特殊CSS样式保持格式\n5. 生成带三级目录的EPUB文件\n6. 提示用户某些代码块可能需要人工校对\n\n## 资源目录\n\n本技能包含以下资源目录：\n\n### scripts/\n- `pdf_to_epub_converter.py`：核心转换脚本，包含完整的PDF到EPUB转换流程\n- `ocr_processor.py`：OCR处理模块\n- `text_cleaner.py`：文本清洗和章节识别模块\n- `epub_generator.py`：EPUB生成模块\n\n### references/\n- `ocr_best_practices.md`：OCR识别最佳实践和参数调优指南\n- `chapter_patterns.md`：章节标题识别的正则表达式模式库\n- `epub_structure_guide.md`：EPUB文件结构说明和样式规范\n\n### assets/\n- `default_cover.jpg`：默认封面图片（当PDF无法提取封面时使用）\n- `epub_style.css`：EPUB样式模板文件\n\n---\n\n**技术依赖**：\n- pytesseract（OCR识别）\n- pdf2image（PDF转图片）\n- PyPDF2（PDF元数据提取）\n- ebooklib（EPUB生成）\n- PIL（图像处理）\n- Tesseract-OCR（需要系统安装）\n\nFile v0.1.0:README.md\n\n# PDF转EPUB OCR技能\n\n将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式电子书。\n\n## 功能特点\n\n- ✅ **智能OCR识别**: 使用Tesseract OCR引擎，支持中英文混合识别\n- ✅ **封面提取**: 自动提取PDF第一页作为EPUB封面\n- ✅ **文本清洗**: 去除页眉页脚、页码、水印等干扰内容\n- ✅ **章节识别**: 自动识别章节标题，生成结构化目录\n- ✅ **元数据管理**: 提取和写入书名、作者等元数据信息\n- ✅ **移动优化**: 生成适合移动设备阅读的EPUB文件\n\n## 系统依赖\n\n### 必需的系统组件\n\n1. **Tesseract OCR引擎**\n   ```bash\n   # Ubuntu/Debian\n   sudo apt-get install tesseract-ocr tesseract-ocr-chi-sim\n   \n   # macOS\n   brew install tesseract tesseract-lang\n   \n   # Windows\n   # 下载安装: https://github.com/UB-Mannheim/tesseract/wiki\n   ```\n\n2. **Poppler** (PDF处理库)\n   ```bash\n   # Ubuntu/Debian\n   sudo apt-get install poppler-utils\n   \n   # macOS\n   brew install poppler\n   \n   # Windows\n   # 下载安装: https://github.com/oschwartz10612/poppler-windows/releases/\n   ```\n\n## Python依赖\n\n安装Python依赖包：\n```bash\npip install -r requirements.txt\n```\n\n## 使用方法\n\n### 基本用法\n\n```bash\npython scripts/pdf_to_epub_converter.py your_book.pdf\n```\n\n### 高级用法\n\n```bash\n# 指定输出目录\npython scripts/pdf_to_epub_converter.py your_book.pdf --output-dir ./output\n\n# 指定书名和作者\npython scripts/pdf_to_epub_converter.py your_book.pdf \\\n    --title \"我的书籍\" \\\n    --author \"作者名\"\n```\n\n### 在Agent中使用\n\n当用户提到以下内容时，此技能会自动触发：\n- \"PDF转EPUB\"、\"PDF转电子书\"\n- \"OCR提取PDF\"、\"扫描版PDF转换\"\n- \"PDF结构化处理\"\n- 上传PDF文件要求转换为电子书格式\n\n## 输出说明\n\n### 输出文件\n- **位置**: `output/`目录\n- **文件名**: `{原文件名}_converted.epub`\n- **格式**: EPUB 2.0.1（兼容性最好）\n\n### 转换报告\n每个转换任务会生成详细报告，包括：\n- 总页数和识别成功页数\n- OCR平均置信度\n- 识别的章节数量\n- 输出文件大小\n- 处理时间统计\n\n## 工作流程\n\n1. **文件分析**: 验证PDF格式，提取元数据\n2. **封面提取**: 转换第一页为封面图片\n3. **OCR识别**: 逐页进行文字识别\n4. **文本清洗**: 去除噪音内容\n5. **章节识别**: 自动识别章节结构\n6. **EPUB生成**: 创建结构化电子书文件\n7. **质量验证**: 检查文件完整性\n\n## 质量保证\n\n### OCR质量\n- 推荐DPI: 300-400\n- 语言支持: 中英文混合\n- 置信度监控: 自动统计识别准确率\n\n### EPUB质量\n- 结构验证: 自动检查EPUB结构完整性\n- 兼容性测试: 支持主流阅读设备\n- 响应式设计: 适配不同屏幕尺寸\n\n## 故障排除\n\n### 常见问题\n\n**问题**: Tesseract not found\n```bash\n# 解决方案: 安装Tesseract OCR引擎\nsudo apt-get install tesseract-ocr tesseract-ocr-chi-sim\n```\n\n**问题**: 识别准确率低\n```bash\n# 解决方案: \n# 1. 提高PDF扫描质量\n# 2. 调整DPI设置（推荐300-400）\n# 3. 使用预处理脚本增强图像\n```\n\n**问题**: 章节识别错误\n```bash\n# 解决方案: \n# 1. 检查章节标题格式\n# 2. 在代码中添加自定义正则表达式\n# 3. 手动调整章节划分\n```\n\n## 性能参数\n\n### 典型处理时间（基于300 DPI）\n- 简单文本PDF (100页): 2-3分钟\n- 复杂排版PDF (100页): 5-8分钟\n- 高质量扫描PDF (100页): 3-5分钟\n\n### 硬件建议\n- **CPU**: 多核处理器（4核以上）\n- **内存**: 最低4GB，推荐8GB\n- **存储**: SSD硬盘（显著提升I/O性能）\n\n## 配置选项\n\n### OCR配置\n可在`scripts/ocr_processor.py`中调整：\n- `dpi`: 图片转换分辨率（默认300）\n- `language`: OCR语言（默认`chi_sim+eng`）\n- `psm_mode`: 页面分割模式（默认6）\n\n### 清洗配置\n可在`scripts/text_cleaner.py`中调整：\n- 章节标题识别模式\n- 噪音文本过滤规则\n- 文本清洗策略\n\n### EPUB配置\n可在`scripts/epub_generator.py`中调整：\n- CSS样式文件\n- 章节HTML模板\n- 元数据设置\n\n## 参考文档\n\n- `references/ocr_best_practices.md`: OCR识别最佳实践\n- `references/chapter_patterns.md`: 章节标题识别模式库\n- `references/epub_structure_guide.md`: EPUB结构说明和样式规范\n\n## 技术支持\n\n如遇到问题，请检查：\n1. 系统依赖是否正确安装\n2. Python依赖包是否完整\n3. PDF文件是否有效\n4. 系统资源是否充足\n\n## 许可证\n\n本技能仅供学习和个人使用。使用时请遵守相关版权法律法规。\n\n## 更新日志\n\n### v1.0.0 (2024-08-07)\n- ✨ 初始版本发布\n- ✅ 支持基础PDF到EPUB转换\n- ✅ OCR识别和文本清洗\n- ✅ 章节自动识别\n- ✅ 元数据管理\n\nFile v0.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn705qkxd5q2sxd49s59dnfknd82dywx\",\n  \"slug\": \"pdf-to-epub-ocr\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1786098959297\n}\n\nFile v0.1.0:references/chapter_patterns.md\n\n# 章节标题识别正则表达式模式库\n\n## 中文图书章节模式\n\n### 基础章节模式\n```python\n# 第X章格式\nr'^第[一二三四五六七八九十百千万]+章[^\\n]*$'\nr'^第[0-9]+章[^\\n]*$'\n\n# 第X节格式  \nr'^第[一二三四五六七八九十百千万]+节[^\\n]*$'\nr'^第[0-9]+节[^\\n]*$'\n\n# 第X篇格式\nr'^第[一二三四五六七八九十百千万]+篇[^\\n]*$'\nr'^第[0-9]+篇[^\\n]*$'\n```\n\n### 扩展章节模式\n```python\n# 带副标题的章节\nr'^第[一二三四五六七八九十百千万]+章[：:][^\\n]+$'\nr'^第[0-9]+章[：:][^\\n]+$'\n\n# 带括号的章节\nr'^\\([一二三四五六七八九十百千万]+\\)[^\\n]*$'\nr'^\\([0-9]+\\)[^\\n]*$'\n\n# 中文数字章节\nr'^[一二三四五六七八九十百千万]+\\.[^\\n]*$'\nr'^[一二三四五六七八九十百千万]+、[^\\n]*$'\n```\n\n## 英文图书章节模式\n\n### 基础英文模式\n```python\n# Chapter格式\nr'^Chapter\\s+[0-9IVXLCDM]+[^\\n]*$'\nr'^CHAPTER\\s+[0-9IVXLCDM]+[^\\n]*$'\n\n# Part格式\nr'^Part\\s+[0-9IVXLCDM]+[^\\n]*$'\nr'^PART\\s+[0-9IVXLCDM]+[^\\n]*$'\n\n# Section格式\nr'^Section\\s+[0-9]+[^\\n]*$'\nr'^SECTION\\s+[0-9]+[^\\n]*$'\n```\n\n### 扩展英文模式\n```python\n# 带标题的章节\nr'^Chapter\\s+[0-9IVXLCDM]+:\\s*[^\\n]+$'\nr'^Part\\s+[0-9IVXLCDM]+:\\s*[^\\n]+$'\n\n# 罗马数字章节\nr'^[IVXLCDM]+\\.\\s*[^\\n]+$'\nr'^[IVXLCDM]+\\s+[^\\n]+$'\n\n# 字母章节\nr'^[A-Z]+\\.\\s*[^\\n]+$'\nr'^Appendix\\s+[A-Z][^\\n]*$'\n```\n\n## 数字编号模式\n\n### 多级编号\n```python\n# 一级编号\nr'^[0-9]+\\.[^\\n]*$'\n\n# 二级编号  \nr'^[0-9]+\\.[0-9]+[^\\n]*$'\nr'^[0-9]+\\.[0-9]+\\.[^\\n]*$'\n\n# 三级编号\nr'^[0-9]+\\.[0-9]+\\.[0-9]+[^\\n]*$'\nr'^[0-9]+\\.[0-9]+\\.[0-9]+\\.[^\\n]*$'\n```\n\n### 括号编号\n```python\n# 圆括号编号\nr'^\\([0-9]+\\)[^\\n]*$'\nr'^\\([0-9]+\\.[0-9]+\\)[^\\n]*$'\n\n# 方括号编号\nr'^\\[[0-9]+\\][^\\n]*$'\nr'^\\[[0-9]+\\.[0-9]+\\][^\\n]*$'\n```\n\n## 学术论文模式\n\n### 论文章节\n```python\n# 摘要、关键词等\nr'^[摘要|关键词|Abstract|Keywords|引言|结论|参考文献][^\\n]*$'\n\n# 学术章节\nr'^[0-9]+\\s*[引言|文献综述|研究方法|实验结果|讨论|结论][^\\n]*$'\n\n# 图表标题\nr'^图\\s*[0-9]+[^\\n]*$'\nr'^表\\s*[0-9]+[^\\n]*$'\nr'^Figure\\s*[0-9]+[^\\n]*$'\nr'^Table\\s*[0-9]+[^\\n]*$'\n```\n\n## 技术文档模式\n\n### 技术章节\n```python\n# 技术文档章节\nr'^[0-9]+\\s*[概述|简介|背景|目标|范围][^\\n]*$'\nr'^[0-9]+\\s*[安装|配置|部署][^\\n]*$'\nr'^[0-9]+\\s*[使用指南|操作说明][^\\n]*$'\nr'^[0-9]+\\s*[故障排除|常见问题][^\\n]*$'\n\n# API文档\nr'^[GET|POST|PUT|DELETE|PATCH]\\s+[^\\n]+$'\nr'^/api/[^\\n]+$'\nr'^[0-9]+\\.[0-9]+\\s+接口[^\\n]*$'\n```\n\n## 小说文学作品模式\n\n### 小说章节\n```python\n# 卷篇章节\nr'^第[一二三四五六七八九十百千万]+卷[^\\n]*$'\nr'^第[一二三四五六七八九十百千万]+部[^\\n]*$'\n\n# 回目格式（传统小说）\nr'^第[一二三四五六七八九十百千万]+回[^\\n]*$'\nr'^[0-9]+回[^\\n]*$'\n\n# 现代小说章节\nr'^[一二三四五六七八九十百千万]+、[^\\n]+$'\nr'^Chapter\\s*[0-9]+[^\\n]*$'\n```\n\n## 混合模式匹配策略\n\n### 优先级排序\n```python\n# 高优先级：明确的章节标记\nPRIORITY_HIGH = [\n    r'^第[一二三四五六七八九十百千万]+章[^\\n]*$',\n    r'^Chapter\\s+[0-9IVXLCDM]+[^\\n]*$',\n]\n\n# 中优先级：数字编号\nPRIORITY_MEDIUM = [\n    r'^[0-9]+\\.[0-9]+[^\\n]*$',\n    r'^第[0-9]+章[^\\n]*$',\n]\n\n# 低优先级：可能的章节\nPRIORITY_LOW = [\n    r'^[0-9]+\\s+[^\\n]{5,30}$',\n    r'^[A-Z]+\\.[^\\n]{5,30}$',\n]\n```\n\n### 上下文验证\n```python\ndef validate_chapter_title(line, prev_lines, next_lines):\n    \"\"\"\n    验证章节标题的有效性\n    \n    Args:\n        line: 当前行\n        prev_lines: 前面几行\n        next_lines: 后面几行\n    \n    Returns:\n        是否为有效的章节标题\n    \"\"\"\n    # 检查行长度（章节标题通常较短）\n    if len(line) > 50:\n        return False\n    \n    # 检查前后内容（章节标题前后通常有空白）\n    if prev_lines and prev_lines[-1].strip():\n        # 如果前面一行有内容，检查是否是页码等噪音\n        if re.match(r'^\\d+$', prev_lines[-1].strip()):\n            return True\n        return False\n    \n    # 检查后面内容（章节标题后应该有正文）\n    if next_lines and not next_lines[0].strip():\n        return False\n    \n    # 检查字体特征（如果可用）\n    # OCR通常不保留字体信息，这里只是示例\n    \n    return True\n```\n\n## 特殊情况处理\n\n### 假阳性排除\n```python\n# 排除页码\nr'^-\\s*\\d+\\s*-'\nr'^第\\s*\\d+\\s*页'\n\n# 排除版权信息\nr'^[版权所有|Copyright|©]'\nr'^[ISBN|ISSN]'\nr'^[出版|Publish]'\n\n# 排除页眉页脚\nr'^.*机密.*$'\nr'^.*内部资料.*$'\nr'^Confidential'\n```\n\n### 跨页章节标题\n```python\ndef handle_cross_page_titles(pages):\n    \"\"\"\n    处理跨页的章节标题\n    \n    Args:\n        pages: 页面列表\n    \n    Returns:\n        处理后的页面列表\n    \"\"\"\n    for i in range(len(pages) - 1):\n        current_last_line = pages[i][-1].strip()\n        next_first_line = pages[i+1][0].strip()\n        \n        # 检查是否是跨页的章节标题\n        if (is_potential_chapter_start(current_last_line) and \n            is_potential_chapter_continuation(next_first_line)):\n            \n            # 合并跨页标题\n            full_title = current_last_line + next_first_line\n            \n            # 更新页面内容\n            pages[i][-1] = full_title\n            pages[i+1] = pages[i+1][1:]  # 移除下一页的第一行\n    \n    return pages\n```\n\n## 动态模式学习\n\n### 从文档中学习模式\n```python\ndef learn_chapter_patterns(document):\n    \"\"\"\n    从文档中学习章节标题模式\n    \n    Args:\n        document: 文档内容\n    \n    Returns:\n        学习到的模式列表\n    \"\"\"\n    # 统计重复出现的格式\n    pattern_counter = Counter()\n    \n    lines = document.split('\\n')\n    for line in lines:\n        line = line.strip()\n        if is_potential_chapter(line):\n            # 提取模式特征\n            pattern = extract_pattern_features(line)\n            pattern_counter[pattern] += 1\n    \n    # 选择高频模式\n    learned_patterns = [\n        pattern for pattern, count in pattern_counter.most_common(5)\n        if count >= 3  # 至少出现3次\n    ]\n    \n    return learned_patterns\n```\n\n## 实际应用示例\n\n### 完整的章节识别流程\n```python\ndef identify_chapters(document):\n    \"\"\"\n    完整的章节识别流程\n    \n    Args:\n        document: 文档内容\n    \n    Returns:\n        章节列表\n    \"\"\"\n    # 1. 预定义模式匹配\n    predefined_matches = match_with_predefined_patterns(document)\n    \n    # 2. 学习文档特定模式\n    learned_patterns = learn_chapter_patterns(document)\n    learned_matches = match_with_learned_patterns(document, learned_patterns)\n    \n    # 3. 合并结果\n    all_matches = merge_matches(predefined_matches, learned_matches)\n    \n    # 4. 上下文验证\n    validated_matches = validate_with_context(all_matches, document)\n    \n    # 5. 排除假阳性\n    final_matches = exclude_false_positives(validated_matches)\n    \n    return final_matches\n```\n\nFile v0.1.0:references/epub_structure_guide.md\n\n# EPUB文件结构说明和样式规范\n\n## EPUB基础结构\n\n### 目录结构\n```\nEPUB文件（ZIP压缩包）\n├── mimetype\n├── META-INF/\n│   └── container.xml\n└── OEBPS/\n    ├── content.opf\n    ├── toc.ncx\n    └── chapters/\n        ├── chapter_001.xhtml\n        ├── chapter_002.xhtml\n        ├── style/\n        │   └── default.css\n        └── images/\n            ├── cover.jpg\n            └── figure_001.jpg\n```\n\n### 关键文件说明\n\n#### mimetype\n- 必须是第一个文件且未压缩\n- 内容固定为：`application/epub+zip`\n\n#### container.xml\n- 定义了OPF文件的路径\n- 示例：\n```xml\n<?xml version=\"1.0\"?>\n<container version=\"1.0\" xmlns=\"urn:oasis:names:tc:opendocument:xmlns:container\">\n  <rootfiles>\n    <rootfile full-path=\"OEBPS/content.opf\" media-type=\"application/oebps-package+xml\"/>\n  </rootfiles>\n</container>\n```\n\n#### content.opf\n- 包含书籍的元数据、清单和spine\n- 描述了书籍的所有组成部分\n\n#### toc.ncx\n- 导航控制文件（EPUB2）或nav.xhtml（EPUB3）\n- 定义了书籍的目录结构\n\n## 元数据规范\n\n### 基础元数据\n```xml\n<metadata xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n  <!-- 必需 -->\n  <dc:title>书名</dc:title>\n  <dc:identifier id=\"bookid\">unique-id-12345</dc:identifier>\n  \n  <!-- 推荐 -->\n  <dc:language>zh-CN</dc:language>\n  <dc:creator>作者名</dc:creator>\n  \n  <!-- 可选 -->\n  <dc:publisher>出版社</dc:publisher>\n  <dc:date>2024-01-01</dc:date>\n  <dc:description>书籍描述</dc:description>\n  <dc:subject>主题分类</dc:subject>\n  <dc:rights>版权信息</dc:rights>\n</metadata>\n```\n\n### 元数据最佳实践\n1. **标题**: 简洁明确，避免过长\n2. **作者**: 使用真实姓名或常用笔名\n3. **语言**: 使用标准的语言代码（zh-CN, en-US等）\n4. **标识符**: 使用UUID或ISBN\n5. **描述**: 100-500字的简介，便于搜索\n\n## 内容组织规范\n\n### 章节文件命名\n```\nchapter_001.xhtml  # 第一章\nchapter_002.xhtml  # 第二章\n...\nchapter_999.xhtml  # 附录等\n```\n\n### 章节文件结构\n```xml\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"\n  \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>章节标题</title>\n  <link rel=\"stylesheet\" type=\"text/css\" href=\"style/default.css\"/>\n</head>\n<body>\n  <h1>章节标题</h1>\n  <div class=\"content\">\n    <p>段落内容...</p>\n    <p>更多段落...</p>\n  </div>\n</body>\n</html>\n```\n\n## CSS样式规范\n\n### 基础样式框架\n```css\n/* 全局设置 */\n* {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n}\n\nbody {\n  font-family: \"PingFang SC\", \"Microsoft YaHei\", \"SimHei\", serif;\n  line-height: 1.8;\n  margin: 1em;\n  padding: 0;\n  color: #333;\n  background-color: #fff;\n}\n```\n\n### 标题样式\n```css\nh1 {\n  text-align: center;\n  margin: 1em 0;\n  font-size: 1.8em;\n  color: #333;\n  border-bottom: 2px solid #eee;\n  padding-bottom: 0.5em;\n  font-weight: bold;\n}\n\nh2 {\n  margin: 1.5em 0 0.8em 0;\n  font-size: 1.4em;\n  color: #444;\n  border-left: 4px solid #007bff;\n  padding-left: 0.5em;\n}\n\nh3 {\n  margin: 1.2em 0 0.6em 0;\n  font-size: 1.2em;\n  color: #555;\n}\n```\n\n### 正文样式\n```css\np {\n  margin: 0.8em 0;\n  text-align: justify;\n  text-indent: 2em;\n  font-size: 1em;\n  line-height: 1.8;\n  color: #333;\n}\n\n/* 首字下沉（可选） */\np:first-of-type::first-letter {\n  font-size: 2em;\n  font-weight: bold;\n  float: left;\n  margin-right: 0.1em;\n  line-height: 1;\n}\n```\n\n### 响应式设计\n```css\n/* 平板设备 */\n@media screen and (max-width: 768px) {\n  body {\n    font-size: 16px;\n    margin: 0.5em;\n  }\n  \n  h1 {\n    font-size: 1.6em;\n  }\n  \n  h2 {\n    font-size: 1.3em;\n  }\n}\n\n/* 手机设备 */\n@media screen and (max-width: 480px) {\n  body {\n    font-size: 14px;\n    margin: 0.3em;\n  }\n  \n  h1 {\n    font-size: 1.4em;\n  }\n  \n  p {\n    text-indent: 1.5em;\n    margin: 0.6em 0;\n  }\n}\n```\n\n## 图片处理规范\n\n### 图片格式选择\n- **封面**: JPEG（压缩率高，文件小）\n- **插图**: PNG（质量好，支持透明）\n- **照片**: JPEG（适合复杂色彩）\n- **图表**: PNG或SVG（矢量图最佳）\n\n### 图片尺寸规范\n```css\n/* 封面图片 */\nimg.cover {\n  max-width: 100%;\n  height: auto;\n  display: block;\n  margin: 0 auto;\n}\n\n/* 内联插图 */\nimg.figure {\n  max-width: 100%;\n  height: auto;\n  display: block;\n  margin: 1em auto;\n  border: 1px solid #ddd;\n}\n\n/* 图片标题 */\n.figure-caption {\n  text-align: center;\n  font-style: italic;\n  color: #666;\n  margin-top: 0.5em;\n  font-size: 0.9em;\n}\n```\n\n### 图片优化建议\n1. **分辨率**: 72-150 DPI（适合屏幕阅读）\n2. **文件大小**: 单张图片控制在200KB以内\n3. **格式**: 优先使用WebP格式（兼容性允许时）\n\n## 目录结构规范\n\n### 章节层级设置\n```python\n# 一级章节（主要标题）\nlevel_1_chapters = [\n    \"第一章\",\n    \"第二章\",\n    \"第三章\"\n]\n\n# 二级章节（子标题）\nlevel_2_chapters = [\n    \"1.1 背景\",\n    \"1.2 目标\",\n    \"2.1 方法\",\n    \"2.2 结果\"\n]\n\n# 三级章节（小标题）\nlevel_3_chapters = [\n    \"1.1.1 研究背景\",\n    \"1.1.2 技术背景\"\n]\n```\n\n### 目录生成规则\n1. **最大深度**: 不超过3级\n2. **每级条目**: 每级至少2个条目\n3. **标题长度**: 控制在30字以内\n4. **链接格式**: 使用相对路径\n\n## 特殊元素处理\n\n### 表格样式\n```css\ntable {\n  width: 100%;\n  border-collapse: collapse;\n  margin: 1em 0;\n  font-size: 0.9em;\n}\n\nth, td {\n  border: 1px solid #ddd;\n  padding: 0.5em;\n  text-align: left;\n}\n\nth {\n  background-color: #f5f5f5;\n  font-weight: bold;\n}\n\ntr:nth-child(even) {\n  background-color: #f9f9f9;\n}\n```\n\n### 代码块样式\n```css\npre {\n  background-color: #f5f5f5;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  padding: 1em;\n  overflow-x: auto;\n  font-family: \"Courier New\", monospace;\n  font-size: 0.9em;\n  line-height: 1.4;\n}\n\ncode {\n  background-color: #f5f5f5;\n  padding: 0.2em 0.4em;\n  border-radius: 3px;\n  font-family: \"Courier New\", monospace;\n  font-size: 0.9em;\n}\n\npre code {\n  background-color: transparent;\n  padding: 0;\n}\n```\n\n### 引用块样式\n```css\nblockquote {\n  margin: 1em 0;\n  padding: 0.5em 1em;\n  border-left: 4px solid #007bff;\n  background-color: #f9f9f9;\n  color: #555;\n  font-style: italic;\n}\n\nblockquote cite {\n  display: block;\n  text-align: right;\n  font-size: 0.9em;\n  color: #777;\n  margin-top: 0.5em;\n}\n```\n\n## 兼容性规范\n\n### EPUB版本选择\n- **EPUB 2.0.1**: 兼容性最好，推荐使用\n- **EPUB 3.0**: 功能丰富，支持多媒体\n- **EPUB 3.2**: 最新标准，但兼容性有限\n\n### 设备兼容性测试\n```\n✅ 必须支持：\n- iBooks (Apple)\n- Google Play Books\n- Kindle Fire\n- Adobe Digital Editions\n\n⚠️ 建议支持：\n- Kobo\n- Nook\n- Sony Reader\n\n❌ 不需要支持：\n- 旧Kindle设备（不支持EPUB）\n```\n\n## 性能优化\n\n### 文件大小控制\n```python\n# 推荐的文件大小限制\nMAX_EPUB_SIZE = 50 * 1024 * 1024  # 50MB\nMAX_IMAGE_SIZE = 200 * 1024         # 200KB per image\nMAX_CHAPTER_SIZE = 500 * 1024       # 500KB per chapter\n```\n\n### 加载优化\n1. **分章节加载**: 避免单文件过大\n2. **图片懒加载**: 减少初始加载时间\n3. **CSS压缩**: 去除空格和注释\n4. **资源合并**: 合并小文件\n\n## 质量检查清单\n\n### 文件结构检查\n- [ ] mimetype文件存在且正确\n- [ ] container.xml路径正确\n- [ ] content.opf包含所有必需元素\n- [ ] toc.ncx目录结构完整\n- [ ] 所有章节文件链接正确\n\n### 内容质量检查\n- [ ] 章节顺序正确\n- [ ] 标题层级合理\n- [ ] 图片显示正常\n- [ ] 样式应用一致\n- [ ] 无无效链接\n\n### 兼容性检查\n- [ ] 在多个阅读器中测试\n- [ ] 不同屏幕尺寸下显示正常\n- [ ] 字体回退机制工作\n- [ ] 特殊字符正确显示\n\n### 元数据检查\n- [ ] 标题准确\n- [ ] 作者信息完整\n- [ ] 语言代码正确\n- [ ] 标识符唯一\n- [ ] 描述信息适当\n\n## 错误处理\n\n### 常见问题解决\n1. **封面不显示**: 检查文件路径和MIME类型\n2. **目录不工作**: 验证toc.ncx中的ID引用\n3. **样式不应用**: 检查CSS路径和语法\n4. **中文乱码**: 确保文件编码为UTF-8\n5. **图片过大**: 压缩图片或降低分辨率\n\n### 调试技巧\n```python\n# 使用ebooklib验证EPUB\nfrom ebooklib import epub\n\ntry:\n    book = epub.read_epub('book.epub')\n    print(\"EPUB文件有效\")\nexcept Exception as e:\n    print(f\"EPUB文件无效: {e}\")\n\n# 检查特定元素\nfor item in book.get_items():\n    print(f\"{item.get_name()}: {item.get_type()}\")\n```\n\nFile v0.1.0:references/ocr_best_practices.md\n\n# OCR识别最佳实践\n\n## Tesseract OCR参数调优\n\n### 基础参数\n- `--psm (Page Segmentation Mode)`: 页面分割模式\n  - `3`: 自动页面分割（默认）\n  - `6`: 假设为统一文本块（适合书籍）\n  - `1`: 自动，带OSD（方向和脚本检测）\n  \n- `-l (Language)`: 语言设置\n  - `chi_sim`: 简体中文\n  - `chi_tra`: 繁体中文  \n  - `eng`: 英文\n  - `chi_sim+eng`: 中英混合\n\n### 高级参数\n- `--oem (OCR Engine Mode)`: OCR引擎模式\n  - `3`: 默认，基于LSTM\n  - `1`: 传统神经网络\n  - `0`: 传统Tesseract only\n\n- `--dpi`: 指定DPI（当从PDF转换时）\n\n### 针对不同文档类型的推荐配置\n\n#### 书籍文档\n```\n--psm 6 -l chi_sim+eng --oem 3\n```\n\n#### 杂志/报纸\n```\n--psm 3 -l chi_sim+eng --oem 3\n```\n\n#### 表格文档\n```\n--psm 6 -l chi_sim+eng --oem 3 --tessdata-dir /path/to/tessdata\n```\n\n## 图像预处理优化\n\n### 1. 分辨率设置\n- 推荐DPI: 300-400\n- 最低DPI: 200（会显著影响识别准确率）\n- 过高DPI: >500（处理时间长，收益有限）\n\n### 2. 图像增强\n```python\nfrom PIL import Image, ImageEnhance, ImageFilter\n\n# 增强对比度\nenhancer = ImageEnhance.Contrast(image)\nimage = enhancer.enhance(1.5)\n\n# 去噪\nimage = image.filter(ImageFilter.MedianFilter())\n\n# 二值化（可选）\nimage = image.convert('L')\nthreshold = 127\nimage = image.point(lambda x: 0 if x < threshold else 255, '1')\n```\n\n### 3. 倾斜校正\n对于扫描倾斜的文档，需要进行倾斜校正：\n```python\nimport cv2\nimport numpy as np\n\n# 使用OpenCV检测倾斜角度并校正\ndef correct_skew(image):\n    # 转换为OpenCV格式\n    img_array = np.array(image)\n    \n    # 转灰度\n    gray = cv2.cvtColor(img_array, cv2.COLOR_RGB2GRAY)\n    \n    # 边缘检测\n    edges = cv2.Canny(gray, 50, 150, apertureSize=3)\n    \n    # 霍夫线变换检测直线\n    lines = cv2.HoughLines(edges, 1, np.pi/180, 100)\n    \n    if lines is not None:\n        # 计算平均角度\n        angles = []\n        for rho, theta in lines:\n            angle = np.degrees(theta) - 90\n            angles.append(angle)\n        \n        median_angle = np.median(angles)\n        \n        # 旋转图像\n        rotated = rotate_image(image, median_angle)\n        return rotated\n    \n    return image\n```\n\n## 置信度分析\n\n### 置信度阈值设置\n- **高质量文档**: 80%以上\n- **中等质量**: 60-80%\n- **低质量**: 40-60%\n- **需人工校对**: 40%以下\n\n### 置信度提升策略\n1. **预处理优化**: 图像增强、去噪、倾斜校正\n2. **参数调整**: 根据文档类型选择合适的PSM模式\n3. **语言模型**: 确保安装了正确的语言包\n4. **分块处理**: 对复杂页面分区域识别\n\n## 性能优化\n\n### 并行处理\n```python\nfrom concurrent.futures import ThreadPoolExecutor\nimport pytesseract\n\ndef process_page(image_path):\n    image = Image.open(image_path)\n    text = pytesseract.image_to_string(image, lang='chi_sim+eng')\n    return text\n\n# 使用线程池并行处理\nwith ThreadPoolExecutor(max_workers=4) as executor:\n    results = executor.map(process_page, image_paths)\n```\n\n### 内存管理\n对于大文件，避免一次性加载所有页面：\n```python\ndef process_large_pdf(pdf_path, chunk_size=10):\n    # 分批处理\n    for i in range(0, total_pages, chunk_size):\n        chunk_images = convert_pdf_chunk(pdf_path, i, chunk_size)\n        for image in chunk_images:\n            process_page(image)\n        # 释放内存\n        del chunk_images\n```\n\n## 错误处理\n\n### 常见错误及解决方案\n\n1. **Tesseract not found**\n   ```bash\n   # 安装Tesseract OCR\n   # Ubuntu/Debian\n   sudo apt-get install tesseract-ocr tesseract-ocr-chi-sim\n   \n   # macOS\n   brew install tesseract tesseract-lang\n   \n   # Windows\n   # 下载安装包: https://github.com/UB-Mannheim/tesseract/wiki\n   ```\n\n2. **Language data not found**\n   ```bash\n   # 下载中文语言包\n   # Ubuntu/Debian\n   sudo apt-get install tesseract-ocr-chi-sim\n   \n   # 手动下载语言包\n   wget https://github.com/tesseract-ocr/tessdata/raw/main/chi_sim.traineddata\n   sudo mv chi_sim.traineddata /usr/share/tesseract-ocr/4.00/tessdata/\n   ```\n\n3. **Memory error**\n   - 降低DPI设置\n   - 分批处理页面\n   - 增加系统交换空间\n\n4. **Poor recognition quality**\n   - 检查图像质量\n   - 调整PSM参数\n   - 尝试图像预处理\n   - 考虑使用其他OCR引擎\n\n## 质量评估\n\n### 自动评估指标\n1. **平均置信度**: 衡量整体识别质量\n2. **空白率**: 识别空白字符的比例\n3. **特殊字符率**: OCR产生的乱码字符比例\n\n### 人工检查要点\n1. 章节标题是否正确识别\n2. 表格格式是否保持\n3. 公式和特殊符号是否准确\n4. 图片区域的处理是否合理\n\n## 性能基准\n\n### 典型处理时间（基于300 DPI）\n| 文档类型 | 页数 | 处理时间 | 内存使用 |\n|---------|------|----------|----------|\n| 简单文本 | 100页 | 2-3分钟 | 500MB |\n| 复杂排版 | 100页 | 5-8分钟 | 1GB |\n| 高质量扫描 | 100页 | 3-5分钟 | 600MB |\n| 低质量扫描 | 100页 | 8-15分钟 | 1.2GB |\n\n### 硬件建议\n- **CPU**: 多核处理器（4核以上）\n- **内存**: 最低4GB，推荐8GB\n- **存储**: SSD硬盘（显著提升I/O性能）\n\nFile v0.1.0:skill-card.md\n\n## Description:\n\nConverts scanned PDF ebooks into structured, reflowable EPUB files using OCR, text cleanup, chapter detection, cover extraction, and metadata handling.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[erich1566](https://clawhub.ai/user/erich1566)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and external users use this skill to convert scanned PDF books into mobile-friendly EPUB files with generated chapters, metadata, cover art, and conversion statistics. It is not intended for text-layer PDFs, image-only format conversion, or PDF editing.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill processes PDF files that may be untrusted or sensitive.\n\nMitigation: Use trusted or non-sensitive PDFs unless processing is sandboxed and dependency versions are reviewed.\n\nRisk: Pinned dependencies and system OCR/PDF packages may carry security or compatibility risk.\n\nMitigation: Review and update dependencies before installation, and verify package sources for the target operating system.\n\nRisk: Large PDFs can consume substantial CPU, memory, storage, and processing time.\n\nMitigation: Set explicit file and page limits, use a controlled output directory, and process large documents in batches.\n\nRisk: Conversion creates temporary work files that may retain extracted images, OCR text, logs, or metadata.\n\nMitigation: Delete work directories after conversion and avoid shared or uncontrolled output locations.\n\nRisk: Install guidance includes privileged package manager commands.\n\nMitigation: Do not blindly run sudo or system install commands; verify the packages and sources for the deployment environment first.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/erich1566/skills/pdf-to-epub-ocr)\n- [Server-resolved source repository](https://github.com/Erich1566/pdf-to-epub-ocr)\n- [Server-resolved source commit](https://github.com/Erich1566/pdf-to-epub-ocr/tree/4529242d8587f0b3991619f65cb6ad41592b3e8e)\n- [OCR best practices](references/ocr_best_practices.md)\n- [Chapter pattern reference](references/chapter_patterns.md)\n- [EPUB structure guide](references/epub_structure_guide.md)\n- [Windows Tesseract installation reference](https://github.com/UB-Mannheim/tesseract/wiki)\n- [Poppler for Windows releases](https://github.com/oschwartz10612/poppler-windows/releases/)\n- [Simplified Chinese Tesseract language data](https://github.com/tesseract-ocr/tessdata/raw/main/chi_sim.traineddata)\n\n## Skill Output:\n\n**Output Type(s):** [Files, Text, Shell commands, Configuration, Guidance]\n\n**Output Format:** [EPUB file plus text or Markdown conversion report and shell command guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces an output EPUB, processing statistics, and guidance for dependency setup and OCR quality issues.]\n\n## Skill Version(s):\n\n0.1.0 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v0.1.0:requirements.txt\n\n# PDF转EPUB OCR技能依赖包\n\n# 核心依赖\nebooklib==0.17.1                    # EPUB文件生成和处理\npytesseract==0.3.10                 # Tesseract OCR的Python封装\npdf2image==1.16.3                   # PDF转图片\nPillow==10.1.0                      # 图像处理库\nPyPDF2==3.0.1                       # PDF元数据提取\n\n# 可选依赖（增强功能）\nopencv-python==4.8.1.78             # 图像预处理（倾斜校正等）\nnumpy==1.24.3                       # 数值计算（OpenCV依赖）\n\n# 开发依赖（可选）\npytest==7.4.3                       # 单元测试\nblack==23.12.1                      # 代码格式化\nflake8==6.1.0                       # 代码检查\n\n# 系统依赖说明：\n# Ubuntu/Debian:\n# sudo apt-get install tesseract-ocr tesseract-ocr-chi-sim poppler-utils\n#\n# macOS:\n# brew install tesseract tesseract-lang poppler\n#\n# Windows:\n# 下载安装Tesseract OCR: https://github.com/UB-Mannheim/tesseract/wiki\n# 下载安装poppler: https://github.com/oschwartz10612/poppler-windows/releases/","readmeExcerpt":"Skill: pdf-to-epub-ocr Owner: erich1566 Summary: 将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式。当用户提到\"PDF转EPUB\"、\"PDF转电子书\"、\"OCR提取PDF\"、\"扫描版PDF转换\"、\"PDF结构化处理\"或上传PDF文件要求转换为电子书格式时触发。不适用于纯文本PDF（可直接提取文字的PDF不需要OCR）、图片格式转换或PDF编辑功能。 Tags: latest:0.1.0 Version history: v0.1.0 | 2026-08-07T10:35:59.297Z | auto Initial release of PDF-to-EPUB OCR skill. - Scanned PDF ebooks can be converted to structured, reflowable EPUB files using OCR. - Suppo","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# Ubuntu/Debian\n   sudo apt-get install tesseract-ocr tesseract-ocr-chi-sim\n   \n   # macOS\n   brew install tesseract tesseract-lang\n   \n   # Windows\n   # 下载安装: https://github.com/UB-Mannheim/tesseract/wiki"},{"language":"bash","snippet":"# Ubuntu/Debian\n   sudo apt-get install poppler-utils\n   \n   # macOS\n   brew install poppler\n   \n   # Windows\n   # 下载安装: https://github.com/oschwartz10612/poppler-windows/releases/"},{"language":"bash","snippet":"pip install -r requirements.txt"},{"language":"bash","snippet":"python scripts/pdf_to_epub_converter.py your_book.pdf"},{"language":"bash","snippet":"# 指定输出目录\npython scripts/pdf_to_epub_converter.py your_book.pdf --output-dir ./output\n\n# 指定书名和作者\npython scripts/pdf_to_epub_converter.py your_book.pdf \\\n    --title \"我的书籍\" \\\n    --author \"作者名\""},{"language":"bash","snippet":"# 解决方案: 安装Tesseract OCR引擎\nsudo apt-get install tesseract-ocr tesseract-ocr-chi-sim"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: pdf-to-epub-ocr\ndescription: 将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式。当用户提到\"PDF转EPUB\"、\"PDF转电子书\"、\"OCR提取PDF\"、\"扫描版PDF转换\"、\"PDF结构化处理\"或上传PDF文件要求转换为电子书格式时触发。不适用于纯文本PDF（可直接提取文字的PDF不需要OCR）、图片格式转换或PDF编辑功能。\n---\n\n# PDF转EPUB OCR技能\n\n## 概述\n\n本技能将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式电子书，支持封面提取、智能文本清洗、章节自动识别和元数据管理，生成适合移动设备阅读的电子书文件。\n\n## 你的工作方式\n\n你是一个专业的PDF到EPUB转换专家，负责将用户提供的扫描版PDF文件转换为结构化的EPUB电子书。工作流程包括：文件分析预处理、OCR文字识别、文本清洗与章节识别、EPUB结构化生成、质量验证与交付。\n\n## Phase 1：文件分析与预处理\n\n### 1.1 文件接收与验证\n- 接收用户提供的PDF文件路径\n- 验证文件是否存在且为有效的PDF格式\n- 检查文件大小（建议小于100MB以避免处理超时）\n- 确认PDF是否为扫描版（无文本层需要OCR）\n\n### 1.2 元数据提取\n- 使用PyPDF2提取PDF基础元数据\n- 尝试获取书名、作者、出版社、出版日期等信息\n- 如果元数据不完整，询问用户补充关键信息（书名、作者）\n\n### 1.3 封面提取\n- 使用pdf2image将PDF第一页转换为图片\n- 转换参数：DPI=300，格式=JPEG，质量=95\n- 保存为临时封面文件：`cover.jpg`\n\n**预处理完成确认门**：向用户确认提取的元数据信息是否正确，特别是书名和作者。\n\n## Phase 2：OCR文字识别\n\n### 2.1 页面批处理\n- 使用pdf2image将PDF逐页转换为图片（DPI=300，格式=PNG）\n- 采用分页处理策略，每处理10页输出一次进度\n- 大文件建议分批次处理，避免内存溢出\n\n### 2.2 OCR识别执行\n- 使用pytesseract进行OCR识别\n- 语言配置：`chi_sim+eng`（简体中文+英文）\n- OCR参数：`--psm 6`（假设为统一文本块）\n- 保留文本坐标信息用于后续章节识别\n\n### 2.3 识别质量控制\n- 设置置信度阈值（默认0.6），低于阈值的文本标记为需要人工校对\n- 统计识别准确率和处理进度\n- 记录识别失败的页面供后续重试\n\n**OCR完成确认门**：向用户报告OCR识别统计信息（总页数、识别成功数、平均置信度），询问是否继续。\n\n## Phase 3：文本清洗与章节识别\n\n### 3.1 文本清洗\n执行以下清洗步骤，顺序无关：\n1. **去除页眉页脚**：识别并删除页面顶部和底部的重复文本模式\n2. **去除页码**：删除纯数字页码和\"第X页\"格式的内容\n3. **去除水印**：识别并删除半透明或重复的水印文本\n4. **规范化空白**：将连续空格、换行符、制表符统一处理\n5. **OCR错误校正**：修复常见的OCR识别错误（如\"0\"和\"O\"混淆）\n\n### 3.2 章节标题识别\n使用正则表达式匹配章节标题模式：\n- 中文章节：`第[一二三四五六七八九十百千]+章`、`第[0-9]+章`\n- 英文章节：`Chapter [0-9]+`、`Part [0-9]+`\n- 其他模式：`[0-9]+\\.[0-9]+`（如1.1、2.3）\n\n### 3.3 结构化重组\n- 根据章节标题将文本分割为独立章节\n- 为每个章节生成唯一ID（chapter_001, chapter_002...）\n- 构建章节层级结构（支持多级标题）\n\n**清洗完成确认门**：向用户展示识别出的章节结构，确认是否正确。\n\n## Phase 4：EPUB结构化生成\n\n### 4.1 EPUB框架创建\n- 使用ebooklib创建EPUB2格式电子书\n- 设置书名（来自PDF元数据或用户输入）\n- 添加作者、出版社、语言等元数据\n- 设置唯一标识符（UUID）\n\n### 4.2 内容组织\n- 将封面图片添加为EPUB封面\n- 为每个章节创建独立的HTML文件\n- 设置正确的MIME类型（text/html, image/jpeg）\n- 添加CSS样式文件，优化阅读体验：\n  - 设置合适的行高和字间距\n  - 支持中文字体回退\n  - 响应式布局适配移动设备\n\n### 4.3 目录生成\n- 基于章节结构生成EPUB目录\n- 设置章节间的导航链接\n- 添加线性阅读属性\n\n### 4.4 文件输出\n- 保存EPUB文件到workspace/output/目录\n- 文件名格式：`{原文件名}_converted.epub`\n- 生成转换报告（处理时间、页数、章节数、文件大小）\n\n## Phase 5：质量验证与交付\n\n### 5.1 文件验证\n- 检查EPUB文件完整性\n- 验证封面、目录、章节是否正确\n- 测试在不同设备上的显示效果（如果可能）\n\n### 5.2 交付物确认\n向用户交付以下内容：\n1. 转换后的EPUB文件\n2. 转换报告（包含统计信息和质量评估）\n3. 如有问题，提供改进建议\n\n## 异常处理\n\n### 常见问题处理\n- **OCR识别失败**：降低DPI重新转换，或建议用户提供更清晰的PDF\n- **章节识别错误**：询问用户提供正确的章节划分规则\n- **元数据缺失**：提示用户手动补充关键信息\n- **文件过大**：建议分批处理或使用压缩版本\n\n### 性能优化\n- 对于大文件，采用增量处理策略\n- 使用多线程加速OCR识别（如果系统支持）\n- 缓存中间结果，支持断点续传\n\n## 工作流示例\n\n### 示例1：标准PDF转换流程\n用户上传扫描版PDF书籍《机器学习实战》，要求转换为EPUB格式。\n\n**执行过程**：\n1. 接收文件`machine_learning.pdf`，验证PDF格式\n2. 提取元数据：书名\"机器学习实战\"，作者\"张三\"\n3. 提取第一页作为封面`cover.jpg`\n4. 逐页OCR识别（共256页），统计识别成功率为92%\n5. 清洗文本，识别出15个章节\n6. 生成EPUB文件`machine_learning_converted.epub`\n7. 交付文件和转换报告\n\n### 示例2：包含复杂结构的PDF\n用户上传技术文档`api_reference.pdf`，包含多级标题和代码块。\n\n**执行过程**：\n1. 预处理发现PDF包含多级结构（章、节、小节）\n2. OCR识别时保留格式信息\n3. 章节识别使用多级正则表达式\n4. 为代码块添加特殊CSS样式保持格式\n5. 生成带三级目录的EPUB文件\n6. 提示用户某些代码块可能需要人工校对\n\n## 资源目录\n\n本技能包含以下资源目录：\n\n### scripts/\n- `pdf_to_epub_converter.py`：核心转换脚本，包含完整的PDF到EPUB转换流程\n- `ocr_pr"},{"path":"README.md","content":"# PDF转EPUB OCR技能\n\n将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式电子书。\n\n## 功能特点\n\n- ✅ **智能OCR识别**: 使用Tesseract OCR引擎，支持中英文混合识别\n- ✅ **封面提取**: 自动提取PDF第一页作为EPUB封面\n- ✅ **文本清洗**: 去除页眉页脚、页码、水印等干扰内容\n- ✅ **章节识别**: 自动识别章节标题，生成结构化目录\n- ✅ **元数据管理**: 提取和写入书名、作者等元数据信息\n- ✅ **移动优化**: 生成适合移动设备阅读的EPUB文件\n\n## 系统依赖\n\n### 必需的系统组件\n\n1. **Tesseract OCR引擎**\n   ```bash\n   # Ubuntu/Debian\n   sudo apt-get install tesseract-ocr tesseract-ocr-chi-sim\n   \n   # macOS\n   brew install tesseract tesseract-lang\n   \n   # Windows\n   # 下载安装: https://github.com/UB-Mannheim/tesseract/wiki\n   ```\n\n2. **Poppler** (PDF处理库)\n   ```bash\n   # Ubuntu/Debian\n   sudo apt-get install poppler-utils\n   \n   # macOS\n   brew install poppler\n   \n   # Windows\n   # 下载安装: https://github.com/oschwartz10612/poppler-windows/releases/\n   ```\n\n## Python依赖\n\n安装Python依赖包：\n```bash\npip install -r requirements.txt\n```\n\n## 使用方法\n\n### 基本用法\n\n```bash\npython scripts/pdf_to_epub_converter.py your_book.pdf\n```\n\n### 高级用法\n\n```bash\n# 指定输出目录\npython scripts/pdf_to_epub_converter.py your_book.pdf --output-dir ./output\n\n# 指定书名和作者\npython scripts/pdf_to_epub_converter.py your_book.pdf \\\n    --title \"我的书籍\" \\\n    --author \"作者名\"\n```\n\n### 在Agent中使用\n\n当用户提到以下内容时，此技能会自动触发：\n- \"PDF转EPUB\"、\"PDF转电子书\"\n- \"OCR提取PDF\"、\"扫描版PDF转换\"\n- \"PDF结构化处理\"\n- 上传PDF文件要求转换为电子书格式\n\n## 输出说明\n\n### 输出文件\n- **位置**: `output/`目录\n- **文件名**: `{原文件名}_converted.epub`\n- **格式**: EPUB 2.0.1（兼容性最好）\n\n### 转换报告\n每个转换任务会生成详细报告，包括：\n- 总页数和识别成功页数\n- OCR平均置信度\n- 识别的章节数量\n- 输出文件大小\n- 处理时间统计\n\n## 工作流程\n\n1. **文件分析**: 验证PDF格式，提取元数据\n2. **封面提取**: 转换第一页为封面图片\n3. **OCR识别**: 逐页进行文字识别\n4. **文本清洗**: 去除噪音内容\n5. **章节识别**: 自动识别章节结构\n6. **EPUB生成**: 创建结构化电子书文件\n7. **质量验证**: 检查文件完整性\n\n## 质量保证\n\n### OCR质量\n- 推荐DPI: 300-400\n- 语言支持: 中英文混合\n- 置信度监控: 自动统计识别准确率\n\n### EPUB质量\n- 结构验证: 自动检查EPUB结构完整性\n- 兼容性测试: 支持主流阅读设备\n- 响应式设计: 适配不同屏幕尺寸\n\n## 故障排除\n\n### 常见问题\n\n**问题**: Tesseract not found\n```bash\n# 解决方案: 安装Tesseract OCR引擎\nsudo apt-get install tesseract-ocr tesseract-ocr-chi-sim\n```\n\n**问题**: 识别准确率低\n```bash\n# 解决方案: \n# 1. 提高PDF扫描质量\n# 2. 调整DPI设置（推荐300-400）\n# 3. 使用预处理脚本增强图像\n```\n\n**问题**: 章节识别错误\n```bash\n# 解决方案: \n# 1. 检查章节标题格式\n# 2. 在代码中添加自定义正则表达式\n# 3. 手动调整章节划分\n```\n\n## 性能参数\n\n### 典型处理时间（基于300 DPI）\n- 简单文本PDF (100页): 2-3分钟\n- 复杂排版PDF (100页): 5-8分钟\n- 高质量扫描PDF (100页): 3-5分钟\n\n### 硬件建议\n- **CPU**: 多核处理器（4核以上）\n- **内存**: 最低4GB，推荐8GB\n- **存储**: SSD硬盘（显著提升I/O性能）\n\n## 配置选项\n\n### OCR配置\n可在`scripts/ocr_processor.py`中调整：\n- `dpi`: 图片转换分辨率（默认300）\n- `language`: OCR语言（默认`chi_sim+eng`）\n- `psm_mode`: 页面分割模式（默认6）\n\n### 清洗配置\n可在`scripts/text_cleaner.py`中调整：\n- 章节标题识别模式\n- 噪音文本过滤规则\n- 文本清洗策略\n\n### EPUB配置\n可在`scripts/epub_generator.py`中调整：\n- CSS样式文件\n- 章节HTML模板\n- 元数据设置\n\n## 参考文档\n\n- `references/ocr_best_practices.md`: OCR识别最佳实践\n- `references/chapter_patterns.md`: 章节标题识别模式库\n- `references/epub_structure_guide.md`: EPUB结构说明和样式规范\n\n## 技术支持\n\n如遇到问题，请检查：\n1. 系统依赖是否正确安装\n2. Python依赖包是否完整\n3. PDF文件是否有效\n4. 系统资源是否充足\n\n## 许可证\n\n本技能仅供学习和个人使用。使用时请遵守相关版权法律法规。\n\n## 更新日志\n\n### v1.0.0 (2024-08-07)\n- ✨ 初始版本发布\n- ✅ 支持基础PDF到EPUB转换\n- ✅ OCR识别和文本清洗\n- ✅ 章节自动识别\n- ✅ 元数据管理"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn705qkxd5q2sxd49s59dnfknd82dywx\",\n  \"slug\": \"pdf-to-epub-ocr\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1786098959297\n}"},{"path":"references/chapter_patterns.md","content":"# 章节标题识别正则表达式模式库\n\n## 中文图书章节模式\n\n### 基础章节模式\n```python\n# 第X章格式\nr'^第[一二三四五六七八九十百千万]+章[^\\n]*$'\nr'^第[0-9]+章[^\\n]*$'\n\n# 第X节格式  \nr'^第[一二三四五六七八九十百千万]+节[^\\n]*$'\nr'^第[0-9]+节[^\\n]*$'\n\n# 第X篇格式\nr'^第[一二三四五六七八九十百千万]+篇[^\\n]*$'\nr'^第[0-9]+篇[^\\n]*$'\n```\n\n### 扩展章节模式\n```python\n# 带副标题的章节\nr'^第[一二三四五六七八九十百千万]+章[：:][^\\n]+$'\nr'^第[0-9]+章[：:][^\\n]+$'\n\n# 带括号的章节\nr'^\\([一二三四五六七八九十百千万]+\\)[^\\n]*$'\nr'^\\([0-9]+\\)[^\\n]*$'\n\n# 中文数字章节\nr'^[一二三四五六七八九十百千万]+\\.[^\\n]*$'\nr'^[一二三四五六七八九十百千万]+、[^\\n]*$'\n```\n\n## 英文图书章节模式\n\n### 基础英文模式\n```python\n# Chapter格式\nr'^Chapter\\s+[0-9IVXLCDM]+[^\\n]*$'\nr'^CHAPTER\\s+[0-9IVXLCDM]+[^\\n]*$'\n\n# Part格式\nr'^Part\\s+[0-9IVXLCDM]+[^\\n]*$'\nr'^PART\\s+[0-9IVXLCDM]+[^\\n]*$'\n\n# Section格式\nr'^Section\\s+[0-9]+[^\\n]*$'\nr'^SECTION\\s+[0-9]+[^\\n]*$'\n```\n\n### 扩展英文模式\n```python\n# 带标题的章节\nr'^Chapter\\s+[0-9IVXLCDM]+:\\s*[^\\n]+$'\nr'^Part\\s+[0-9IVXLCDM]+:\\s*[^\\n]+$'\n\n# 罗马数字章节\nr'^[IVXLCDM]+\\.\\s*[^\\n]+$'\nr'^[IVXLCDM]+\\s+[^\\n]+$'\n\n# 字母章节\nr'^[A-Z]+\\.\\s*[^\\n]+$'\nr'^Appendix\\s+[A-Z][^\\n]*$'\n```\n\n## 数字编号模式\n\n### 多级编号\n```python\n# 一级编号\nr'^[0-9]+\\.[^\\n]*$'\n\n# 二级编号  \nr'^[0-9]+\\.[0-9]+[^\\n]*$'\nr'^[0-9]+\\.[0-9]+\\.[^\\n]*$'\n\n# 三级编号\nr'^[0-9]+\\.[0-9]+\\.[0-9]+[^\\n]*$'\nr'^[0-9]+\\.[0-9]+\\.[0-9]+\\.[^\\n]*$'\n```\n\n### 括号编号\n```python\n# 圆括号编号\nr'^\\([0-9]+\\)[^\\n]*$'\nr'^\\([0-9]+\\.[0-9]+\\)[^\\n]*$'\n\n# 方括号编号\nr'^\\[[0-9]+\\][^\\n]*$'\nr'^\\[[0-9]+\\.[0-9]+\\][^\\n]*$'\n```\n\n## 学术论文模式\n\n### 论文章节\n```python\n# 摘要、关键词等\nr'^[摘要|关键词|Abstract|Keywords|引言|结论|参考文献][^\\n]*$'\n\n# 学术章节\nr'^[0-9]+\\s*[引言|文献综述|研究方法|实验结果|讨论|结论][^\\n]*$'\n\n# 图表标题\nr'^图\\s*[0-9]+[^\\n]*$'\nr'^表\\s*[0-9]+[^\\n]*$'\nr'^Figure\\s*[0-9]+[^\\n]*$'\nr'^Table\\s*[0-9]+[^\\n]*$'\n```\n\n## 技术文档模式\n\n### 技术章节\n```python\n# 技术文档章节\nr'^[0-9]+\\s*[概述|简介|背景|目标|范围][^\\n]*$'\nr'^[0-9]+\\s*[安装|配置|部署][^\\n]*$'\nr'^[0-9]+\\s*[使用指南|操作说明][^\\n]*$'\nr'^[0-9]+\\s*[故障排除|常见问题][^\\n]*$'\n\n# API文档\nr'^[GET|POST|PUT|DELETE|PATCH]\\s+[^\\n]+$'\nr'^/api/[^\\n]+$'\nr'^[0-9]+\\.[0-9]+\\s+接口[^\\n]*$'\n```\n\n## 小说文学作品模式\n\n### 小说章节\n```python\n# 卷篇章节\nr'^第[一二三四五六七八九十百千万]+卷[^\\n]*$'\nr'^第[一二三四五六七八九十百千万]+部[^\\n]*$'\n\n# 回目格式（传统小说）\nr'^第[一二三四五六七八九十百千万]+回[^\\n]*$'\nr'^[0-9]+回[^\\n]*$'\n\n# 现代小说章节\nr'^[一二三四五六七八九十百千万]+、[^\\n]+$'\nr'^Chapter\\s*[0-9]+[^\\n]*$'\n```\n\n## 混合模式匹配策略\n\n### 优先级排序\n```python\n# 高优先级：明确的章节标记\nPRIORITY_HIGH = [\n    r'^第[一二三四五六七八九十百千万]+章[^\\n]*$',\n    r'^Chapter\\s+[0-9IVXLCDM]+[^\\n]*$',\n]\n\n# 中优先级：数字编号\nPRIORITY_MEDIUM = [\n    r'^[0-9]+\\.[0-9]+[^\\n]*$',\n    r'^第[0-9]+章[^\\n]*$',\n]\n\n# 低优先级：可能的章节\nPRIORITY_LOW = [\n    r'^[0-9]+\\s+[^\\n]{5,30}$',\n    r'^[A-Z]+\\.[^\\n]{5,30}$',\n]\n```\n\n### 上下文验证\n```python\ndef validate_chapter_title(line, prev_lines, next_lines):\n    \"\"\"\n    验证章节标题的有效性\n    \n    Args:\n        line: 当前行\n        prev_lines: 前面几行\n        next_lines: 后面几行\n    \n    Returns:\n        是否为有效的章节标题\n    \"\"\"\n    # 检查行长度（章节标题通常较短）\n    if len(line) > 50:\n        return False\n    \n    # 检查前后内容（章节标题前后通常有空白）\n    if prev_lines and prev_lines[-1].strip():\n        # 如果前面一行有内容，检查是否是页码等噪音\n        if re.match(r'^\\d+$', prev_lines[-1].strip()):\n            return True\n        return False\n    \n    # 检查后面内容（章节标题后应该有正文）\n    if next_lines and not next_lines[0].strip():\n        return Fa"},{"path":"references/epub_structure_guide.md","content":"# EPUB文件结构说明和样式规范\n\n## EPUB基础结构\n\n### 目录结构\n```\nEPUB文件（ZIP压缩包）\n├── mimetype\n├── META-INF/\n│   └── container.xml\n└── OEBPS/\n    ├── content.opf\n    ├── toc.ncx\n    └── chapters/\n        ├── chapter_001.xhtml\n        ├── chapter_002.xhtml\n        ├── style/\n        │   └── default.css\n        └── images/\n            ├── cover.jpg\n            └── figure_001.jpg\n```\n\n### 关键文件说明\n\n#### mimetype\n- 必须是第一个文件且未压缩\n- 内容固定为：`application/epub+zip`\n\n#### container.xml\n- 定义了OPF文件的路径\n- 示例：\n```xml\n<?xml version=\"1.0\"?>\n<container version=\"1.0\" xmlns=\"urn:oasis:names:tc:opendocument:xmlns:container\">\n  <rootfiles>\n    <rootfile full-path=\"OEBPS/content.opf\" media-type=\"application/oebps-package+xml\"/>\n  </rootfiles>\n</container>\n```\n\n#### content.opf\n- 包含书籍的元数据、清单和spine\n- 描述了书籍的所有组成部分\n\n#### toc.ncx\n- 导航控制文件（EPUB2）或nav.xhtml（EPUB3）\n- 定义了书籍的目录结构\n\n## 元数据规范\n\n### 基础元数据\n```xml\n<metadata xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n  <!-- 必需 -->\n  <dc:title>书名</dc:title>\n  <dc:identifier id=\"bookid\">unique-id-12345</dc:identifier>\n  \n  <!-- 推荐 -->\n  <dc:language>zh-CN</dc:language>\n  <dc:creator>作者名</dc:creator>\n  \n  <!-- 可选 -->\n  <dc:publisher>出版社</dc:publisher>\n  <dc:date>2024-01-01</dc:date>\n  <dc:description>书籍描述</dc:description>\n  <dc:subject>主题分类</dc:subject>\n  <dc:rights>版权信息</dc:rights>\n</metadata>\n```\n\n### 元数据最佳实践\n1. **标题**: 简洁明确，避免过长\n2. **作者**: 使用真实姓名或常用笔名\n3. **语言**: 使用标准的语言代码（zh-CN, en-US等）\n4. **标识符**: 使用UUID或ISBN\n5. **描述**: 100-500字的简介，便于搜索\n\n## 内容组织规范\n\n### 章节文件命名\n```\nchapter_001.xhtml  # 第一章\nchapter_002.xhtml  # 第二章\n...\nchapter_999.xhtml  # 附录等\n```\n\n### 章节文件结构\n```xml\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"\n  \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <title>章节标题</title>\n  <link rel=\"stylesheet\" type=\"text/css\" href=\"style/default.css\"/>\n</head>\n<body>\n  <h1>章节标题</h1>\n  <div class=\"content\">\n    <p>段落内容...</p>\n    <p>更多段落...</p>\n  </div>\n</body>\n</html>\n```\n\n## CSS样式规范\n\n### 基础样式框架\n```css\n/* 全局设置 */\n* {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n}\n\nbody {\n  font-family: \"PingFang SC\", \"Microsoft YaHei\", \"SimHei\", serif;\n  line-height: 1.8;\n  margin: 1em;\n  padding: 0;\n  color: #333;\n  background-color: #fff;\n}\n```\n\n### 标题样式\n```css\nh1 {\n  text-align: center;\n  margin: 1em 0;\n  font-size: 1.8em;\n  color: #333;\n  border-bottom: 2px solid #eee;\n  padding-bottom: 0.5em;\n  font-weight: bold;\n}\n\nh2 {\n  margin: 1.5em 0 0.8em 0;\n  font-size: 1.4em;\n  color: #444;\n  border-left: 4px solid #007bff;\n  padding-left: 0.5em;\n}\n\nh3 {\n  margin: 1.2em 0 0.6em 0;\n  font-size: 1.2em;\n  color: #555;\n}\n```\n\n### 正文样式\n```css\np {\n  margin: 0.8em 0;\n  text-align: justify;\n  text-indent: 2em;\n  font-size: 1em;\n  line-height: 1.8;\n  color: #333;\n}\n\n/* 首字下沉（可选） */\np:first-of-type::first-letter {\n  font-size: 2em;\n  font-weight: bold;\n  float: left;\n  margin-right: 0.1em;\n  line-height: 1;\n}\n```\n\n### 响应式设计\n```css\n/* 平板设备 */\n@media screen and (max-width: 768px) {\n  body {\n    fon"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式。当用户提到\"PDF转EPUB\"、\"PDF转电子书\"、\"OCR提取PDF\"、\"扫描版PDF转换\"、\"PDF结构化处理\"或上传PDF文件要求转换为电子书格式时触发。不适用于纯文本PDF（可直接提取文字的PDF不需要OCR）、图片格式转换或PDF编辑功能。 Skill: pdf-to-epub-ocr Owner: erich1566 Summary: 将扫描版PDF电子书通过OCR识别转换为结构化精排的EPUB格式。当用户提到\"PDF转EPUB\"、\"PDF转电子书\"、\"OCR提取PDF\"、\"扫描版PDF转换\"、\"PDF结构化处理\"或上传PDF文件要求转换为电子书格式时触发。不适用于纯文本PDF（可直接提取文字的PDF不需要OCR）、图片格式转换或PDF编辑功能。 Tags: latest:0.1.0 Version history: v0.1.0 | 2026-08-07T10:35:59.297Z | auto Initial release of PDF-to-EPUB OCR skill. - Scanned PDF ebooks can be converted to structured, reflowable EPUB files using OCR. - Suppo","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1018,"uniquenessScore":50,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T15:23:40.208Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T15:23:40.208Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T02:24:21.627Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}