一个科研狗开发的文献管理软件 Paperlib

2022-06-24 04:09:19 +08:00
 SorryChen

我是一个在计算机视觉里蝶泳的科研狗,一个文献管理软件基本是我的刚需。从硕到博这么多年用了各种各样的软件:Papers 、Mendely 、Readcub Papers 、Zotero ,没有一款能让我满意舒服的。


现有的软件

诚然这些软件都是伟大的软件,但是或多或少都有些小问题,比如:

  1. 无法精准的抓取到会议论文的发表情况
  2. 功能做的不咋地,一堆用不上的功能,每年太贵的订阅费 = =
  3. 太丑太丑了,像上个世纪的界面(没错说的就是你 zotero )
  4. ......

我想要的

而我想要的就是一个简简单单的论文管理软件:

  1. 他必须能精准地匹配到会议论文的发表情况。我认为这是一个文献管理软件最重要的功能。其他领域可能看期刊很多,但是像我们领域,大部分论文都是会议论文,我想 NLP 应该跟我们 CV 也差不多。但是会议不像期刊,很多都要很久才有 DOI ,有的甚至没有 DOI ,所以市面上的这些软件,几乎没有一个能很好的精准的匹配会议论文 metadata 的。我想要他精准匹配到是不是发表到 ICLR ICML NIPS ECCV 等会议上。而我不想每次写论文对对着一堆 arxiv publication 一个一个去搜他们发表在哪里的去做校对。
  2. 不需要什么花里胡哨的管理功能,就简单的 Tag ,Folder ,加星,Note 。
  3. 能够方便地进行检索,普通搜索,全文搜索,高级语法搜索,让我在开会时候想跟老师讨论一个论文的时候不需要手忙脚乱的去翻文件夹或者 Google 。。。
  4. 作为计算机行当,虽然 Github 的 star 能够收藏论文的代码仓库,但是并不容易找,更多时候还是去 google 。如果这个软件能帮我自动搜 code repository 然后存在软件里就好了。
  5. 当我准备开始写自己论文的时候,如果有方便的方式一键复制 bibtex 就好了。体验就好像打开 spotlight 输入关键词,直接回车粘贴。
  6. 它有一个简洁的 UI ,清晰的图标,至少看着不是上个世纪的。毕竟颜值就是生产力。

于是,一年多以前,在博士刚开始的时候,我就开始着手自己开发一个,符合上述需求的软件。

跟周围同学分享了一下,大家都觉得挺好用的。之前因为觉得不完美,害怕推广了之后自己没精力维护。经过一年多的打磨,这个软件也伴随我一年多的科研,加两次论文投稿。我已经把大部分功能做到我满意的地步了。所以在这里分享一下,给有同样需要的科研狗们!它就是 Paperlib !


Paperlib

使用简介

亮点

  1. 从 arXiv ,doi.org ,DBLP ,IEEE ,openreview.net ,PaperwithCode ,Google Scholar ,为每一篇论文尽量匹配精确的信息以及代码仓库。
  2. 全文搜索,高级搜索。
  3. 快速导出,一键复制 BibTex 。
  4. 为论文评分,分配标签、文件夹,加星,方便进行分类管理。
  5. 可以云同步数据,macOS win 双平台。
  6. 完全开源。

缺点

  1. 这是按照我一个人的科研习惯打造的,我不确定是否大家用的习惯。
  2. 对比 zotero 这软件,说实话因为自己没怎么用,我可能还不知道它有什么极其强大的功能,也许 Paperlib 这里没有。
  3. 开发者只有我一个人,我无法像大公司那样按时修 Bug 。现在基本是就是我周末没事的时候修一修。(不过自己已经很久没遇到什么恶性 bug 了)
  4. 我的领域是计算机视觉,我不确定其他计算机领域的人,比如 NLP 啊,数据库啊,啥的,能不能准确匹配好论文元数据。如果不准确可以开 Issue ,在软件里我定义了一系列 metadata scrapers ,我们可以一起开发更多的符合计算机领域的。但是目前计划是仅仅覆盖到计算机领域。因为其他领域真的不了解。
  5. Electron 。关于 Electron ,可能大部分人都不喜欢吧。实际上 Paperlib 是有 macOS 原生 swiftUI 版本的 branch 的,完成了一些基础的功能。但是作为一个人开发的软件,平时又要科研,想要维护好 win 和 mac 双平台,实在是太难了。最后我只能转为使用 Electron 。如果有任何喜欢 Paperlib 想接手 swiftUI 版本的同学,我非常欢迎。现在我看了看资源占用实际上也没有很夸张,比 zotero 是小一些的。。。可能因为没那么多乱七八糟的功能吧。。

最后的最后,祝大家科研顺利吧!

网址: https://paperlib.app/en/

Github: https://github.com/GeoffreyChen777/paperlib

15576 次点击
所在节点    分享创造
287 条回复
henrylau0220
2023-01-04 17:33:51 +08:00
@SorryChen 反映一下发现的问题:如果论文标题中包含特殊字符,如"&",生成的 bibtex 没有办法编译,好像要需要加上转义符"\",例如这篇“On Visible Adversarial Perturbations & Digital Watermarking”。
另外,我想问一下这篇是发在 cvpr workshop 上的,可生成的引用却是 cvpr 的,我注意到不止一次这个现象了,”Striving for Simplicity: The All Convolutional Net"是 ICLR workshop 上的,软件里显示的却是 ICLR ,这是 bug 吗?
SorryChen
2023-01-04 17:37:58 +08:00
@henrylau0220 你好,bibtex 的问题我会去看一下,关于 workshop 的问题,元数据都是来自网上数据库,如 DBLP 啥的。我确实有发现有的论文数据库里写的就是没带 workshop 。我会去查一下的,如果可以修复本周末就发新版本修复。
henrylau0220
2023-01-04 17:50:19 +08:00
感谢回复!我还想问一下能不能自定义 bibtex 中<citation>字段啊?默认应该是作者姓氏+年份+标题第一个单词,像“Learning Transferable Visual Models From Natural Language Supervision”就 @inproceedings{radford2021learning...}。我想如果能自定义成 @inproceedings{CLIP...}就好了,容易记住,最好还能根据这个在 paperlib 里进行搜索。
SorryChen
2023-01-04 17:54:54 +08:00
@henrylau0220 目前是跟 google scholar 格式统一的,因为必不可少有时候要去那里搜一些引用,所以默认统一比较整洁一些。不过你这个功能先记着了,ICCV 在即,等我完成手头上的论文可以研究一下。

关于你说的搜索问题,我通常会写在 note 里。搜索是默认会搜 note 的,我都把论文的昵称写在那里,你可以试一下。
ikn0wzxc
2023-01-04 21:45:25 +08:00
@SorryChen 哈哈好的,我还以为就是编译选项调整调整就可以
SorryChen
2023-01-07 19:39:32 +08:00
@henrylau0220

1. bibtex 特殊符号的问题修复了,如果你还发现不行,请留言告诉我。
2. 关于 workshop 的问题,我研究了一下,有点不容易处理。问题在于 DBLP 对有的会议区分了 workshop 和 main conference ,有的他不区分。

比如你说的这个文章:Striving for Simplicity: The All Convolutional Net

下面这个是 DBLP api 返回的结果,可以看到里面 venue 字段就是单纯的 ICLR 。

https://dblp.org/search/publ/api?q=Striving+for+Simplicity%3A+The+All+Convolutional+Net.

不过在新版本里,我多加了一些途径来获取这个信息,比如爬 DBLP 网页上的 bibtex ,来给出尽可能正确的结果。你可以再试一试你以前发现漏掉 workshop 的那些论文,重新使用 DBLP scraper 搜试试看看。(注意不要经过 paperlib official scraper ,因为里面很可能保存了之前的缓存。)
henrylau0220
2023-01-07 22:07:14 +08:00
@SorryChen 试了一下 ok 了,感谢作者大大!
micevan
2023-01-09 14:05:27 +08:00
@SorryChen 大佬,考虑开发个 ios 版的方便 iPad 使用吗?
SorryChen
2023-01-09 16:36:01 +08:00
@micevan 额精力有限,因为只有我一个人开发,自己平日还有科研压力,短期应该做不到。。😅
gklll
2023-01-15 21:56:00 +08:00
大佬,考虑维护一个 release note 的 RSS 嘛,想关注这个 app 的发展,GitHub 的 watch 有点简陋,也有点频繁了
SorryChen
2023-01-16 18:18:17 +08:00
@gklll 嗯有道理,不过最近我可能没空,因为在赶论文(同时也意味着最近不会有什么大功能更新- -),等我弄好了我会在这里 at 你。
yuhangch
2023-02-13 17:49:43 +08:00
你好,folder 怎么添加,我看到 feed 里 feeds 上是有加号,但 folders 没有加号?
yuhangch
2023-02-13 17:52:05 +08:00
@yuhangch @252 (撤回 找到了
SorryChen
2023-03-20 20:10:35 +08:00
@gklll 你好,简单弄了个 RSS 源:

https://paperlib.app/release-notes/rss

试试看。
qzydustin
2023-03-23 08:54:28 +08:00
太棒了,为楼主点赞。

我是 macos 系统,并且遇到了几个问题:
1. [Bug] 在调整 Title 列宽时,后面的列不会自动向后移动,所以会顶住。导致需要从最后一列开始依次调整宽度。
2. [Bug] 设置中的 Downloader ,点击加号后,生成的新条目中,按钮显示为 Edit 和 mainview.delete 。
3. [功能请求] 将导入的 pdf 论文可以设置为未出版或者类似的意思,让软件暂时停止扫描。因为我碰到将要出版的论文库中还没有,添加后扫描出错误的信息,不如做个标记,暂时排除。
4. [疑似 Bug] 将同一个 pdf 文件多次拖入软件,软件中数量没有增加(符合预期),但是 paperlib 本地文件夹中出现两个 pdf ,文件名的最后部分不同(不应该这样),可能是由于第一次添加未扫描完成导致的。因为我是连续添加同一文件。不知道作者是如何判断重复文件的,也许可以用 hash 码来判断。
5. [理解问题] 在文档中“如果你添加的论文条目没有 PDF ,那么你将在右侧面板看到搜寻 PDF 的按钮”,好像添加论文条目只有把 pdf 拖入软件这一个办法,所以无法使用下载论文功能。如何在没有论文 pdf 的情况下添加论文条目,然后用这个工具下载呢?
6. [功能请求] 将文件拖入 Add supplementary 后,显示的名字可以加入一个编辑功能。我拖入两个 pages 文件,现在好像显示的是扩展名。
7. [Bug] 将.key 的 slide 文件拖入 Add supplementary 后,卡住,添加失败。
8. [功能请求] 和问题 5 有点关联,我认为如果论文条目有 PDF ,也应该显示搜寻 PDF 按钮,arxiv 论文可能会更新版本。或者多个来源的论文稍有差别,可以让用户选择。或者同一论文条目可以保存多个版本的论文 pdf ,在右侧边栏可以选择版本。
9. [功能请求] 右侧边栏可以加入一个来源按钮,即元数据来源的网站网页,例如 arxiv ,这样点一下可以直接跳转到网页。如果扫描元数据是同时扫描多个来源,也许可以加入所有来源的跳转按钮。
10. [建议] 删除论文条目时,可以提示一下会删除论文原文件和 supplementary 。
11. [建议] 拖文件 replace main file 也许可以再次确认一下,不然 supplementary 拖歪了就把论文覆盖了。

暂时就遇到这些问题,Paperlib 是一个非常棒的软件。提出问题是为了让它变得更完美,为作者点赞!
SorryChen
2023-03-23 10:49:14 +08:00
@qzydustin

你好感谢建议。

1. 这个不是 bug ,是一种简单高效的 table 实现方式。底层就是这么写的。假设如果变一个列,后面所有都会移动变,那有可能我后面调整合适的某列又要重新调整,那就太乱了。
3. 没理解这个需求。如果一个论文没导入,那并不知道有没有发表,如果是导入进来的论文,未发表的一般都是 arxiv 。发表信息一般就是 arxiv 。你说的信息不准确是哪部分。如果只是不想每周定时自动搜索预印本论文数据。可以在设置里关闭。
5. 有浏览器插件。是可以在网页上点击浏览器插件添加论文的。
6. 目前因为数据库设计的问题,sup 是一个 path list ,因此想添加一个别名需要额外的数据库字段。需要改动数据库。也许我可以把这个字段拼到 path string 里面去。
8. 这个功能并没考虑这么多。而且是一个比较边缘化的功能感觉。可以先用 supplementary 实现。搜寻 PDF 功能设计是为了下载那些浏览器插件导入的条目的 PDF 。
9. 设计理念问题。在 Paperlib 里,一个论文理论上不能存在各种不同的元数据的。虽然在现实中,不同数据源返回的元数据有所不同。但是我并不想让他们存在。现在是按照优先级逐次合并的。以达到一个尽可能丰富的元数据。因此不太明白点击跳转到网站有什么好处。想要的信息已经搜刮到软件里面了,我感觉并不需要再进入那些网站。我只需要软件里看到这些信息,写作的时候方便导出正确的 bibtex ,就可以很好完成论文管理的功能了。


其他 bug 等测试之后会修复。
qzydustin
2023-03-23 23:41:35 +08:00
@SorryChen
3. 我导入了一篇会议接受了将要发表的论文(来自原作者,arxiv 上没有),按照直觉时应该匹配不到的。但是它匹配到了另外一篇标题类似的论文。这种情况下,如果软件可以将一篇论文标记为“不用去查询匹配”,就可以解决这个问题了。这是我的建议。当然,也可以让用户不导入未发表的论文,这也解决了这个问题。
5. 我看到了浏览器插件,感谢。 有一个建议,如果软件可以不依赖插件,直接手动输入信息来添加论文条目,那么这软件的论文搜集下载功能会更强大。这样当需要加入一篇未下载的论文时,直接添加论文条目,填写标题(作者年份),直接下载,进库。我感觉会挺方便的。
9. 对于论文来说,元数据时足够丰富的,不需要再跳转网页。但是如果我需要查询这个作者近期论文或者更多别的信息时,源网页可能会有帮助。这是一个可能小众的功能,我的想法是元数据查询匹配时,来源网站也许数据库里有,所以显示一下也许会帮助部分用户。

感谢作者回复,祝作者科研顺利
qzydustin
2023-03-23 23:47:42 +08:00
@SorryChen
5. Safari 浏览器插件名字应该改一下,现在与软件名字相同,拖入 Application 会提示覆盖,重命名一下就可以。
SorryChen
2023-03-23 23:59:48 +08:00
@qzydustin

3. 匹配到类似的我猜测是因为极度类似吧,这是因为搜刮器写的逻辑。里面使用的 title 相似度是>95%就当作一个论文,因为很多论文,在不同地方标题都有一点点差别,比如问号变了句号什么的。这是一个妥协的方案,所以造成了这个问题。

5. 浏览器插件名字不应该是重复的哇,如果要拖入 application 那必然是 safari 的,我这里显示的是 Paperlib safari 。

9. 如果你想要查询这个作者的别的论文,你试一试把鼠标放到右侧详情面板的作者名字上,然后右键。一个隐藏的小功能。
qzydustin
2023-03-24 00:10:36 +08:00
@SorryChen

3. 所以我觉得论文加个暂停刮削的标签,可能是一个解决方法。我手动改了那一篇后,后续会被再改回来。突然有个想法,也许 tag 中可以加上这个功能
5. 我是在这个页面下载的 https://paperlib.app/en/doc/extensions/browser-extension.html#safari-extension
下载后解压出来的浏览器插件名字就是 paperlib.app
而软件的名字也是 paperlib.app

9. 棒!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/861794

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX