统计PDF中的彩色页面



我从另一个StackOverflow帖子中改编了这段代码。它将PDF页面转换为图像,并检查颜色的色相/饱和度值。我唯一的问题是它很慢,25页几乎需要一分钟。有谁能告诉我怎样才能让它更有效率吗?

from pdf2image import convert_from_path
import numpy as np
def main():
images = convert_from_path("example1.pdf", 500,poppler_path=r'C:Program Filespoppler-0.68.0bin')
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
print(color)
print(sw)

如果你只是想粗略地检测(可能是大的)颜色区域,使用dpi=500将会对你的内存产生不必要的大需求。

我会尝试dpi=72甚至dpi=36,看看它是否仍然足够准确。

更进一步,如果你想加快速度,那么衡量什么是慢的是很重要的——没有必要加快你处理的某些方面,而这些方面只需要1%的时间。因此,测量将所有PDF页面转换为PIL Image所需的时间,然后测量分析每个页面的时间,以便您知道在哪里指导您的工作。

如果每个页都需要很长时间来处理,请考虑并行处理这些页。

try use this

import PyPDF2
pdf_file = open('nama_file.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
colored_page_count = 0
for page in pdf_reader.pages:
if page.get("/ColorSpace") == "/DeviceRGB":
colored_page_count += 1
print(colored_page_count)
pdf_file.close()

免责声明我是borb的作者,这个答案中使用的库

根据页面中具体的颜色,您可以使用borb来完成此操作。

borbEventListener的概念,它在呈现指令时得到通知(当它们从解析器出来时)。

这应该和简单地阅读PDF一样快。

编辑:根据你的评论,我加入了以下例子的链接。

  1. 按字体颜色过滤文本
  2. 从PDF中检索所有嵌入图像

这些示例可能看起来很长,但它们是完整的(从某种意义上说,它们将首先创建PDF,然后从中提取内容/信息)

最新更新