在Python3中,我有一个有6,041页的PDF文件"Ativos_Fevereiro_2018_servidores_rj.pdf“。我和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在此文件类型?
发布于 2018-03-30 02:07:43
好了,我发现了问题:你必须设置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内存问题。为了让它更快,我添加了pages选项。还有一个编码问题,所以encoding='utf-8'添加到csv导出。如果你一直遇到java错误,试着分块解析它,例如pages='1-300'。我刚刚完成了所有的6041 (在64 it的RAM机器上),它工作得很好。
发布于 2021-11-25 06:40:25
使用tabula-py将转换为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")https://stackoverflow.com/questions/49560486
复制相似问题