|
|
所见即所获,提升你的数据采集效率。% K3 s5 ]! Z3 T. Z; n+ U! u
写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。; e$ D& U" G; M% p& @ m
不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?
2 x/ J8 j, e, r2 s3 g我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。
, P/ g) {. p( y+ W( f《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。
; v& M2 g5 L$ q% s然而,最近我自己也遇到了这种需求。
1 N) i1 l+ L$ A9 |我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。
/ r, n0 j( B: E! m! e8 X3 ]% S4 Y在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。( E7 p( h5 r/ S/ o9 ~. z
例如这样的:
' t+ l2 m M3 H8 i6 `: ]0 W 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?% V* x1 {* n, s* k
对,就是大名鼎鼎 BERT 语言模型。* h& H, B- y3 a3 V
一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。
1 x& |# V z2 V6 s! {我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。+ [6 e4 _+ s; b3 [/ S) s
既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。
) H* y$ x4 s$ Z5 {! z 但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
" `3 j! t$ M* f# X+ L其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。$ O1 e' }8 J$ i8 ], S
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。7 e( d" c4 n; P9 U
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。
7 r6 D4 p% p% x: U. a ?它的名字叫做 Tabula ,网站链接在这里。% x9 J6 Y, V; B. X& }. A$ E8 K
网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。
7 P8 `! T/ n6 g, j2 j3 t' d我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
a* B( S0 x( e) R6 g& h) Z. A2 {2 F请点击对应的链接下载安装。6 ?# E2 K' J2 W9 h% g: h
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。1 \5 }* O5 t, Q: o' { F8 M/ a
双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。
4 T8 _) `$ M9 Y 下面我们转换一个 PDF 文件试试看。
- s i/ }. x8 z7 ~8 i# k, i这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。
! J& n. S; Y* N( q- @5 w/ x点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。1 q4 i# ]) W% ^& Z) \$ K
然后点击 Import 按钮导入。. I# O& e4 q0 E3 {, @- Y
导入后的 PDF 文章内容会分页显示出来。
% T5 Y1 j* m3 g2 x 你只需要翻到对应的页面,用鼠标勾选表格区域。0 J: {# n, n* @* z1 ?8 Q
然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。2 f& p* `5 T6 u$ c) [' z P1 z
然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。; u: h4 A7 c2 ~3 ?' W- b
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。$ E9 R) V) W; u9 k7 W. q5 M/ e
例如选择这个表格的时候。/ k) i: p& h4 X. |# Y
导出的结果就成了这个样子:
/ `& X" A! w$ F; \2 Q 这怎么办呢?
8 z! t) ^ O2 w4 b; T* A0 Y$ R其实,处理起来并不算困难。/ o1 l, s' f! ?: T, {; J! z+ |
我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
8 p5 A; K. _; i- ]% Y( P 这里以第一列为例。显然,这里三列数据被挤在了一起。
$ k. D7 @ Q/ m( \7 N# `* A好在因为这些数据都是用空格分割,因此拆分并不困难。6 L% {# x0 w7 {# f: P/ N
我们新建两个空列,好容纳新拆出来的数据。
7 [, k2 M( H" j0 M! R" k- @) |2 ~ 然后选中第一列中需要拆分的数据。
2 l3 O( K8 h) K3 s+ e( e进入 Data 选单,选择 Text to Columns (文本到列)按钮。
* }. h4 J. z: y0 }" x- l- {. i 第一屏直接继续。7 O+ m. d6 {1 U1 N O, R
第二屏选择 Space (空格) 作为切分符号。
$ U4 z; R F8 w, V0 @/ Z( z 点击 Finish ,就可以了。% N `3 b4 S, ^6 \& z' H7 \* \
看,是不是已经拆分成功了?
) { H! Q* L9 e" [; o4 }
; [* B. S' K1 X& l0 _' N$ ~1 Y- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;
! e3 x. N4 F( m+ P! M" H! B4 s7 R - 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;
9 h( \7 A2 d7 }( E3 M - 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;; e9 y" X, z8 k4 [ B$ ]& Y
- 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。9 c7 E& W t2 z& U9 c G: C
祝学习进步!4 v2 y9 z* ~5 i) A* b& v: K: C* H
/ \3 h' z: P/ P2 D: m S
来源:http://www.yidianzixun.com/article/0LcrRSSQ
: V4 k1 O5 m+ u7 s( \免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|