Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用表格格式将PDF转换为CSV?_Python_Csv_Pdf_Tabula - Fatal编程技术网

Python 如何使用表格格式将PDF转换为CSV?

Python 如何使用表格格式将PDF转换为CSV?,python,csv,pdf,tabula,Python,Csv,Pdf,Tabula,在Python 3中,我有一个PDF文件“Ativos_Fevereiro_2018_servidores_rj.PDF”,共6041页。我在一台有Ubuntu的机器上 在每一页的顶部有两行文字。在一个表格下面,有标题和两列。每个表格36行,最后一页更少 在每一页的末尾,在表格之后,还有一行文本 我想从这个PDF创建一个CSV,只考虑页面中的表格。忽略表格前后的文字 最初我测试了tabla-py。但它会生成一个空文件: from tabula import convert_into conve

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

在每一页的顶部有两行文字。在一个表格下面,有标题和两列。每个表格36行,最后一页更少

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

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

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

from tabula import convert_into

convert_into("Ativos_Fevereiro_2018_servidores_rj.pdf", "test_s.csv", output_format="csv")
请问,是否有人知道使用表格的另一种方法来满足此类需求


或者用另一种方法将PDF转换为CSV文件类型?

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

df = tabula.read_pdf("Ativos_Fevereiro_2018_servidores_rj.pdf", encoding='utf-8', spreadsheet=True, pages='1-6041')
在下图中,我仅在第一页测试了它(因为您的文件很大):

之后,您可以将数据帧另存为csv:

df.to_csv('otuput.csv', encoding='utf-8')
编辑: 好的,这个错误可能是java内存问题。为了加快速度,我添加了
页面
选项。还有一个编码问题,所以csv导出中添加了
encoding='utf-8'

如果您一直遇到java错误,请尝试分块解析它,例如
pages='1-300'
。我刚刚做了所有6041(在64GB内存机器上),它工作得很好。

尝试
导入tabla
tab=tabla.read\u pdf(“Ativos\u Fevereiro\u 2018\u servidores\u rj.pdf”,encoding='latin-1')
它会出错吗?如果没有,请运行
打印(选项卡)
。它也是空的吗?谢谢。是的,它仍然是空的(无)。表格中似乎找不到pdf中的表格。在没有pdf的情况下,让hart来解释原因(在我的pdf表格上,Tablea的效果很好)。也许您可以设置
guess=False
并指定
区域和/或
列(请参阅选项文档),或尝试
pdfquery
或查看“原始字符串”的位置(例如使用PyPDF2),谢谢。我正在看文档()。但是我如何找到桌子所在的区域呢?我的PDF在这里:我需要一个PDF编辑程序来找到坐标吗?谢谢!然后我尝试这样做:导入熊猫作为pd导入tabla tab=tabla.read\u pdf(“Ativos\u Fevereiro\u 2018\u servidores\u rj.pdf”,encoding='latin-1',spreadsheet=True,pages=all,header=0)tab.to_csv('file\u ready.csv',index=False),但我有以下错误:TypeError:expected str,bytes或os.PathLike对象,而不是内置函数或方法yes,或者从选项中删除
pages
df=tabla.read\u pdf(“Ativos\u Fevereiro\u 2018\u servidores\u rj.pdf”,encoding='latin-1',spreadsheet=True)
我收到了这个错误消息:CalledProcessError:Command'['java'、'-jar'、'/home/reinaldo/Documentos/Code/intercept/seguranca/lib/python3.6/site packages/tabla/tabla-1.0.1-jar-with-dependencies.jar'、'-pages'、'all'、'-guess'、'-lattice'、'Ativos_Fevereiro_2018_servidores_rj.pdf']返回了非零退出状态1。我编辑了我的答案。我认为pdf本身(在某些页面上)存在一些问题.我将运行循环以查看哪个,但在我的机器上速度很慢…-)