标签: python-camelot

Camelot:DeprecationError:PdfFileReader 已弃用

我一直在我们的项目中使用camelot,但是自两天以来我收到了以下错误消息。当尝试运行以下代码片段时:

import camelot
tables = camelot.read_pdf('C:\\Users\\user\\Downloads\\foo.pdf', pages='1')
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

DeprecationError: PdfFileReader is deprecated and was removed in PyPDF2 3.0.0. Use PdfReader instead.
Run Code Online (Sandbox Code Playgroud)

我检查了这个文件,它确实使用 pdfFileReader: c:\ProgramData\Anaconda3\lib\site-packages\camelot\handlers.py

我以为我可以指定PyPDF2的版本,但是当我安装camelot时它会自动安装(因为该库是camelot使用的)。您认为有什么解决方案可以手动指定PyPDF2的版本吗?

python pypdf python-camelot

20
推荐指数
1
解决办法
6万
查看次数

Camelot 只阅读 pdf 的第一页

tables = camelot.read_pdf(r"C:\Users\Ayush ShaZz\Desktop\Code_Python\FoodCaloriesList.pdf")
for table in tables:
    print(table.df)
Run Code Online (Sandbox Code Playgroud)

它只阅读第一页。请有人帮助我

python python-camelot

12
推荐指数
2
解决办法
9541
查看次数

Camelot-py 从 pdf 中提取同一个表两次

我正在尝试使用camelot-py v0.7.3 从多页PDF 文件中提取表格。

到目前为止,它对我来说是最好的 pdf 阅读器工具。我只需要逐行阅读 pdf 并手动检测表格。我尝试了许多其他工具,例如 tabula、PyPDF2/4、pdfminer 等。其中一些无法正确检测文本本身,其中一些扰乱了单词序列或列之间的间距。

但camelot-py 为我提供了最适合我的应用程序的格式的数据。

在使用camelot-py从pdf中提取数据的过程中,它几乎很好地检测了所有表的数据,除了很少的错误:

  1. 它将多个表分组到同一个“TableList”元素中。但我可以将这些分组的表分开。所以这里不需要担心。

  2. 这些分组表中的最后一个表在单独的“TableList”元素中重复。这种重复是我最关心的问题。

上述过程使用的代码如下:

tables = camelot.read_pdf('test.pdf', pages='1-end', flavor='stream')
tables.export('foo.csv', f='csv', compress=False)

for table in tables:
    table_df = table.df
    # Code to parse data from tables in each element converted into datafram
Run Code Online (Sandbox Code Playgroud)

为什么camelot-py 会重复一些表?有什么办法可以处理这种重复吗?

更多信息:

输入 PDF 文件:由于敏感数据,我无法共享 pdf 文件。但这里有一些细节可以让您很好地了解其结构: 所有页面仅包含表格。第 1 页:包含表 1,其中包含客户信息。表2至表4结构相同

第 2 页:包含表 4 和表 5 至 7 中的一些行,其结构与表 2 相同

第3页:表8至10,结构与表2相同

输出 CSV 文件:

foo-page-1-table-1:包含表 1

foo-page-1-table-2:包含表 1 和表 2 至 4 …

python pdf-parsing pdf-reader python-camelot

11
推荐指数
0
解决办法
1382
查看次数

Python Camelot 无边框表格提取问题

我正在努力提取一些无边框表格,如下图所示,它们来自 pdf 文件。我已经安装了 python-camelot,如图所示并且仅适用于带边框的表。请查看以下详细信息:

平台 - Linux-4.5.5-300.fc24.x86_64-x86_64-with-fedora-24-Twenty_Four

sys - Python 3.6.1(默认,2017 年 5 月 15 日,11:42:04)[GCC 6.3.1 20161221 (Red Hat 6.3.1-1)]

numpy - NumPy 1.15.4

cv2 - OpenCV 3.4.3

卡米洛特 - 卡米洛特 0.3.2在此处输入图片说明

python-3.x python-camelot

8
推荐指数
2
解决办法
5539
查看次数

没有名为“camelot.ext”的模块

我一直在尝试从 pip 安装后运行 Excalibur,它要求我安装 Camelot,之后弹出此错误,

Traceback (most recent call last):
  File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/dev/.local/lib/python3.9/site-packages/excalibur/__main__.py", line 16, in <module>
    main()
  File "/home/dev/.local/lib/python3.9/site-packages/excalibur/__main__.py", line 10, in main
    from excalibur.cli import cli
  File "/home/dev/.local/lib/python3.9/site-packages/excalibur/cli.py", line 10, in <module>
    from .tasks import split, extract
  File "/home/dev/.local/lib/python3.9/site-packages/excalibur/tasks.py", line 13, in <module>
    from camelot.ext.ghostscript import Ghostscript
ModuleNotFoundError: No module named 'camelot.ext'
Run Code Online (Sandbox Code Playgroud)

当我尝试运行此模型、initdb 或 webserver 命令时,此输出显示,我尝试了多种方法来解决,但没有任何效果

python python-3.x python-camelot excalibur-py

8
推荐指数
2
解决办法
3934
查看次数

使用 Camelot 查找 PDF 尺寸

我正在使用 Camelot 读取完整的 PDF 并从每个 PDF 中提取大约 112 个属性。

我使用表区域来提取属性

 test_variable = camelot.read_pdf(filename, flavor='stream', 
                 table_areas=['38, 340 ,50, 328']) 
Run Code Online (Sandbox Code Playgroud)

问题是对于所有文档中的相同属性,表区域并不是恒定的。有时,我会在另一个文档的 x 或 y 坐标下方几个像素处找到相同的属性。

 test_variable = camelot.read_pdf(filename, flavor='stream', 
                 table_areas=['38,350,50,338']) 
Run Code Online (Sandbox Code Playgroud)

有没有办法从同一区域获取确切的属性,而不管提取任何文档?

python pdf-extraction python-camelot

6
推荐指数
1
解决办法
2952
查看次数

卡米洛特 PDF 尺寸

在发布此内容之前,我已经广泛搜索了 stackoverflow,但未能在 Camelot 页面尺寸上找到任何内容。有这个问题,建议使用table_region,但这并不能解决OP或我的问题。不幸的是,我无法发表评论来跟进OP,看看他们是否找到了解决方案。

\n\n

我正在尝试做的事情:

\n\n

我正在使用 Camelot 来识别表(显然)。有时,当我知道页面的哪个区域可能包含感兴趣的表时,我只想在该区域中进行搜索。camelot.read_pdf()使用\可以轻松完成此操作table_region- 我只需要提供一对坐标供 Camelot 进行搜索。

\n\n

问题是,我使用 PyMuPDF 获取这些坐标,因此它们位于 PyMuPDF 的坐标系中。我已经弄清楚如何翻译这些坐标,但我缺少来自 Camelot 的一条关键信息 - 页面的尺寸。这些值很容易在 PyMuPDF(Page 类.bound(),我需要 Camelot 等效值。如果有人认为之间可能有替代方案,我可以在这里提供代数的进一步解释

\n\n

到目前为止我已经尝试过的

\n\n

我阅读了文档。由于文档中的这一行,我想知道这是否可以提供一种获取尺寸的方法:“在使用 Lattice 时,可能会出现检测到较小的线 don\xe2\x80\x99t 的情况。最小线的大小检测到的结果是通过将 PDF 页面\xe2\x80\x99s 尺寸除以名为的缩放因子来计算的line_scale计算的。默认情况下,其值为 15"

\n\n

我对替代方案持开放态度,本质上我要么想检查页面的某个区域是否包含表格(PyMuPDF坐标系中描述的区域,对于pdf页面,尺寸通常为(612, 792),原点位于顶部左角。camelot 的原点位于左下角),或者页面上的任何表格位于给定区域(如果有意义的话)。

\n

python python-camelot pymupdf

6
推荐指数
1
解决办法
2697
查看次数

Python-camelot(安装时出现错误:GhostscriptNotFound)

我正在尝试使用 Camelot 从 pdf 中提取表格数据,但出现以下错误。

代码:

tables = camelot.read_pdf(file_name)
Run Code Online (Sandbox Code Playgroud)

错误:

GhostscriptNotFound:请确保安装了 Ghostscript 并且在 PATH 环境变量中可用

我已经安装了 Ghostscript,并且可以在 PATH 环境变量中使用它。

请查看以下版本详细信息:

  • Windows-10-10.0.17134-SP0
  • Python 3.6.5 |Anaconda, Inc.| (默认,2018 年 3 月 29 日,13:32:41)[MSC v.1900 64 位 (AMD64)]
  • NumPy 1.14.3
  • openCV 3.4.3
  • 卡米洛特 0.3.2

请帮助解决此问题。

python python-camelot

5
推荐指数
3
解决办法
1万
查看次数

使用 Camelot 进行 Python PDF 解析并提取表格标题

Camelot 是一个很棒的 Python 库,用于从 pdf 文件中提取表格作为数据框。但是,我正在寻找一种解决方案,该解决方案还返回写在表格正上方的表格描述文本。

我用来从 pdf 中提取表格的代码是这样的:

import camelot
tables = camelot.read_pdf('test.pdf', pages='all',lattice=True, suppress_stdout = True)
Run Code Online (Sandbox Code Playgroud)

我想提取表格上方写的文本,即THE PARTICULARS,如下图所示。

对我来说最好的方法应该是什么?感谢任何帮助。谢谢

在此输入图像描述

python pdfminer tabula python-camelot

5
推荐指数
1
解决办法
4671
查看次数

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

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

import camelot
import pandas as pd
pdf = camelot.read_pdf("Gordian.pdf")
Run Code Online (Sandbox Code Playgroud)

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

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

python python-camelot

4
推荐指数
2
解决办法
9428
查看次数

使用camelot提取表数据时出现的问题且没有错误消息

我正在尝试使用camelot从此pdf链接中提取表格,但是,当尝试以下代码时:

import camelot

file = 'relacao_medicamentos_rename_2020.pdf'

tables = camelot.read_pdf(file)
tables.export('relacao_medicamentos_rename_2020.csv', f='csv', compress=False)
Run Code Online (Sandbox Code Playgroud)

简单什么都不会发生。这很奇怪,因为当我尝试相同的代码但使用此 pdf链接时效果非常好。

python ghostscript pdf-extraction python-camelot

4
推荐指数
1
解决办法
5210
查看次数

Camelot Pdf 提取解析失败

我遇到了 Camelot 库的问题

我正在从 PDF 中提取数据,我的代码在前 23 页中运行“正常”,但在本例中,它无法解析文本/表格结尾

我想问题是字符串太长到达表格边界

也尝试过“流”但得到最差的结果

PDF源数据

pdf

PDF 输出布局

布局

我解析的输出就像

"ALT4945\n24 V"
"70\/140 A   ALT5860\n12 V\n90 A"
Run Code Online (Sandbox Code Playgroud)

期望的输出应该是

"ALT4945\n24 V 70\/140 A"
"ALT5860\n12 V\n90 A"
Run Code Online (Sandbox Code Playgroud)

我的第一个在上一页正确工作的代码是

tables = camelot.read_pdf("CROSSREFERENCE.pdf", pages=wPAGES, flavor="lattice")
Run Code Online (Sandbox Code Playgroud)

从网站 Camelot Doc https://camelot-py.readthedocs.io/en/master/api.html我得到了 pdf 解析器的可能配置。

"" PARAMS for lattice
line_scale  (default: 15)
copy_text   ((default: None))
shift_text  (default: ['l', 't'])
line_tol    (default: 2)
joint_tol   (default: 2)
threshold_blocksize   (default: 15)
threshold_constant    (default: -2)
iterations   (default: 0)
resolution   (default: 300)
"""
Run Code Online (Sandbox Code Playgroud)

然后我遇到了这个问题,尝试用更多参数解决“玩”问题,但没有找到获胜者

tables = camelot.read_pdf("CROSSREFERENCE.pdf", pages=wPAGES, …
Run Code Online (Sandbox Code Playgroud)

python pdf python-camelot

3
推荐指数
1
解决办法
4032
查看次数

tabula 与 camelot 用于从 PDF 中提取表格

我需要从 pdf 中提取表格,这些表格可以是任何类型、多个标题、垂直标题、水平标题等。

我已经实现了两者的基本用例,发现 tabula 比 Camelot 做得更好,但仍然无法完美地检测所有表,我不确定它是否适用于所有类型。

因此,向实施过类似用例的专家寻求建议。

示例 PDF:PDF1 PDF2 PDF3

表格实现:

import tabula
tab = tabula.read_pdf('pdfs/PDF1.pdf', pages='all')
for t in tab:
    print(t, "\n=========================\n")
Run Code Online (Sandbox Code Playgroud)

Camelot 实现:

import camelot
tables = camelot.read_pdf('pdfs/PDF1.pdf', pages='all', split_text=True)
tables
for tabs in tables:
    print(tabs.df, "\n=================================\n")
Run Code Online (Sandbox Code Playgroud)

python pdf tabula python-camelot

2
推荐指数
1
解决办法
3305
查看次数