根据论文标题重命名arxiv pdf文档

项目地址:https://github.com/zhongqianli/pdf_paper_rename

需求

从arxiv下载的pdf文档是以时间戳命名的,需要重命名文件,然而直接复制标题重命名文件时,在Windows系统上会报错,因为它不支持一些特殊字符。 为了提升重命名文档的效率,本项目开发了可批量重命名pdf文档的脚本。除了arxiv下载的pdf文档,其他来源的pdf文档应该也可以使用。

Windows文件名不支持的特殊字符为英文输入状态的/😗?"<>|

不可转换的字符为*|

无法近似转换的字符为/

可近似转换的字符为:?"<>,对应的中文输入状态的、:?“《》,简单处理全部替换成"_"

代码及用法

python3 pdf_paper_rename.py --data ./data --output ./output

from pdfminer.high_level import extract_pages
from pdfminer.layout import LTTextContainer, LTChar, LTAnno


def get_paper_title(filename):
    title = ""

    # 标题通常在第一页,故只循环一次
    for page_layout in extract_pages(filename):
        for element in page_layout:
            if isinstance(element, LTTextContainer):
                for text_line in element:
                    if text_line.x1 - text_line.x0 < 30:
                        continue
                    text_line_str = ""
                    is_title = False
                    for character in text_line:
                        if isinstance(character, LTChar):
                            text = character.get_text()
                            font_size = character.size
                            # 经验值
                            if font_size > 14.3:
                                is_title = True
                            text_line_str += text
                        elif isinstance(character, LTAnno):
                            text = character._text
                            text_line_str += text
                    if is_title:
                        if len(title) == 0:
                            title = text_line_str.strip("\n")
                        else:
                            title = "{} {}".format(title, text_line_str).strip("\n")
        break

    return title.strip()


if __name__ == '__main__':
    filename = "data/arxiv.pdf"
    title = get_paper_title(filename)
    print("title:\n{}".format(title))
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值