如何避免在 python 中从 PDF 文件中提取小图像元素?
How can I avoid extracting small image elements from PDF file in python?
使用 fitz(PyMuPDF 模块)
使用以下代码提取所有图像,以及小图标。我必须避免提取那些图标并只获取图像。
import fitz
file = fitz.open("example.pdf")
pdf = fitz.open(file)
page = len(file)
for pic in range(page):
image_list = pdf.getPageImageList(pic)
j = 1
for image in image_list:
xref = image[0]
pix = fitz.Pixmap(pdf, xref)
#print(len(pix)+ 88)
if pix.n < 5:
pix.writePNG(f'{pic}_{j}.png')
else:
pix1 = fitz.open(fitz.csRGB, pix)
pix1.writePNG(f'{xref}_{pic}.png')
pix1 = None
pix = None
j = j + 1
print(f'Total images on page {pic} are {len(image_list)}')
get_page_images()
returns 页面引用的所有图像(直接或间接)的列表。
>>> doc = fitz.open("pymupdf.pdf")
>>> imglist = doc.getPageImageList(0)
>>> for img in imglist: print img
((241, 0, 1043, 457, 8, 'DeviceRGB', '', 'Im1'))
在上面的示例中 doc.getPageImageList(0)
returns 页面上显示的图像列表。每个条目看起来像 [xref, smask, width, height, bpc, colorspace, alt. colorspace, name]
因此,在上面的示例中,值 1043
和 457
对应于图像的宽度和高度。您可以提供一个 if condition
来消除小尺寸 image/icons.
更多信息请见 this doc link
使用 fitz(PyMuPDF 模块) 使用以下代码提取所有图像,以及小图标。我必须避免提取那些图标并只获取图像。
import fitz
file = fitz.open("example.pdf")
pdf = fitz.open(file)
page = len(file)
for pic in range(page):
image_list = pdf.getPageImageList(pic)
j = 1
for image in image_list:
xref = image[0]
pix = fitz.Pixmap(pdf, xref)
#print(len(pix)+ 88)
if pix.n < 5:
pix.writePNG(f'{pic}_{j}.png')
else:
pix1 = fitz.open(fitz.csRGB, pix)
pix1.writePNG(f'{xref}_{pic}.png')
pix1 = None
pix = None
j = j + 1
print(f'Total images on page {pic} are {len(image_list)}')
get_page_images()
returns 页面引用的所有图像(直接或间接)的列表。
>>> doc = fitz.open("pymupdf.pdf")
>>> imglist = doc.getPageImageList(0)
>>> for img in imglist: print img
((241, 0, 1043, 457, 8, 'DeviceRGB', '', 'Im1'))
在上面的示例中 doc.getPageImageList(0)
returns 页面上显示的图像列表。每个条目看起来像 [xref, smask, width, height, bpc, colorspace, alt. colorspace, name]
因此,在上面的示例中,值 1043
和 457
对应于图像的宽度和高度。您可以提供一个 if condition
来消除小尺寸 image/icons.
更多信息请见 this doc link