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

时间:2018-03-29 16:01:59

标签: python csv pdf tabula

在Python 3中,我有一个PDF文件“Ativos_Fevereiro_2018_servidores_rj.pdf”,共有6,041页。我在Ubuntu的机器上

在每个页面上,页面顶部有两行文字。在表格下方,带有标题和两列。每个表格在36行中,在最后一页上少了

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

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

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

from tabula import convert_into

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

请问,有没有人知道另一种使用tabula-py来满足此类需求的方法?

或者在此文件类型中将PDF转换为CSV的另一种方法是什么?

1 个答案:

答案 0 :(得分:4)

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

df = tabula.read_pdf("Ativos_Fevereiro_2018_servidores_rj.pdf", encoding='utf-8', spreadsheet=True, pages='1-6041')

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

enter image description here

之后您可以将DataFrame保存为csv:

df.to_csv('otuput.csv', encoding='utf-8')

编辑:

好的,错误可能是java内存问题。为了加快速度,我添加了pages选项。并且还存在编码问题,因此将encoding='utf-8'添加到csv导出中。 如果你继续遇到java错误,请尝试以块的形式解析它,例如pages='1-300'。我刚刚完成所有6041(在64GB RAM机器上),它工作正常。