|
|
所见即所获,提升你的数据采集效率。
8 f% {4 `7 ~$ M c4 ~2 C0 T; M写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。
# o+ w' p* a6 @( [) O0 A不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?
# X4 M# h# G" I. r2 z ]5 A我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。
% Z4 }1 W9 j3 b2 l《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。$ }" @! C/ j, I. b! r
然而,最近我自己也遇到了这种需求。
1 \8 L9 l/ f I% x r |我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。4 E5 B3 A# |9 ~4 a$ H
在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。
7 Y8 ~' e. M. E: Z' t* [例如这样的:
; [9 u) e( W" a; P# j 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?
( ]: I1 Q1 B6 N e对,就是大名鼎鼎 BERT 语言模型。
0 A r+ D6 H4 U& Z一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。8 ]/ b9 d+ L V! _1 ]" e d l
我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。. n! V- x* J7 | ]- u
既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。
: f( ^( f P' |; W. A0 g 但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
2 }& ^ N: r/ t" K+ t其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。
* s" u' f( m* L+ J: U+ K几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。
: M8 V0 L' Y: k+ B; K这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。$ x8 g- t8 g: g& W" v
它的名字叫做 Tabula ,网站链接在这里。
" t) Q6 |) w1 E4 @1 W( E1 T 网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。8 U: Q% W9 }. U" {
我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
$ {( d( F' h* T% B( {- D/ o1 x) L3 H请点击对应的链接下载安装。) s3 k6 G& u) w2 N% A. c5 I7 C* M
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。
- s5 l; d) y! \1 }0 t# p8 T 双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。6 P7 B b; Q1 S5 C. i N3 ]& m
下面我们转换一个 PDF 文件试试看。! k2 i; g9 f; _) d3 v$ x& F. L0 a$ C
这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。3 r/ [6 W: B! V
点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。
* p0 c- B3 r P3 x0 C$ x 然后点击 Import 按钮导入。
* T& q% }- }- ~7 Q# X, N9 _ 导入后的 PDF 文章内容会分页显示出来。' R! F' O; J' O% H. \. J2 Z2 |7 j
你只需要翻到对应的页面,用鼠标勾选表格区域。 h. n" j3 x0 `. f/ x7 p7 L3 i
然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。7 J6 V5 H# h8 e" o$ v$ M, a
然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。
5 ~4 `* Z4 t3 i 但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。
2 o# A4 d+ \ S- I. B例如选择这个表格的时候。8 ]( q% V: Z* k% J" G5 ?' K
导出的结果就成了这个样子:8 k: h% x, W/ x$ V
这怎么办呢?
/ p M+ p5 ]3 `. S# {- G其实,处理起来并不算困难。6 P# u6 D, j3 ^
我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
5 q7 D0 N, o) m 这里以第一列为例。显然,这里三列数据被挤在了一起。; T+ Y; R: e, U5 w8 {3 p) \
好在因为这些数据都是用空格分割,因此拆分并不困难。
) B' N9 T1 s2 C0 x- O我们新建两个空列,好容纳新拆出来的数据。, `+ d' @9 l# H3 k* s
然后选中第一列中需要拆分的数据。 F9 H* U Y* [: B
进入 Data 选单,选择 Text to Columns (文本到列)按钮。
/ x5 k' F4 t s0 G! a 第一屏直接继续。4 d9 e5 q1 }* N6 Z# Y1 ?
第二屏选择 Space (空格) 作为切分符号。: N/ ]$ E" o5 f& [6 g# |6 N
点击 Finish ,就可以了。
7 U* z" ]/ n$ |* z. @# Z* s 看,是不是已经拆分成功了?* R& c% w- J1 N$ c- t
3 N Z" X+ ^ Y$ A4 G- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;
8 ?% u' ~+ }, Q B0 P - 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里; F. y: s3 A) M8 P
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;
' q% h" I Z6 v - 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。" `% k, O3 S( m5 S
祝学习进步!
( G/ `" E, [' `6 H2 K
% k- s, [! B" y6 @$ o来源:http://www.yidianzixun.com/article/0LcrRSSQ% s) |2 A8 O2 n+ W4 _+ m+ y2 y4 f
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|