2017-05-16 4 views
1

でPDFから画像を抽出する際、私はこのポスト下記のPDFファイルから画像を読み取るしようとしています: Extract images from PDF without resampling, in python?変更カラースキームは、Python

これまでのところ私は、PDFから画像ファイルを取得するために管理し、それが含まれていますCWYKのカラースキームと画像が混乱している。

私のコードは以下の通りです:

import PyPDF2 
import struct 

pdf_filename = 'document.pdf' 
pdf_file = open(pdf_filename, 'rb') 
cond_scan_reader = PyPDF2.PdfFileReader(pdf_file) 
page = cond_scan_reader.getPage(4) 
xObject = page['/Resources']['/XObject'].getObject() 
for obj in xObject: 
    print(xObject[obj]) 
    if xObject[obj]['/Subtype'] == '/Image': 
     if xObject[obj]['/Filter'] == '/DCTDecode':       
      data = xObject[obj]._data    
      img = open("image" + ".jpg", "wb") 
      img.write(data) 
      img.close() 

pdf_file.close() 

ポイントは、私が保存するときに、色はすべて奇妙であるということです、私はそれがためにカラースキームのだと信じています。私は、コンソールに次のようにあります

{'/Type': '/XObject', '/Subtype': '/Image', '/Width': 1122, '/Height': 502, '/Interpolate': <PyPDF2.generic.BooleanObject object at 0x1061574a8>, '/ColorSpace': '/DeviceCMYK', '/BitsPerComponent': 8, '/Filter': '/DCTDecode'} 

あなたが見ることができるように、ColorSpaceではCMYKである、と私は画像の色が変なある理由です信じています。

Dolhphin with weird colors

これは、元の画像(それは、PDFファイル内にある)である:私が持っているイメージだ

Original

は、誰も私を助けることができますか?

ありがとうございます。 イスラエル

答えて

0

PDFに含まれているCMYKモードのJPGイメージは、反転する必要があります。

しかし、PILでは、CMYKモードイメージの反転はサポートされていません。 numpyを使って解決します。

完全なソースは下のリンクにあります。 https://github.com/Gaia3D/pdfImageExtractor/blob/master/extrectImage.py

imgData = np.frombuffer(img.tobytes(), dtype='B') 
invData = np.full(imgData.shape, 255, dtype='B') 
invData -= imgData 
img = Image.frombytes(img.mode, img.size, invData.tobytes()) 
img.save(outFileName + ".jpg") 
関連する問題