|
|
所见即所获,提升你的数据采集效率。( e: I8 E% z) s5 {7 O6 O
写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。" E. H0 ^1 ~! B4 m7 E
不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?
% P. S" [. M7 D我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。1 ^* [ T9 E0 j: M% }
《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。
! J; B% Y3 C* n" k# B/ o4 T然而,最近我自己也遇到了这种需求。
3 t* S) n. q4 g! w- ]' i! B x我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。* ~- h) S0 w2 |% g2 u0 N
在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。
1 i$ x9 l! Y% T4 A! }例如这样的:
( H' c) J& S7 B: g# p7 s5 ^ 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?
9 ]( t! L! W+ @对,就是大名鼎鼎 BERT 语言模型。
5 S5 g8 V/ X/ `一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。
4 _( |% s' o* y我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。
/ x. ^, x1 I* _既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。7 p& R# x. [, j1 @
但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
7 C2 `: t1 t/ E( F6 S2 K其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。
5 m9 d# D" S- E几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。
; F n5 u# \3 b( r a这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。
Z+ ` d% E4 c6 M它的名字叫做 Tabula ,网站链接在这里。4 l! F F& v5 v) q2 }, E
网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。* T8 \6 D- v$ y
我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
5 s3 C6 `1 E. I5 X0 {% S/ U请点击对应的链接下载安装。4 t, J" o2 E2 d/ s0 `# x
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。
2 I: M/ j) P; ~ 双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。2 c/ o8 `) i4 s2 x% @, u$ N+ R" a; p
下面我们转换一个 PDF 文件试试看。) c6 N+ k# a- ~) _! q
这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。) n, @0 h$ P8 n; x
点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。9 K0 _7 l& G( g
然后点击 Import 按钮导入。4 @1 w) A# C( R# u g- _' x
导入后的 PDF 文章内容会分页显示出来。% x5 T, W( B9 B/ w6 u( ]( ]+ u* h7 \
你只需要翻到对应的页面,用鼠标勾选表格区域。& s& m' a# M! V+ T$ K/ G- \( |
然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。1 A$ o3 A( I- \7 e9 q+ e h" Z4 h9 b
然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。
0 y/ s2 T# @! \ 但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。4 s; G4 f/ `' i4 R
例如选择这个表格的时候。
8 R' p" R- G5 z9 F2 L( R 导出的结果就成了这个样子:5 i k3 j' j( D7 p. I
这怎么办呢?
3 G4 M5 Q1 w# l! a0 v$ M其实,处理起来并不算困难。
' z2 z% P, [) P9 f0 Y- l我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
- B( C8 \& B+ p0 O' E, Z1 R. h 这里以第一列为例。显然,这里三列数据被挤在了一起。
1 d$ \9 x' J a好在因为这些数据都是用空格分割,因此拆分并不困难。9 z+ E1 k: X+ {' _! Q
我们新建两个空列,好容纳新拆出来的数据。$ f ^2 w9 t% b1 A
然后选中第一列中需要拆分的数据。- W* q6 Y( {. h6 U/ B& T( G
进入 Data 选单,选择 Text to Columns (文本到列)按钮。# t. V* }( |! @# ~5 W1 n9 a) _* \; h
第一屏直接继续。) ~# K4 S2 Q6 N* l
第二屏选择 Space (空格) 作为切分符号。
& n" U/ j( t2 j/ g 点击 Finish ,就可以了。+ t% f2 ]" e' x' G' W
看,是不是已经拆分成功了?# N! [. r0 ^/ B% g
! P3 T: }+ ~( w2 V0 b
- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;$ i, J% [/ S3 J. Q
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;
1 ^; J u. c- K# _; G - 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;
% j8 z5 {9 E6 I# W5 L( Q - 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。- j x7 s, _2 b: f: x
祝学习进步!
* Q2 ~3 }- D; B6 U( a' E: |/ @9 ^, h' ~3 p9 q2 L
来源:http://www.yidianzixun.com/article/0LcrRSSQ
1 N" C$ B; O ]$ l5 r& Z Q, G! W免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|