一个科研狗开发的文献管理软件 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

15573 次点击
所在节点    分享创造
287 条回复
zxCoder
2022-06-29 11:49:24 +08:00
论文对应的 pdf 是存储在本地吗,能多端同步吗,还是说要自己同步这些 pdf ?
SorryChen
2022-06-29 17:06:23 +08:00
@zxCoder 是本地,云数据库存 pdf 的话开销太大了。同步的话大部分人都是 onedrive 之类。也可以 webdav 。
zxCoder
2022-06-30 20:45:26 +08:00
看代码里使用 pdfjs 解析导入的 pdf ,对于无法解析的 pdf (特别是没有 title 字段的),是怎么处理的呢?
SorryChen
2022-06-30 20:56:57 +08:00
@zxCoder 请问您说的处理指的具体是?如果是整个导入流程大概是这样:

总体上是一个个 scraper 串行执行。我根据大概的一个准确度设置的优先级,来提前停止节省搜索时间。

1. 首先是 PDFscraper ,首先解析 PDF 自带的 metadata ,如果里面有 title doi 等信息,那最好,进入下一个 scraper 。如果没有则找全文最大字体的字符。因为标题通常是全文最大的字。这样可以解决一部分文件的标题提取。对于有些特别的文件,比如来自 ICLR 会议的论文,写了单独的逻辑。当然对于更极端的情况,是会提取错误的。这个也是没办法。在不借助神经网络的情况下,我想不到别的单纯的程序能实现的方案。
2. 之后拿到标题之后,基本上就可以在很多数据库里搜 metadata 了。比如 DBLP 之类的。然后根据返回的结果看看是不是找到了然后赋值就可以了。像有 DOI 号的那些,直接 DOI 搜索就能找到唯一的 metadata 了。


大概就是这样
zxCoder
2022-06-30 21:20:34 +08:00
@SorryChen 谢谢解答。刚刚我也仔细看了下代码(不太熟悉 electron )

”如果没有则找全文最大字体的字符。因为标题通常是全文最大的字。这样可以解决一部分文件的标题提取。“ 这个想法和我之前想的一样 hh ,之前写过一个解析 pdf metadata 的小脚本,就是大概用的这个逻辑
SorryChen
2022-06-30 21:24:25 +08:00
@zxCoder 在未来如果有可能的话,我是想尝试用 Deeplearning 的算法去解决这个问题,毕竟自己就是学这个的。也算是学以致用了。应该就能去解决各种极端状况的提取了。
xswer001
2022-07-02 15:51:58 +08:00
感谢作者,界面比 zotero 好看太多了。不过还不能原生支持 macOS native 会有点遗憾,electron 应用一直觉得没那么流畅
SorryChen
2022-07-02 17:44:15 +08:00
@z1249502889 没办法,一个人维护双平台成本太高了。如果有人能一起就好了
menc
2022-07-07 15:35:46 +08:00
一个可能不太现实的小问题,能不能把 sci-hub 下载集成进来呢(
SorryChen
2022-07-07 16:45:43 +08:00
@menc 请问是什么场景需要呢,现在导入论文一切都是从拖入 pdf 开始的,如果有了 pdf 不就代表已经下载了嘛😂
allAboutDbmss
2022-07-25 15:04:01 +08:00
在 edge 里面用这个 chrome 插件

点击插件后显示: paperlib processing...

这样是正常的吗?
SorryChen
2022-07-25 15:12:52 +08:00
@allAboutDbmss 你要打开主体软件,然后在相应网站点击插件,就会导入论文。比如 arxiv ,点了之后你会看到主体软件出现转圈的图标,表示在下载论文导入
allAboutDbmss
2022-07-26 15:52:51 +08:00
@SorryChen 主题软件是 mac 或 win 的桌面端软件吗?
可是我是 Linux, 以为 chrome 插件可以平替
SorryChen
2022-07-26 17:29:41 +08:00
@allAboutDbmss 插件是方便导入论文的,与主体软件通信,linux 理论上需要重新编译,然后看看有没有 bug ,我手上没有 linux 机器所以没测试
henrylau0220
2022-08-06 22:02:22 +08:00
感谢作者。提一些个人建议:
- 记住上一次设置,如排序方式、listview/tabelview 。不然每次关闭软件后,重新打开又是原始设置
- 能否给论文添加一个别名,在编辑论文信息页面中编辑,并能通过论文别名进行搜索
- 通过键盘上 delete 键删除论文
- 编辑论文信息时,通过快捷键保存编辑好的信息,如 ctrl+s
- 增加对论文的批量操作,如删除、打上标签(一次性导入多篇论文,比如从别的平台迁移过来,一篇篇打上 tag 很慢)
- 在左侧能直接创建新 tag 和 folder ,并能对已有 tag/folder 更换名称
- tag/folder 名称最好能支持中间包含空格
SorryChen
2022-08-06 22:15:21 +08:00
@henrylau0220 感谢您的建议

- 记住上一次设置,这些是近期会加上的。

- 论文别名可以很简单的通过 note 来实现,比如一篇论文是 Axx Bxx Cxx ,你在 note 里写上 ABC ,然后搜索 ABC 就能搜到了。默认搜索是包含 note 字段的。

- 通过键盘上 delete 键删除论文,这个我考虑考虑,不同平台的删除快捷键不太一样。

- 编辑论文信息时,通过快捷键保存编辑好的信息,如 ctrl+s ,同上。

- 增加对论文的批量操作:
1. 删除本来就是支持多篇操作的,比如 shift ,ctrl 多选之后,然后点击删除就行了
2. 多篇添加 tag ,你可以根据上述操作多选之后,直接拖拽到左侧的某一个 tag 或者 folder 上面。就添加了。
3. 导入多篇,这个功能本来就是支持的,比如把三个 PDF 文件同时框选拖入到主界面。另外,如果想导入一个文件夹下的所有,设置界面里面,import 选项卡有导入一个文件夹的功能。但是需要注意,如果一个文件夹下太多,全部导入第一次可能会导致有些论文的 metadata 搜索不到。因为有的数据库有每分钟请求次数限制。

- 在左侧能直接创建新 tag 和 folder ,并能对已有 tag/folder 更换名称,创建新的 tag 和 folder 这个东西,和我的设计逻辑不太一样。我设计的 tag 和 folder 是强依附于每一个论文的,也就是说,在没有对应论文之前,不存在空的 tag 和 folder 。所以还需要考虑这个设计。

- tag/folder 名称最好能支持中间包含空格,仅用空格是因为空格有时候会导致一些数据库字段的奇怪的 bug 。目前推荐使用连字符 - 或者下划线 _ 来进行分割。
henrylau0220
2022-08-06 22:45:04 +08:00
谢谢回复!我还有一个问题:如果一篇论文在 paperswithcode 上有多个 repo ,会以哪个为准呢?另外,能手动修改 repo 信息吗?因为可能有时候显示的是错误的,并不包含代码
SorryChen
2022-08-06 22:54:28 +08:00
@henrylau0220 目前从代码逻辑上是所有仓库都会显示,一个一个往后排,不过我还没仔细关注过,如果你遇到显示不全的,可以把论文标题回复给我,我来查查看。

另外关于修改代码 repo 信息,我还在设计编辑界面该如何显示。因为现在的论文信息编辑界面已经稍显拥挤了。现在的一个代码仓库有两个字段:

{
url: string,
isOfficial: bool
}

如果有多个仓库结果的话,如何能够精巧地在编辑界面排列开又不显得拥挤,需要思考一下,我还在设计中。
henrylau0220
2022-08-06 23:09:39 +08:00
@SorryChen 论文标题是 Zero-Shot Instance Segmentation ,paperswithcode 上显示了有三个 repo ,paperlib 上只显示了第二个,点进去还是错的,所以我才想能不能手动修改
SorryChen
2022-08-06 23:11:31 +08:00
@henrylau0220 谢谢,我来看看,如果有 Bug ,会尽快修复。

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

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

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

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

© 2021 V2EX