【PDF批量添加目录】分级可跳转

PDF批量建立多级可跳转书签(目录)2.0

背景介绍

最近在学习python,因为很多时候找到的pdf 资源没有可跳转目录,文件导入Marginnote3或者其他笔记软件之后很难根据索引跳转到自己想要的部分,于是前段时间利用Cnocr以及Pypdf2库写了一个[半自动的目录工具](https://bbs.marginnote.com.cn/t/topic/32389),可是实际上那个工具使用逻辑并不符合一个正常用户的行为习惯,且pypdf库很久没有人维护了总是会出一些问题。所以还没学会打包文件项目就流产了。

于是我又用Pymupdf重新写了一个更加易用的版本,可自动通过目录特征确定目录从属关系(之后解释),并且还有页数错误自动检测等功能。

不论目录有多少一般情况下整个过程不会超过10分钟。

我称之为 PDG_v1.2.0(Pdf Directory Generator)

使用方法

基本界面

Snipaste_2022-06-09_19-09-58

忽略UI设计哈。。。能用就行了没时间做了
编辑流程 :
按照格式建立文件夹 → 导入pdf → 目录图像调整并识别文字 → 文本粗编 → 特征提取自动缩进 → 目录写入,根据提示修改错误 → 生成PDF。

详细介绍

  1. 建立文件夹
    文件夹命名格式:‘目录起始-首页前页’
    以 《形式语言与自动机导论》 为例,目录起始页是11,首页是13,首页前一页(在这里就是目录最后一页)是12,所以创建文件夹‘11-12’,将pdf放入文件夹

  2. 目录图像调整并识别文字
    打开PDG工具,将文件夹里的pdf文件拖入文本编辑框,之后会自动弹出导出的目录页图片,imgs文件夹存储提取的目录页图像,需要手动编辑图片方便后续识别,


    最终图片需要保证单列,有序


    处理前



    处理后:通常不需要怎么处理,图片越干净越好,不要有水印、严重歪斜等情况



    之后点击 图像识别 等待 ocr识别
    image

  3. 文本粗编 + 特征提取自动缩进
    Cnocr识别结果还是很不错的,这里就不需要再额外编辑了,在文本编辑区域右键提供了常用的文本编辑命令比如: 剪切,复制,粘贴;另外还提供了全文替换功能。
    这个工具使用Tab键,即制表符,来表示目录从属关系,比如:
    ’'
    第1章计算理论导引 1
     1.1数学预备知识和表示 2
      1.1.1集合 2
      1.1.2 函数和关系 3
      1.1.3图和树 5
      1.1.4 证明方法 7
     1.2 三个基本概念 10
      1.2.1语言 11
      1 .2.2 文法 13
      1 .2.3 自动机 18
    ’'
    因为书本目录往往具有很明显的结构,所以我们可以使用特征提取工具告诉计算机目录的缩进结构。使用方法很简单,只需要按照目录关系,在下方特征提取文本框里,在应特征文本行前插入相应数量的制表符(Tab)即可。

    特征文本格式:“第一章”->“第#章” “4.5.3”->"#.#.#",没有需要替换的就不用修改了

    以本书为例,仅需在下方文本框输入:


    ’’
    第#章

     #.#
      #.#.#
    ’'


    点击自动缩进




    当然,对于目录没有明显结构特征的书籍,我也提供了批量缩进的功能:
    选中多行,Tab批量缩进,Shift+Tab批量回退

  4. 目录写入,根据提示修改错误,生成PDF
    我们就可以点击目录写入生成pdf了

    .


    如果目录有问题,程序会自动找到并提示出错条目,错误类型比如:页数不符合逻辑(OCR识别错误),缺少页数,缩进错误等。怎么理解缩进错误呢?比如一级目录下紧跟着三级目录,这就好比老爷爷没有儿子但是凭空多出一个孙子。。。啊不重要反正都会提示的。
    修改好这个错误之后重新点击目录写入,会提示下一个错误,直到最终pdf生成。程序会将带目录的文件保存在同一文件夹下,并且在‘toc.txt’文件存储本书的目录。
    此时我们就大功告成啦!!!

下载链接

百度网盘:
链接:百度网盘 请输入提取码
提取码:6666

我只是入门,OCR库使用了numpy,torch等包,无论怎么打包最终文件都特别大。。。我尽力了。。只支持win10以上,不支持macos
打算以后有一些扩展功能可以加进去,不过目前还没啥想法。如果有使用上的问题或者建议或者bug都可以发我邮箱 vacuumarea@qq.com 与我沟通 ~
有时间我整理下代码,到时候传到gitee或者github上,这样只需要安装python和一些必须的库就都能运行了,不用再下载那么大的打包文件了。目前只在我舍友的电脑上测试过,希望能派上用场。

20 个赞

好棒:ok_hand::+1::+1::+1::+1:

2 个赞

太厉害了!!!!

1 个赞

太厉害啦!!!!!

1 个赞

牛逼啊!!!!!

1 个赞

pdf文件名中带有空格的话无法导入,去掉空格就好

如果外层快捷方式打不开,进入PDG文件夹找到PDG.exe就可以打开了

啥时候上传到gitee或者github上?油猴的图书馆联盟有的带书签,但是大部分没有,还要手动调教或者去淘宝找人做。期待在macos上可以用。

1 个赞

最近比较忙,想再整理下代码之后上传。如果需要也可以把文件发给我,就当做测试了~

您太了不起了!感谢您的付出

感谢使用,自知软件很初级,我会完善的

1 个赞

请问编辑目录图片要怎么做才能10分钟以内做完呢

谢谢,非常好用,比我一个一个添加目录爽多了。

1 个赞

使用中有两个问题:如果目录图片太多比如200张,会漏掉三分之一图片没有识别,也没报错,不过漏掉的目录图片可以用abbyy识别再补上,只是一个一个找比较麻烦,如果能解决最好,建议至少增加读取TOC文档的功能,这样我不用手动去除页码的括号和目录与页码之间的点号,直接把abbyy的识别结果拷贝到toc文档,然后导入文件统一处理。
问题2,目录插入时“页码顺序”检查的功能可选,因为有些字典类书目录分两种,一种按笔划检索的目录页码是按顺序,附录还会有按名称分类的目录,他们因为分类方式不同,所以小类内是按顺序,大类不一定按页码顺序,检查页码顺序很重要,不能取消,但建议可选
问题3 建议有提取原有书签和添加书签的功能 ,可参考freepic2pdf此类功能 ,建立配置文件,可以手动配置一些参数,这样就不用把目录名有要求了,对目录起止也更灵活。
软件非常好用,谢谢
!!

您好,请问为什么把文档拖进目录编辑时会显示“请检查文件或文件路径”呢?文件放在按目录首末页建立的文件夹里了。非常感谢!

大概是因为文件名中存在空格或者括号,去掉就好

可以使用windows自带的画图工具进行裁剪,这一部分确实是比较难用 :smiling_face_with_tear:

Snipaste_2023-05-11_09-36-40

方便将Pdf文件发给我吗?我帮您做好,然后把问题反馈给您

非常感谢您的反馈!
1.漏识别的问题我使用的过程中也发现了,可能的原因是执行ocr识别的模型无法识别,我会优化的
2.读取TOC文档的功能是一个很不错的想法,目前较好的解决方案是:选中需要去除的字符,右键会弹出一个选框,你可以点击替换,之后输入你想要替换的文本,软件会进行全局替换,不输入任何内容就是删除。
3.“页码顺序”检查:我确实没有考虑到这一种可能,后续会跟进的
4.会加入提取原有书签和添加书签、以及配置文件的功能的!
再次感谢您的反馈!