|
|
所见即所获,提升你的数据采集效率。' {( K4 q/ A1 \
写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。4 x( [+ p2 _! i* R" ~, R$ v
不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?7 i& w( y8 N" r
我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。' ?6 }# a4 v5 O3 I b: Z$ e
《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。0 e. n! e" @6 }+ z% N- G6 T
然而,最近我自己也遇到了这种需求。
' F: W& W( n( e5 o# ~$ a- B6 _7 i我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。
' D' O; n* k1 M% U/ H: }在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。
# ^: ]& `6 J3 S2 a6 X# P; f例如这样的:! f& r3 j( @( r! j3 O# ?( S
如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?
/ c0 X1 b0 m" {: n/ A对,就是大名鼎鼎 BERT 语言模型。& G8 H$ n/ P( U9 y I3 }4 b: F) n* u
一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。
9 ~! w$ V' V. ?: B$ l我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。
5 ]3 A) O. x+ v' k% ]" w, [6 K0 |既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。
5 h% L: q1 x0 [ 但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
4 n2 x* p5 q" @: J9 H其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。2 b2 `: U3 H$ s
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。
* ?4 z4 a! b* h这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。
+ c2 f) C8 t6 X r+ G+ X* Q它的名字叫做 Tabula ,网站链接在这里。3 z7 X" r$ Q Q9 [& k6 u: L; U, [
网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。
1 U$ ], u9 g5 U+ t我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。* j- B7 h Z0 Y( ]1 C
请点击对应的链接下载安装。
- L( h. O0 g- E; o1 wmacOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。5 z8 {: ?% s( U" y9 ~3 U
双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。% [* X, P4 Q8 U: \# O7 U
下面我们转换一个 PDF 文件试试看。
2 U r% E& P; |( E! q7 N这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。7 s& q( n. K% _$ ^5 h* N
点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。
" s& S" O5 p* i% j$ s9 t! E 然后点击 Import 按钮导入。 W+ k( U* n$ `' i
导入后的 PDF 文章内容会分页显示出来。! [# y. v6 a' e, ~( y0 C
你只需要翻到对应的页面,用鼠标勾选表格区域。2 k2 f7 R+ h( G1 K2 i
然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。
- C/ i: o, \2 S- Y7 s 然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。" ~ B: G. ? c1 E5 Z; U
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。6 U6 p9 N% e+ b) C/ k. C9 B
例如选择这个表格的时候。" T. d& q5 J1 V' p
导出的结果就成了这个样子:
7 b/ e4 F) r( @6 r1 B1 q 这怎么办呢?+ Q+ d: q" \, Y
其实,处理起来并不算困难。
3 r- T) _9 x v; R$ }3 l! t我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
& I- _' l' X4 R$ w% Q 这里以第一列为例。显然,这里三列数据被挤在了一起。
" [- [7 L0 { A* @: n好在因为这些数据都是用空格分割,因此拆分并不困难。4 [/ J Q2 {- y4 h( d. H' a
我们新建两个空列,好容纳新拆出来的数据。
8 Y& [* a5 p. j 然后选中第一列中需要拆分的数据。5 p5 h# F. b& Q7 U
进入 Data 选单,选择 Text to Columns (文本到列)按钮。" ~7 c# f' k9 ^
第一屏直接继续。0 F6 g3 z5 F& E- k5 M
第二屏选择 Space (空格) 作为切分符号。
5 m) u6 Z! N& z }' ]1 o 点击 Finish ,就可以了。* p, c( o) j- E& y5 b5 c9 L1 k0 A
看,是不是已经拆分成功了?3 _- g$ }% z1 w+ B$ F
+ R2 C& P6 h6 q6 t( U1 t8 k- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;& U( d. v, F7 ^) ?, ^
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;1 m* W/ u2 f9 e& @3 z2 g3 s
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;" G' m. [$ j% E* I u
- 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。/ v* |: {4 ?3 w5 f3 k
祝学习进步!8 `: L2 N/ C0 N8 F* I; i0 o5 O
$ D/ @. [( C/ g6 n$ ?7 k* G
来源:http://www.yidianzixun.com/article/0LcrRSSQ% I' x! G; f+ I' b4 @ Q
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|