我一直在嘗試大約一個星期來自動從pdf中提取圖像。不幸的是,我在這裏找到的答案沒有任何幫助。我使用pypdf2在相同的代碼中看到了多個變體,全部都是['/XObject']
,這導致了KeyError
。使用python查找和識別PDF中的流
我正在尋找的東西似乎隱藏在流中,我在pypdf2
的字典中找不到(即使在遞歸探索整個結構之後,在我能找到的每個間接對象上調用.getObject()
)。
使用pypdf2
我已經寫了一頁pdf並打開它使用Notepad++
,以找到一些流與/FlateDecode
過濾器。
pdfrw
稍微更多的幫助,讓我用PdfReader(path).pages[page].Contents.stream
獲得一個流(不知道如何讓別人)。
使用zlib
,我解壓縮它,得到的東西開始:
/Part <</MCID 0 >>BDC
(它也含有大量的浮點數的,正面和負面的)
從我能找到,BDC
與ghostscript有關。
在這一點上,我放棄了,並決定尋求幫助。
是否有一個Python的工具,至少,提取所有流(並確定FlateDecode
標籤?)
,是有辦法,我找出什麼是隱藏在那裏?我預計一些圖像格式的開始標記,這顯然不是。我如何進一步解析這個結果來找到可能隱藏在那裏的圖像?
我正在尋找一些我可以應用於任何正確顯示的PDF的東西。一些工具可以進一步解析,或者至少幫助我理解流,甚至可以幫助我理解正在發生的事情。
編輯:正如帕特里克所指出的,我似乎在咆哮着錯誤的樹。我找到了流,因爲我在Notepad++
中打開PDF時,或者運行用於解析PDF的各種Python腳本時找不到任何xObjects
。我設法找到了我懷疑的圖像,沒有xObject
標籤,但看起來像是一個流標籤 - 雖然信息沒有被壓縮。
有很多生成PDF文件的工具(其中很多都是邊界缺陷),如果沒有看到特定文檔的樣本會給您帶來麻煩,很難給出建議。有一些你可以分享的樣本嗎? –
@PauloScardine對不起,我意識到我的措辭意味着我正在尋找特定PDF的幫助。 PDF文檔在閱讀器中正確顯示,我可以毫無問題地從中提取頁面。只是找不到任何關於流內容的參考(或者任何可以輕鬆爲我做的python工具,那也會很好)。 無論如何,尋找適用於正確顯示的任何PDF文檔的內容。 – user1999728
你*有東西開始: '/ Part <> BDC' *和*在這一點放棄*?爲什麼?您成功抵達了PDF內容流。你只需要採用pdf規範ISO 32000-1來解釋流內容。 – mkl