AttributeError:模块“camelot”没有属性“read_pdf”

Posted

技术标签:

【中文标题】AttributeError:模块“camelot”没有属性“read_pdf”【英文标题】:AttributeError: module 'camelot' has no attribute 'read_pdf' 【发布时间】:2020-02-11 01:36:21 【问题描述】:

我正在尝试使用 camelot 从 pdf 中提取表格,但出现此属性错误。能否请你帮忙?

import camelot
import pandas as pd
pdf = camelot.read_pdf("Gordian.pdf")

AttributeError Traceback(最近一次调用最后一次) 在 ----> 1 pdf = camelot.read_pdf("Gordian.pdf")

AttributeError: 模块 'camelot' 没有属性 'read_pdf'

【问题讨论】:

请阅读github.com/atlanhq/camelot/issues/118 和github.com/atlanhq/camelot/issues/145。如果找不到解决方案,请发布命令 dir(camelot) 的输出 你可能安装了 camleot 而不是 camelot-py 【参考方案1】:

以下是完整安装步骤的链接: https://camelot-py.readthedocs.io/en/master/user/install.html#using-pip

安装后

pip install camelot-py[cv]

这样写:

import camelot.io as camelot

【讨论】:

【参考方案2】:

我放弃了尝试让 camelot 在 Jupiter Notebooks 中工作以读取表格,而是安装了以下内容:

!sys.executable -m pip install tabula-py tabulate

from tabula import read_pdf
from tabulate import tabulate


pdf_path = (
    Path.home()
    / "my_pdf.pdf"
)
df = read_pdf(str(pdf_path), pages=1)
df[0]

【讨论】:

【参考方案3】:

请检查您的机器上是否安装了 java,转到您的终端并运行“java -version”,如果没有,您将无法使用 Camelot 或 tabula 阅读 pdf,

安装 java 后,使用命令安装 tabula-py pip install tabula-py.

from tabula.io import read_pdf
tables = read_pdf('file.pdf')  # substitute your file name

【讨论】:

【参考方案4】:

试试这个:import camelot.io as camelot 这对我有用。

【讨论】:

【参考方案5】:

下载库时请注意下载位置。因为你下载的库可能已经保存在另一个 Python 版本中

【讨论】:

您好,欢迎来到 SO!请阅读tour 和How do I write a good answer? 例如,您可以详细说明如何关注这种关注,您希望找到什么,以及应该如何解决。【参考方案6】:

注意如果您使用的是虚拟环境,请在执行此操作之前激活环境。

我已经遇到过这个错误。你的代码中没有错误。问题出在 camelot 安装上。

1 删除已安装的 camelot 版本

2 使用此命令再次安装。有多种方法可以安装 camelot。请一一试一试

pip install camelot-py pip install camelot-py[cv] pip install camelot-py[all]

3 运行您的代码 >> 我已在此处附加示例代码

import camelot

data = camelot.read_pdf("test_file.pdf", pages='all')
print(data)

【讨论】:

它将在 python 编辑器上工作,例如:pycharm

以上是关于AttributeError:模块“camelot”没有属性“read_pdf”的主要内容,如果未能解决你的问题,请参考以下文章

Camelot-py 没有检测到有两行的表

Camelot 未在表中检测到表

AttributeError:模块 'dbus' 没有属性 'lowlevel'

AttributeError:模块'keras'没有属性'initializers'

AttributeError:模块'asyncio'没有属性'run'

AttributeError:模块'mysql'没有属性'connector'