PDF 内の画像を抽出しようとしています。私が扱っているファイルは2ページ以上です。ページ 1 はテキストで、ページ 2 ~ n は画像です (1 ページに 1 つ、または複数のページにまたがる単一の画像である可能性があります。元のページを制御することはできません)。
ページ 1 からテキストを解析することはできますが、画像を取得しようとすると、画像ページごとに 3 つの画像が取得されます。保存が困難な画像の種類を判断できません。さらに、各ページの 3 つの写真を単一の img として保存しようとしても、結果が得られません (OSX のファインダーで開くことができないため)。
サンプル:
fp = open('the_file.pdf', 'rb')
parser = PDFParser(fp)
document = PDFDocument(parser)
rsrcmgr = PDFResourceManager()
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
for page in PDFPage.create_pages(document):
interpreter.process_page(page)
pdf_item = device.get_result()
for thing in pdf_item:
if isinstance(thing, LTImage):
save_image(thing)
if isinstance(thing, LTFigure):
find_images_in_thing(thing)
def find_images_in_thing(outer_layout):
for thing in outer_layout:
if isinstance(thing, LTImage):
save_image(thing)
save_image
pageNum_imgNum
mode のformat で画像ごとにファイルを書き込むか'wb'
、 mode でページごとに 1 つの画像を書き込み'a'
ます。多くのファイル拡張子を試してみましたが、うまくいきませんでした。
私が調べたリソース:
http://denis.papathanasiou.org/posts/2010.08.04.post.html (時代遅れの pdfminer バージョン) http://nedbatchelder.com/blog/200712/extracting_jpgs_from_pdfs.html