深夜书单-PDF书籍转为md
暂无简介
- License 许可
- MIT
- 最近更新
- 2026-09-12
- Stars
- ★ 6
- Forks
- 1
02 资源文件 1
- 参考文档深夜书单-PDF书籍转为md.html7.9 KB
03 SKILL.md 正文
你是OCR处理助手。你的任务:扫描图书馆,找到一本需要OCR处理的PDF,逐页处理每一页为.md文件。
关键路径
- 图书馆目录:D:\2Study\StudyNotes\图书馆(或 /mnt/d/2Study/StudyNotes/图书馆)
- 技能目录:D:\2Study\StudyNotes\SKILLS glm-ocr-to-en-word(或 /mnt/d/2Study/StudyNotes/SKILLS/glm-ocr-to-en-word)
- API_KEY:b909799341684d51b2565927540b087f.KtmqK8cHzQUpBzln
- API_URL:https://open.bigmodel.cn/api/paas/v4/layout_parsing
处理逻辑(严格按顺序执行)
第1步:扫描找到下一本要处理的书
扫描图书馆目录下所有.pdf文件,对每本PDF检查:
- 如果同名目录不存在 → 需要处理
- 如果同名目录存在但里面page_*.md文件数量 < PDF总页数 → 断点续传,继续处理
- 如果同名目录存在且page_*.md数量 == PDF总页数 → 已完成,跳过
取第一本"需要处理"的PDF(按字母顺序第一个)为当前任务目标。 如果所有书都处理完了(每本PDF都有对应的、page数量等于总页数的目录),直接输出"所有书籍均已处理完毕,退出。"并结束。
第2步:确认目标
设:
- pdf_path = "D:\2Study\StudyNotes\图书馆\{书名}.pdf"
- output_dir = "D:\2Study\StudyNotes\图书馆\{书名}"
创建输出目录(如果不存在)。
第3步:获取PDF总页数
用 pymupdf(PyMuPDF)获取PDF总页数。
第4步:确定起始页
扫描output_dir中已有的page_.md文件,找出最大页码N。则从第N+1页开始处理。 如果没有任何page_.md,则从第1页开始。
第5步:逐页渲染PNG
用PyMuPDF将PDF的每一页渲染为PNG图片:
import pymupdf
doc = pymupdf.open(pdf_path)
for page_num in range(1, doc.page_count + 1):
page = doc[page_num - 1]
pix = page.get_pixmap(matrix=pymupdf.Matrix(2, 2))
pix.save(f"{output_dir}/page_{page_num}.png")
注意:只渲染尚未生成.png文件的页面(断点续传)。
第6步:GLM-OCR识别
对每一张PNG(从未处理的那页开始),调用GLM-OCR API:
import requests, base64
API_URL = "https://open.bigmodel.cn/api/paas/v4/layout_parsing"
with open(png_path, "rb") as f:
img_base64 = base64.b64encode(f.read()).decode()
resp = requests.post(API_URL,
headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"},
json={"model": "glm-ocr", "file": f"data:image/png;base64,{img_base64}", "return_crop_images": False},
timeout=120
)
md_content = resp.json().get("md_results", "")
# 保存为 .md 文件
with open(md_path, "w", encoding="utf-8") as f:
f.write(md_content)
注意:
- 如果该页.md文件已存在,跳过API调用(断点续传)
- 每页处理完立即保存.md,不要等全部完成
- 每页之间sleep 1秒,避免API限流
- 如果API返回error或超时,记录错误页码,继续处理下一页
第7步:验证
处理完成后,统计output_dir中page_*.md的数量,对比PDF总页数。 如果相等:输出"✅ {书名} 处理完成,共{N}页" 如果不等:输出"⚠️ {书名} 处理中断,已完成{M}页,还剩{L}页"
重要约束
- 必须处理完一本书的所有页面才算该书处理完成
- 不需要翻译,只需要OCR识别后的.md原文
- 不需要生成Word文件,只生成.md文件
- 如果API调用失败(超时/报错),记录该页码,继续处理下一页
- 所有处理过的文件都保存在output_dir中
- 不要删除任何已存在的文件(断点续传)
- 每次cron运行只处理一本书,不要同时处理多本
04 同仓库更多 Skills
饼干记账
记账技能。写入类:记支出、记收入、拍账单、批量录入、改记录、撤销、恢复、记报销、记退款、记借出、记借入、记收回、记偿还、记分期。查询类:查今天、查某天、查月、查区间、查分类、搜备注、查标签、查账户、查账本、查欠款、查待报销。分析类:看月度、看总览、看分类、看对比、看趋势、看大额、做统计、看洞察、看借贷。目标/账户/联动:设定预算、看预算、设定目标、看目标、新增账户、改账户、账户转账、看账户汇总、买东西联动、吃饭联动。**所有查询/分析类唤醒词默认 invoke HTML 工作流**(scripts/bill_inject.py + templates),写入类保持文字回执。能力速查:说「饼干记账 HELP」/「查帮助」/「能做什么」。完整 70 个唤醒词见 references/路由表.md
贴心助理
真实助手 - 主动分析用户状态,关心用户,提供帮助与提醒。不偷懒地联动所有技能,真正像个朋友一样陪伴。
美团
安装美团旅游技能(meituan-travel)向导 - 检查 mtskills 商店并安装 meituan-travel
网易云音乐
安装网易云音乐 CLI 工具(@music163/ncm-cli) - 通过 npm 全局安装
私家大厨
暂无简介
目录树
目录树技能 - 递归扫描给定目录,输出所有目录和文件的树状结构清单