@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

# 将第一个表打印为Pandas DataFrame
print(tables[0].df)
# 导出为CSV
tables[0].to_csv("123456.csv")
# 分别导出为Excel(扩展名为.xlsx)
tables[0].to_excel("123456.xlsx")
# 全部以zip格式导出
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)
# 迭代提取的表并分别导出为excel
for i, table in enumerate(tables, start=1):
    table.to_excel(os.path.join(folder_name, f"table_{i}.xlsx"), index=False)

# 将PDF文件的所有表转换为单个CSV文件
# 支持的output_formats是“ csv	”,“ json”或“ tsv
tabula.convert_into("123456.pdf", "output.csv", output_format="csv", pages="all")
# 将文件夹中的所有PDF转换为CSV格式
# pdfs文件夹应该存在于当前目录中
tabula.convert_into_by_batch("pdfs", output_format="csv", pages="all")

学姐说好妙啊,头疼了一晚 ,遇见我真的幸运啊

那是当然,学姐说,那我要好好的关注你了。

感谢学姐的关注 ,你们呢?

本文版权归去快排wWw.seogUrublog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系qq❉61910465