Python、pyPdf、Adobe PDF OCR 错误 : unsupported filter/lzwdecode

标签 python ocr pypdf

我的东西: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(非图像是完美的,不应该被弄乱)。

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

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 的过滤器问题。这让我头疼,我需要一些帮助。

编辑:

Google 搜索发现了这个,但我不知道它是怎么回事:

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

最佳答案

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

关于Python、pyPdf、Adobe PDF OCR 错误 : unsupported filter/lzwdecode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6053064/

相关文章:

python - 为什么这个 Python 半正矢公式会产生错误的答案?

opencv - 如何提取框架中文本的区域?

c# - 在 C# 的 winform 应用程序中获取 OCR 期间提取的第一个字母的坐标

python - 将搜索添加到文件类型对象的廉价方法

python - 在 python 解释器中输入一个对象的名称 - 它调用什么方法?

python - 绘制到 reportlab pdf 的图像大于 pdf 纸张大小

python - 我有两个变量,我知道它们是相等的,但我的 if 语句不能识别这个?

c++ - 用于访问 BeagleBone Black 的库(3.8 Kerne - Angstrom)

python - 使用 map 解包 iterable

c++ - 从两个图像中选择最佳 OCR 输入