文章预览
@Author:Runsen
最近认识了一位漂亮同级的学姐,当学姐确定研究生录取的那一刻,以为即将走上人生巅峰
结果毕业论文还没写,从此开启了写论文之路。
于是高高兴兴地去知网下载论文和图表,结果知网不友好,提供了全是CAJ和PDF格式。
学姐只好一张一张的从PDF复制下面
学姐说:这不就是CV大法吗?
当学姐复制到Excel,瞬变爆炸!
结果一行就复制粘贴完成了,一个论文足足有13个表,头疼了一晚。
于是,第二天通过闲鱼认识了我i,艾特我能不能帮她将几篇论文的表提取到excel中,正所谓面子最重要,其实我啥也不会,在茫茫的互联网中寻找方法,发现还是写代码简单粗暴。于是,就发现了Camelot
Camelot
Camelot是一个Python库和一个命令行工具,它可以轻松提取出在PDF文件中的数据表,查看其
官方文档
和
Github存储库
。
安装camelot
pip install camelot-py
报错,那肯定需要安装ghostscript第三方模块:
pip install ghostscript
这里,还需要在Windows 10上安装ghostscript exe后运行:https://www.ghostscript.com/download/gsdnld.html
C: \Users\Administrator> python
Python 3.8 .5 ( default, Sep 3 2020 , 21 : 29 : 08 ) [ MSC v. 1916 64 bit ( AMD64) ] : : Anaconda, Inc. on win32
Warning:
This Python interpreter is in a conda environment, but the environment has
not been activated. Libraries may fail to load. To activate this environment
please see https: // conda. io/ activation
Type "help" , "copyright" , "credits" or "license" for more information.
>> > from ctypes. util import find_library
>> > find_library( "gs" )
'libgs.so.9'
>> >
下面 打开一个新的Python文件,在当前目录中有一个PDF文件,名为“ 123456.pdf”,这是一个普通的PDF页面,其中包含很多张表。让我们在Python中提取它:
import camelot
file = "123456.pdf"
tables = camelot.read_pdf(file)
read_pdf()
函数提取PDF文件中的所有表,将该表打印为Pandas DataFrame
print ( tables[ 0 ] . df)
tables[ 0 ] . to_csv( "123456.csv" )
tables[ 0 ] . to_excel( "123456.xlsx" )
tables. export( "123456.csv" , f= "csv" , compress= True )
Tabula
学姐说安装有点复杂,有没有简单的方法,当然有啊,除了Camelot,Tabula也可以轻松提取出在PDF文件
安装非常简单
pip install tabula- py
具体实现的代码如下所示
import tabula
import os
tables = tabula. read_pdf( "123456.pdf" , pages= "all" )
folder_name = "tables"
if not os. path. isdir( folder_name) :
os. mkdir( folder_name)
for i, table in enumerate ( tables, start= 1 ) :
table. to_excel( os. path. join( folder_name, f"table_{i}.xlsx" ) , index= False )
tabula. convert_into( "123456.pdf" , "output.csv" , output_format= "csv" , pages= "all" )
tabula. convert_into_by_batch( "pdfs" , output_format= "csv" , pages= "all" )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
学姐说好妙啊,头疼了一晚,遇见我真的幸运啊
那是当然,学姐说,那我要好好的关注你了。
感谢学姐的关注,你们呢?
………………………………