我正在尝试使用PDFMiner从PDF文件中提取文本(在Python中使用PDFMiner从PDF文件中提取文本时找到的代码?).除了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 = …Run Code Online (Sandbox Code Playgroud) 通过以下方式使用pdfminer(git的最新版本)安装时,出现UnicodeEncodeError pip install git+https://github.com/pdfminer/pdfminer.six.git:
Traceback (most recent call last):
File "pdfminer_sample3.py", line 34, in <module>
print(convert_pdf_to_txt("samples/numbers-test-document.pdf"))
File "pdfminer_sample3.py", line 27, in convert_pdf_to_txt
text = retstr.getvalue()
File "/usr/lib/python2.7/StringIO.py", line 271, in getvalue
self.buf += ''.join(self.buflist)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
#!/usr/bin/env python
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from StringIO import StringIO
import codecs …Run Code Online (Sandbox Code Playgroud) 请问如何将pdf转换为docx。我尝试使用 pdfminer 转换为 html 来提取文本,但看起来仍然不够好。
我有多个 PDF,我想从第一页的某个区域提取文本。那么,假设我有 PDF 中文本的边界框坐标,如何使用命令行提取该文本。
我研究了一下,发现 PDFMiner 和 PDFBox 可以做到这一点。但 PDFMiner 的文档非常少。
有人可以告诉我如何使用 PDFMiner 做到这一点吗?或者您是否可以建议其他解决方案?
PS:我在 Linux 终端上。
我按照这里的说明进行操作:file:///home/bioinfo/Descargas/pdfminer3k-1.3.0/docs/index.html
下载pdfminer3k-1.3.0后我做了:
python setup.py 安装
但是当我这样做时
pdf2txt.py 样本/simple1.pdf
它不读取pdf,路径没问题。它给了我错误:
>
Traceback (most recent call last):
File "/usr/local/bin/pdf2txt.py", line 5, in <module>
pkg_resources.run_script('pdfminer3k==1.3.0', 'pdf2txt.py')
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 528, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1394, in run_script
execfile(script_filename, namespace, namespace)
File "/usr/local/lib/python2.7/dist-packages/pdfminer3k-1.3.0-py2.7.egg/EGG-INFO/scripts/pdf2txt.py", line 6, in <module>
from pdfminer.pdfinterp import PDFResourceManager, process_pdf
File "/usr/local/lib/python2.7/dist-packages/pdfminer3k-1.3.0-py2.7.egg/pdfminer/pdfinterp.py", line 5, in <module>
from .cmapdb import CMapDB, CMap
File "/usr/local/lib/python2.7/dist-packages/pdfminer3k-1.3.0-py2.7.egg/pdfminer/cmapdb.py", line 23, in <module>
from .psparser import PSStackParser
File "/usr/local/lib/python2.7/dist-packages/pdfminer3k-1.3.0-py2.7.egg/pdfminer/psparser.py", line 4, in <module>
from .utils …Run Code Online (Sandbox Code Playgroud) 我搜索了我的问题,但在两个可用问题中没有得到我的答案
基本上我想遍历每个页面,因为我只想选择具有特定文本的页面。
我用过pyPdf。它几乎适用于我可以说的 90%,pdfs但有时它不会从页面中提取信息。
我使用了以下代码:
import pyPdf
extract = ""
pdf = pyPdf.PdfFileReader(open('filename.pdf', "rb"))
num_of_pages = pdf.getNumPages()
for p in range(num_of_pages):
ex = pdf.getPage(6)
ex = ex.extractText()
if re.search(r"to be held (at|on)",ex.lower()):
print 'yes'
print ex ,"\n"
extract = extract + ex + "\n"
continue
Run Code Online (Sandbox Code Playgroud)
上面的代码有效,但有时无法提取某些页面。
我也尝试使用pdfminer,但我找不到如何逐页迭代其中的 pdf。pdfminer返回pdf的整个文本。
我使用了以下代码:
def convert_pdf_to_txt(path):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
codec = 'utf-8'
laparams = LAParams() …Run Code Online (Sandbox Code Playgroud) 在PyPDF2中pdfreader.getNumPages()给出了pdf文件的总页数.
如何使用pdfminer获取此信息?
所以我花了一个月的大部分时间来解决这个问题。我正在寻找一种方法,从由文件的 OCG(可选内容组)组织的矢量化 PDF 中提取几何元素(多段线、文本、弧线等),OCG 基本上是 PDF 图层。使用 PDFminer,我能够提取几何图形(LTCurves、LTTextBoxes、LTLines 等);使用 PyPDF2,我能够查看 PDF 中有多少个 OCG,尽管我无法访问与该 OCG 相关的几何图形。我在网上看到并尝试过一些黑客脚本可能能够解决这个问题,但无济于事。我什至求助于在文本编辑器中打开原始 PDF 数据,并半途而废地删除其中的部分内容,看看是否可以想出一些自定义解析技术来做到这一点,但同样无济于事。Adobe 的 PDF 手册充其量只是最少的,因此当我尝试创建解析器时这没有任何帮助。有谁知道这个问题的解决方案。
在这一点上,我愿意接受任何语言、使用任何操作系统的解决方案(尽管我更喜欢在 Windows 或 Linux 上使用 Python 3 的解决方案),只要它是开源/免费的。
这里有人能帮助结束这个黑暗的兔子洞吗?非常感激!
我对 python 和 PDFminer 很陌生,这对我来说有点复杂,我想要实现的是从 pdf 文件或幻灯片中提取每个页面的标题。
\n我的方法是获取文本行和每页字体大小的列表,然后我将选择最大的数字作为通常以较高字体大小编写的幻灯片标题。
\n这就是我到目前为止所做的:
\n假设我想从这个 pdf 文件中获取第 8 页的标题。文件样本
\n第 8 页内容如下所示:
\n\n这是获取所有页面每行字体大小的代码:
\nfrom pdfminer.high_level import extract_pages\nfrom pdfminer.layout import LTTextContainer, LTChar,LTLine,LAParams\nimport os\npath=r\'cov.pdf\'\n\nExtract_Data=[]\n\nfor page_layout in extract_pages(path):\n for element in page_layout:\n if isinstance(element, LTTextContainer):\n for text_line in element:\n for character in text_line:\n if isinstance(character, LTChar):\n Font_size=character.size\n Extract_Data.append([Font_size,(element.get_text())])\nRun Code Online (Sandbox Code Playgroud)\n生成的列表Extract_Data适用于 pdf 文档的所有页面。我的问题是如何获取文档每个页面(迭代)的列表?
仅第 8 页的预期输出,依此类推,每个页面/然后如果我想选择页面标题,它将是字体大小值最高的项目(行):
\n[[32.039999999999964, \'Pandemic declaration \\n\'],\n [24.0, \' \\n\'],\n [24.0, \' \\n\'],\n [24.0,\n …Run Code Online (Sandbox Code Playgroud) pdfminer ×9
pdf ×7
python ×6
pypdf ×2
docx ×1
linux ×1
ocg ×1
python-2.7 ×1
python-3.x ×1
python-docx ×1