|
|
所见即所获,提升你的数据采集效率。% S( K8 E* a% f- {7 w/ N, G
写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。
, s! W d; X+ k4 b# |% W( p不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?
) x9 p+ i) L) H5 F1 A$ L我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。! @/ S v6 G$ \7 {* H
《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。
! D+ i# k% |# `7 }/ ?1 K然而,最近我自己也遇到了这种需求。
" T2 u& U: W; i# ]0 ]$ c我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。$ [& F+ j! |; Q
在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。7 ? a6 ]) f5 c! W% u1 L+ e" a% I
例如这样的:8 O: c" i6 k# @
如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?4 |8 H9 t, S+ \# F
对,就是大名鼎鼎 BERT 语言模型。& {* P' W7 T$ Z1 W
一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。
8 v# P$ n, n$ F/ J# H2 _1 E我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。1 [2 h# K/ V3 L% B+ ~
既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。% r) P& {7 p5 g
但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。+ x6 s7 b) b W5 f" i* A( x
其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。; L1 `& ?. C4 q9 f( n
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。0 \/ e9 u' d0 w) M& \
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。) e A( I2 m; [1 j
它的名字叫做 Tabula ,网站链接在这里。
+ N$ p/ }) x7 ?& r 网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。0 v$ y3 D M) S: B: k. H
我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。& Y$ u9 h3 r% Q- t* f, d
请点击对应的链接下载安装。9 }4 q! ?0 a/ w
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。" a' I( V) l3 r6 T: I) @, O
双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。
- H: ^- H8 F# k( k; a H9 w: b 下面我们转换一个 PDF 文件试试看。
5 B! Q$ f" F+ Q5 q) _- u这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。; k9 J+ W2 `# z9 W* c
点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。+ c* i0 _# F2 l7 O
然后点击 Import 按钮导入。
7 p3 E7 q* ^- i' d( r 导入后的 PDF 文章内容会分页显示出来。9 {$ E* A4 C% d5 O# U
你只需要翻到对应的页面,用鼠标勾选表格区域。
6 ]) [9 |3 D" q( O) d& Y1 k 然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。
0 c" m# ~% Z1 V5 I7 G+ G) [/ e/ e 然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。9 ~5 i" n8 p% P, U# ~6 Q
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。
7 l1 O) a6 i3 J% O例如选择这个表格的时候。2 T4 ~; M `7 r# Z! L! i4 M1 ^
导出的结果就成了这个样子:1 i& j3 e9 ?3 N! a* w8 {% {3 K3 F
这怎么办呢?3 X3 ~/ m9 H# v
其实,处理起来并不算困难。
: |1 G3 X5 T' T8 n2 S/ W我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
9 ~% T4 u7 A; G8 M 这里以第一列为例。显然,这里三列数据被挤在了一起。
0 d4 b+ [: \ `5 ~好在因为这些数据都是用空格分割,因此拆分并不困难。: d$ W% {) Z0 t& U0 `0 `, L
我们新建两个空列,好容纳新拆出来的数据。
% Q: N9 B1 s9 L' @+ w 然后选中第一列中需要拆分的数据。
( Y3 K8 m" f) ]1 N* n进入 Data 选单,选择 Text to Columns (文本到列)按钮。
8 u4 K5 n8 ]6 z" V- i 第一屏直接继续。
2 N+ b" `( K* `. _/ ] 第二屏选择 Space (空格) 作为切分符号。
: l. b, T) J7 ^/ Z# f2 t, x# @, C 点击 Finish ,就可以了。
1 B/ o& a5 T% X _4 S( L5 @ 看,是不是已经拆分成功了?
/ w6 }' Z7 K. r- T" e0 Q5 E. y/ ?7 u
. z6 r! q; E. P! K" N- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;5 T% w! ~' r: O* c
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;
( J$ D% a9 j2 o& { - 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;4 n( C4 U/ o1 t3 r
- 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。! ?# v5 H* j" P' b+ k
祝学习进步!
/ |* Q" E- N- N$ S$ I0 t* C+ q2 C) h. b
来源:http://www.yidianzixun.com/article/0LcrRSSQ8 v- ?# O3 M5 H; |4 ^: z1 |
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|