PDFからの画像抽出を自動化するために約1週間試みてきました。残念ながら、ここで見つけた答えは何の役にも立ちませんでした。pypdf2 を使用して同じコードで複数のバリエーションを見てきましたが、すべてが['/XObject']
含まれており、KeyError
.
私が探しているものは、ストリームに隠れているようで、pypdf2
の辞書にはありません (構造全体を再帰的に探索し、.getObject()
見つけたすべての間接オブジェクトを呼び出した後でも)。
を使用pypdf2
して、pdf から 1 ページを書き、 を使用してそれを開き、フィルターを使用Notepad++
していくつかのストリームを見つけました。/FlateDecode
pdfrw
APdfReader(path).pages[page].Contents.stream
ストリームを取得するために使用できるようになりました(他のストリームを取得する方法はわかりません)。
を使用zlib
して解凍すると、次のようなものが得られました。
/Part <</MCID 0 >>BDC
(また、正と負の両方の多くの浮動小数点数が含まれています)
私が見つけたBDC
ものから、ゴーストスクリプトと関係があります。
この時点で私はあきらめ、助けを求めることにしました。
少なくとも、すべてのストリームを抽出する (およびFlateDecode
タグを識別する) Python ツールはありますか?
そこに何が隠されているかを特定する方法はありますか?何らかの画像形式の開始タグを期待していましたが、これは明らかにそうではありません。この結果をさらに解析して、そこに隠されている可能性のある画像を見つけるにはどうすればよいですか?
適切に表示される PDF に適用できるものを探しています。さらに解析するためのツール、または少なくともストリームを理解するのに役立つツール、または何が起こっているのかを理解するのに役立つリファレンスです。
編集:パトリックが指摘したように、私は間違ったツリーを吠えていました。xObjects
で PDF を開くときNotepad++
、または PDF の解析に使用されるさまざまな python スクリプトを実行するときに何も見つからなかったので、ストリームに行きました。私は、タグのない画像であると思われるものを見つけることができましたxObject
が、情報は圧縮されていませんが、ストリームタグのように見えます.