图片

使用pdfminer.six一键PDF转文本

我在翻译一本书,出版社只给了我PDF版本,没有txt文本。但我需要文本版本,因为我需要修改和处理文本。

如果是个不会程序的普通人,可能会一个个字的把PDF版本敲到文本中。

这本书并不厚,只有700多页而已。

幸好我是程序员,虽然是一个普通的程序员,也知道用程序把PDF自动转成文本。

今天的三分钟就说说这个话题。

选正确的库

PDF转文本的库有很多,比如PyPDF2等,但到目前为止,我觉得最好的是pdfminer.six。

这个库的名字很有意思,后面多了个six。这个six很重要。这个库本来叫pdfminer,但是它已经没人维护了。后来的人基于它新创建了pdfminer.six。

所以注意:不是pdfminer,而不是pdfminer.six。

安装

首先安装pdfminer.six库。

python -m pip install pdfminer.six

这是我的安装结果:

Collecting pdfminer.six
  Using cached pdfminer.six-20211012-py3-none-any.whl (5.6 MB)
Requirement already satisfied: chardet in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from pdfminer.six) (4.0.0)
Requirement already satisfied: cryptography in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from pdfminer.six) (36.0.1)
Requirement already satisfied: cffi>=1.12 in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from cryptography->pdfminer.six) (1.15.0)
Requirement already satisfied: pycparser in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from cffi>=1.12->cryptography->pdfminer.six) (2.21)
Installing collected packages: pdfminer.six
Successfully installed pdfminer.six-20211012
WARNING: You are using pip version 21.2.3; however, version 21.3.1 is available.
You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.10/bin/python3 -m pip install --upgrade pip' command.

最下面的warning不用管它。

我安装的时候还出现了一个小插曲,我把pdfminer.six拼写成了pdfminder.six,于是出现了这样的结果:

ERROR: Could not find a version that satisfies the requirement pdfminder.six (from versions: none)
ERROR: No matching distribution found for pdfminder.six
WARNING: You are using pip version 21.2.3; however, version 21.3.1 is available.
You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.10/bin/python3 -m pip install --upgrade pip' command.

如果你也出现了类似问题,注意拼写。

一键转换

我们可以使用pdfminer.six做各种灵活的PDF处理。在我的书《Python办公效率手册》和我的训练营《Python办公自动化训练营》中都有详细的讲解。

但今天我们要做的事情简单粗暴。就是把一个PDF文档转成txt格式。那就来吧。

pdfminer.six自带了一个python程序,叫做pdf2txt.py,这个文件放在了Python安装目录的bin目录下。

这是我的Python安装目录的bin路径:

/Library/Frameworks/Python.framework/Versions/3.10/bin

在这个目录下可以看到这个文件pdf2txt.py:

图片

把这个文件复制到你运行Python的目录,或者执行的时候写上全路径。打开命令行窗口,执行以下命令:

python  /Library/Frameworks/Python.framework/Versions/3.10/bin/pdf2txt.py v2.pdf

这个命令很简单,就是执行python文件pdf2txt.py并传入要转换pdf文件的名字v2.pdf。注意文件的路径要正确。

如果你已经把pdf2txt.py复制到了本地,你可以写的更简单:

python pdf2txt.py v2.pdf

如果没有打错,这个命令就可以把整个文档转成txt打在命令行窗口中。中文,代码等都可以正确转换出来。

但我要转换的书有700页,我需要转到一个文件中,那也简单,再加个参数:

python pdf2txt.py v2.pdf -o v2.txt

后面的-o v2.txt制定了把转好的输出到v2.txt文件中。再次执行,就可以看到整个文档的txt文本静静地躺在哪里了。

今天是除夕了,你竟然还在看技术文章,竟然还看到了最后。感谢你的陪伴,祝麦友们新年快乐!

声明:本网站资源来源于网络收集,如有侵权,请联系站长进行删除处理。 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解。本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。反馈邮箱:1159995880@qq.com