如何使用Tabula将表格从PDF转换为Excel或CSV

通过并将pdf转换为csv和excel

看看我市气象台提供的历史数据,我发现 他们仅以图形方式提供它们并以PDF格式下载。 我不明白为什么他们不让您在csv中下载它们,这对每个人都有用。

所以我一直在寻找一个 解决方案,将这些表从pdf传递到csv,或者如果有人想格式化Excel或Libre Office。 我喜欢csv,因为有了csv,您可以做所有可以处理python及其库的事情,或者可以轻松地将其导入任何电子表格中。

因为想法是要获得一个自动化的过程,所以我想要的是一个可以在Python中使用的脚本,这就是Tabula的用武之地。

使用Tabula将pdf转换为csv

步骤和操作非常简单。 首先是 在我们的开发环境中安装Tabula库。 Tabula使我们能够将PDF表中的数据提取到Pandas数据帧中,Pandas数据帧是为使用csv和数组而优化的Python库。

它还允许 提取并在PDF,JSON,CSV和TSV之间转换。 一颗宝石。 您可以在其中找到更多信息 github仓库

Suscríbetea nuestra lista de Correo

我利用了前几天的所有工作,并将其安装在Anaconda中。 在链接中,您可以看到 安装Anaconda.

我们安装Tabula

#primero activamos nuestro entorno de desarrollo en nuestro caso sería conda activate comparador
pip install tabula-py

执行时,它给了我一个错误

他们的文档中指出的解决方案是卸载旧版本的Tabula,然后安装新版本的Tabula。

pip uninstall tabula
pip install tabula-py

我们创建可执行文件.py

从pdf读取表到csv

我创建了名为pdftocsv.py的可执行文件.py,并将其放入我的Downloads / eltiempo文件夹中,它是一个包含以下代码的文件

import tabula
# Extaer los datos del pdf al DataFrame
df = tabula.read_pdf("inforatge.pdf")
# lo convierte en un csv llamdo out.csv codificado con utf-8
df.to_csv('out.csv', sep='\t', encoding='utf-8')

要读取的pdf称为inforatge.pdf,我告诉它输出名为out.csv,它将保留在我们正在使用的文件夹中。

我们转到目录,其中同时包含要转换的可执行文件和pdf。 这很重要,因为它会告诉我们找不到文件。

cd Descargas/eltiempo

在此目录中,我们有PDF,已创建的.py文件,它将在其中返回所需的csv。

我们执行代码

python pdftocsv.py

请注意,我已经使用了python,也就是说,我告诉它使用python 2而不是运行失败的python3来运行它。 就是这样,如果它不返回任何错误,我们就已经知道了。

在我们的Anaconda开发环境中运行Tabula

我们在文件中又添加了3行用于运行时控制。 最后,我们将pdftocsv.py文件保留为

import tabula
import time

start_time = time.time()

df = tabula.read_pdf("inforatge.pdf")
df.to_csv('out.csv', sep='\t', encoding='utf-8')

print("--- %s seconds ---" % (time.time() - start_time))

Tabula提供的更多选项

我们可以做的事情的更多示例。 有很多选择,最好浏览一下我留下的官方Github存储库

# Leer PDF remotos y convertirlos en DataFrame
df2 = tabula.read_pdf("https://github.com/tabulapdf/tabula-java/raw/master/src/test/resources/technology/tabula/arabic.pdf")

# Convertir un PDF en CSV
tabula.convert_into("test.pdf", "output.csv", output_format="csv")

毫无疑问,转换目录中的所有PDF,JSON等文件是最有用的事情之一。

tabula.convert_into_by_batch("input_directory", output_format='csv')

有了这个,我们可以使原本冗长而乏味的任务自动化。 最后,这是使用此库的原因之一。

在线将pdf转换为excel

如果我们只是想简单地转换文件,将表中的数据从PDF提取到Excel,Librecalc或类似文件中,则无需将其复杂化。 有一些工具可以做到这一点,有些可以安装,有些可以在线完成工作。

我已经尝试了这两个在线工具,它们工作得很好。

请记住,这不是自动化的工作,这就是为什么对这些工具的研究尚未详尽的原因。 我只对可能感兴趣的人发表评论。

经典方法

而且我们总是有经典的方法,最草率和最昂贵,但是最后,如果几乎没有工作,则可以选择。

从pdf复制表格单元格并将其粘贴到我们的电子表格中。

发表评论