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