macOS下的OCR两三事

用了几年的Sony电纸书电池快不行了,于是对比一番之后还是入手了一台iPad Air,想着平时看书,也能在短途出门时候当数码伴侣备份照片之类,免得带手提电脑。几乎主流的读书软件我都用了一下,最后还是发现很难有一个非常全面能打的选择,目前还是在MarginNote、Goodnotes、PDF Expert、iBook里读不同场景、不同格式的文档或书。读书,就会遇到扫描版的问题。MarginNote购买OCR订阅后可以边看边识别,但似乎只能在app内用;Goodnotes是一次性付费升级后可以识别手写笔记,但对文档自身不做OCR;PDF Expert升级OCR或转换文档格式,得49刀的年费。我自己有扫描仪,也在用支持LiveText的macOS、iOS设备,所以从这两个角度动了动脑筋。

一、充分利用扫描仪自带的软件

多数国际品牌的扫描仪都是自带Abbyy FineReader,比如我是ScanSnap,就是自带Abbyy FineReader for ScanSnap v5.5,其macOS版还是Intel芯片的,功能上并没有什么问题。FineReader识别率是有口皆碑的,我还曾经买过单行版。但是最近两三年FineReader大概也意识到生意艰辛,改成订阅制了,我买过的单行版直接就不能用了,令人气愤啊;而for ScanSnap版如果打开非扫描仪生成的PDF会告知限制后退出。如果能让所有的PDF用上for ScanSnap版,那还是很香的。

我测试了一下,其实for ScanSnap版本就是靠读取PDF文件的元数据来判断并限制的,具体来说是要求PDF的Creator对应你的扫描仪型号。那就简单了,调用一个pyPDF库就能解决的问题。具体代码放Github上了。顺便说一句,pyPDF库似乎把原来的pyPDF2pyPDF4之类都大一统了,也更加简单好用了。

当然,这种方法也是一种“破解”,并不符合版权要求(我是用好像100多刀买过单行版,自我感觉还是可以安慰一下的哈)。

二、直接用macOS的OCR能力

macOS Monterey开始有了LiveText,特别是在有ML芯片的Apple Silicon机器上,性能和准确性是很不错的。我也是这几天研究这个问题才发现macOS 13开始,自带的预览已经支持OCR识别后在PDF嵌入文字,具体的方式就是文件——导出——勾选嵌入文本。根据文档大小,预览会开始识别,完成后保存。
阅读全文