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

How to convert PDF to CSV with tabula-py?

在 Python 3 中,我有一个 PDF 文件 "Ativos_Fevereiro_2018_servidores_rj.pdf",有 6,041 页。我在 Ubuntu

的机器上

在每一页的顶部都有文本,两行。在 table 下方,有 header 和两列。每行table36行,少了最后一页

在每一页的末尾,在table之后,还有一行文字

我想从此 PDF 创建一个 CSV,只考虑页面中的 tables。并忽略 tables

前后的文本

最初我测试了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 的方法?

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

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

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

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

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

编辑:

好的,错误可能是 java-memory 问题。为了让它更快,我添加了 pages 选项。还有一个编码问题,所以 encoding='utf-8' 添加到 csv 导出。 如果将 运行 保留在 java-error 中,请尝试将其分块解析,例如pages='1-300'。我刚刚完成了所有 6041(在 64GB RAM 机器上),它运行良好。

使用 tabula-py 将 PDF 转换为 CSV

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")