|
|
所见即所获,提升你的数据采集效率。
# Z7 S! u3 c- M. j6 U* r# A8 {写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。0 ~/ T0 y. t4 q( L" S. d T
不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?. G2 o- U: _: }6 p" Y0 _
我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。/ I, e* V B/ C* y$ g) \, u
《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。
% w& L8 g5 O0 O8 ? w* y, l然而,最近我自己也遇到了这种需求。7 f9 u" ?2 U, ^ \
我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。+ y; |) S* o1 ?& p6 W, K' }. H
在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。6 V9 i0 j0 R$ ]5 d5 l: p( \
例如这样的:
; r2 b* ^+ n+ D# U; D5 N0 H 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?! j+ v% W+ u) u8 h- V
对,就是大名鼎鼎 BERT 语言模型。 j. w9 v: R& w* L3 W Q
一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。! G: B/ M9 D7 H" t4 H2 c! K
我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。
; W4 R/ Y& s8 `$ e既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。0 S4 ~6 d9 A6 ~4 X0 H
但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
: j7 N2 g! {/ M: ?2 Y: a其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。; T6 @+ Y6 E7 U3 _ `
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。
, C2 @2 ~2 G" N) a: X1 b这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。" v$ t" o5 }; w6 V
它的名字叫做 Tabula ,网站链接在这里。
# L, d+ K7 Y, n' G9 s 网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。) C# D- Z V; P3 V/ T! G! N: Z
我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。% i% {: p# T4 s
请点击对应的链接下载安装。 Q7 _1 C4 j7 D& y
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。
f- Z2 I" F. E9 {/ Y. V; ~ 双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。0 D# A3 w1 \6 j: H$ M2 \: v
下面我们转换一个 PDF 文件试试看。
& `+ j% v! F4 H) S' n- x+ Z3 q这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。' W2 E+ y$ v! p8 L3 E
点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。
1 k1 j' I! I7 u6 a 然后点击 Import 按钮导入。" A3 q$ O; |. G3 r
导入后的 PDF 文章内容会分页显示出来。7 J7 g6 Y r2 f
你只需要翻到对应的页面,用鼠标勾选表格区域。
- n+ A- z: `/ I8 g 然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。
[9 B* v' u2 s5 V5 T 然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。
+ l6 v( U7 K! M) s$ { 但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。& L6 a+ S: H" u0 k% C, @- k' s
例如选择这个表格的时候。
2 i1 f1 S5 J; l0 B 导出的结果就成了这个样子:
' I! H& [9 ~2 E8 T 这怎么办呢?2 N& J! K$ G; b1 _
其实,处理起来并不算困难。& g- ]$ y/ S9 d$ _2 B$ _
我们先导出自动转换结果为 CSV ,然后用 Excel 打开。3 l- P. t6 v) H" Z
这里以第一列为例。显然,这里三列数据被挤在了一起。
?* H& r- M& B+ d! b* Z好在因为这些数据都是用空格分割,因此拆分并不困难。$ S8 _9 W; b! ^+ H7 h2 z
我们新建两个空列,好容纳新拆出来的数据。0 }: V6 U6 j3 h
然后选中第一列中需要拆分的数据。
& H% E! D) \4 L4 e: j8 c& _进入 Data 选单,选择 Text to Columns (文本到列)按钮。
( v1 ]& P( L0 X2 s+ c 第一屏直接继续。
D' N! r' K' k7 X( h 第二屏选择 Space (空格) 作为切分符号。
) n9 q4 P; V: ?4 d 点击 Finish ,就可以了。
( H* y' ~: t3 ]5 \ b5 V2 y 看,是不是已经拆分成功了?: V& o% o& I) n- L
4 L _- I; s6 I8 A% P- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;8 F" d) W8 \# |/ z2 c* [/ \- g
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;. a0 ?2 q* Z! X. u& Y* B1 _
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;
2 i9 Q) Y. X, ?1 u - 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。4 o# @! R3 ~, r n& `
祝学习进步!) y2 Y5 y y* f$ G x* ?# V
+ [+ p R6 N9 U/ {
来源:http://www.yidianzixun.com/article/0LcrRSSQ$ w9 j0 N F3 a g
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|