前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【拆分PDF重命名】将PDF按页拆分多个PDF文件,并用PDF里文字对文件批量重命名,python和腾讯api识别改名的完整代码和详细步骤

【拆分PDF重命名】将PDF按页拆分多个PDF文件,并用PDF里文字对文件批量重命名,python和腾讯api识别改名的完整代码和详细步骤

原创
作者头像
不负众望
发布2025-02-24 19:00:24
发布2025-02-24 19:00:24
9700
代码可运行
举报
运行总次数:0
代码可运行

在当今数字化办公和信息管理的大环境下,PDF 作为一种广泛使用的文档格式,承载着丰富的信息。然而,在很多情况下,我们会遇到需要对大型的 PDF 文件进行处理的需求。一个典型的场景是,一个多页的 PDF 文件包含了多个不同主题或信息单元,而用户希望将其按页拆分成多个单独的 PDF 文件,以便于更方便地管理、存储和检索这些信息。

此外,为了进一步提高文件管理的效率和准确性,我们希望能够根据 PDF 每页的内容对拆分后的文件进行智能重命名,使文件名称能够直观反映其包含的主要信息。

以下是使用 Python 和腾讯云 OCR API 实现将 PDF 按页拆分多个 PDF 文件并用 PDF 里文字对文件批量重命名

完整步骤和代码示例:

步骤 1:准备工作

  1. 安装必要的库
    • PyPDF2:用于拆分 PDF 文件。
    • tencentcloud-sdk-python:腾讯云 Python SDK,用于调用腾讯云 OCR 服务。
    • pdf2image:用于将 PDF 页面转换为图像,以便进行 OCR 识别。同时需要安装 Poppler 工具,pdf2image 依赖它来处理 PDF 文件。
    • 可以使用以下命令安装这些库:

bash

代码语言:javascript
代码运行次数:0
复制
pip install PyPDF2 tencentcloud-sdk-python pdf2image
  1. 获取腾讯云 API 密钥
    • 登录腾讯云控制台,在访问管理中创建 API 密钥,获取 SecretIdSecretKey
  2. 开通腾讯云 OCR 服务:在腾讯云控制台开通通用文字识别服务。

步骤 2:编写 Python 代码

python

代码语言:javascript
代码运行次数:0
复制
import os
from PyPDF2 import PdfReader, PdfWriter
from pdf2image import convert_from_path
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.ocr.v20181119 import ocr_client, models
import base64

# 腾讯云 API 密钥
SECRET_ID = 'your_secret_id'
SECRET_KEY = 'your_secret_key'

def split_pdf(input_pdf_path):
    """
    将 PDF 按页拆分为多个 PDF 文件
    :param input_pdf_path: 输入的 PDF 文件路径
    :return: 拆分后的 PDF 文件列表
    """
    pdf_reader = PdfReader(input_pdf_path)
    output_pdfs = []
    for page_num in range(len(pdf_reader.pages)):
        pdf_writer = PdfWriter()
        pdf_writer.add_page(pdf_reader.pages[page_num])
        output_pdf_path = f'page_{page_num + 1}.pdf'
        with open(output_pdf_path, 'wb') as output_pdf:
            pdf_writer.write(output_pdf)
        output_pdfs.append(output_pdf_path)
    return output_pdfs

def pdf_page_to_image(pdf_path):
    """
    将 PDF 页面转换为图像
    :param pdf_path: PDF 文件路径
    :return: 图像对象
    """
    images = convert_from_path(pdf_path)
    return images[0]

def ocr_image(image):
    """
    使用腾讯云 OCR 识别图像中的文字
    :param image: 图像对象
    :return: 识别出的文字
    """
    cred = credential.Credential(SECRET_ID, SECRET_KEY)
    httpProfile = HttpProfile()
    httpProfile.endpoint = "ocr.tencentcloudapi.com"

    clientProfile = ClientProfile()
    clientProfile.httpProfile = httpProfile
    client = ocr_client.OcrClient(cred, "ap-guangzhou", clientProfile)

    image.save('temp_image.jpg', 'JPEG')
    with open('temp_image.jpg', 'rb') as f:
        image_data = f.read()
    base64_image = base64.b64encode(image_data).decode('utf-8')

    req = models.GeneralBasicOCRRequest()
    params = {
        "ImageBase64": base64_image
    }
    req.from_json_string(str(params).replace("'", '"'))

    resp = client.GeneralBasicOCR(req)
    result = resp.to_json_string()
    import json
    result_json = json.loads(result)
    text = ''.join([item['DetectedText'] for item in result_json['TextDetections']])
    return text

def rename_pdfs(pdf_paths):
    """
    根据 OCR 识别结果重命名 PDF 文件
    :param pdf_paths: 待重命名的 PDF 文件列表
    """
    for pdf_path in pdf_paths:
        image = pdf_page_to_image(pdf_path)
        text = ocr_image(image)
        # 处理识别结果,去除非法字符
        valid_chars = "-_.() abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
        new_name = ''.join(c for c in text if c in valid_chars).strip()
        if new_name:
            new_path = f'{new_name}.pdf'
            os.rename(pdf_path, new_path)
            print(f'Renamed {pdf_path} to {new_path}')
        else:
            print(f'No valid text found for {pdf_path}, keeping original name.')

if __name__ == "__main__":
    input_pdf = 'your_input_pdf.pdf'
    split_pdfs = split_pdf(input_pdf)
    rename_pdfs(split_pdfs)

步骤 3:运行代码

将上述代码保存为一个 Python 文件(例如 pdf_split_and_rename.py),并将 your_secret_idyour_secret_keyyour_input_pdf.pdf 替换为实际的腾讯云 API 密钥和输入的 PDF 文件路径。然后在终端中运行以下命令:

bash

代码语言:javascript
代码运行次数:0
复制
python pdf_split_and_rename.py

代码说明

  1. split_pdf 函数:将输入的 PDF 文件按页拆分为多个单独的 PDF 文件。
  2. pdf_page_to_image 函数:将拆分后的 PDF 页面转换为图像,以便进行 OCR 识别。
  3. ocr_image 函数:使用腾讯云 OCR 服务识别图像中的文字。
  4. rename_pdfs 函数:根据 OCR 识别结果重命名拆分后的 PDF 文件。

通过以上步骤,你可以实现将 PDF 按页拆分并根据其中的文字对文件进行批量重命名。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 完整步骤和代码示例:
    • 步骤 1:准备工作
    • 步骤 2:编写 Python 代码
    • 步骤 3:运行代码
    • 代码说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档