|
|
所见即所获,提升你的数据采集效率。; _4 d6 Q/ ]6 f+ `0 }
写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。
! ?3 ~$ G7 ]7 N, R不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?
6 V$ @% J/ A$ L0 E我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。
' _7 H2 \- i! x4 y2 z+ B1 _《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。
( l2 G5 W$ @9 q9 M* v% H然而,最近我自己也遇到了这种需求。
4 ^3 A9 P: A& F, v' w5 ]' n b7 `我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。0 q$ A% v- S6 U7 C
在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。% f: @% s5 D; U6 _3 p. C+ P) S
例如这样的:
9 h( n' }4 y( }! _, B0 ^. N 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?1 x3 N D. b4 v% @+ P4 [
对,就是大名鼎鼎 BERT 语言模型。
! D* |! Y) R" H$ L% }4 u/ X t一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。# `6 i" k- }& ~" N1 j" h
我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。8 ]8 b! U' w* C# L. i6 r' A
既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。
l% E- W, T/ E: [! L 但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
2 Z# E3 b: U% m; r5 j# g% y4 }% J其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。% T1 Z6 L( A( x" `
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。, p0 f/ E- O9 ~9 c
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。0 v! C( m' X% E1 A
它的名字叫做 Tabula ,网站链接在这里。3 h2 p; s* E0 H( b" A
网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。. [' U% J4 q% Q# F; p: S
我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。' e" O$ o& Z4 W8 c3 ^9 K/ r% `0 l
请点击对应的链接下载安装。
0 L1 K7 J8 i1 D8 Z) v# J; q7 y A3 MmacOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。, I" _: C0 e: Z R8 @1 b% I: d8 c" F
双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。
; `' Q" J& C { j- o) F4 j 下面我们转换一个 PDF 文件试试看。
8 l) I3 Z5 K' _. Z/ a- Y( z' d$ d这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。
* P" R3 B. H/ }. `点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。
f0 H8 u1 B$ k) A' ?3 J 然后点击 Import 按钮导入。$ ]9 H# V4 u: b w) T
导入后的 PDF 文章内容会分页显示出来。
' h$ \# Y5 f, E* i 你只需要翻到对应的页面,用鼠标勾选表格区域。
$ K' W/ f, \6 l! }6 a1 l( L' e 然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。
% B6 p H6 N, U6 n# ] 然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。9 q' O6 G1 `0 ?3 ^
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。! v1 N+ l: T8 T' u
例如选择这个表格的时候。
& Z J* ^3 v/ f. R; ?# W5 p$ ` 导出的结果就成了这个样子:( {5 g( ]. S' l# \* X6 s
这怎么办呢?
5 ~4 |3 B% U7 B, u1 N4 {其实,处理起来并不算困难。( K# N# [! u% T5 H$ D' `" y
我们先导出自动转换结果为 CSV ,然后用 Excel 打开。( l# [8 z! j$ V
这里以第一列为例。显然,这里三列数据被挤在了一起。# s& k) @" N" r+ M/ b5 T2 r
好在因为这些数据都是用空格分割,因此拆分并不困难。* X5 ~6 ], g/ W2 y0 D8 _+ O2 h
我们新建两个空列,好容纳新拆出来的数据。
) f; Z5 H, a, t) ^! M1 M 然后选中第一列中需要拆分的数据。3 y5 N2 p# s6 Q4 {7 O
进入 Data 选单,选择 Text to Columns (文本到列)按钮。
. g/ |+ ?, f+ i P6 G8 a4 z 第一屏直接继续。7 @2 w, x( A6 ~: ~, s' Y( X
第二屏选择 Space (空格) 作为切分符号。# H# k) y1 W0 J! D
点击 Finish ,就可以了。
6 b' v9 i: ^5 ]. u/ N 看,是不是已经拆分成功了?5 E s% Z8 C2 E) q
1 R4 n- S( j% a
- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;# W* N$ W7 ~7 D9 v8 O3 h8 s0 f( E
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;0 A* |; R |0 i8 J6 y7 T. z
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;
7 X. E% r% S$ D' r - 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。% S/ r, s/ y3 i8 X9 x
祝学习进步!
% L- T8 V2 ^! Y C+ _( G0 r0 |6 S) y' O2 Y9 `0 C
来源:http://www.yidianzixun.com/article/0LcrRSSQ. W8 k2 H) g; q1 B2 }
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|