识别pdf标题并重命名pdf
2023-12-25 22:41:27
此为改进版
解决了期刊名可能是最大字体的问题:
思路 识别字符串的空格>3则为标题
另外因为标题中不能出现冒号问题,这里用中文“冒号”代替了符号“:”
import os
import PyPDF2
import fitz
def find_largest_font_sentence(pdf_path):
largest_font_size = 0
largest_font_sentence = ''
maxsize=0
# 打开PDF文件
document = fitz.open(pdf_path)
for page_number in range(document.page_count):
page = document.load_page(page_number)
blocks = page.get_text("dict")["blocks"]
for block in blocks:
if "lines" in block: # 检查是否存在 lines 字段
for line in block["lines"]:
for span in line["spans"]:
if span["size"] > largest_font_size:
largest_font_size = span["size"]
largest_font_sentence = span["text"]
maxsize=largest_font_size
for block in blocks:
if "lines" in block: # 检查是否存在 lines 字段
for line in block["lines"]:
for span in line["spans"]:
if span["size"] ==maxsize:
if largest_font_sentence!=span["text"]:
largest_font_sentence = largest_font_sentence+' '+span["text"]
if largest_font_sentence.count(' ')<4:
largest_font_sentence=''
largest_font_size=0
for block in blocks:
if "lines" in block: # 检查是否存在 lines 字段
for line in block["lines"]:
for span in line["spans"]:
if span["size"] > largest_font_size and span["text"].count(' ')>3:
largest_font_size = span["size"]
largest_font_sentence = span["text"]
maxsize = largest_font_size
for block in blocks:
if "lines" in block: # 检查是否存在 lines 字段
for line in block["lines"]:
for span in line["spans"]:
if span["size"] == maxsize:
if largest_font_sentence != span["text"]:
largest_font_sentence = largest_font_sentence + ' ' + span["text"]
return largest_font_sentence
# 用于测试的PDF文件路径
def rename_pdfs(directory):
for filename in os.listdir(directory):
if filename.endswith(".pdf"):
filepath = os.path.join(directory, filename)
filepath=filepath.strip()
largest_font_sentence = find_largest_font_sentence(filepath)
title=largest_font_sentence
if ":" in title:
title = title.replace(":", "冒号")
new_filename = title.strip() + ".pdf"
new_filepath = os.path.join(directory, new_filename)
os.rename(filepath, new_filepath)
print(f"Renamed {filename} to {new_filename}")
# 指定包含英文论文PDF的目录路径
pdf_directory = "PDF文件目录"
# 调用函数进行重命名
rename_pdfs(pdf_directory)
文章来源:https://blog.csdn.net/weixin_44751432/article/details/135209430
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!