【发布时间】:2014-06-10 16:11:19
【问题描述】:
是否可以使用 python pandas 打开 PDF 并阅读它,还是我必须使用 pandas 剪贴板才能使用此功能?
【问题讨论】:
-
看看这个:annytab.com/extract-text-from-pdf-or-image-in-python 我认为作为中间格式的 hOCR 可以帮助 pdf 进入 pandas。
是否可以使用 python pandas 打开 PDF 并阅读它,还是我必须使用 pandas 剪贴板才能使用此功能?
【问题讨论】:
你可以使用表格 https://blog.chezo.uno/tabula-py-extract-table-from-pdf-into-python-dataframe-6c7acfa5f302
from tabula import read_pdf
df = read_pdf('data.pdf')
我可以在链接中看到更多!
【讨论】:
有一个新版本的tabula 称为tabula-py
pip install tabula-py
.read_pdf 方法和旧版本一样工作,文档在这里:
https://pypi.org/project/tabula-py/
【讨论】:
如果是一次性的,您可以将 PDF 表格中的数据复制到文本文件中,对其进行格式化(使用搜索和替换、Notepad++ 宏、脚本),将其保存为 CSV 文件,然后将其加载到 Pandas 中。
如果您需要以可扩展的方式执行此操作,您可以试试这个产品:http://tabula.technology/。还没用过,不知道效果如何,有需要的可以探索一下。
【讨论】:
我一直在用 Camelot (https://camelot-py.readthedocs.io/en/master/) 进行一些测试,它在许多情况下都非常有效。如果默认参数不起作用,您可以尝试调整一些参数。
与Tabula类似,但使用了不同的算法(Tabula使用PDF中的矢量数据并栅格化表格的线条;Camelot使用Hough变换),所以你可以尝试两者找到最好的。
两者都有网络版本,因此您可以尝试一些示例来确定哪个最适合您的应用程序。
【讨论】:
这是不可能的。 PDF 是一种用于打印的数据格式。表结构因此丢失。运气好的话,您可以使用 pypdf 提取文本并猜测前面的表格列。
【讨论】:
pd.read_clipboard() 并手动复制它?桌子能用吗?我只是不喜欢手动在 pdf 中手动输入所有内容
从 PDF 复制表格数据并粘贴到 Excel 文件中(通常粘贴为单列而不是多列)。然后使用 FlashFill(在 Excel 2016 中可用,不确定早期的 Excel 版本)将数据分隔到最初在 PDF 中查看的列中。这个过程既快速又简单。然后使用 Pandas 整理 Excel 数据。
【讨论】:
我使用 Tabula 库 安装,通过:
pip install tabula-py
通过链接读取PDF中的几个表格,例如:
import tabula
df = tabula.io.read_pdf(url, pages='all')
然后你会得到很多表,你可以使用索引来调用它,就像从列表中打印元素一样,示例:
# ex
df[0]
更多信息在这里 - https://pypi.org/project/tabula-py/
【讨论】: