Skill Seeker PDF 章节化分类与黄金测试机制解析:从章节检测到 references/index.md 的完整生成链路

发布时间:2026/9/24 3:40:31

Skill Seeker PDF 章节化分类与黄金测试机制解析:从章节检测到 references/index.md 的完整生成链路 人工智能AI 应用AI 技能RAGMCP 服务网页爬虫【免费下载链接】Skill_SeekersConvert documentation websites, GitHub repositories, and PDFs into Claude AI skills with automatic conflict detection项目地址https://gitcode.com/gh_mirrors/sk/Skill_Seekers点击查看免费下载Skill_Seekers能将 PDF 文档转换为可直接供 Claude 等 AI 使用的 Skill其中按章节归类页面是 PDF 管线区别于 HTML/GitHub 等来源的关键能力。本文以仓库内黄金测试输出tests/golden/phase2/pdf_chapters/references/index.md为切入点逐层拆解 PDF 章节检测、分类决策、参考文件与索引生成、以及字节级一致的黄金回归验证机制帮助读者掌握 Skill Seeker PDF 技能构建的完整原理。一、从一张黄金索引文件看懂章节化分类的最终产物tests/golden/phase2/pdf_chapters/references/index.md是 PDF 技能构建管线在章节分类模式下生成的参考文档索引它忠实地反映了三个关键事实多类别输出一个 PDF 被拆成多个章节类别每个类别对应一个独立参考文件页码范围标注每个类别都标注了其覆盖的 PDF 物理页码区间质量统计回填索引底部沉淀了整份文档的代码质量指标。其完整内容如下# Golden_Pdf_Ch Documentation Reference ## Categories - [Chapter 1: Basics](https://link.gitcode.com/i/378dd8e54e6e519ea01c59070cbecf0c) (2 pages, Pages 1-2) - [Chapter 2: Advanced](https://link.gitcode.com/i/4bbaf2ac791e4c6d3f7f28abb053efb7) (1 pages, Pages 3-3) - [Additional Content](https://link.gitcode.com/i/9df2204126d09ba51db4bf57adacb4e6) (1 pages, Pages 4-4) ## Statistics - Total pages: 4 - Code blocks: 4 - Images: 2 - Average code quality: 7.4/10 - Valid code blocks: 4该文件的同级目录还包含三个章节参考文件section_p1-p2.md、section_p3-p3.md、section_p4-p4.md以及顶层SKILL.md它们共同构成了一个完整 PDF Skill 的产物树。注意第三行Additional Content——它对应第 4 页该页不落在任何章节区间内被归类进了未分类桶这正是章节分类逻辑的一个重要边界行为详见第五节。二、Categories 目录章节到参考文件的链接规范2.1 文件名生成规则index.md中每个类别的链接指向section_p1-p2.md这类文件其命名规则由DocumentSkillBuilder._reference_filename()统一产出src/skill_seekers/cli/document_skill_builder.py而PDFToSkillConverter通过类属性注入 PDF 专属参数src/skill_seekers/cli/pdf_scraper.pyNUMBER_KEY page_number NUMBER_PREFIX p RANGE_LABEL Pages于是页码 1-2 的章节被命名为section_p1-p2.md页码 3 的章节命名为section_p3-p3.md。命名与SKILL.md的 Navigation 区、index.md的 Categories 区共用同一个函数从设计上杜绝了链接漂移源码注释中标记为 DOC-07 约束。2.2 页码区间与页数统计_generate_index()src/skill_seekers/cli/document_skill_builder.py遍历分类结果对每个类别用s.get(NUMBER_KEY)取每页的page_number计算min/max得到Pages 1-2这样的区间输出({section_count} pages, {sec_range_str})格式若类别为空0 页则输出N/A而不是空区间。这就是(2 pages, Pages 1-2)一行数据的完整来源。三、Statistics 统计块五维质量画像index.md底部的 Statistics 由PDFToSkillConverter._write_index_statistics()重写基类后输出src/skill_seekers/cli/pdf_scraper.py数据来自提取阶段pdf_extractor_poc.py汇总的extracted_data统计项示例值数据来源Total pages4total_pagesPDF 总页数Code blocks4total_code_blocks提取到的代码块总数Images2total_images文档内图片/图表总数Average code quality7.4/10quality_statistics.average_quality代码质量均值保留 1 位小数Valid code blocks4quality_statistics.valid_code_blocks通过质量校验的代码块数注意基类版本写的是Total sections章节数PDF 覆盖为Total pages页数——PDF 的统计口径以页为单位与UNIT_LABEL pages保持一致。质量统计在提取端由PDFExtractor计算src/skill_seekers/cli/pdf_extractor_poc.py除均值与有效数外还包含high/medium/low_quality_blocks三档分布。四、章节数据从哪里来PDFExtractor 的章节检测index.md里每个章节的标题 起止页码{title: Chapter 1: Basics, start_page: 1, end_page: 2}并非凭空产生而是由提取器pdf_extractor_poc.py在抽取阶段完成检测。4.1 章节起点判定规则detect_chapter_start()src/skill_seekers/cli/pdf_extractor_poc.py按优先级依次判断某页是否开启新章节标题层级页面headings列表中的第一个标题若为h1或h2即视为章节起点章节名取该标题文本文本模式匹配对页面首行文本做正则匹配命中以下模式之一即视为章节起点^Chapter\s\d # Chapter 1 ^Part\s\d # Part 2 ^Section\s\d # Section 3 ^\d\.\s[A-Z] # 1. Introduction4.2 分块与章节范围推算提取器以chunk_size默认 10 页为粒度分块但不会在章节起点处强行切块保证章节完整性每个 chunk 记录start_page、end_page与chapter_title。最终在结果组装阶段src/skill_seekers/cli/pdf_extractor_poc.py收敛为chapters [ {title: chunk[chapter_title], start_page: chunk[start_page], end_page: chunk[end_page]} for chunk in chunks if chunk[chapter_title] ]输出示例与测试中手工构造的章节结构完全一致见 tests/test_phase2_golden_pdf.pydata[chapters] [ {title: Chapter 1: Basics, start_page: 1, end_page: 2}, {title: Chapter 2: Advanced, start_page: 3, end_page: 3}, ]五、分类决策单源 / 章节 / 关键词三级路径PDFToSkillConverter.categorize_content()src/skill_seekers/cli/pdf_scraper.py重写了基类的分类逻辑按优先级走三条路径路径一单 PDF 源配置了pdf_path。为避免自动章节检测把内容切错直接以 PDF 文件名作为唯一类别包含全部页面——这也是黄金测试test_pdf_build_matches_golden覆盖的快速路径。路径二章节分类存在chapters字段多源场景。对每个章节建立类别然后逐页匹配for chapter in self.extracted_data[chapters]: if chapter[start_page] page_num chapter[end_page]: # 归入该章节未命中任何章节区间的页面被收集进uncategorized_pages最后统一放入名为uncategorized的类别标题固定为Additional Contentsrc/skill_seekers/cli/pdf_scraper.py。这正是index.md中第三行Additional Content ... Pages 4-4的来源——第 4 页附录落在章节 1-3 之外被安全兜底。路径三关键词分类配置了categories无章节。对每页的text与headings拼接文本按关键词打分归入得分最高的类别无命中则进入other标题 Other桶。空关键词类别如测试中的deployment: [kubernetes]保持为空列表不会产生假页面。最终兜底以上皆无时所有页面归入单一content类别。分类结束后控制台会打印每个类别的标题与页数便于排查分类结果。六、章节参考文件 section_*.md 的生成细节每个分类对应一个参考文件由_generate_reference_file()src/skill_seekers/cli/pdf_scraper.py生成其结构可直接对照黄金文件 section_p1-p2.md 验证# Chapter 1: Basics **Pages**: 1-2 --- ** Source: PDF Page 1** ## Getting Started Guide ...正文... ### Code Examples python print(hello)ImagesImage from page 1生成要点 - **页范围头**文件开头写入 **Pages**: {min}-{max} - **溯源标记**每页前写入 ** Source: PDF Page N**保留页面级可追溯性 - **标题处理**只取每页 headings 列表的**第一个**标题作为 ## 小节标题而非全部标题 - **代码兼容双键**优先读 code_samples缺失时回退到旧版 code_blocks 键[src/skill_seekers/cli/pdf_scraper.py](https://link.gitcode.com/i/cc588c1ec18b19314f2da3275be19e7e)兼容两种提取格式 - **图片两种形态**extracted_images提取器已落盘的图片仅写链接指向 ../assets/images/xxx.png与旧版 images原始字节构建时写盘为 page_{N}_img_{index}.png 并引用。后者有数据守卫data 缺失或非 bytes/空值会被跳过避免写坏 PNG 或产生 404 图片链接[src/skill_seekers/cli/pdf_scraper.py](https://link.gitcode.com/i/4f71a443f872248278d2f675210df852)。黄金输出 tests/golden/phase2/pdf_chapters/assets/page_2_img_0.png 即由此路径写盘。 ## 七、SKILL.md 的配套结构章节分类的对外呈现 章节分类不仅生成 references还驱动顶层 [SKILL.md](https://link.gitcode.com/i/cc334d713ff062e2a83472a4e6f6adae)。_generate_skill_md()[src/skill_seekers/cli/pdf_scraper.py](https://link.gitcode.com/i/c031476af5285c104024fc1c39118a9b)在 YAML frontmattername 小写化 连字符化description 截断至 1024 字符之后产出 PDF 专属结构 - **Chapter Overview**以 **Total Pages:** 开头逐类别列出页数Chapter 1: Basics: 2 pages 等 - **Key Concepts**从所有页面 headings 中提取 h1 作为 Major Topics前 10、h2 作为 Subtopics前 15缺失 level 时默认 h1 - **Quick Reference**将 getting started、installation、usage、troubleshooting 等 11 个模式关键词匹配到标题按类型分组并以 (page N) 标注出处 - **Code Examples**按 quality_score 降序取全文档前 15 段按语言分组、每语言取前 5超过 500 字符截断加 ... - **Documentation Statistics**总页数、代码块、图片、语言分布languages_detected与代码质量指标 - **Navigation**列出全部 references/*.md 及其章节标题链接与 index.md 同源生成。 ## 八、黄金回归机制为什么这份 index.md 值得信任 这份 index.md 是**黄金测试golden test**的产物被用于证明 PDF 刮取器在重构到 DocumentSkillBuilder 基类后输出字节级不变。 ### 8.1 测试协议 tests/phase2_golden_utils.py 定义了双模式协议[tests/phase2_golden_utils.py](https://link.gitcode.com/i/089ac5e6d5ec53a602ccdbaccd9605a2) - **捕获模式**UPDATE_GOLDENS1 pytest test在重构前的旧代码上运行将完整产物树含 index.md、各 section_*.md、SKILL.md、assets 图片落盘提交 - **比对模式**重构后同测试在无环境变量时运行逐字节比对每个文件**任何差异都会让测试失败并输出 unified diff**[tests/phase2_golden_utils.py](https://link.gitcode.com/i/54ea1392f9e0a71a741c4be600500f25)文件集合的增删也会被检测。 ### 8.2 章节分类测试用例 [tests/test_phase2_golden_pdf.py](https://link.gitcode.com/i/3e00b8a3ba744aaabf4700de8cd59212) 中的 test_pdf_chapter_categorization_matches_golden 专门构造了本场景3 页基础数据 追加第 4 页附录chapters 为两个区间然后断言 build_snapshot(converter) 与 tests/golden/phase2/pdf_chapters/ 完全一致。同一测试文件的另两个用例分别验证单源快速路径pdf与关键词分类pdf_kw覆盖 scored-match、other 桶、空类别三种边界。 因此这份 index.md 不仅是文档更是 PDF 章节分类行为的事实快照——任何改动若改变了链接、页码区间或统计数值回归测试都会立刻拦截。 ## 九、实操如何复现与扩展 ### 9.1 运行章节分类管线 pdf_scraper.py 支持三种入口[src/skill_seekers/cli/pdf_scraper.py](https://link.gitcode.com/i/496c8aeee2a5f866527241753c39b005) bash # 1) 通过配置文件含 pdf_path、name、categories 等 python3 pdf_scraper.py --config configs/manual_pdf.json # 2) 直接指定 PDF 与技能名走单源快速路径 python3 pdf_scraper.py --pdf manual.pdf --name myskill # 3) 从已提取的 JSON 恢复构建多源/章节场景 python3 pdf_scraper.py --from-json manual_extracted.json多源章节场景下--from-json的提取结果中需包含chapters字段结构见第四节若走extract_options可调参数包括chunk_size默认 10、min_quality默认 5.0、extract_images默认 True、min_image_size默认 100。9.2 关键词分类配置示例无章节数据时可通过categories配置关键词分类tests/test_phase2_golden_pdf.py{ name: golden_pdf_kw, categories: { setup: [setup, installation], api: [endpoints], deployment: [kubernetes] } }页面按关键词命中数打分归入最佳类别未命中进入other桶。9.3 验证回归# 无环境变量 比对模式输出必须与黄金树字节一致 pytest tests/test_phase2_golden_pdf.py # 有意更新黄金树仅在确实需要修改输出格式时使用 UPDATE_GOLDENS1 pytest tests/test_phase2_golden_pdf.py结语tests/golden/phase2/pdf_chapters/references/index.md是 Skill_Seekers PDF 技能管线章节化分类能力的最小完整样本它展示了一条从PDFExtractor的章节检测h1/h2 标题 文本模式正则、到PDFToSkillConverter的三级分类决策单源 / 章节 / 关键词、再到references/index.md目录与统计块生成、最终由黄金测试逐字节锁定的完整链路。理解这份索引的生成逻辑也就掌握了 Skill_Seekers 将任意 PDF 手册转化为结构化 AI 技能的核心机制——包括页码区间命名、未分类页面兜底、代码质量画像等容易在重构中被忽略的细节。赞分享人工智能AI 应用AI 技能RAGMCP 服务网页爬虫【免费下载链接】Skill_SeekersConvert documentation websites, GitHub repositories, and PDFs into Claude AI skills with automatic conflict detection项目地址https://gitcode.com/gh_mirrors/sk/Skill_Seekers点击查看免费下载相关推荐Skill Seeker 的 PDF 文档技能目录索引references/index.md生成机制与关键字分类实战Skill Seeker 的 PDF 文档技能目录索引references/index.md生成机制与关键字分类实战 本篇技术指南聚焦 Skill Seek人工智能AI 应用AI 技能RAGMCP 服务网页爬虫Skill Seekers PDF 转 Skill Golden 输出结构深度解析references/index.md 的生成原理与逐字节验证Skill Seekers PDF 转 Skill Golden 输出结构深度解析references/index.md 的生成原理与逐字节验证 导读 本文以人工智能AI 应用AI 技能RAGMCP 服务网页爬虫Caffeine 节点代码生成机制解析从 Add* 生成器到 Node 类的完整链路Caffeine 节点代码生成机制解析从 Add 生成器到 Node 类的完整链路 本指南聚焦 Caffeine caffeine/ https://lin后端缓存抽象创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/24 3:40:31

ESP32-P4 Rev 3.0电源优化实战:从供电架构到低功耗调优

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 3:40:31

从零搭建最小UVM验证环境:以同步FIFO为例的完整实战教程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 4:40:34

当AI重塑一切技能时,大学教育还剩下什么用

Ben Horowitz 说这句话时语气很平静:"这本该是人类历史上最适合年轻的时代,就像爱迪生的时代,或者亨利福特的时代。"但紧接着的转折是,"我们用来培养年轻人的整套体系,是为一个即将不复存在的世界建造的…

2026/9/24 4:40:34

信息与计算科学 → 数据分析师:业务分析能力补全清单

信息与计算科学专业应届生应聘数据分析师,核心需要补两类内容,第一是意向赛道的通用业务逻辑、核心指标体系和问题拆解思路,第二是把本专业数理基础落地成可商用的数据分析全流程能力,本方案适配2024-2025届信计本科在读、已掌握概…

2026/9/24 4:40:34

BP神经网络评估桥梁爆破方案:从指标设计到MATLAB复现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 4:35:34

U盘变CD-ROM无法格式化?FC1178BC主控量产修复全攻略

你有没有遇到过这种情况——好好的U盘往电脑上一插,盘符倒是出来了,可显示的不是“可移动磁盘”,而是一个“CD驱动器”。双击能进去,里面放着一个不记得什么时候塞进去的ISO镜像,文件怎么删都删不掉,剩余空…

2026/9/23 12:07:00

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/24 0:00:21

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:21

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:21

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码