Python代码:批量提取PDF文件中的13位数字并重命名

本代码使用PaddleOCR识别PDF文件中的图像,提取以'0D'开头包含13个字符的字符串,替换'0D'为'OD'并重命名PDF文件,避免重复文件时自动添加后缀。

import os
import tempfile
import shutil
from pdf2image import convert_from_path
from paddleocr import PaddleOCR

def process_pdf_folder(folder_path):
    ocr = PaddleOCR(use_gpu=False)  # 初始化OCR模型
    processed_files = set()  # 已处理的文件名集合

    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.endswith(".pdf"):
                pdf_path = os.path.join(root, file)
                file_name = os.path.splitext(file)[0]
                if file_name in processed_files:  # 若文件已处理过,则添加自增后缀
                    suffix = 1
                    while f"{file_name}_{suffix}" in processed_files:
                        suffix += 1
                    file_name = f"{file_name}_{suffix}"
                processed_files.add(file_name)

                # 将PDF转换为图像
                images = convert_from_path(pdf_path)

                # 临时保存图像
                temp_dir = tempfile.mkdtemp()
                image_paths = []
                for i, image in enumerate(images):
                    image_path = os.path.join(temp_dir, f"{file_name}_{i}.jpg")
                    image.save(image_path, "JPEG")
                    image_paths.append(image_path)

                # 对图像进行OCR识别
                results = []
                for image_path in image_paths:
                    result = ocr.ocr(image_path)
                    results.extend(result)

                # 提取包含0D的13个字符
                extracted_text = ""
                for result in results:
                    for line in result:
                        for word in line:
                            if word[1].startswith("0D") and len(word[1]) == 13:
                                extracted_text += word[1].replace("0D", "OD") + "\n"

                # 重命名PDF文件
                new_file_name = f"{file_name}.pdf"
                new_pdf_path = os.path.join(root, new_file_name)
                os.rename(pdf_path, new_pdf_path)

                # 删除临时图像
                shutil.rmtree(temp_dir)

                print(f"Processed: {pdf_path}")
                print(f"Extracted Text: {extracted_text}")
                print(f"Renamed PDF: {new_pdf_path}\n")

# 指定要遍历的文件夹路径
folder_path = "your_folder_path_here"

# 处理文件夹里的PDF文件
process_pdf_folder(folder_path)

请确保已安装以下依赖库:

  • pdf2image:用于将PDF转换为图像。可通过pip install pdf2image进行安装。
  • paddlepaddle:PaddleOCR依赖的深度学习框架。可通过pip install paddlepaddle进行安装。
  • paddlepaddleOCR:用于进行OCR识别。可通过pip install paddlepaddleOCR进行安装。

注意:

在运行代码之前,请将your_folder_path_here替换为您要遍历的文件夹路径。

代码功能说明:

  1. 遍历文件夹: 循环遍历指定的文件夹,查找所有以.pdf结尾的文件。
  2. 避免重复: 使用processed_files集合记录已处理过的文件名,并在重复时自动添加自增后缀。
  3. PDF转换图像: 使用pdf2image库将PDF文件转换为图像。
  4. 图像识别: 使用PaddleOCR库对图像进行OCR识别,提取包含'0D'的13个字符。
  5. 替换字符: 将提取的字符串中'0D'替换为'OD'。
  6. 重命名文件: 使用提取的字符串重命名PDF文件。
  7. 删除临时图像: 删除转换过程中生成的临时图像。

使用场景:

本代码适用于需要批量提取PDF文件中的特定字符串信息,并进行文件重命名操作的场景。例如,可以用于整理包含身份证号码、订单号等信息的PDF文件,方便后续管理和检索。

代码优化建议:

  • 可以使用多线程或多进程加速代码执行效率。
  • 可以根据实际需求调整提取字符串的条件,例如可以提取其他类型的字符串。
  • 可以使用更强大的OCR引擎,提高识别准确率。
  • 可以将代码封装成一个独立的函数或类,方便调用和复用。
Python代码:批量提取PDF文件中的13位数字并重命名

原文地址: https://www.cveoy.top/t/topic/ngIK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录