时间:24年12月4日
我的经历:
有些我想看的电子书(比如经济学原理)只有PDF版本,内容不清楚字还小,我习惯了看字体超大超清晰的纯文本电子书,所以就想着怎么批量把PDF里的文字提取出来。
提取PDF的方案:
- 使用OCR工具,这个OCR简单来说就是用程序从图像中提取出文本内容。
- ORC工具很多的,本文用的是一个Linux上批量OCR工具,需要你懂一点Linux的知识,如果你要提取的内容少,也可以用微信,首先给PDF拍照或截图自己发给自己,然后微信文字提取。
微信的图片浏览中有提取文字的功能
- 我用的是OCRmyPDF,git上的一个开源工具,需要安装Linux或Mac,如果你是Windows的话就需要WSL或上虚拟机了。
关于OCRmyPDF
OCRmyuPDF是git上很火的一个ORC工具,这个工具本来是给万恶的文字全是图片格式的PDF加上ORC扫描的文字层使得PDF可以对文本进行复制&检索的,不过它的ORC功能也是可以直接提取出文字的。
使用步骤
首先需要Linux或Mac环境,我用的是Windows11+WSL2(ubuntu),WSL是巨硬自己开发一套的Linux虚拟方案,真的特别好用,安装(官方文档)也简单,想在Windows上整Linux的同学强烈建议尝试。
我这里会把主要操作和遇到的一些坑给列出来,如果你想更深入,也可以看ocrmypdf的官方操作文档。
下是具体操作:
-
安装 ocrmypdf:
apt install ocrmypdf -
这工具默认只能扫描英语,所以要安装中文扩展包
- 显示所有 Tesseract 语言包的列表:
apt-cache search tesseract-ocr,根据实际情况选择安装,里面中文有简体中文和繁体中文,我这只需要一个简中。 - 安装简体中文语言包:
apt-get install tesseract-ocr-chi-sim
- 显示所有 Tesseract 语言包的列表:
-
把PDF文件准备好,假设放在
/home/mydir下,pdf文件名是in.pdf -
进入这个目录
cd /home/mydir,后面的操作都是在这个目录下 -
添加一个OCR的配置,用于去除中文文字中有空格问题,默认扫描出来的中文文字中间会有空格
- 创建文本文件
ocr.cfg内容就一行文字preserve_interword_spaces 1 - 不会创建文本文件的可以百度下,相关文档很多。
- 创建文本文件
-
开始提取文字:
ocrmypdf --tesseract-config ocr.cfg -l chi_sim+eng --pages 11,12,42-71 --sidecar output2.txt in.pdf out.pdf -
下面是所有选项的解析
--tesseract-config ocr.cfg这个对应上面的OCR配置文件,去除中文间空格的-l chi_sim+eng指定要扫描的语言,这里是中文+英文,我的PDF内容包含中英文--pages 11,12,42-71指定页数,不指定就是所有,建议先来个一页测试效果,PDF大的话全部扫描挺费时间的。--sidecar output2.txt这是OCR扫描的文本信息,这是我们要用的结果了in.pdf要扫描的PDF文件out.pdf生成的PDF,加上了ORC层的,这是这个工具的主要功能,但对我来说没用,可以删除掉。