Python代码:批量提取PDF文件中的13位数字并重命名
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替换为您要遍历的文件夹路径。
代码功能说明:
- 遍历文件夹: 循环遍历指定的文件夹,查找所有以
.pdf结尾的文件。 - 避免重复: 使用
processed_files集合记录已处理过的文件名,并在重复时自动添加自增后缀。 - PDF转换图像: 使用
pdf2image库将PDF文件转换为图像。 - 图像识别: 使用
PaddleOCR库对图像进行OCR识别,提取包含'0D'的13个字符。 - 替换字符: 将提取的字符串中'0D'替换为'OD'。
- 重命名文件: 使用提取的字符串重命名PDF文件。
- 删除临时图像: 删除转换过程中生成的临时图像。
使用场景:
本代码适用于需要批量提取PDF文件中的特定字符串信息,并进行文件重命名操作的场景。例如,可以用于整理包含身份证号码、订单号等信息的PDF文件,方便后续管理和检索。
代码优化建议:
- 可以使用多线程或多进程加速代码执行效率。
- 可以根据实际需求调整提取字符串的条件,例如可以提取其他类型的字符串。
- 可以使用更强大的OCR引擎,提高识别准确率。
- 可以将代码封装成一个独立的函数或类,方便调用和复用。
原文地址: https://www.cveoy.top/t/topic/ngIK 著作权归作者所有。请勿转载和采集!