superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(1)


相关工具:

1.PyMuPdf 组件, Python组件包,含mupdf的核心功能并与mutool功能兼容

PyMuPDFpypi.org/project/PyMuPDF/#files

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(2)

备选: FreePic2Pdf.exe 第三方PDF书签管理工具,可直接提取PDF文档目录

2.Python SDK包及PyCharm开发工具(PyCharm只需下载社区版本即可)

Welcome to Python.orgwww.python.org/

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(3)

PyCharm: the Python IDE for Professional Developers by JetBrainswww.jetbrains.com/pycharm/

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(4)

相关操作:

提取pdf的索引目录: 有多种方法,常见的如: 1.直接拷贝目录/OCR识别目录 2.PDF阅读器自带获取目录 3.通过zotero和zotfile的提取功能 4.devonthink来创建TOC 5.通过FreePic2Pdf第三方提取软件 6.通过mutool命令行工具包 都可以实现, 这里放几张展示图:

  • 获取PDF目录(不需要Python):

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(5)

方法一:mutool工具执行命令行获取TOC

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(6)

方法二:mutool run javascript脚本来获取

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(7)

方法三:FreePic2Pdf等第三方提取软件

如上所示: 我们提供的多种方法都可以不依赖Python实现提取PDF目录,但为了后续的文章技术进阶,以及操作流程自动化,我们在本文开始引入python来实现我们的需求.因此这里我们采用的是PyMuPdf来实现.具体的下载链接已放置于文章开头.

  • 获取PDF目录(使用了Python)

步骤一:配置基础的开发环境

Python的安装比较简单,官网下载安装包双击安装即可,因此本文不再详细讲解,(只是要注意本文我们要下载大于2.7的版本来使用,如果你的python环境有问题,请和我的3.9版本保持一致)

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(8)

到官网下载后双击安装

上面安装好python环境后,接着我们来安装PyMuPDF Python组件包,相关帮助文档可参考如下:

https://pypi.org/project/PyMuPDF/#filespypi.org/project/PyMuPDF/#files

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(9)

按python版本二种方式选一种来安装

PyMuPDF Documentation - PyMuPDF 1.18.6 documentationpymupdf.readthedocs.io/en/latest/

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(10)

这里我们选择的是下载whl包安装

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(11)

按自己系统下载,我下载的是macos-cp39

按上面方式2下载whl文件并双击安装Mupdf Python组件后,接着我们开始配置PyCharm开发工具, 用最前面的链接下载PyCharm软件并设置好PyCharm的Python SDK版本,具体如下所示:

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(12)

确保用的是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命令分割,如图:

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(13)

IE浏览器打开展示效果

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(14)

SM中使用自定义符号来分割

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(15)

PDF索引目录导入SM操作

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(16)

最终的索引目录导入效果

步骤三: 开始PDF文档的增量学习

我们对上面的分支添加学习计划并Ctrl L开始学习,同样左侧排列SM软件,右侧排列PDF阅读器: 提示: 取消SuperMemo软件的窗口背景选项,才能进行如下二个软件的左右布局
  • 当复习到对应的元素时打开PDF(PDF学习)

基于Alfred/AHK/Quicker来编写脚本,实现搜索并打开PDF,接着按页或章节内容跳转到指定章节

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(17)

按PDF索引数据打开PDF

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(18)

基于PDF索引的增量阅读

  • 添加/检索/及批量管理注释书签(PDF提取)

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(19)

使用福昕阅读器的注释功能

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(20)

PDF注释添加/删除/管理(PDF提取)

  • 增量提取的子注释同步回SM软件(提取同步)

因为我们的PDF内容提取是在PDF阅读器中实现的,为了能使提取的文章内容也能在SM软件中增量,我们考虑同步回SM软件中,这个操作可按自己的需求或频次来决定,不一定非得同步回SM软件.

同步回SM时唯一要注意的是最好不要覆盖掉原来同步过的子元素内容(确保保留学习进度) 具体如何避免这个问题我在文章末尾会有较详细的概述及相关方法.

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(21)

用福昕来阅读只能导出文本注释

提示 : 上面导出的福昕阅读器内容注释我们处理如下,接着再导入SuperMemo进行Split分割:

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(22)

自己手动处理下段落分割符号

上面的注释文本复制进SuperMemo软件,再使用Split命令分割就是按段落内容正确的分割了.

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(23)

导入SuperMemo来分割处理

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(24)

最终处理结果(PDF提取同步)

如上所述: 整个PDF增量阅读提取流程结束.以后我们只需重复执行这些步骤来阅读即可.你可以参考我之前写的一篇内容来了解基于PDF目录索引来进行增量学习PDF文件的流程(链接如下):

一只小胖子:流程-SuperMemo增量学习及间隔复习12 赞同 · 10 评论文章

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(25)

主要讲解的是Mac系统下使用DevonThink及PDFExpert阅读器来实现SuperMemo增量学习的整体思路.如果你用的是Windows系统,那么你可以使用Everything/FileLocator Pro 工具代替DevonThink的功能,使用福昕阅读器或者BookxNote阅读器来代替PDFExpert的功能.

考虑到要支持注释中含有图片的问题,我推荐在Mac操作系统下使用Highlights PDF阅读器,在Windows下使用BookxNote阅读器.如果还不能满足你特定的需求,则建议用本文的PyMuPdf组件编写一些简单的Python代码,来实现更复杂及更自由化的需求.


  • Mac系统下的Highlights演示:

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(26)

Mac下的Highlights阅读器

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(27)

灵活丰富的注释导出功能

由于html导出的是base64的图片存储,因此建议导出TextBundle(本地图片|markdown)格式:

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(28)

导出成markdown再转成html

说明:

如上所示,如果是MAC系统使用Highlight作为PDF阅读器,导出注释时. 第一种可以直接拷贝右侧的注释内容至SuperMemo中,第二种则是导出右侧注释为TextBundle格式(图片本地存储)并把md文件转换成Html(如果直接Highlights导出为Html注释笔记,里面的图片为base64编码,不能在SuperMemo直接导入)再导入SuperMemo.

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(29)

TextBundle对应为本地图片和md

##MarkDown->Htmlpandoctext.md-otext1.html


  • Windows下BookxNote的演示:

下图为BookxNote阅读器的功能演示,可在Windows下作为代替Mac端Highlights软件部分功能:

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(30)

Windows下BookxNote演示

步骤四: 提取内容同步回SM软件时保留学习进度

通过Python脚本来实现进度同步功能,流程上依赖于时间戳标记(不同于官方默认的按ID同步),即阅读时在PDF文件中通过文本注释的形式添加时间戳标识作为书签,阅读中断后,我们会按上面的方式导出注释,作为书签使用的这个时间戳会在导出的注释(最终的html)中存在,这个html导入SuperMemo分割时,用此时间戳作为分割符号,即生成了每个元素都有了一个时间戳作为唯一ID使用.因此在重复导入的多个不同的集合中(跨集合)我们也可以迁移旧的学习进度至新集合.

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(31)

PDF阅读加时间戳作书签及分割符脚本

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(32)

使用脚本来实现学习进度同步功能

superscan英文版使用教程(实践-SuperMemo-PDF文档索引增量)(33)

该图所示的网盘下载地址在评论区


完结:

以上进度同步功能的具体操作,后期会考虑直接录制视频来演示.因此本文不再继续对细节进行说明. 说明: 上图的脚本下载链接详见评论区...


我是一只热爱学习的小胖子,如果你也热爱学习,并且对SuperMemo感兴趣,欢迎转发和评论!


,