|
|
所见即所获,提升你的数据采集效率。
; w1 {% R( p* t) a! t2 y. r# N: G3 e写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。
$ z; P- w$ W+ ~' `不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?, p" S" U2 a; m- E1 d" z* }
我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。$ F! `9 _% J4 z; d* y
《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。/ ~! N6 v: F8 t6 x, u- g: r+ M
然而,最近我自己也遇到了这种需求。: c) q9 O/ R z1 M, Q* I
我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。
. f& a7 c' k& k* J在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。7 O3 o) w. d9 d! u
例如这样的:# Q$ Z' {" J. P! Z
如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?
( M8 n$ s) n# [# o, w' O- i% @对,就是大名鼎鼎 BERT 语言模型。4 }% K6 L1 b6 U; J- _- r
一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。/ T7 ^" ~$ d8 a; o& h; [
我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。5 r+ M0 u* H; \/ }
既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。% O, `* v6 N+ J6 a/ G9 j
但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
+ D9 g% C2 \9 m% @# I, m其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。
: \4 T# ?! v y% j k7 B几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。2 e9 @+ i& t) b6 L' C& k7 T% B
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。
9 h/ c# p; _1 M" }; A0 i它的名字叫做 Tabula ,网站链接在这里。- M7 K' @$ q! j7 N4 M
网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。: S. |* V# v* A, u: x0 _( V1 y
我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
+ W: U: e/ Y2 @1 L请点击对应的链接下载安装。
) O7 _7 G2 K5 {; @& tmacOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。
1 }5 Q5 f& b5 J+ w+ L$ R 双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。: ^# j7 E4 M0 ?1 k
下面我们转换一个 PDF 文件试试看。: ]6 {6 U" A, x" r& f# `: P
这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。
/ E& p/ B$ s* t) y) \点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。
: O' I1 c, y' \7 r 然后点击 Import 按钮导入。
* ?- y, T& J. y0 e* j, P6 | 导入后的 PDF 文章内容会分页显示出来。% i. i0 \; Z; X. W; j
你只需要翻到对应的页面,用鼠标勾选表格区域。3 H( f$ i' K) r' [& F- F3 y
然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。$ ?; v% A7 T$ g) Y
然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。$ h0 M1 n9 w9 S, j' r) @
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。9 v" `" w6 e- ^6 Y6 y
例如选择这个表格的时候。. j, S5 S5 r; F" n5 _
导出的结果就成了这个样子:
g3 a }# o) v5 d: f 这怎么办呢?
3 e. a$ N' G* h, i4 m5 g2 \其实,处理起来并不算困难。
6 q7 z# t- _9 V: @! Z我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
@ N" Y7 O/ n) W# [. O9 } 这里以第一列为例。显然,这里三列数据被挤在了一起。
0 F9 P2 c" P4 K0 ?; j好在因为这些数据都是用空格分割,因此拆分并不困难。
* x3 P( \1 I; V# G: x" ~我们新建两个空列,好容纳新拆出来的数据。
9 Z+ S' q7 u( [6 R$ p 然后选中第一列中需要拆分的数据。6 Y6 G: V8 d' Z6 {
进入 Data 选单,选择 Text to Columns (文本到列)按钮。
7 j2 l" ]( V$ r; A. V8 F 第一屏直接继续。
% B, U2 K) }9 t0 H7 i 第二屏选择 Space (空格) 作为切分符号。
/ \( b; W$ ^$ Z3 k- {/ X0 D 点击 Finish ,就可以了。# e) P. V. U0 y& ~$ _# k' J, l
看,是不是已经拆分成功了?
t! \+ t" ?8 X0 |! r" c1 X# u9 ?: j
, r. J7 p. ^& W" ?- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;
; M9 {0 G# Z0 Z5 g4 s4 { - 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;
4 ]) D8 y' p! A) U - 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;& w1 F1 b! P# s1 n" L! |# T
- 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。
8 |3 ]" s- v" D/ ~2 {3 g' O% a1 k 祝学习进步!
# J: g6 P/ V5 Z* I/ V( ?7 g% S4 F) v) W5 [+ q/ P0 Y$ a4 A0 t
来源:http://www.yidianzixun.com/article/0LcrRSSQ
3 d/ h1 \8 M$ U免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|