2017-09-29 156 views
0

PDFファイルを読み込もうとしていますので、イメージとして抽出できます。私はPythonでいくつかのパッケージを試しました。 PyPDF2が、 "指定された場所にxrefテーブルを見つけることができませんでした"というメッセージが表示されるたびに表示されます。x-refテーブルが見つかりませんでした。PDF

私はPDFとPythonの経験がありませんので、どんなヒントもありがとうございます。サンプルファイルは、ここで与えられている:PDFが「完全なアカウントのリンクです

https://beta.companieshouse.gov.uk/company/00002404/filing-history

を。

事前に感謝します。

答えて

1

問題のPDFが壊れています。クロスリファレンステーブルのオフセットとその中のほとんどのオブジェクトオフセットが完全に間違っています。

など。 PDFは、クロスリファレンステーブルがファイル位置24732で開始するが、位置1594356で実際に開始すると主張している。オブジェクト208のクロスリファレンステーブルエントリは、実際に1594337にある間に位置24713にあると主張する。

したがって、エラーメッセージ"指定された場所に外部参照テーブルが見つかりません"は完全に正しいです。

テーブルの最初のオフセットは、一見して最初のイメージストリームまで正確です。

オブジェクトオフセットを決定するときにPDFを生成するソフトウェアがイメージストリームの内容をカウントしたように見えます。あるいは、非常に小さなプレースホルダー画像を持つテンプレートを取り、これらの小さな画像の画像ストリームを、クロスリファレンスオフセットを更新せずにはるかに大きなストリームで置き換えました。

+0

ありがとうございました。ここに私の回避策はありますか?テキストを抽出するためにイメージに変換したいだけです。 –

+1

Adob​​e ReaderでPDFを開きます。もう一度閉じると、Adobe Readerは保存するかどうかを尋ねます。保存されたコピーが修復されます。ただし、Adobe ReaderがPDF 1.5で利用可能な機能を利用してファイルを保存している可能性がありますが、まだそれらの機能を処理できないツールやライブラリがあります。また、Adobe Readerから画像にコピーすることもできますあなたが選んだプログラム。 – mkl

+0

ありがとう、私は助言に感謝します:)これを自動化するための良い方法があるかどうか知りたいですか?私は何千もの同様のファイルを扱うことができました。 –

2

xrefテーブルのリカバリ方法に問題があるため、QPDFを使用できます。

qpdf broken.pdf repaired.pdfを実行します。ここで、broken.pdfは壊れた入力PDFであり、repaired.pdfは新しいファイル名です。

リンクしたPDFで試してみましたが、正常に動作しました。

+0

素晴らしい - ちょうど私が探していたものです。ありがとうございました! –

+0

本当にうまく動作します。ありがとう! – jorgeas80

関連する問題