使用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文本静静地躺在哪里了。
今天是除夕了,你竟然还在看技术文章,竟然还看到了最后。感谢你的陪伴,祝麦友们新年快乐!
评论0