如何使用 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")
在 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")