4

私のもの:python 2.6 64ビット(pyPdf-1.13.win32.exeがインストールされています)。ウイングIDE。ウィンドウズ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でいっぱいです。一部は、Adobe pdf プリンターを使用してテキスト ドキュメントから保存されたものです (少なくとも、彼らはそのようにしたと思います)。そして、一部は画像としてスキャンされました。それらを分離し、画像のものをOCRしたかった(画像以外のものは完璧で、いじってはいけません)。

私は数日前にここでそれを行う方法を尋ねました:

PDF用バッチOCRプログラム

私が得た唯一の応答はVBであり、Pythonのみを話しました。そこで、自分の質問に対する答えを書こうと思いました。私の戦略 (上記のコードに反映されています) は次のとおりです。それが単なる画像の場合、その正規表現は空のリストを返します。テキストがある場合、正規表現 (2 文字以上の英数字を含む任意の単語) は、u'word' (Python では、これは Unicode 文字列だと思います) のようなものが取り込まれたリストを返します。

したがって、コードは機能するはずであり、オープンソースソフトウェアを使用して他のスレッドを終了する最初のステップを実行できます (イメージ化された pdf から ocrd を分離します) が、このフィルターエラーに対処する方法がわかりません。役に立った。誰かが知っていれば、非常に役に立ちます。

この素材の使い方がよくわかりません。pyPdf speak でのフィルターの意味がわかりません。ocrdであるにもかかわらず、実際にはpdfなどを読み取ることができないと言っていると思います。おかしなことに、非 ocrd の 1 つと ocrd pdf の 1 つを python ファイルと同じフォルダーに入れました。フィルターエラー。以下に単一のコードを投稿します。THX。

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

4

2 に答える 2

2

pyPdfソースフォルダー内のpyPdfのfilter.pyをhttp://vaitls.com/treas/pdf/pyPdf/filters.pyに置き換えます。それは私のために働いた。

于 2011-07-04T13:52:49.410 に答える
1

LZWは、GIF や PDF で使用される圧縮形式です。で利用可能なフィルターをpyPdf.filters見ると、LZW がないことがわかります。したがって、NotImplementedError.投稿したリンクは、誰かが LZW フィルターを実装した subversion リポジトリのコードへのリンクです。

于 2011-05-20T09:17:54.053 に答える