|
|
所见即所获,提升你的数据采集效率。
$ P/ n4 h' {- \8 w9 N0 D写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。
1 i! j+ h- r: M0 X, E不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?1 ^ \ }3 H4 H
我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。
: u/ N2 K3 `5 @《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。
$ F, u* o f9 ^/ O a然而,最近我自己也遇到了这种需求。3 h5 _# s% j* \ b: n
我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。
+ t: j' h4 B9 a! J在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。
4 J) }$ l7 c* o/ y( _, Q例如这样的:
- N" B+ _. i( m% a0 w 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?% Z ^$ ~. B0 \1 D1 [4 I
对,就是大名鼎鼎 BERT 语言模型。
x' C+ m% `3 [一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。3 S7 W3 J p* `! C% ]
我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。5 Z7 J) g* b! x" @( J% P
既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。# n0 T0 I! |+ I& B, ^2 t4 T
但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
3 Z% Y* _ Y( ~' [4 g2 @其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。7 J- O# i/ {; O
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。5 c4 P( z% @3 {
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。
8 Y6 A v4 d" _$ a" x$ b它的名字叫做 Tabula ,网站链接在这里。7 u' |, v ~; F% U1 a# G
网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。, J! c# Q; W5 k, {3 }% r( i
我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
( b- J* X8 X! t2 z请点击对应的链接下载安装。' D- D8 A8 R( U. k) e" v. I
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。
7 k j/ |1 L' _$ D. t 双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。
( P6 ?0 W7 I8 b5 p- X1 X4 W6 m 下面我们转换一个 PDF 文件试试看。4 r/ m3 [+ P: v5 T* j
这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。. I- U% E; P" c- S" a5 h
点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。( D8 g P% J* |
然后点击 Import 按钮导入。6 W% H" e6 @$ ^8 c9 R, u1 o
导入后的 PDF 文章内容会分页显示出来。
7 {# C9 _9 `% k5 g, c1 _ 你只需要翻到对应的页面,用鼠标勾选表格区域。$ [/ f: m2 U: u! R
然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。. C) A G2 { r. |) [6 O# D
然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。
+ n1 ? f0 V, ?8 X' U' T: v4 C 但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。1 e. M" M7 h3 {1 n% f$ H' D
例如选择这个表格的时候。. @' {; a) a/ Y) n7 N
导出的结果就成了这个样子:# d* E a B& X* ~* D1 z; \
这怎么办呢?. v, s1 y6 @' ^4 o. c" k. ~
其实,处理起来并不算困难。0 I- c) p. ?3 o7 h6 ~! s
我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
8 t. s- U) u7 q' [: @- c 这里以第一列为例。显然,这里三列数据被挤在了一起。$ X% l9 y7 s- A0 u f0 l' T! O
好在因为这些数据都是用空格分割,因此拆分并不困难。
* X7 X8 `. h5 n: }5 Y" x我们新建两个空列,好容纳新拆出来的数据。
$ P6 F( L" q o7 i3 { 然后选中第一列中需要拆分的数据。& q$ U- d# t2 T/ k
进入 Data 选单,选择 Text to Columns (文本到列)按钮。: [/ \+ ?! o8 g0 L$ n4 M- i
第一屏直接继续。- I" ]3 w+ R' }- E$ [( b
第二屏选择 Space (空格) 作为切分符号。
' b" L2 Y% d0 K- |6 }. g 点击 Finish ,就可以了。
9 O" o& N8 t$ t 看,是不是已经拆分成功了?$ m) O. A1 z8 a8 d: m F. ^7 l. W$ s
$ @/ y i) h4 L% y+ \/ a! K, S; i1 r
- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;) i- {6 q( |/ I3 |7 ?$ }, C
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;
7 V* f) u3 Q+ y# {& h3 p - 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;2 J* n e; F& p6 U" ?7 T" O. s- U" v
- 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。
0 M1 j+ {8 R. m6 l* r 祝学习进步! h+ T# a" P6 q, I: u
. P6 g, g$ E( D& Z8 E7 }+ J4 N
来源:http://www.yidianzixun.com/article/0LcrRSSQ% O2 C: K8 d+ D/ I c5 H
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|