在阅读PDF格式文献时,如果想要复制某段文字做笔记,出现类似如下情况,直接抓狂。OCR 是一个不错的办法,但还是不够不方便。
skyline 处 理 首 先 在 单 一 数 据 库 环 境 (即 集 中 式 环 境 )中
进 行 研 究 。 随 着 数 据 越 来 越 多 地 以 分 布 式 方 式 存 储 和 处 理 ,
对 分 布 式 数 据 的 skyline 处 理 在 近 年 来 引 起 了 极 大 的 关 注 。
于是我尝试使用一个 python 脚本+ mac 的自动操作,实现使用一个快捷键把上面的文本处理成正常形式。
只是实现了一个最简单,但最根本的需求,主要目的是使用automator实现自动化。
大致流程是读取剪切板,然后判断是中文还是英文,再去处理文本,具体处理方法看代码吧,很简单,最后再写回剪切板。
import pyperclip
import re
def punctuation_convert(text_: str):
"""
将英文标点符号替换成中文标点
"""
e_pun = u',.!?()<>"':;'
c_pun = u',。!?()《》“‘:;'
table = {ord(f): ord(t) for f, t in zip(e_pun, c_pun)}
return text_.translate(table)
def is_contain_chinese(check_str):
"""
判断字符串中是否包含中文
"""
for ch in check_str:
if u'u4e00' <= ch <= u'u9fff':
return True
return False
if __name__ == '__main__':
text: str = pyperclip.paste()
if is_contain_chinese(text):
# 如果是中文,则去除行内空格、行尾换行和英文标点。
text = punctuation_convert(text.replace(' ', '').replace('n', ''))
else:
# 如果是英文,则只去除行尾换行。
text = text.replace('n', '')
pyperclip.copy(text)
然后打开 mac 的 automator 应用,打开之后选择“新建文稿”,起个名字(不要乱起,后面还会用到),然后选“快速操作”
然后找到“运行shell脚本”双击,工作流程选择“没有输入”,之后就可以像在终端里一样执行python脚本了。
因为我把环境变量写到 ~/.zshrc 里了,只有启动终端时才会加载,所以我写的是python的全路径,正常应该不需要写完整路径。
之后打开系统偏好设置–>键盘–>快捷键,在服务一项中找到通用,刚才新建的快速操作就在这一栏里,指定上自己希望的快捷键。
然后,只需要复制文本,按下快捷键,文本就被处理完成,大功告成啦!



