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

Rei*_*ves 7 python csv pdf tabula

在Python 3中,我有一个PDF文件“ Ativos_Fevereiro_2018_servidores_rj.pdf”,具有6,041页。我在使用Ubuntu的计算机上

在每个页面的顶部,两行都是文本。在表格下方,带有标题和两列。每个表36行,最后一页较少

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

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

最初,我测试了表格。但是它生成一个空文件:

from tabula import convert_into

convert_into("Ativos_Fevereiro_2018_servidores_rj.pdf", "test_s.csv", output_format="csv")
Run Code Online (Sandbox Code Playgroud)

拜托,有人知道这种方法可以使用tabula-py吗?

还是将这种文件类型的PDF转换为CSV的另一种方法?

ilj*_*lja 7

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

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

在下面的图片中,我仅在首页进行了测试(因为您的文件很大):

在此处输入图片说明

之后可以将DataFrame保存为csv:

df.to_csv('otuput.csv', encoding='utf-8')
Run Code Online (Sandbox Code Playgroud)

编辑:

好的,该错误可能是Java内存问题。为了使其更快,我添加了该pages选项。而且还存在编码问题,因此encoding='utf-8'添加到了csv导出中。如果您仍然遇到Java错误,请尝试将其解析为大块,例如pages='1-300'。我刚完成了所有6041(在一台64GB的RAM机器上),效果很好。