您的位置:首页 > 房产 > 建筑 > 如何开发一个微信公众号_海外手机充值app下载_百度指数支持数据下载吗_爱站网官网关键词

如何开发一个微信公众号_海外手机充值app下载_百度指数支持数据下载吗_爱站网官网关键词

2025/1/9 5:01:38 来源:https://blog.csdn.net/weixin_41467446/article/details/144961587  浏览:    关键词:如何开发一个微信公众号_海外手机充值app下载_百度指数支持数据下载吗_爱站网官网关键词
如何开发一个微信公众号_海外手机充值app下载_百度指数支持数据下载吗_爱站网官网关键词

有的学校的论文只能在线预览,且存在水印。为保存到本地方便查阅,可以使用以下工作流进行处理:

  1. 用浏览器打开在线论文预览界面;
  2. 使用fastone capture软件截长图;
  3. 将论文按页数进行分割;
  4. 按照阈值消除浅色的背景水印;
  5. 整合为A4尺寸的PDF文件;
  6. 使用WPS将PDF转为OCR版本(可选)。

以下代码为上述流程的第三、四、五步,注释都在代码中,随取随用。

import os
from PIL import Image
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
import numpy as npdef process_image(input_image_path, output_dir="split_images", total_pages=138, watermark_threshold=230):"""处理图片并生成PDFArgs:input_image_path: 输入图片路径output_dir: 输出目录路径total_pages: 总页数watermark_threshold: 水印识别阈值"""# 创建输出文件夹if not os.path.exists(output_dir):os.makedirs(output_dir)# 打开原始图片img = Image.open(input_image_path)width, height = img.size# 计算新的高度(total_pages的整数倍)new_height = ((height + total_pages - 1) // total_pages) * total_pagesimg = img.resize((width, new_height), Image.Resampling.LANCZOS)height = new_height# 计算每份高度slice_height = height // total_pagesremaining_height = height % total_pages  # 此时应该为0# 分割并保存图片image_files = []for i in range(total_pages):# 计算当前切片的位置top = i * slice_heightbottom = top + slice_heightif i == total_pages - 1:  # 最后一片加上余数bottom += remaining_height# 裁剪图片slice_img = img.crop((0, top, width, bottom))# 去除水印处理img_array = np.array(slice_img)# 设置阈值来识别水印mask = np.all(img_array > watermark_threshold, axis=2)# 将水印区域替换为背景色img_array[mask] = [255, 255, 255]  # 替换为白色# 转回PIL图片processed_img = Image.fromarray(img_array)# 保存处理后的切片output_file = os.path.join(output_dir, f"slice_{i+1:03d}.png")processed_img.save(output_file)image_files.append(output_file)return image_filesdef create_pdf(image_files, pdf_file="combined_output.pdf"):"""将图片合并为PDFArgs:image_files: 图片文件路径列表pdf_file: 输出PDF文件路径"""c = canvas.Canvas(pdf_file, pagesize=A4)a4_width, a4_height = A4for img_file in image_files:img = Image.open(img_file)# 计算缩放比例以适应A4纸张aspect = img.width / img.heightif aspect > A4[0] / A4[1]:  # 如果图片太宽new_width = a4_widthnew_height = new_width / aspectelse:  # 如果图片太高new_height = a4_heightnew_width = new_height * aspect# 居中放置图片x = (a4_width - new_width) / 2y = (a4_height - new_height) / 2# 添加图片到PDFc.drawImage(img_file, x, y, width=new_width, height=new_height)c.showPage()c.save()def main(input_image_path, output_dir="split_images", pdf_file="combined_output.pdf", total_pages=138, watermark_threshold=230):"""主函数Args:input_image_path: 输入图片路径output_dir: 输出目录路径pdf_file: 输出PDF文件路径total_pages: 总页数watermark_threshold: 水印识别阈值"""image_files = process_image(input_image_path, output_dir, total_pages, watermark_threshold)create_pdf(image_files, pdf_file)print("处理完成!")print(f"切片图片保存在: {output_dir}")print(f"PDF文件保存为: {pdf_file}")if __name__ == "__main__":# 示例使用input_path = r"C:\Users\Administrator\Desktop\test\2025-01-06_102531.png"main(input_path)

 最后得到的PDF是图片格式的,可以使用WPS转为OCR版本,可以直接划取文字。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com