|
所见即所获,提升你的数据采集效率。4 v# Y* v" W- A$ s- I1 C
写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。. h: w2 ^2 y, ]) Z1 v4 F
不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?
) Y% [! r v( Z0 C6 @8 ?我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。3 d0 W- Y, o* W( g! _# D
《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。2 i p: m; R8 t2 V7 j2 Y% D
然而,最近我自己也遇到了这种需求。3 B; l3 S0 p& A( {( ~: [
我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。
* U5 Y+ x2 N9 I, }) ~在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。0 c0 v' _: E2 \
例如这样的: G% q* Z! O- v: V! E3 J
如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?5 t$ K. U7 D) ?
对,就是大名鼎鼎 BERT 语言模型。' t; P7 C: w/ b6 ~5 i0 _# e, ^
一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。
0 Z& i! W/ K9 @ Q0 x$ }我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。
# y2 G8 B6 L" t既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。
- b; e: v' g; D7 k0 q9 b+ j# | 但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
; r5 b! r8 Q0 t- y+ r: I" `其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。
; Z, v9 p0 g- n6 K8 ^几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。1 l: R6 g! ?! y1 Q: H
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。
8 |( M6 S$ Z! d$ r& f5 i它的名字叫做 Tabula ,网站链接在这里。1 s/ g# f" D. d! G+ f
网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。: G* |( c: `3 I
我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
P* I0 s) s$ X8 s, ?请点击对应的链接下载安装。
6 y! T! g1 k5 k" U0 v) ^. l' OmacOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。- b' O& W: A- N* w( ~7 [: U$ E
双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。
9 a) J# O* E% [! A4 c7 W# x; m) l 下面我们转换一个 PDF 文件试试看。
. O% F, _! T9 S1 V, T; X: p这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。
. B" q# F9 J& c- O6 U+ y ^点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。
$ T t2 }, [, s5 K, F' t# v 然后点击 Import 按钮导入。 p) a. v7 C8 ~' o" R8 N
导入后的 PDF 文章内容会分页显示出来。
& a: p3 f6 d: y) @ 你只需要翻到对应的页面,用鼠标勾选表格区域。% Q5 ~6 x" m: X8 Z9 M/ j
然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。) B1 T% e6 h6 ^
然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。' o, c" d. b1 m% D; G
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。
1 e* o8 X# o8 n' o2 u/ O* D: D8 Z例如选择这个表格的时候。# G5 q$ N6 O& t& S0 |
导出的结果就成了这个样子:4 q, ]# v# l% R, J
这怎么办呢?
) T- e r6 N) x# ~; e: w其实,处理起来并不算困难。
. `8 K- O; {' s我们先导出自动转换结果为 CSV ,然后用 Excel 打开。 S; X6 ?0 F7 C& f, J) A8 n; c
这里以第一列为例。显然,这里三列数据被挤在了一起。
: M3 z# ^/ k+ ?! I' i& h/ z* V- l好在因为这些数据都是用空格分割,因此拆分并不困难。
; s. p& g; b9 c S+ t: U我们新建两个空列,好容纳新拆出来的数据。9 G5 N6 @- H9 m
然后选中第一列中需要拆分的数据。) w3 C y% G _9 B+ H5 s
进入 Data 选单,选择 Text to Columns (文本到列)按钮。; ]( u9 p; C" ~+ ^; x
第一屏直接继续。/ \- \( i/ o8 W; Z
第二屏选择 Space (空格) 作为切分符号。% \: _' \4 M! s3 }8 D& }/ _3 S. |, V
点击 Finish ,就可以了。! D- q- N& K2 ]% ^* D
看,是不是已经拆分成功了?
4 m! E. J* i$ m1 H
9 |' E" B- @ Y- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;
" z5 P7 n& g9 f. V& J- [ G - 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;- M% V+ c6 v. R9 k4 |
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;+ l. M3 o. c4 K( n6 k$ w
- 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。5 g: n( B T! v- M0 p
祝学习进步!
$ x* G. j# _3 l# Y& F7 I+ Q% {0 T# t# R* n2 E/ @: s# `$ W) ^6 ?
来源:http://www.yidianzixun.com/article/0LcrRSSQ% n! {4 `5 q9 W( q+ r8 P7 A( d
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|