相关工具:
1.PyMuPdf 组件, Python组件包,含mupdf的核心功能并与mutool功能兼容
PyMuPDFpypi.org/project/PyMuPDF/#files
备选: FreePic2Pdf.exe 第三方PDF书签管理工具,可直接提取PDF文档目录2.Python SDK包及PyCharm开发工具(PyCharm只需下载社区版本即可)
Welcome to Python.orgwww.python.org/
PyCharm: the Python IDE for Professional Developers by JetBrainswww.jetbrains.com/pycharm/
相关操作:
提取pdf的索引目录: 有多种方法,常见的如: 1.直接拷贝目录/OCR识别目录 2.PDF阅读器自带获取目录 3.通过zotero和zotfile的提取功能 4.devonthink来创建TOC 5.通过FreePic2Pdf第三方提取软件 6.通过mutool命令行工具包 都可以实现, 这里放几张展示图:
获取PDF目录(不需要Python):
方法一:mutool工具执行命令行获取TOC
方法二:mutool run javascript脚本来获取
方法三:FreePic2Pdf等第三方提取软件
如上所示: 我们提供的多种方法都可以不依赖Python实现提取PDF目录,但为了后续的文章技术进阶,以及操作流程自动化,我们在本文开始引入python来实现我们的需求.因此这里我们采用的是PyMuPdf来实现.具体的下载链接已放置于文章开头.
获取PDF目录(使用了Python)
步骤一:配置基础的开发环境Python的安装比较简单,官网下载安装包双击安装即可,因此本文不再详细讲解,(只是要注意本文我们要下载大于2.7的版本来使用,如果你的python环境有问题,请和我的3.9版本保持一致)
到官网下载后双击安装
上面安装好python环境后,接着我们来安装PyMuPDF Python组件包,相关帮助文档可参考如下:
https://pypi.org/project/PyMuPDF/#filespypi.org/project/PyMuPDF/#files
按python版本二种方式选一种来安装
PyMuPDF Documentation - PyMuPDF 1.18.6 documentationpymupdf.readthedocs.io/en/latest/
这里我们选择的是下载whl包安装
按自己系统下载,我下载的是macos-cp39
按上面方式2下载whl文件并双击安装Mupdf Python组件后,接着我们开始配置PyCharm开发工具, 用最前面的链接下载PyCharm软件并设置好PyCharm的Python SDK版本,具体如下所示:
确保用的是Python3的SDK
步骤二: 编写Python代码,执行生成HTML:##提取章节信息importfitz#=PyMuPDFpdfName="java2.pdf"doc=fitz.open(pdfName)#openPDFtoc=doc.getToC()#getcurrenttableofcontentswithopen("chapter-t.html",mode="w",encoding="utf-8")asf: fortintoc: t[2]=pdfName "-" str(t[2])#showwhatwehavesofar chapterInfo="{}{}-{}{}".format("<p>",t[1],t[2],"</p> ") print(chapterInfo) f.write(chapterInfo)
用IE浏览器打开上面生成的HTML,用Ctrl Shift A导入至SuperMemo进行Split命令分割,如图:
IE浏览器打开展示效果
SM中使用自定义符号来分割
PDF索引目录导入SM操作
最终的索引目录导入效果
步骤三: 开始PDF文档的增量学习
我们对上面的分支添加学习计划并Ctrl L开始学习,同样左侧排列SM软件,右侧排列PDF阅读器: 提示: 取消SuperMemo软件的窗口背景选项,才能进行如下二个软件的左右布局
当复习到对应的元素时打开PDF(PDF学习)
基于Alfred/AHK/Quicker来编写脚本,实现搜索并打开PDF,接着按页或章节内容跳转到指定章节
按PDF索引数据打开PDF
基于PDF索引的增量阅读
添加/检索/及批量管理注释书签(PDF提取)
使用福昕阅读器的注释功能
PDF注释添加/删除/管理(PDF提取)
增量提取的子注释同步回SM软件(提取同步)
因为我们的PDF内容提取是在PDF阅读器中实现的,为了能使提取的文章内容也能在SM软件中增量,我们考虑同步回SM软件中,这个操作可按自己的需求或频次来决定,不一定非得同步回SM软件.
同步回SM时唯一要注意的是最好不要覆盖掉原来同步过的子元素内容(确保保留学习进度) 具体如何避免这个问题我在文章末尾会有较详细的概述及相关方法.
用福昕来阅读只能导出文本注释
提示 : 上面导出的福昕阅读器内容注释我们处理如下,接着再导入SuperMemo进行Split分割:
自己手动处理下段落分割符号
上面的注释文本复制进SuperMemo软件,再使用Split命令分割就是按段落内容正确的分割了.
导入SuperMemo来分割处理
最终处理结果(PDF提取同步)
如上所述: 整个PDF增量阅读提取流程结束.以后我们只需重复执行这些步骤来阅读即可.你可以参考我之前写的一篇内容来了解基于PDF目录索引来进行增量学习PDF文件的流程(链接如下):
一只小胖子:流程-SuperMemo增量学习及间隔复习12 赞同 · 10 评论文章
主要讲解的是Mac系统下使用DevonThink及PDFExpert阅读器来实现SuperMemo增量学习的整体思路.如果你用的是Windows系统,那么你可以使用Everything/FileLocator Pro 工具代替DevonThink的功能,使用福昕阅读器或者BookxNote阅读器来代替PDFExpert的功能.
考虑到要支持注释中含有图片的问题,我推荐在Mac操作系统下使用Highlights PDF阅读器,在Windows下使用BookxNote阅读器.如果还不能满足你特定的需求,则建议用本文的PyMuPdf组件编写一些简单的Python代码,来实现更复杂及更自由化的需求.
Mac系统下的Highlights演示:
Mac下的Highlights阅读器
灵活丰富的注释导出功能
由于html导出的是base64的图片存储,因此建议导出TextBundle(本地图片|markdown)格式:
导出成markdown再转成html
说明:
如上所示,如果是MAC系统使用Highlight作为PDF阅读器,导出注释时. 第一种可以直接拷贝右侧的注释内容至SuperMemo中,第二种则是导出右侧注释为TextBundle格式(图片本地存储)并把md文件转换成Html(如果直接Highlights导出为Html注释笔记,里面的图片为base64编码,不能在SuperMemo直接导入)再导入SuperMemo.
TextBundle对应为本地图片和md
##MarkDown->Htmlpandoctext.md-otext1.html
Windows下BookxNote的演示:
下图为BookxNote阅读器的功能演示,可在Windows下作为代替Mac端Highlights软件部分功能:
Windows下BookxNote演示
步骤四: 提取内容同步回SM软件时保留学习进度通过Python脚本来实现进度同步功能,流程上依赖于时间戳标记(不同于官方默认的按ID同步),即阅读时在PDF文件中通过文本注释的形式添加时间戳标识作为书签,阅读中断后,我们会按上面的方式导出注释,作为书签使用的这个时间戳会在导出的注释(最终的html)中存在,这个html导入SuperMemo分割时,用此时间戳作为分割符号,即生成了每个元素都有了一个时间戳作为唯一ID使用.因此在重复导入的多个不同的集合中(跨集合)我们也可以迁移旧的学习进度至新集合.
PDF阅读加时间戳作书签及分割符脚本
使用脚本来实现学习进度同步功能
该图所示的网盘下载地址在评论区
完结:
以上进度同步功能的具体操作,后期会考虑直接录制视频来演示.因此本文不再继续对细节进行说明. 说明: 上图的脚本下载链接详见评论区...
我是一只热爱学习的小胖子,如果你也热爱学习,并且对SuperMemo感兴趣,欢迎转发和评论!
,