前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【工具教程】批量OCR识别PDF中文字,并根据文字对PDF批量重命名和导出表格,基于QT和腾讯API来完成

【工具教程】批量OCR识别PDF中文字,并根据文字对PDF批量重命名和导出表格,基于QT和腾讯API来完成

原创
作者头像
不负众望
修改于 2025-04-05 14:33:04
修改于 2025-04-05 14:33:04
31500
代码可运行
举报
运行总次数:0
代码可运行

一、项目背景

在企业办公室场景中,每天都会产生大量包含重要信息的PDF文档,如合同文件、财务报表、项目计划书等。这些文档在进行存档时,通常需要有清晰、规范且易于识别的文件名,以便后续快速检索和管理。使用该功能,可以批量对这些PDF文件中的文字进行OCR识别,提取如合同编号、项目名称、报表日期等关键信息作为新文件名,大大提高了档案整理的效率和准确性,方便员工在需要时能够迅速定位和查阅所需的文档。

要实现批量OCR识别PDF中的文字,并根据文字对PDF进行批量重命名,可以使用QT作为GUI框架,结合腾讯云的OCR API来实现。以下是详细的开发步骤:

二、 环境准备

  • ​QT安装​​:下载并安装QT Creator和QT库。
  • ​腾讯云OCR API​​:注册腾讯云账号,开通OCR服务,获取API密钥(SecretId和SecretKey)。
  • ​PDF处理库​​:安装PyPDF2pdfminer等Python库来处理PDF文件。
  • ​OCR库​​:使用腾讯云提供的Python SDK或直接调用API。

三、 创建QT项目

  1. 打开QT Creator,创建一个新的QT Widgets Application项目。
  2. 设计主界面,包含以下控件:
    • 一个按钮用于选择PDF文件夹。
    • 一个按钮用于开始OCR识别和重命名。
    • 一个文本框用于显示处理进度或结果。

四、 集成腾讯云OCR API

  1. 在QT项目中集成腾讯云OCR API。可以使用腾讯云提供的Python SDK,或者直接使用HTTP请求调用API。
  2. 安装腾讯云Python SDK:bash复制pip install tencentcloud-sdk-python
  3. 编写OCR识别函数:python复制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 def ocr_general_basic(image_path, secret_id, secret_key): 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) req = models.GeneralBasicOCRRequest() with open(image_path, 'rb') as f: img_data = f.read() params = { "ImageBase64": img_data.encode('base64') } req.from_json_string(json.dumps(params)) resp = client.GeneralBasicOCR(req) return json.loads(resp.to_json_string())['TextDetections']

五、处理PDF文件

  1. 使用PyPDF2pdfminer提取PDF中的每一页,并将其保存为图片。
  2. 对每一页图片调用OCR函数进行文字识别。
  3. 提取识别结果中的关键信息(如文件名)。

六、批量重命名PDF文件

  1. 根据OCR识别结果生成新的文件名。
  2. 使用Python的os模块重命名PDF文件。

七、 整合到QT界面

  1. 在QT的主窗口类中编写槽函数,处理按钮点击事件。
  2. 调用上述函数,实现OCR识别和文件重命名功能。
  3. 在界面上显示处理进度或结果。

八、示例代码

以下是一个简化的示例代码,展示如何在QT中调用腾讯云OCR API并重命名PDF文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python复制import sys
import os
import json
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QFileDialog, QLabel, QVBoxLayout, QWidget
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

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('PDF OCR Rename')
        self.setGeometry(100, 100, 400, 200)

        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)

        self.layout = QVBoxLayout()

        self.select_button = QPushButton('选择PDF文件夹', self)
        self.select_button.clicked.connect(self.select_folder)
        self.layout.addWidget(self.select_button)

        self.rename_button = QPushButton('开始OCR并重命名', self)
        self.rename_button.clicked.connect(self.start_rename)
        self.layout.addWidget(self.rename_button)

        self.status_label = QLabel('', self)
        self.layout.addWidget(self.status_label)

        self.central_widget.setLayout(self.layout)

        self.folder_path = ''
        self.secret_id = 'your_secret_id'
        self.secret_key = 'your_secret_key'

    def select_folder(self):
        self.folder_path = QFileDialog.getExistingDirectory(self, '选择PDF文件夹')
        if self.folder_path:
            self.status_label.setText(f'已选择文件夹: {self.folder_path}')

    def start_rename(self):
        if not self.folder_path:
            self.status_label.setText('请先选择文件夹')
            return

        for filename in os.listdir(self.folder_path):
            if filename.endswith('.pdf'):
                pdf_path = os.path.join(self.folder_path, filename)
                new_name = self.process_pdf(pdf_path)
                if new_name:
                    new_path = os.path.join(self.folder_path, new_name)
                    os.rename(pdf_path, new_path)
                    self.status_label.setText(f'重命名成功: {filename} -> {new_name}')

    def process_pdf(self, pdf_path):
        # 将PDF每一页转换为图片(此处省略具体实现)
        # 假设每一页保存为image_0.jpg, image_1.jpg, ...

        for page_num in range(0, 10):  # 假设PDF10页
            image_path = f'image_{page_num}.jpg'
            # 调用OCR API
            text_detections = self.ocr_general_basic(image_path, self.secret_id, self.secret_key)
            # 提取关键信息(如文件名)
            for detection in text_detections:
                if '识别结果' in detection:
                    extracted_text = detection['DetectedText']
                    # 假设提取的文本可以作为新文件名
                    new_name = f'{extracted_text}.pdf'
                    return new_name
        return None

    def ocr_general_basic(self, image_path, secret_id, secret_key):
        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)

        req = models.GeneralBasicOCRRequest()
        with open(image_path, 'rb') as f:
            img_data = f.read()
        params = {
            "ImageBase64": img_data.encode('base64')
        }
        req.from_json_string(json.dumps(params))

        resp = client.GeneralBasicOCR(req)
        return json.loads(resp.to_json_string())['TextDetections']

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

九、注意事项

  • ​PDF转图片​​:需要将PDF每一页转换为图片,可以使用pdf2image库或其他工具。
  • ​OCR识别​​:腾讯云OCR API可能对图片质量有要求,确保转换后的图片清晰。
  • ​文件名处理​​:提取的文本可能需要进一步处理,以确保适合作为文件名。
  • ​错误处理​​:在实际应用中,需要添加错误处理机制,以应对网络问题、API调用失败等情况。

通过以上步骤,你可以实现一个基于QT和腾讯云OCR API的PDF批量OCR识别和重命名工具。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、项目背景
    • 二、 环境准备
    • 三、 创建QT项目
    • 四、 集成腾讯云OCR API
    • 五、处理PDF文件
    • 六、批量重命名PDF文件
    • 七、 整合到QT界面
    • 八、示例代码
    • 九、注意事项
    • 通过以上步骤,你可以实现一个基于QT和腾讯云OCR API的PDF批量OCR识别和重命名工具。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档