需求是这样的,想借助LLM来做个本地的企业知识库,整了个4000多页的pdf文件,结果这里有限制,就想着不改变程序的情况下(也没那个能力去修改。。。)来完成这个事,拆分pdf为多个小文件。
无奈拆分pdf的应用要么是收费,要么各种广告,算了,还是找个ai帮我写个脚本。
先后使用了文心一言和chatgpt,文心一言可浪费我太多时间,写出来的脚本总是报错,放弃。chatgpt一次成功。
代码如下:
import os
from PyPDF2 import PdfReader, PdfWriter
def split_pdf(input_pdf, pages_per_split):
try:
pdf = PdfReader(input_pdf)
total_pages = len(pdf.pages)
base_filename = os.path.splitext(os.path.basename(input_pdf))[0]
output_folder = os.path.dirname(input_pdf)
if not os.path.exists(output_folder):
output_folder = os.getcwd() # 使用当前工作目录作为输出文件夹
for i in range(0, total_pages, pages_per_split):
pdf_writer = PdfWriter()
for j in range(i, min(i + pages_per_split, total_pages)):
pdf_writer.add_page(pdf.pages[j])
output_filename = f"{base_filename}_part_{i // pages_per_split + 1}.pdf"
output_filepath = os.path.join(output_folder, output_filename)
with open(output_filepath, "wb") as output_pdf:
pdf_writer.write(output_pdf)
print(f"Created: {output_filepath}")
except FileNotFoundError:
print(f"Error: The file {input_pdf} was not found.")
except Exception as e:
print(f"An unexpected error occurred: {e}")
input_pdf_path = "UPDFName.pdf" # 替换为你的PDF路径
pages_per_split = 90
split_pdf(input_pdf_path, pages_per_split)
当然需要安装模块(本地有多个python环境):python -m pip install PyPDF2
执行脚本后会非常快速的拆分pdf,并将拆分的文件保存在脚本目录。