|
|
所见即所获,提升你的数据采集效率。
3 T0 _ R3 z/ S% c写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。
o" H$ e4 }: j1 V不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?
^+ M/ a p- V/ @我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。
1 G7 ?1 i% w4 n9 [: \《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。
' ], F w: t8 `0 i! r然而,最近我自己也遇到了这种需求。
5 G3 A2 E0 [) h: n$ x% v8 [我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。
8 B. V b, E9 [) K" D在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。
( \" l9 [( P% J: _! Y% z' g. e例如这样的:' F0 r# ]# o+ [' }; n# l
如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?
/ Y; n% u0 l* q$ q8 _# h对,就是大名鼎鼎 BERT 语言模型。( l3 ]+ _) ]. t# A, ~" }
一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。
+ v0 l" k8 U3 }5 r我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。
# d2 ~! |# ?( K% Y( d; [6 z2 T% h既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。/ c+ K% J4 ^( \# U7 {& [# w7 H: d
但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
) p( z6 r. D8 l( Q其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。, G8 v+ `+ h+ C+ k
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。, y1 F1 C2 |6 D5 X1 C/ g
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。! p3 a: e- C6 V- r7 e" Q- X
它的名字叫做 Tabula ,网站链接在这里。' D Q/ _. z. O5 z4 n% a. Z! ^ U7 ]
网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。
2 u& U4 f6 \$ d- @! W我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。9 t) e$ b3 ~' a7 d& ]- ~: L+ e5 D$ k* e
请点击对应的链接下载安装。6 r$ f3 B2 j" C& x; M
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。
% h* H% P; P& T 双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。. N+ r5 E0 h+ r" r( Y s, o
下面我们转换一个 PDF 文件试试看。
. q b1 A2 ~+ m( i这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。
+ c3 x7 l$ j% ]% N点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。0 b; W \7 W* A$ p
然后点击 Import 按钮导入。0 s0 b( ~( t! ?+ t f0 B
导入后的 PDF 文章内容会分页显示出来。
0 Q1 S* c+ w/ Y( E' w 你只需要翻到对应的页面,用鼠标勾选表格区域。. k" J. B# \, C2 ]- z6 h& D- P
然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。
" y8 j) y S1 B' b/ F 然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。
. J+ ^: @6 Q& Z5 X 但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。
; _8 s7 M! c6 E2 f' d例如选择这个表格的时候。9 u; h. ]4 X) b1 Z0 Y
导出的结果就成了这个样子:
; C) X( P2 z& J8 \ N; w0 c 这怎么办呢?% g @7 E' t1 i, ^' D
其实,处理起来并不算困难。* W1 {, N" _5 L# L. C! x( y
我们先导出自动转换结果为 CSV ,然后用 Excel 打开。+ s' t1 W" X6 e. ]( z! J
这里以第一列为例。显然,这里三列数据被挤在了一起。
( M- y5 c& c: c8 i2 G好在因为这些数据都是用空格分割,因此拆分并不困难。3 }- f: r- E: |6 R; N( A
我们新建两个空列,好容纳新拆出来的数据。
R3 V" m; s9 ]2 m 然后选中第一列中需要拆分的数据。
7 I+ S- h3 v7 Q- {# E5 h进入 Data 选单,选择 Text to Columns (文本到列)按钮。( q0 `) a# n6 P! }0 J
第一屏直接继续。3 k0 f* t# k& K- s- @5 R E
第二屏选择 Space (空格) 作为切分符号。0 Q7 E+ G& Q+ b# d
点击 Finish ,就可以了。
1 y9 z8 r' _( I$ p/ n 看,是不是已经拆分成功了?
6 u, z5 S0 _5 N+ {8 ]# n r* K6 O2 X* R
- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;
& |; k7 Z3 q, F9 N7 V$ f - 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;( X: H5 S0 K, a0 m
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式; q* T& m ~3 R) V
- 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。2 [1 L. i. A6 d
祝学习进步!' }' L8 S! ?. S# [
6 ~9 s0 Z; _! i% Z1 M: f来源:http://www.yidianzixun.com/article/0LcrRSSQ7 x1 B# T+ H+ H" [4 ?9 d
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|