当前位置: 首页 > news >正文

识别pdf中论文标题并重命名PDF名称(2024.1.2,第二次更新)判断标题中是否以空格结尾

63~66行增加语句,判断标题是否以空格结尾
83~85行增加语句,判断选句是否以空格结尾

import os
import timeimport fitzdef find_largest_font_sentence(pdf_path):largest_font_size = 0largest_font_sentence = ''maxsize=0# 打开PDF文件document = fitz.open(pdf_path)for page_number in range(2):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_sizefor 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"]#判断largest_font_sentence是否结尾含有空格
#如果有则删掉if largest_font_sentence.endswith(' '):largest_font_sentence = largest_font_sentence.rstrip()if largest_font_sentence.count(' ')<4 or "arXiv" in largest_font_sentence:largest_font_sentence=''largest_font_size=0for block in blocks:if "lines" in block:  # 检查是否存在 lines 字段for line in block["lines"]:for span in line["spans"]:
##判定句子中空格的个数如果大于3就认为它是标题而非期刊名称
##判断句子是否以空格结尾,如果是就删掉空格if span["text"].endswith(''):span["text"] = span["text"].rstrip()if span["size"] > largest_font_size and span["text"].count(' ')>3 and "arXiv" not in span["text"]:largest_font_size = span["size"]largest_font_sentence = span["text"]maxsize = largest_font_sizefor 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):failed_files = []  # 记录重命名失败的文件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_sentenceif  ":" in title:title = title.replace(":", ":")new_filename = title.strip() + ".pdf"new_filepath = os.path.join(directory, new_filename)try:os.rename(filepath, new_filepath)except FileNotFoundError:failed_files.append(filename)if len(failed_files) > 0:if len(failed_files) > 0:print(f"重命名失败 {len(failed_files)} 个pdf文件:")for file in failed_files:print(file)# 指定包含英文论文PDF的目录路径#比如pdf文件在 D:\学习\论文#那么引号内需要输入的是 D:\\学习\\论文
print("请输入论文的存放目录")
a=input("输入路径")
a=a.replace("\\","/")
pdf_directory = a# 调用函数进行重命名rename_pdfs(pdf_directory)
input("按下回车键可关闭窗口")
http://www.lryc.cn/news/272019.html

相关文章:

  • 01.02作业
  • WPF+Halcon 培训项目实战(11):HS组件封装
  • VUE——IDEA 启动前端工程VS文件启动前端工程
  • 自动驾驶论文
  • Java经典框架之SpringDataJPA
  • 向爬虫而生---Redis 基石篇3 <拓展List>
  • CSS渲染性能优化
  • 【C++入门】类和对象(完)
  • webshell检测方式深度剖析 --- Pixy系列二(数据流分析)
  • [DAU-FI Net开源 | Dual Attention UNet+特征融合+Sobel和Canny等算子解决语义分割痛点]
  • 使用Triton部署ONNX模型
  • Python访问ElasticSearch
  • Flutter 混合开发 - 动态下发 libflutter.so libapp.so
  • Peter算法小课堂—动态规划
  • 2022–2023学年2021级计算机科学与技术专业数据库原理 (A)卷
  • Clojure 实战(4):编写 Hadoop MapReduce 脚本
  • Django 分页(表单)
  • socket实现视频通话-WebRTC
  • simulink代码生成(九)—— 串口显示数据(纸飞机联合调试)
  • Mysql数据库(中)——增删改查的学习(全面,详细)
  • test dbtest-03-对比 Liquibase、flyway、dbDeploy、dbsetup
  • 力导向图与矩阵排序
  • word 常用功能记录
  • C#线程基础(线程启动和停止)
  • 如何利用ChatGPT来提高编程效率
  • java智慧工地源码,互联网+建筑工地,实现对工程项目内人员、车辆、安全、设备、材料等的智能化管理
  • 创建并使用自己的C++模块(Windows10+MSVC)
  • Spring Boot 2.7.11 集成 GraphQL
  • 软件工程期末总结
  • MidTool图文创作-GPT-4与DALL·E 3的结合