我看书的时候遇到很好的句子,会用手机把这一页先拍下来,再把照片保存到 iCloud(我在 iCloud 给每本书创建一个目录),供以后参考。这样就遇到一个问题,如果有很多照片,一张一张改名、保存相当麻烦,整理一本书往往要花费几个小时。因此,我希望有一个一劳永逸的方法,它能够帮我自动批量搞定这件事。

经过试验,我发现 Shortcuts 能够完美解决这个问题,下面我以「旷世大名典」《倚天屠龙记》为例,介绍这个方法。

首先,照片是这样的,这是 Kindle 的界面。

Kindle

金庸说,中国的政治史告诉我们,政治家要想成功,一要能「忍」(克己,容人,残忍),二要「决断明快」,三要有「极强的权力欲」。

如果做不到呢?书里已经给了答案,如果做不到,你就要有自知之明,像张无忌那样「相忘于江湖」。

金庸还说,周芷若和赵敏因为有政治才能,所以不可爱。这一点我就不太理解了,按照上面的定义,政治才能一是能忍,可是周赵「二女争夫,血溅华堂,新娘子头遮红巾,而以神奇之极的武功毁伤情敌」(见34章「新妇素手裂红裳」),怎么看都不像是能忍的样子。再说,周芷若虽然手段毒辣,却实非本心,而是受到灭绝师太逼迫,不得已为之,说她「决断明快」似乎不合适。而赵敏为了张无忌,甘愿放弃郡主的荣华富贵,没了「指点群豪」的快感不说,最后更是同张无忌一起淡出江湖,可见她的权力欲并不总是很强。Anyway,价值判断不是这里重点,还是说怎样处理这张照片。

我看到这页之后,就把它拍下来了,因为 iOS 相册不能给照片改名字,所以接下来我要先把它存到 iCloud 云端硬盘,再改名。

在 iCloud,我有一个目录:iCloud Drive/Books/金庸/倚天屠龙记,存放这本书所有的照片,见下图。

Folder

照片命名规则很简单:页码。从最上面照片可以看到,页码位于左下角,这个例子是「位置#20402」,Kindle 的页数和纸书不符,但是数字具体是多少没关系。我只需要把「位置#」这几个字符去掉,再把照片改名为「20402」就可以了。

处理完就是这样:

20402

这本书我一共拍了五十多张照片,我要对每一张照片,重复上面的操作。这是一种耗时的重复劳动,我的目的是把它自动化,这就需要 Shortcuts 这件利器。

Shortcuts 设计思路

Shortcuts 前身叫做 Workflow,后来被苹果纳入麾下,成了 iOS 内置应用,而且免费了。

shortcuts

Workflow 时代,它的功能就已经很强大了。形象地说,它可以在 iOS 的「沙盒」上戳一个小孔,通过这个小孔交换数据,再用「URL Scheme」把操作串联起来。举例来说,想象一个非常简单的场景,每次遇到喜欢的歌,我会先点赞,再把它加到 「Recently Loved」这个 Playlist 中。如果手动完成,我需要 1)选这首歌,2)点赞,3)再选这首歌,4)选择Playlist,5)加入「Recently Loved」。而如果把这个流程合并到一个 Shortcuts 中,听歌的时候点一下,就自动完成了。

经过这些年的进化,Shortcuts 功能越来越强大(但一旦成为苹果内置应用,进化的速度也所有是龟速),有意思的是,现在还有第三方「工具箱」。我这篇文章就要用到一个叫做 Toolbox Pro 的 app,它提供了很多内置应用没有的补充功能。

现在回到开始的问题,如何用 Shortcuts 解决呢?流程:

  1. 从相册中选择照片,为了方便,我把这些照片都放到一个新的相册中,相册名字叫做 Notes。
  2. 利用 Toolbox Pro 的 OCR 功能,提取图片中的文字。
  3. 处理这段文字,把页码信息摘出来,作为照片的名字。
  4. 照片改名。
  5. 由于 iOS 的沙盒机制,Shortcuts 只能把文件保存在 iCloud Drive/Shortcuts 这个目录下面,因此我新建了一个 Images,步骤 4 输出文件暂时存在 iCloud Drive/Shortcuts/Images 中。
  6. 对于相册 Notes 中的所有照片,循环步骤 2-5。
  7. 删除 Notes 中所有照片。
  8. 移动 iCloud Drive/Shortcuts/Images 的照片到 iCloud Drive/Books/金庸/倚天屠龙记。

下面解释具体过程。

Shortcut 实现

为了流程清晰,最好对每个功能单独设置一个 Shortcut,测试没问题再连接起来。首先测试 OCR 功能。

Shortcut 1:OCR

这个 Shortcut 结构很简单,只有 4 个动作,如下:

OCR

第 1 步会弹出窗口让你选择照片。第 2 步识别选中照片的文字,可以选择中文,实际上没啥用,中文识别极烂。3 和 4 两步是等待 2 运行完,把结果复制到剪贴板。

如果顺利,结果是这样的(这里的输入是最前面那张照片):

OCR Text

可见,中文是完全识别不出来的,幸运的是,我只要数字,也就是倒数第二行,「#20402」。

Shortcut 1:提取页码

第二个 Shortcut 的功能是从前面的结果里把「#20402」挑出来,再把「#」去掉:

Match

第 1 步是获得剪贴板内容,也就是前一个 Shortcut 的输出结果。

第 2 步,匹配文本,「#[0-9]{1,5}」的意思是,寻找所有以「#」开头,后面接数字的字符串。数字长度最短 1 位,最多 5 位。《倚天屠龙记》算是很长的书了,页码会出现 5 位数字,一般最多 4 位。

第 3 步,把 2 匹配出来的结果里的 # 去掉。

第 4 步,为了防止 3 的结果不止一个,先数结果有几个。

第 5 步,如果结果只有 1 个,那就是页码,如果多于 1,那么就选最后一个,因为页码信息总是出现在最后。

这个 Shortcut 结果是 20402。

20402-2

Shortcut 3: 完整版

现在把前两个 Shortcut 合并,再加上改名、保存以及循环就可以了。完整版本如下:

Whole

第 1 步,获得相册 Notes 中的照片。

第 2 步,对所有照片循环,循环内部基本上就是前面两个 Shortcut 之和。

第 3 步,给每张照片重命名。

第 4 步,把文件保存到iCloud Drive/Shortcuts/Images。

如果运行顺利,结果是这样:

result

这样最少一个小时才能完成的工作只要点一下这个 Shortcut 就完成了,加上执行时间,也不过只有几分钟。