赞
踩
任务要求:
将每页需要的内容读取出来放到不同的文件夹,找出含有指定内容的页面创建文件夹,然后把相关的内容和图片放进去。
pdf 读起来比较方便, 按页码读取文件:
- import pdfplumber
- from PIL import Image
- import cv2
- import numpy as np
- import re
- import os
- import logging
- import io
-
-
- def create_folder(folder_name):
- if not os.path.exists(folder_name):
- os.makedirs(folder_name)
-
-
- def CountPages(file_path):
- """
- 根据编号创建文件夹
- :param file_path:
- :return:
- """
- with pdfplumber.open(file_path) as pdf:
- count = 0
- for page in pdf.pages:
- count += 1
- print(f"----------- 第{count}页 ----------- \n\n")
-
- text = page.extract_text()
- matches = re.findall(r'编号\s*(\S+)', text)
-
- if matches:
- for match in matches:
- if '*' in match:
- logging.warning(f'编号名称存在不能使用的字符,需要单独调整,Page {count}, 编号后面的内容: {match}')
- folder_name = 'new_files/' + f'000 error Page_{count}'
- # continue
- else:
- # folder_name = './new_files/' + match
- folder_name = './new_files/' + f'{count}_' + match
- create_folder(folder_name)
-
- images = page.images
- print(f'images: {images}')
- for i, img in enumerate(images):
- # x0, y0, x1, y1 = img["x0"], img["y0"], img["x1"], img["y1"]
- img_stream = img["stream"]
-
- # 从流中提取图像数据
- img_data = img_stream.get_data()
-
- # 使用数据创建新图像
- pil_img = Image.open(io.BytesIO(img_data))
-
- # 将图像保存为 JPG
- img_filename = f"{folder_name}/image_{count}_{i + 1}.jpg"
- pil_img.save(img_filename, format="JPEG")
- print(f"保存图像:{img_filename}")
-
- return count
-
-
- """
- 1 需要先将文档转换为 pdf
- 2 文件夹名称不要页码改 39 行
- 3 编号最好不要出现 * 这种不能作为文件名的符号
- 4 filePath 改文件路径
- 5 保存文件在同级文件目录下
- """
-
- # filePath = r"E:\11-normal_program\registration_card.pdf"
- filePath = r"./registration_card.pdf"
- CountPages(filePath)

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。