1

我正在尝试从 pdf 中提取文本,这在 SO 中已多次讨论,但我仍然无法提取 pdf,保留单词之间的空格。

$python3
Python 3.5.2 (default, Sep 14 2016, 11:28:32) 
[GCC 6.2.1 20160901 (Red Hat 6.2.1-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import PyPDF2
>>> pdfFileObj = open('/var/tmp/acs%2Eaccounts%2E6b00452.pdf','rb')
>>> pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
>>> pageObj = pdfReader.getPage(0)
>>> pageObj.extractText()

这是屈服:

'TowardtheRationalDesignofNovelNoncentrosymmetricMaterials:\nFactorsIn\nuencingtheFrameworkStructures\nKangMinOk\n*DepartmentofChemistry,Chung-AngUniversity,84Heukseok-ro,Dongjak-gu,Seoul06974,RepublicofKorea\nCONSPECTUS:Solid-statematerialswithextendedstructureshaverevealed\nmanyinterestingstructure-relatedch\naracteristics.Amongmany,materials\ncrystallizinginnoncentrosymmetric(NCS)空间群吸引了大量\n\注意归因于各种卓越的功能特性su

但是,如果我pdf2txt.py直接在终端中使用,我会得到:

$pdf2txt.py '/var/tmp/acs%2Eaccounts%2E6b00452.pdf'| more

我得到输出:

文章

pubs.acs.org/accounts

走向新型非中心对称材料的合理设计:影响框架结构的因素

康敏好*

韩国首尔市铜雀区黑石路 84 号中央大学化学系 06974

CONSPECTUS:具有扩展结构的固态材料揭示了许多有趣的与结构相关的特性。其中,在非中心对称 (NCS) 空间群中结晶的材料由于具有多种卓越的功能特性而引起了广泛关注。

这是所需的输出。

我没有在我的 python 脚本中发现我做错了什么。请帮忙。

4

1 回答 1

1

遇到了同样的问题。通过深入研究pdf2txt.py脚本来解决。

我打赌pdf2txt.py来自pdfMinerpdfMiner.six对于python3)。

您应该将参数添加到pdfminer.layout.LAParams().

if not no_laparams:
    laparams = pdfminer.layout.LAParams()
    for param in ("all_texts", "detect_vertical", "word_margin", "char_margin", "line_margin", "boxes_flow"):
        paramv = locals().get(param, None)
        if paramv is not None:
            setattr(laparams, param, paramv)
else:
    laparams = None

要了解有关参数的更多信息。看看这个帖子

于 2017-06-09T12:44:11.567 回答