首页 > 解决方案 > 如何在 Python 中检查 PDF 页面是否有颜色?

问题描述

我有包含 N 页的 PDF。我如何计算彩色和非彩色(黑白)页面。

示例:如果我给 100 页 PDF 文件作为输入,它应该说 X 页是彩色的,y 页是非彩色的。

标签: pythonpython-3.xpdfcolors

解决方案


您可以将 PDF 转换为图像(例如使用 pdf2image),然后分析不同的通道。例如,使用 HSV,如果页面仅包含黑白,则 H 和 S 通道应为 0 或接近 0。

import pdf2image
import numpy as np

images = convert_from_path('example.pdf')
sw=0
color=0
for image in images:
    img = np.array(image.convert('HSV'))
    hsv_sum = img.sum(0).sum(0)
    if hsv_sum[0] == 0 and hsv_sum[1] == 0:
        sw += 1
    else:
        color += 1

给我 sw=1 和 color=1 的示例 pdf,其中一个站点黑色文本和一侧红色文本,每个都在白色背景上。

如果背景不是全白且文本全黑(例如扫描的 PDF),您可能需要搜索小于部分像素的 hsv_sum[0:1]。


推荐阅读