问题标签 [pypdf2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2508 浏览

python - PyPDF2:在内存中连接 pdf

我希望在纯python的内存中有效地将一堆小pdf连接(附加)在一起。具体来说,通常情况是 500 个单页 pdf,每个大小约为 400 kB,合并为一个。假设 pdf 可作为内存中的迭代器使用,例如列表:

其中每个 pdf_fileobj 的类型为 BytesIO。然后,基本内存使用量约为 200 MB(500 个 pdf,每个 400kB)。

理想情况下,我希望使用不超过 400-500 MB 的总内存(包括my_pdfs)连接以下代码。但是,情况似乎并非如此,最后一行的调试语句表明使用的最大内存几乎是 700 MB。此外,使用 Mac os x 资源监视器,当到达最后一行时,分配的内存被指示为 600 MB。

运行会将gc.collect()其减少到 350 MB(几乎太好了?)。在这种情况下,为什么我必须手动运行垃圾收集来摆脱合并垃圾?我已经看到这(可能)导致内存在稍微不同的情况下积累,我现在将跳过。

问题摘要

  • 为什么上面的代码需要将近 700 MB 的内存来合并 200 MB 的 pdf?不应该 400 MB + 开销就足够了吗?我该如何优化它?
  • 当有问题的变量应该已经超出范围时,为什么我需要手动运行垃圾收集来摆脱 PyPDF2 合并垃圾?
  • 这种通用方法怎么样?BytesIO适合使用这种情况吗?merger.write(myio)考虑到一切都发生在 ram 中,它的运行似乎有点慢。

谢谢!

0 投票
3 回答
424 浏览

python - 在某些 csv 文件中以单行形式写入数据

我已经编写了一些代码来从“pdf”文件的特定页面读取数据并使用 python 将其写入 csv 文件。它只是部分地完成了它的工作。但是,在将数据写入 csv 文件时,它会将这些数据写入单行而不是常规模式。我应该如何修改我的脚本以达到目的?提前致谢。

这是我迄今为止尝试过的:

pdf中的数据如下:

我在 csv 输出中获取数据,例如:

0 投票
1 回答
12561 浏览

python - 如何使用 Python 从 PDF 中的特定区域提取文本?

我正在尝试使用 Python 从 PDF 中提取文本,并且我已经使用 PyPDF2 成功地做到了这一点,如下所示:

这会从页面中提取所有文本,但我只想从页面左上角的 3'x4' 矩形区域中提取文本。

我基本上想做类似的事情:如何从特定矩形区域内的 pdf 文档中提取文本?但在 Python 中

这可以通过 PyPDF2 或任何其他 Python 库来完成吗?

0 投票
4 回答
17924 浏览

python - PyPDF2 写入不适用于某些 PDF 文件(Python 3.5.1)

首先,我使用的是 Python 3.5.1(32 位版本),我编写了以下程序,使用 PyPDF2 和 reportlab 在我的 pdf 文件的所有页面上添加页码:

该程序适用于相当多的 PDF 文件(尽管有时会生成警告,如 ' PdfReadWarning: Superfluous whitespace found in object header b'16' b'0' [pdf.py:1666]' 但生成的输出文件对我来说没问题)。但是,该程序无法处理某些 PDF 文件,尽管这些文件在我的 Adob​​e Acrobat 中是完全可读和可编辑的。我的印象是,错误主要出现在已扫描的 PDF 文件上,但并非全部出现(我还对未生成任何错误的扫描 PDF 文件进行了编号)。我收到以下错误消息(前 8 行是我自己的打印命令的结果):

显然,这些页面与由 reportlab 创建的 PDF 合并(参见第 6/6 页的行),但最终 PyPDF2 无法生成输出 PDF 文件(我得到一个不可读的 0 字节输出文件)。有人可以阐明如何解决这个问题吗?我搜索了互联网,但无法真正找到答案。

0 投票
1 回答
1809 浏览

pypdf2 - PyPDF2 给我一个无效的参数错误

我正在尝试从 pdf 文件中解析文本。当我在做 PyPDF2 的教程时,我得到了以下错误。我搜索了答案,但最终没有找到答案。任何帮助将不胜感激。

这是完整代码

0 投票
1 回答
82 浏览

python - 在字典键(或 csv)中附加基于 pdf 文件的 multilpe 值会导致页面过多

我正在尝试根据他们所在的县生成 pdf 文件。如果每个县有多个 pdf 文件,那么我需要根据县键将文件附加到一个文件中。我似乎无法根据密钥附加地图。生成的最终地图似乎是随机的,并且通常附加了太多的文件。我很确定我没有正确地将它们分组。我读过一个键中的多个值可能会导致多次显示。有人可以告诉我如何分别访问每个键的每个值,仅一次?显然我不理解一些关键的东西。

我的代码:

我输出了四张地图(这是正确的),但是其中一些文件中的“页面”(附加文件)的数量非常少。据我所知,这些页面的附加方式没有押韵或理由。County4 pdf 有 3 页(正确),County1 pdf 有 8 页而不是 2 页,County3 pdf 有 1 页(正确),County2 有 15 页而不是 2 页。

编辑:

事实证明 pyPDF2 不喜欢使用 group-by 的概念迭代和创建文件。我想它与它如何存储内存有关。结果是在您遍历键值时创建的页面数量越来越多。我花了几天时间认为这是我的编码。很高兴知道这不是我猜的,但我很惊讶这条信息并没有“在互联网上”更好。

我的解决方案是使用 arcpy,这对大多数用户阅读本文没有帮助,抱歉。

对于那些查看我的解决方案的人,我的 csv 文件如下所示:

我生成的 pdf 文件如下所示:

0 投票
1 回答
5148 浏览

python - 如何使用 Python 获取 PDF 文件元数据“页面大小”?

我尝试在 Python 3 中使用 PyPDF2 模块,但无法显示“页面大小”属性。在扫描到 PDF 文件之前,我想知道纸张尺寸是多少。

像这样的东西:

但我正在寻找另一个 Python 函数,而不是例如 getNumPages()...

下面的这个命令打印某种元数据,但没有页面大小:

0 投票
0 回答
3265 浏览

python - 如何使用 Python 解析从带有分隔符的 PDF 文件中提取的文本?

我曾尝试 PyPDF2 使用以下代码段从 PDF 中提取和解析文本;

案例 1:当我尝试解析 pdf 文本时,我未能完全按照它们在 pdf 中出现的方式解析它们。例如,

在此处输入图像描述

rawText在这种情况下,在orextractedText和结果中都找不到换行符或换行符,如下所示 -

案例2:对于以下案例,

在此处输入图像描述

它给出的结果为-

这更难以解析和区分这些单独的分数。是否可以使用 PyPDF2 或任何其他 Python 库完美解析这些场景?

0 投票
0 回答
232 浏览

python - 使用 PyPDF2 从 PDF 中逐行提取事务数据

我正在尝试使用 Python 3 从 PDF 中提取交易数据作为一个简单的程序。我看到的是输出从第 1 页返回为垃圾文本。这发生在特定的银行对账单 pdf 上,而其他 PDF 工作正常。

6
ÉŁ@äKâKñ øððõòô õùô`øòððóøøðÅ¢Š†IŒfiñ</code>øøøôôöóóðøããèñøððùõõøðöð׆¨@‡¨@Š‹ŒŁ– ñøððôóö÷ùõøÖ¤£¢›—–@äKâK@…†fifi@…Œfifi–…£ñ<code>óðò

不知道其他人是否有类似的问题?或任何建议?

0 投票
1 回答
2554 浏览

python - 在Python中将空白页添加到奇数页PDF

这是如何使用 Python 在 PDF 中将“缺失”页面作为空白页面插入的重写?但我正在尝试使用PdfFileWriter其他方法来做到这一点:cloneDocumentFromReader()并且addBlankPage(),因为这样看起来更干净。

我需要在 PDF 的末尾添加一个空白页,如果它包含奇数页,但页数大于 1。

所以我正在尝试这样做:

该代码有效,但创建的 PDF 比原始 PDF 小,并且在尝试在 Adob​​e Acrobat 中打开时出现错误(不解析)。

我是否将某些内容与它应该如何工作混为一谈?当我看到我无法使用 PdfWriter 在 Pdf 中导航以选择添加空白页的位置时,我有点惊讶,但我认为,在我克隆文档后,它应该在最后页面有一些内部“标记”?