首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用tabula-py将PDF转换为CSV?

如何使用tabula-py将PDF转换为CSV?
EN

Stack Overflow用户
提问于 2018-03-30 00:01:59
回答 2查看 39.2K关注 0票数 10

在Python3中,我有一个有6,041页的PDF文件"Ativos_Fevereiro_2018_servidores_rj.pdf“。我和Ubuntu在一台机器上

每一页的顶部都有两行文本。下面是一张表,有标题和两列。每张表36行,最后一页少一些

在每一页的末尾,在表格之后还有一行文本

我想从这个PDF创建一个CSV,只考虑页面中的表格。并忽略表格前后的文本

最初,我测试了tabula-py。但它会生成一个空文件:

代码语言:javascript
复制
from tabula import convert_into

convert_into("Ativos_Fevereiro_2018_servidores_rj.pdf", "test_s.csv", output_format="csv")

请问,有没有人知道针对这种类型的需求使用tabula-py的另一种方法?

或另一种方法来转换PDF到CSV在此文件类型?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-30 02:07:43

好了,我发现了问题:你必须设置spreadsheet=True并保持utf-8编码:

代码语言:javascript
复制
df = tabula.read_pdf("Ativos_Fevereiro_2018_servidores_rj.pdf", encoding='utf-8', spreadsheet=True, pages='1-6041')

在下面的图片中,我只测试了第一页(因为你的文件很大):

之后,您可以将DataFrame另存为csv:

代码语言:javascript
复制
df.to_csv('otuput.csv', encoding='utf-8')

编辑:

好吧,这个错误可能是java内存问题。为了让它更快,我添加了pages选项。还有一个编码问题,所以encoding='utf-8'添加到csv导出。如果你一直遇到java错误,试着分块解析它,例如pages='1-300'。我刚刚完成了所有的6041 (在64 it的RAM机器上),它工作得很好。

票数 12
EN

Stack Overflow用户

发布于 2021-11-25 06:40:25

使用tabula-py将转换为CSV

代码语言:javascript
复制
from tabula import convert_into
table_file = r"ActualPathtoPDF"
output_csv = r"DestinationDirectory/file.csv"
df = convert_into(table_file, output_csv, output_format='csv', lattice=True, stream=False, pages="all")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49560486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档