在Windows 7上使用Python 2.7从PDF文件中提取文本

时间:2018-01-05 13:48:01

标签: python pdf pypdf pdftotext pdfminer

我一直在使用PyPDF2使用Python 2.7提取this PDF文件(使用pdfTeX-1.40.0生成)中包含的文本。它工作正常,但现在我必须从LibreOffice 4.3生成的相同pdf中提取文本,结果就是这个(不是完整的):

˜ ! ˜"!#$  %
˘ˇˆ˙˝
ˇ
˝%&˘
%'%
˛˚˛˜ !
"#$#"%$&
'##()˛˚˛
˛˚˛˜  !"#$#"%$%
*+!

这是我的代码:

    pdfFileObj = open(filePath, 'rb')
    pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
    pageText = ""
    for pageID in range(0, pdfReader.numPages): 
        pageObj = pdfReader.getPage(pageID)
        pageText = pageText + "\n" + str(pageObj.extractText().encode('utf-8')))
    for line in pageText:
        extInfo = extInfo + line
    pdfFileObj.close()

    if string2search.replace(' ','') in extInfo:
        stringPresent = True
    else:
        stringPresent = False

Windows机器有什么简单的工作解决方案吗? 我找到了关于此的this主题,但没有解决方案。 我也尝试使用this主题中的PDFMiner,但是我收到了这个错误:

UnicodeEncodeError: 'ascii' codec cant encode character u'\xe9' in position 0: ordinal not in range (128)

2 个答案:

答案 0 :(得分:0)

我相信你的问题是读前的编码

<div  data-percent="" id="datadiv"></div>

    <script>
        function retrieveProgressbar() {
            $.ajax({
                type: "post",
                url: "retrieveprogressbar.php",
                data: "progressbar",
                success: function (data) {
                    //$("#datadiv").attr("data-percent", data);
                    // OR
                    $(this).attr("data-percent", data);
                }
            });
        }

        retrieveProgressbar();
    </script>

答案 1 :(得分:0)

我终于找到了解决方法。

1.-下载适用于Windows的Xpdf工具

2.-将pdpdotext.exe从xpdf-tools-win-4.00 \ bin32复制到C:\ Windows \ System32,再复制到C:\ Windows \ SysWOW64

3.-使用代码:

import subprocess

try:
    extInfo = subprocess.check_output('pdftotext.exe '+filePath + ' -',shell=True,stderr=subprocess.STDOUT).strip()
except Exception as e:
    print (e) 

if string2search in extInfo:
    stringPresent = True
else:
    stringPresent = False