如何在Python中检查PDF页面是否着色?

T.S*_*LAM 4 python pdf colors python-3.x

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

示例:如果我提供 100 页 PDF 文件作为输入,它应该显示 X 个页面是彩色的,y 个页面是非彩色的。

chi*_*ing 5

您可以将 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
Run Code Online (Sandbox Code Playgroud)

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

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