簡體   English   中英

如何使用 python 從 pdf 文件中提取圖像、視頻和音頻

[英]How to extract images, video and audio from a pdf file using python

我需要一個 python 程序,它可以從 pdf 中提取視頻音頻和圖像。我嘗試過使用 PyPDF2 和 Pillow 等庫,但我無法讓這三個庫都起作用,更不用說一個了。

我認為您可以使用pymupdf實現此目的。

要提取圖像,請參閱以下內容: https://pymupdf.readthedocs.io/en/latest/recipes-images.html#how-to-extract-images-pdf-documents

對於聲音和視頻,這些本質上是Annotation類型。

以下“注釋”function 將獲取 PDF 頁面的特定類型的所有注釋:

https://pymupdf.readthedocs.io/en/latest/page.html#Page.annots

Annotation類型如下:

https://pymupdf.readthedocs.io/en/latest/vars.html#annotationtypes

獲得注釋后,我認為您可以使用get_file方法提取內容(請參閱: https://pymupdf.readthedocs.io/en/latest/annot.html#Annot.get_file

希望這可以幫助!

@George Davis-Diver 可以給我一個帶視頻的例子 PDF 嗎?

聲音和視頻嵌入在它們特定的注釋類型中。 兩者都沒有 FileAttachment 注釋,因此無法使用各自的方法。

對於聲音注釋,您必須使用 `annot.get_sound()``,它返回一個字典,其中一個鍵是二進制聲音 stream。

另一方面,圖像肯定作為 FileAttachment 注釋嵌入 - 但這是不尋常的。 通常它們獨立地顯示在頁面上。 找出一個頁面的圖像是這樣的:

import fitz
from pprint import pprint
doc=fitz.open("your.pdf")
page=doc[0]  # first page - use 0-based page numbers
pprint(page.get_images())
[(1114, 0, 1200, 1200, 8, 'DeviceRGB', '', 'Im1', 'FlateDecode')]
# extract the image stored under xref 1114:
img = doc.extract_image(1114)

這是一個包含圖像元數據和二進制圖像 stream 的字典。請注意,PDF 單獨存儲圖像的透明度數據,因此需要額外注意 - 但讓我們推遲到實際發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM