标签: pdfminer

pdfminer.high_level 未显示

我正在尝试使用 .pdf 文件将 PDF 转换为纯文本pdfminer.high_level.extract_text()。我不断收到此错误消息:

File "/Users/ian/Documents/Resume Selector Project/resumeBackend.py", line 5, in digestResume
    text = pdfminer.high_level.extract_text
AttributeError: module 'pdfminer' has no attribute 'high_level'
Run Code Online (Sandbox Code Playgroud)

起初,我认为这可能是我的模块未在系统范围内安装的问题,但我相信我已经通过在项目所在的同一目录中运行 pdf2txt.py 消除了这个可能的原因。

我将附上我的代码,以方便解决此问题。

File "/Users/ian/Documents/Resume Selector Project/resumeBackend.py", line 5, in digestResume
    text = pdfminer.high_level.extract_text
AttributeError: module 'pdfminer' has no attribute 'high_level'
Run Code Online (Sandbox Code Playgroud)

python module python-3.x pdfminer

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

PDF Miner PDFEncryptionError

我正在尝试从pdf文件中提取文本,然后尝试识别引用.我正在使用pdfminer 20140328.使用未加密的文件,它运行良好,但我现在得到一个文件,我得到:

_initialize_password中的文件"C:\ Tools\Python27\lib\site-packages\pdfminer\pdfdocument.py",第348行

提出PDFEncryptionError('未知算法:param =%r'%param)

pdfminer.pdfdocument.PDFEncryptionError:未知算法:param = {'CF':{'StdCF':{'长度':16,'CFM':/ AESV2,'AuthEvent':/ DocOpen}},'O':'}\xe2>\xf1\xf6\xc6\x8f\xab\x1f"O\x9bfc\xcd\x15\xe09~2\xc9 \\ x87\x03\xaf\x17f>\x13\t ^ K\x99','过滤':/标准,'P': - 1548,'长度':128,'R':4,'U':'Kk>\x14\xf7\xac\xe6\x97\xb35\xaby!\ x04 |\x18(\ xbfN ^ Nu\x8aAd\x00NV\xff\xfa\x01\x08','V':4,'StmF':/ StdCF,'StrF':/ StdCF}

我检查了pdfinfo,这个文件似乎是AES加密的,但我可以毫无问题地打开它.所以我有两个问题:

  • 首先:如何加密文档但我可以在没有密码的情况下打开它?

  • 其次:我如何使PDFMiner正确读取该文件?在某处我读安装pycrypto以获得额外的算法,但它并没有解决我的问题.

非常感谢.

python pdf encryption pdfminer

9
推荐指数
1
解决办法
3197
查看次数

如何在 python 3 中使用 PDFminer.six?

我想使用 pdfminer.six 这是一个工具,可以与 Python3 一起用于从 PDF 文档中提取信息。问题是根本没有好的文档,也没有关于如何使用该工具的源代码示例。

我已经尝试过 StackOverflow 中的一些代码,但没有奏效。下面是我的代码。

from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io 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 = open(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 …
Run Code Online (Sandbox Code Playgroud)

python-3.x pdfminer pypdf2

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

PDFminer:使用其字体信息提取文本

我发现这个问题,但它使用命令行,我不想使用子进程在命令行中调用Python脚本并解析HTML文件以获取字体信息.

我想使用PDFminer作为库,我发现这个问题,但它们只是提取纯文本,没有其他信息,如字体名称,字体大小等.

python text-extraction pdfminer

8
推荐指数
3
解决办法
9070
查看次数

Python PDFMiner:如何将大纲链接到基础文本

我正在尝试解析 PDF 并创建某种层次结构。考虑输入

Title 1
some text some text some text some text some text some text some text 
some text some text some text some text some text some text some text 

Title 1.1
some more text some more text some more text some more text 
some more text some more text some more text some more text 
some more text some more text 

Title 2
some final text some final text 
some final text some final text some …
Run Code Online (Sandbox Code Playgroud)

python pdf parsing pdfminer

8
推荐指数
1
解决办法
1418
查看次数

使用Python解析PDF教科书中的索引页面

我必须将PDF页面中的文本从缩进中提取到CSV文件中.

PDF教科书的索引页面:

我应该将文本拆分为类和子类型层次结构以及页码.例如,在图像中, Application server是类,Apache Tomcat是页码275中的子类

这是CSV的预期输出:

我使用Tika解析器来解析PDF,但是在解析的内容中没有正确维护缩进(不是唯一的),以便将文本拆分为类和子类.

这是解析文本的样子:

任何人都可以建议我这个要求的正确方法吗?

python pdftotext pdfminer ner natural-language-processing

8
推荐指数
1
解决办法
865
查看次数

python pdfminer 将 pdf 文件转换为一大块字符串,单词之间没有空格

我使用的以下代码主要取自 DuckPuncher 对这篇文章Extracting text from a PDF file using PDFMiner in python? 将 pdf 转换为文本文件:

def convert_pdf_to_txt(path):
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    fp = open(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)
    fp.close()
    device.close()
    str = retstr.getvalue()
    retstr.close()
    return str
Run Code Online (Sandbox Code Playgroud)

使用以下代码下载pdf并存储在我的本地目录中并存储在我的本地目录中。它工作得很好。

import requests
url = 'link_to_the_pdf'
file_name = './name.pdf' …
Run Code Online (Sandbox Code Playgroud)

python-3.x pdfminer

8
推荐指数
1
解决办法
1635
查看次数

将 CID 字体代码解码为等效的 ASCII 字符

我正在尝试从一堆 PDF 中挖掘一些文本,其中一些在输出中嵌入了CID 字体

(cid:80)(cid:72)(cid:87)(cid:68)(cid:70)(cid:76)(cid:87)(cid:76)(cid:72)(cid:86)(cid:3)
(cid:177)(cid:3)(cid:71)(cid:72)(cid:191)(cid:81)(cid:72)(cid:71)(cid:3)(cid:69)(cid:92
(cid:3)(cid:56)(cid:49)(cid:3)(cid:43)(cid:68)(cid:69)(cid:76)(cid:87)(cid:68)(cid:87)
(cid:3)(cid:68)(cid:86)(cid:3)(cid:70)(cid:76)(cid:87)(cid:76)(cid:72)(cid:86)(cid:3)
(cid:90)(cid:76)(cid:87)(cid:75)(cid:3)(cid:80)(cid:82)(cid:85)(cid:72)(cid:3)(cid:87)
(cid:75)(cid:68)(cid:81)(cid:3)(cid:20)(cid:19)(cid:3)
Run Code Online (Sandbox Code Playgroud)

当我查看 PDF 中的确切文本片段时,这些字母肯定可以转换为 ASCII:

pdf相应部分的截图

这可能表明蛮力解码会起作用(读取与一堆 CID 代码对应的文本片段并以这种方式创建映射),但这在许多不同的 PDF 中是否可靠?是否存在从这些 CID 代码到 ASCII 字符的可靠映射,或者是否会高度依赖于 PDF 中的字体?如何确定 CID 代码(cid:72)对应的ASCII 字符是什么?

就其价值而言,我正在使用 PDFminer 提取文本,这似乎是唯一实际报告 CID 代码的工具。如果有更好的工具可以将 PDF 转换为 HTML 或任何其他可解析的文本格式,我愿意接受其他建议!

作为一个额外的好处,这个问题似乎与其他一些未回答的问题有关,因此这里有大量的声誉:

python fonts pdfminer

7
推荐指数
1
解决办法
4523
查看次数

struct.error:unpack需要长度为16的字符串参数

使用pdfminer(pdf2txt.py)处理PDF 文件(2.pdf)时收到以下错误:

pdf2txt.py 2.pdf 

Traceback (most recent call last):
  File "/usr/local/bin/pdf2txt.py", line 115, in <module>
    if __name__ == '__main__': sys.exit(main(sys.argv))
  File "/usr/local/bin/pdf2txt.py", line 109, in main
    interpreter.process_page(page)
  File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfinterp.py", line 832, in process_page
    self.render_contents(page.resources, page.contents, ctm=ctm)
  File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfinterp.py", line 843, in render_contents
    self.init_resources(resources)
  File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfinterp.py", line 347, in init_resources
    self.fontmap[fontid] = self.rsrcmgr.get_font(objid, spec)
  File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfinterp.py", line 195, in get_font
    font = self.get_font(None, subspec)
  File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfinterp.py", line 186, in get_font
    font = PDFCIDFont(self, spec)
  File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdffont.py", line 654, in __init__ …
Run Code Online (Sandbox Code Playgroud)

python pdf pdf-parsing pdftotext pdfminer

7
推荐指数
1
解决办法
3984
查看次数

从 PDF 文件中提取文本时,使用 Python 将 (cid:&lt;number&gt;) 替换为字符

我用 Python 编写了一个从 PDF 文件中提取文本的代码。但对于某些文件,我得到一些奇怪的输出。这是我的代码:

\n
import requests\n\nfrom io import BytesIO\nfrom pdfminer.high_level import extract_text, extract_pages\n\npdf_link = 'https://www.neerach.ch/public/upload/assets/1417/MTB0321.pdf'\n\nresponse = requests.get(pdf_link)\nwith BytesIO(response.content) as data:\n        \n    num_of_pages = len(list(extract_pages(data)))\n    print('number of pages', num_of_pages)\n\n    #extract first 5 pages\n    text = extract_text(data, password='', page_numbers = None, maxpages = 5, caching=True, codec='utf-8', laparams=None)\n    text = str(text)\n    text = text.replace('\\n\\n\\n', '\\n\\n').strip()\n    print(text)\n
Run Code Online (Sandbox Code Playgroud)\n

我得到的结果:

\n
cid:3)\n(cid:3)\n(cid:3)\n(cid:3)\n\n(cid:3)\n(cid:3)\n(cid:3)\n\nNr. 3 | 2021\n\nM\xc3\xa4rz 2021\n\n(cid:3)\n(cid:57)(cid:72)(cid:85)(cid:75)(cid:68)(cid:81)(cid:71)(cid:79)(cid:88)(cid:81)(cid:74)(cid:72)(cid:81)(cid:3)(cid:71)(cid:72)(cid:86)(cid:3)(cid:42)(cid:72)(cid:80)(cid:72)(cid:76)(cid:81)(cid:71)(cid:72)(cid:85)(cid:68)(cid:87)(cid:72)(cid:86)(cid:3)\n(cid:3)\n(cid:54)(cid:70)(cid:75)(cid:88)(cid:79)(cid:72)(cid:81)(cid:3)\n(cid:3)\n(cid:54)(cid:82)(cid:93)(cid:76)(cid:68)(cid:79)(cid:72)(cid:3)(cid:39)(cid:76)(cid:72)(cid:81)(cid:86)(cid:87)(cid:72)(cid:3)\n(cid:3)\n(cid:48)(cid:76)(cid:87)(cid:87)(cid:72)(cid:76)(cid:79)(cid:88)(cid:81)(cid:74)(cid:72)(cid:81)(cid:3)(cid:39)(cid:82)(cid:85)(cid:73)(cid:89)(cid:72)(cid:85)(cid:72)(cid:76)(cid:81)(cid:72)(cid:3)\n(cid:3)\n(cid:48)(cid:76)(cid:87)(cid:87)(cid:72)(cid:76)(cid:79)(cid:88)(cid:81)(cid:74)(cid:72)(cid:81)(cid:3)(cid:68)(cid:88)(cid:86)(cid:90)(cid:108)(cid:85)(cid:87)(cid:76)(cid:74)(cid:72)(cid:85)(cid:3)(cid:57)(cid:72)(cid:85)(cid:72)(cid:76)(cid:81)(cid:72)(cid:3)\n(cid:3)\n(cid:48)(cid:76)(cid:87)(cid:87)(cid:72)(cid:76)(cid:79)(cid:88)(cid:81)(cid:74)(cid:72)(cid:81)(cid:3)(cid:46)(cid:76)(cid:85)(cid:70)(cid:75)(cid:74)(cid:72)(cid:80)(cid:72)(cid:76)(cid:81)(cid:71)(cid:72)(cid:81)(cid:3)\n\n(cid:20)(cid:3)\n\n(cid:23)(cid:3)\n\n(cid:20)(cid:21)(cid:3)\n\n(cid:21)(cid:20)(cid:3)\n\n(cid:21)(cid:24)(cid:3)\n\nMitteilungsblatt Neerach | Gemeindeverwaltung Neerach | Binzm\xc3\xbchlestrasse 14 | 8173 Neerach\n044 859 16 16 | einwohnerkontrolle@neerach.ch | www.neerach.ch\n\n(cid:3)(cid:3)(cid:3)(cid:3)(cid:3)(cid:3)(cid:3)(cid:3)\n(cid:3)\n(cid:3)\n(cid:3)\n …
Run Code Online (Sandbox Code Playgroud)

python pdf encoding pdfminer

7
推荐指数
1
解决办法
6261
查看次数