Python 如何使用表格格式将PDF转换为CSV?
在Python 3中,我有一个PDF文件“Ativos_Fevereiro_2018_servidores_rj.PDF”,共6041页。我在一台有Ubuntu的机器上 在每一页的顶部有两行文字。在一个表格下面,有标题和两列。每个表格36行,最后一页更少 在每一页的末尾,在表格之后,还有一行文本 我想从这个PDF创建一个CSV,只考虑页面中的表格。忽略表格前后的文字 最初我测试了tabla-py。但它会生成一个空文件: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
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本身(在某些页面上)存在一些问题.我将运行循环以查看哪个,但在我的机器上速度很慢…-)