使用pdfminer从pdf中提取文本给出多个副本

2024-02-25

我正在尝试使用 PDFMiner 从 PDF 文件中提取文本(代码位于在Python中使用PDFMiner从PDF文件中提取文本? https://stackoverflow.com/questions/26494211/extracting-text-from-a-pdf-file-using-pdfminer-in-python)。除了path/to/pdf 之外,我没有更改代码。令人惊讶的是,该代码返回同一文档的多个副本。我用其他 pdf 文件得到了相同的结果。我需要传递其他参数还是我遗漏了一些东西?非常感谢任何帮助。以防万一,我提供代码:

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from cStringIO import StringIO

def convert_pdf_to_txt(path):
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    fp = file(path, 'rb')
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    password = ""
    maxpages = 0
    caching = True
    pagenos=set()
    fstr = ''
    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages,    password=password,caching=caching, check_extractable=True):
        interpreter.process_page(page)

        str = retstr.getvalue()
        fstr += str

    fp.close()
    device.close()
    retstr.close()
    return fstr

print convert_pdf_to_txt("test.pdf")

我的回答在您引用的线程中有点不正确。我发现了错误并忘记更新我的答案。

因为 pdfminer 的文档非常稀疏,所以我无法完全解释为什么它会这样工作。希望对 pdfminer 库有更多了解的人可以给我们一些见解。

我只知道你必须做text = retstr.getvalue()在 for 循环之外。我只能假设retstr正在更新,就像我们正在做的那样final_text += text在 for 循环内,所以一旦全部完成,我们只需要做text = retstr.getvalue()从所有页面获取文本。

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from cStringIO import StringIO

def convert_pdf_to_txt(path):
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    fp = file(path, 'rb')
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    password = ""
    maxpages = 0
    caching = True
    pagenos=set()
    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages,password=password,caching=caching, check_extractable=True):

        interpreter.process_page(page)

    text = retstr.getvalue()

    fp.close()
    device.close()
    retstr.close()
    return text

print convert_pdf_to_txt("test.pdf")

希望这有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用pdfminer从pdf中提取文本给出多个副本 的相关文章

  • Django 中的 Rpy2 错误 - 未为“”类型的对象定义转换“py2rpy”

    我以前从未使用过 R 并且正在尝试使用 rpy2 从 python 调用 R 函数 它可以在独立的 python 终端上运行 但不能在 Django 中运行 但rpy2似乎无法将python字符串转换为r对象 我正在使用同事提供的自定义库
  • MANIFEST.in、package_data 和 data_files 澄清吗?

    我正在尝试创建一个 Python 包 并且目录结构如下 mypkg init py module1 x py y py z txt module2 a py b py 然后我将所有文件添加到MANIFEST in当我检查创建的存档时 它包含
  • pandas Wide_to_long 后缀参数

    我对在 pandas 中使用 Wide to long 时的参数有疑问 有一个参数叫suffix我不明白 在文档中它说 后缀 str 默认 d 捕获所需后缀的正则表达式 d 捕获数字后缀 没有数字的后缀可以用否定字符类 D 指定 您还可以进
  • ca 证书 Mac OS X

    我需要在emacs 上安装offlineimap 和mu4e 问题是配置 当我运行 Offlineimap 时 我得到 OfflineIMAP 6 5 5 Licensed under the GNU GPL v2 v2 or any la
  • 如何使用 Python 裁剪图像中的矩形

    谁能给我关于如何裁剪两个矩形框并保存它的建议 我已经尝试过这段代码 但效果不佳 import cv2 import numpy as np Run the code with the image name keep pressing spa
  • 如何让python优雅地失败?

    我只是想知道如何让 python 在所有可能的错误中以用户定义的方式失败 例如 我正在编写一个处理 大 项目列表的程序 并且某些项目可能不符合我定义的格式 如果 python 检测到错误 它目前只会输出一条丑陋的错误消息并停止整个过程 但是
  • Perl 是否有相当于 Python 的 `if __name__ == '__main__'` 的功能?

    有没有一种方法可以确定当前文件是否是 Perl 源中正在执行的文件 在 Python 中 我们使用以下结构来做到这一点 if name main This file is being executed raise NotImplemente
  • 使用多级解决方案计算二维网格中的最近邻

    我有一个问题 在 x y 大小的网格中 我提供了一个点 并且我需要找到最近的邻居 在实践中 我试图在 pygame 中找到距离光标最近的点 该点跨越颜色距离阈值 计算如下 sqrt rgb1 0 rgb2 0 2 rgb1 1 rgb2 1
  • numpy:大量线段/点的快速规则间隔平均值

    我沿着一维线有许多 约 100 万个 不规则间隔的点 P 这些标记线段 这样 如果点是 0 x a x b x c x d 则线段从 0 gt x a x a gt x b x b gt x c x c gt x d 等 我还有每个段的 y
  • 如何使用 i18n 切换器将“LANGUAGE_CODE”保存到数据库,以便在 Django 中的不同浏览器中语言不会更改?

    有什么办法可以改变它的值LANGUAGE CODE单击按钮 发送请求 时 settings py 中的变量会动态变化吗 我希望用户设置自己的 默认语言 他们的帐户 现在 用户可以使用下拉列表选择他们的首选语言 并且网站会得到完美的翻译 并且
  • 按多个键分组并对字典列表的值进行汇总/平均值

    在Python中按多个键进行分组并对字典列表进行汇总 平均值的最Pythonic方法是什么 假设我有一个字典列表 如下所示 input dept 001 sku foo transId uniqueId1 qty 100 dept 001
  • reStructuredText:README.rst 未在 PyPI 上解析

    我有一个托管在 Github 和 PyPI 上的 Python 项目 在 Github 上 https github com sloria TextBlob blob master README rst https github com s
  • Python 3在for循环中更改字典键的值不起作用

    我的 python 3 代码没有按预期工作 def addFunc x y print x y def subABC x y z print x y z def doublePower base exp print 2 base exp d
  • 为什么 __instancecheck__ 没有被调用?

    我有以下 python3 代码 class BaseTypeClass type def new cls name bases namespace kwd result type new cls name bases namespace p
  • Jupyter Notebook 中的深色模式绘图 - Python

    我正在使用 Jupyter Notebook 目前正在使用 JupyterThemes 的深色日光主题 我注意到我的绘图不是处于黑暗模式 并且文本仍然是黑色并且在日光照射的背景上无法读取 JupyterThemes 的自述文件建议在 ipy
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 更换壳牌管道[重复]

    这个问题在这里已经有答案了 在 subprocess 模块的 Python 2 7 文档中 我找到了以下片段 p1 Popen dmesg stdout PIPE p2 Popen grep hda stdin p1 stdout stdo
  • 在 matplotlib 中绘制多边形的并集[重复]

    这个问题在这里已经有答案了 我正在尝试绘制几个多边形的并集matplotlib 具有一定的 alpha 水平 我当前的代码在交叉点处颜色较深 有没有办法让交叉路口与其他地方的颜色相同 import matplotlib pyplot as
  • 更新 SQLAlchemy 中的特定行

    我将 SQLAlchemy 与 python 一起使用 我想更新表中等于此查询的特定行 UPDATE User SET name user WHERE id 3 我通过 sql alchemy 编写了这段代码 但它不起作用 session
  • 沿轴 0 重复 scipy csr 稀疏矩阵

    我想重复 scipy csr 稀疏矩阵的行 但是当我尝试调用 numpy 的重复方法时 它只是将稀疏矩阵视为对象 并且只会将其作为 ndarray 中的对象重复 我浏览了文档 但找不到任何实用程序来重复 scipy csr 稀疏矩阵的行 我

随机推荐

  • 强制布局(),请求布局()

    我对android文档的阅读发现了方法forceLayout 用于在下一个布局请求时生成布局显示 和requestLayout 应该立即发布布局请求 但我无法让它们表现出来正如广告所言 特别是 如果我在 Thread Sleep 之前设置一
  • Firebase 允许用户使用密钥进行访问

    我想通过电子邮件向用户发送一个提交反馈的链接 该链接具有每个用户唯一的访问密钥 如果访问密钥有效 用户应该能够提交 这在 Firebase 上怎么可能 最简单的方法是 为每个用户生成密钥 已创建一个 可能为空 文档 并将密钥作为文档 ID
  • Django Rest Framework:在 ViewSet 中注册多个序列化器

    我正在尝试创建一个自定义 API 不使用模型 但它没有在架构中显示请求定义 因此 没有以 swagger 的方式显示它 我当前的代码是 views py class InfoViewSet viewsets ViewSet list rou
  • 如何修复 InnoDB 表?

    昨晚我们的 Solaris MySQL 数据库引擎 显然 执行得很差 至少有一些 InnoDB 表已损坏 事务日志中出现时间戳无序错误 以及有关索引损坏的特定错误 我们知道可用于 MyISAM 表修复的工具 但找不到任何适用于 InnoDB
  • Python:手动输入运行shell脚本

    例如 shell 脚本在提示符处获取一个整数并返回它 Enter an integer gt 3 3 我在用着subprocess check call myScript 运行 shell 脚本 我怎样才能自动发送 3 如上例所示 到目前为
  • 为什么java需要双等号?

    为什么java在比较整数时需要双等号 if陈述 例如 if x 3 141 System out println x is equal to pi 不正确 应该是 if x 3 141 System out println x is equ
  • 如何使用 matlab 正确地细分细胞图像?

    I have the following picture which is a photo of pancreatic cells 我想做的是能够获得每个细胞的膜 红色丝 然后进行镶嵌以了解丝的长度 到目前为止 我已经尝试使用matlab网
  • 如何正确地将文本宽度设置为图表条上方中心标签?

    我目前有一个图表 每个条形上方显示有关联的条形值 但由于无法获取每个文本元素的宽度 因此我很难将值标签居中 这就是我目前绘制的图表的方式 我需要做的就是减去每个文本元素宽度的一半 但我似乎无法使用以下 Coffeescript 来做到这一点
  • 使用 AVFoundation 录制具有自定义尺寸的视频? [复制]

    这个问题在这里已经有答案了 我正在使用 AVFoundation 录制 MOV 文件 但我无法找到如何更改视频的尺寸 我有videoGravity的财产captureVideoPreviewLayer set to AVLayerVideo
  • 核心图和 NSDate (iPhone)

    我希望绘制一个折线图 其中 x 轴定义为两个日期之间的天数 y 轴是每天变化的值 我可以将 y 值绘制为 NSNumber 但我不知道如何在 x 轴上设置范围和标记 我查看了 core plot 发行版的 examples 目录中的日期示例
  • 像 FireBug 一样获取 PostData

    任何人 帮助我 如何使用 xpcom 其他东西获取扩展内的 headers 和 PostData 我无法在 firebug 中找到函数 因为它的代码库很大 谢谢你们 我假设您需要请求标头 而不是响应标头 然后你注册一个观察者http on
  • 在 C 中返回错误的 MD5 哈希值

    我正在尝试为字符串生成 MD5 哈希值 你好世界 使用原始 未修改的 md5 h 和md5c c http www arp harvard edu eng das manuals QNX6libs md5c 8c source html f
  • Tizen WEB 应用程序在 2.2 版本中无法运行

    我是 Tizen 的新手 并通过在 64 位 Windows 7 计算机中将 SDK 版本设置为 2 2 来开始开发 我创建了一个新的 WEB 应用程序 在尝试运行它 在模拟器和真实设备上 时 安装后没有任何反应 我尝试了几次启动该应用程序
  • Windows 上 PyCharm 中 numpy 的安装

    当我尝试在 Pycharm Windows 中安装 numpy 时 我不断收到错误 这是我得到的错误 C Python27 lib distutils dist py 267 UserWarning 未知的分发选项 define macro
  • cmd.exe 的 CSS 字体系列

    我在CSS中找不到任何与CMD exe中使用的字体系列类似的字体系列 请你帮助我好吗 您可以使用 font family monospace 指定您希望使用等宽字体 控制台使用等宽字体以确保所有字符具有相同的宽度 请注意 某些浏览器无法正确
  • 如何访问在条件匹配组 Javascript 正则表达式中导致匹配的表达式?

    我有一个条件匹配分组正则表达式 例如 sun bmoon 当我访问字符串中的匹配项时 我希望能够看到导致匹配的表达式 let regex sun bmoon let match regex exec moon return bmoon 这可
  • 通俗地说,Java 中的“静态”是什么意思? [复制]

    这个问题在这里已经有答案了 我被告知了它的几个定义 查看了维基百科 但作为 Java 的初学者 我仍然不确定它的含义 有人精通 Java 吗 static 意味着标记为此类的变量或方法在类级别可用 换句话说 您不需要创建该类的实例来访问它
  • 如何使用 RefersToRange?

    谁能告诉我如何在vba中使用RefersToRange 以及什么时候需要它 请先提供简单的例子 提前致谢 在Excel中 有一个概念 命名范围 这是一个带有名称的单元格范围 这由Name https msdn microsoft com e
  • 刷新 firebase id 令牌服务器端

    我正在开发一个使用 Next js 13 和带有 id 令牌的 firebase auth 的应用程序 我想利用服务器端组件的 Next JS 内置功能来更快地获取用户数据 因此我需要在初始请求时验证服务器上的 id 令牌 当没有用户登录受
  • 使用pdfminer从pdf中提取文本给出多个副本

    我正在尝试使用 PDFMiner 从 PDF 文件中提取文本 代码位于在Python中使用PDFMiner从PDF文件中提取文本 https stackoverflow com questions 26494211 extracting t