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会转换成四个空格。
不稳定,不要用来编辑其他文件。
状态栏
显示一些操作相关的结果
行号
PDF书签的编辑器,基于(python、Tkinter)的更多相关文章
- 基于python tkinter的课堂点名小程序
import datetime import json import os import random import tkinter as tk import openpyxl # 花名册文件名很多人 ...
- 基于python tkinter的点名小程序
import datetimeimport jsonimport osimport randomimport tkinter as tkimport openpyxl # 花名册文件名excel_fi ...
- 基于Python的WEB接口开发与自动化测试 pdf(内含书签)
基于Python的WEB接口开发与自动化测试 目录 目 录O V目 录章 Python 学习必知 ................................................... ...
- 学习参考《Flask Web开发:基于Python的Web应用开发实战(第2版)》中文PDF+源代码
在学习python Web开发时,我们会选择使用Django.flask等框架. 在学习flask时,推荐学习看看<Flask Web开发:基于Python的Web应用开发实战(第2版)> ...
- 学习Keras:《Keras快速上手基于Python的深度学习实战》PDF代码+mobi
有一定Python和TensorFlow基础的人看应该很容易,各领域的应用,但比较广泛,不深刻,讲硬件的部分可以作为入门人的参考. <Keras快速上手基于Python的深度学习实战>系统 ...
- 代码编辑器[0] -> Vim/gVim[0] -> 基于 Python 的 gVim 环境配置(Windows)
环境配置 / Environment Setup 基于Python开发的 gVim 环境配置(Windows) 使用方式参考 Vim 的使用. 1 基于vundle进行配置 Vim有多个扩展管理器, ...
- 学习《深度学习入门:基于Python的理论与实现》高清中文版PDF+源代码
入门神经网络深度学习,推荐学习<深度学习入门:基于Python的理论与实现>,这本书不来虚的,一上来就是手把手教你一步步搭建出一个神经网络,还能把每一步的出处讲明白.理解神经网络,很容易就 ...
- Python tkinter 实现简单登陆注册 基于B/S三层体系结构,实现用户身份验证
Python tkinter 实现简单登陆注册 最终效果 开始界面 注册 登陆 源码 login.py # encoding=utf-8 from tkinter import * from ...
- 【Machine Learning】决策树案例:基于python的商品购买能力预测系统
决策树在商品购买能力预测案例中的算法实现 作者:白宁超 2016年12月24日22:05:42 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本 ...
- 《Selenium2自动化测试实战--基于Python语言》 --即将面市
发展历程: <selenium_webdriver(python)第一版> 将本博客中的这个系列整理为pdf文档,免费. <selenium_webdriver(python)第 ...
随机推荐
- Rust中的宏:声明宏和过程宏
Rust中的声明宏和过程宏 宏是Rust语言中的一个重要特性,它允许开发人员编写可重用的代码,以便在编译时扩展和生成新的代码.宏可以帮助开发人员减少重复代码,并提高代码的可读性和可维护性.Rust中有 ...
- react中refs详解
https://zh-hans.reactjs.org/docs/refs-and-the-dom.html 字符串形式ref 1 <input ref="myinput" ...
- 《HelloGitHub》第 85 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...
- 掌握这些GitHub搜索技巧,你的开发效率将翻倍!
作为开发it行业一员,学习借鉴他人项目是很有必要的,所以我们一般都会从github或者 Gitee 上面去参考借鉴他人的项目来学习增加自己的项目经验 但是github你真的用对了嘛,他的功能其实很强大 ...
- 虚拟机的安装与linux系统的使用
虚拟机的安装与应用 下载安装VMware Workstation Pro 安装成功之后点击创建虚拟机 勾选典型机型 勾选自动检测安装映像文件 设置虚拟机的命名和安装路径 设置磁盘的大小和虚拟磁盘的储存 ...
- map和multimap
map相对于set区别,map具有键值和实值,所有元素根据键值自动排序,pair的第一个值被称为键值key,pair的第二个值被称为实值value.map也是以红黑树为底层实现机制,根据key进行排序 ...
- 如何使用jsDelivr+Github 实现免费CDN加速?
目录 序言 1 cdn简介 2 cdn请求分发原理 3 jsDelivr简介 4.jsDelivr 的简单使用 5 jsDelivr + Github 的具体实现 5.1 新建Github仓库 5.2 ...
- 2023-02-25:请用go语言调用ffmpeg,解码mp4文件并保存为YUV420SP格式文件,YUV420P不要转换成YUV420SP。
2023-02-25:请用go语言调用ffmpeg,解码mp4文件并保存为YUV420SP格式文件,YUV420P不要转换成YUV420SP. 答案2023-02-25: 使用 github.com/ ...
- 2022-09-19:给定字符串 S and T,找出 S 中最短的(连续)子串 W ,使得 T 是 W 的 子序列 。 如果 S 中没有窗口可以包含 T 中的所有字符,返回空字符串 ““。 如果有不
2022-09-19:给定字符串 S and T,找出 S 中最短的(连续)子串 W ,使得 T 是 W 的 子序列 . 如果 S 中没有窗口可以包含 T 中的所有字符,返回空字符串 "&q ...
- 2020-12-15:mysql的回滚机制是怎么实现的?
福哥答案2020-12-15:[答案来自此链接:](https://www.cnblogs.com/ld-swust/p/5607983.html)在 MySQL 中,恢复机制是通过回滚日志(undo ...