Python、pyPdf、Adobe PDF OCR 错误:不支持的过滤器 /lzwdecode

2024-01-07

我的东西:python 2.6 64 位(安装了 pyPdf-1.13.win32.exe)。翼IDE。 Windows 7 64 位。

我收到以下错误:

NotImplementedError:不支持的过滤器/LZWDecode

当我运行以下代码时:

from pyPdf import PdfFileWriter, PdfFileReader
import sys, os, pyPdf, re

path = 'C:\\Users\\Homer\\Documents\\' # This is where I put my pdfs

filelist = os.listdir(path)

has_text_list = []
does_not_have_text_list = []

for pdf_name in filelist:
    pdf_file_with_directory = os.path.join(path, pdf_name)
    pdf = pyPdf.PdfFileReader(open(pdf_file_with_directory, 'rb'))

    for i in range(0, pdf.getNumPages()):
        content = pdf.getPage(i).extractText() #this is the line what done it
        does_it_have_text = re.findall(r'\w{2,}', content) 
        if does_it_have_text == []:
            does_not_have_text_list.append(pdf_name)
            print pdf_name
        else:
            has_text_list.append(pdf_name)

print does_not_have_text_list

这里有一些背景知识。该路径充满了 pdf 文件。有些是使用 Adob​​e pdf 打印机从文本文档保存的(至少我认为他们就是这样做的)。有些被扫描为图像。我想将它们分开并 OCR 图像(非图像是完美的,不应该弄乱)。

几天前我在这里问过如何做到这一点:

PDF 批量 OCR 程序 https://stackoverflow.com/questions/6026287/batch-ocr-program-for-pdfs

我得到的唯一答案是VB,而且我只会说Python。所以我想我会尝试写一个我自己问题的答案。我的策略(反映在上面的代码中)是这样的。如果它只是一个图像,那么该正则表达式将返回一个空列表。如果它有文本,则正则表达式(表示任何具有 2 个或更多字母数字字符的单词)将返回一个列表,其中填充了诸如 u'word' 之类的内容(在 python 中,我认为这是一个 unicode 字符串)。

所以代码应该可以工作,我们可以采取第一步使用开源软件完成另一个线程(将 ocrd 与图像 pdf 分开),但我不知道如何处理这个过滤器错误,谷歌搜索也不是有帮助。所以如果有人知道的话,将会很有帮助。

我真的不知道如何使用这个东西。我不确定 pyPdf 中的过滤器意味着什么。我认为它说的是它不能真正阅读pdf之类的东西,即使它是ocrd。有趣的是,我将其中一个非 ocrd 和一个 ocrd pdf 放在与 python 文件相同的文件夹中,这仅适用于没有 for 循环的版本,所以我不知道为什么要使用创建的 for 循环来执行它们过滤器错误。我将在下面发布单个代码。谢谢。

from pyPdf import PdfFileWriter, PdfFileReader
import sys, os, pyPdf, re

pdf = pyPdf.PdfFileReader(open(my_ocrd_file.pdf', 'rb'))

has_text_list = []
does_not_have_text_list = []

for i in range(0, pdf.getNumPages()):
    content = pdf.getPage(i).extractText()
    does_it_have_text = re.findall(r'\w{2,}', content)
      print does_it_have_text

它会打印一些东西,所以我不知道为什么我在一个上出现过滤器错误,而在另一个上却没有。当我针对目录中的另一个文件(不是 ocrd 的文件)运行此代码时,输​​出在一行上是一个空字符串,在下一行上是一个空字符串,如下所示:

[]
[]

所以我也不认为这是非 ocrd pdf 的过滤器问题。这超出了我的能力范围,我需要一些帮助。

Edit:

谷歌搜索发现了这个,但我不知道该怎么理解:

http://vaitls.com/treas/pdf/pyPdf/filters.py http://vaitls.com/treas/pdf/pyPdf/filters.py


将 pyPdf 的 filter.py 替换为http://vaitls.com/treas/pdf/pyPdf/filters.py http://vaitls.com/treas/pdf/pyPdf/filters.py在你的 pyPdf 源文件夹中。这对我有用。

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

Python、pyPdf、Adobe PDF OCR 错误:不支持的过滤器 /lzwdecode 的相关文章

随机推荐