PDF书签的编辑器,基于(python、Tkinter)
使用
脚本
- 在github下载源码。
- 安装python3
- 安装必要的python包
pip install numpy
pip install pandas
pip install PyMuPDF
pip install opencv
pip install easyocr
easyocr模型可以不下载,在源码easy文件夹中有。
按照PyTorch官网的说明,下载PyTorch。
- 运行:ATMA.py
windows程序
在百度网盘下载。文件夹下有两个文件,选择一个下载。
- atma_64_F.zip: pyinstaller打包的单文件,启动慢,但是解压后文件相对较小。
- atma_64_D.zip: 启动比较快,但是文件夹大。找到文件夹下ATMA.exe打开即可使用。
基本功能
-
编辑书签
1.1 粘贴网上复制而来的目录文本: (1) 点击菜单栏"自动修改",会自动修改缩进(如果文字中含有"章节"等字眼,或者含有"1.2.3"这样的序数的话), 自动删去不必要的空字符,标点…… (2) 点击菜单"跳转页码",修改跳转页码, (3) 手动检查修改一些瑕疵,然后选择pdf,导入书签。 (4)图中的罗马数字不能识别为页码,已修复。
1.2 修改PDF中的书签。导出pdf书签……修改……导入
-
提取PDF目录页的的文本,形成书签
速度快。 效果如下图。 (1) 第一行的是自动插入的。 (2) 提取目录时脚本会尝试自动删除页眉页脚等无用的文字。但这些文字跨越多行的话,不能自动删除。 (3) 总体而言,如果PDF是文字版的,且其中的文字原本就没有错误(很多PDF中的文字是OCR的), 那么效果还可以,不需要多少人工编辑就可以导入PDF。
-
OCR识别PDF目录页面文本:
缺点是速度慢。如果PDF清晰的话,基本没什么错字。 效果如下图: (1) 识别前可以设置页码偏移。这样就会将目录页码根据这个偏移量而修改(一般是增加)。 (2) 一个比较普遍的问题就是,页码数字比较小(只有个位数)的话,因为文字框比较小, 很有可能会被OCR引擎忽略而不识别。
(3) 如果目录分两栏、三栏,一定要在参数里做相应设置。这样会在识别提前将图片裁分。
(4) 下图OCR输出的结果,书签缩进有错误。可以点击"自动修改",自动修改缩进。
界面
-
标题
没有选择pdf的情况下,显示"ATMA"。如果选择了PDF,显示PDF的文件名+ATMA
-
菜单
2.1 书签:打开、保存、检查、自动修改文本文件 2.1.1 新建 2.1.2 打开 2.1.3 保存 2.1.4 检查 导入书签前可以点击"检查",检查书签格式是否有错误。正确的(可以导入)书签至少满足下面的要求: (1) 每一条书签(每一行)的缩进不比上一条书签的缩进大2个层级。 (2) 每一条书签都有三个数据(两个英文分号)。 (3) 每条书签的跳转页码不大于PDF的页面数。 检查过后会在软件下方显示有错误的行的行号。 2.1.5 自动修改 (1) 如果书签文本中有"章节",序号(如”1.2“)等字眼,会自动修改数据的缩进。 (2) 提取每行最后的数字作为书签跳转页码。 (3) 格式化每一行。如果没有跳转页码,将跳转页码设为0。 2.1.6 自动修改(保持缩进) 和上一个菜单作用类似,但是不会修改缩进。 2.2 PDF:选择操作的PDF,导入导出书签,从PDF页面中中获取书签文本 2.2.1 选择PDF 选择操作的PDF文件。 2.2.2 增量保存 将书签直接保存到原PDF中。(类似于一般理解的save,覆盖保存)但是,这需要PDF支持。 如果PDF不支持增量保存(增量保存不成功),就选择下方的"另存为"。 2.2.3 另存为 将书签导入PDF中,然后将PDF保存为另一个文件。 2.3.4 导出书签 将PDF中的书签导出。 2.3.5 读取目录 如果PDF是文字版的PDF,可以尝试通过读取PDF目录页面中文字,形成书签。 2.3.6 OCR目录 如果PDF是图片版的,选择这个。相比上个选项,OCR速度会比较慢。 2.3 编辑 2.3.1 正则替换 菜单栏下面的"替换"按钮是不支持正则的。如果想要使用正则替换, 在下方输入框输入搜索的文字和要替换的文字,然后点击该菜单选项。
-
参数输入框
输入参数,然后点击确定。 "读取目录","OCR目录"需要一些参数。这些参数在这里输入,输入后点击确定。 3.1 开始页:目录页面开始的页码 3.2 终止页:目录页面终止的页面。如果终止页是"0",表示只读取"开始页"的那一页。默认值是0. 3.3 偏移量:目录中页码数字与实际要跳转的页码直接的差值。 3.4 分栏数:目录页面分栏的数目。OCR的时候需要设置这个参数。默认值是1,即不分栏(只有一栏)。
-
查找、替换框。
不支持正则。查找、替换的结果会高亮。 要使用正则替换,先在这里输入好文字,然后点击菜单栏里的"正则替换"。
-
文本框
输入Tab会转换成四个空格。 不稳定,不要用来编辑其他文件。
-
状态栏
显示一些操作相关的结果
-
行号