|
|
所见即所获,提升你的数据采集效率。
; D7 O9 N) D" i& K7 a5 Q写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。 b2 P; X. f; E) N1 U" _
不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?
/ `0 K5 t9 ^8 Z6 V, Y6 N我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。# T( n4 ~; n* k3 p# o
《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。
9 B$ W* ]* Y+ j2 l2 d然而,最近我自己也遇到了这种需求。
5 S/ N" w- D0 \8 I; v8 \/ @我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。
$ j+ y/ {* I3 c在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。
. O) E$ x( A7 Q( f例如这样的:
3 W0 m$ T+ T5 P9 ` 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?
3 \! Z4 c7 U4 _' z2 ?9 ]/ |对,就是大名鼎鼎 BERT 语言模型。
9 g2 s. e; U$ h* z, W# R% A: C: J一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。
6 H, K) H* Y6 q) R3 C, y2 @我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。& [. x7 O2 ]3 H
既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。* w, y- u* o' G% k
但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
4 @& w0 z4 {" \2 C) q" U O* g3 z其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。
1 @. L6 _) U, W8 _几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。
1 X# p. q! X8 A这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。0 }4 \) g8 l5 q3 N; B( e7 v8 {
它的名字叫做 Tabula ,网站链接在这里。
$ h6 V7 C% `9 [3 K. a 网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。
: w; z. r) W, t0 x我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。% }* x3 s/ s9 K8 _" ?& I# `
请点击对应的链接下载安装。
; e- p3 O( J0 T! u$ ?5 d. o( amacOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。
3 n% U# ~. `2 U! B. j2 Q 双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。
: {6 T) }! F! W9 V c" B- m2 G 下面我们转换一个 PDF 文件试试看。
. \5 j) o; w: |: d: M4 y4 V这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。5 J* j+ k; f! V
点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。3 m: G6 ~" }: t! E0 h, Z
然后点击 Import 按钮导入。$ d0 B# U4 l: O- e
导入后的 PDF 文章内容会分页显示出来。4 ^6 u' q* }# l7 X2 @
你只需要翻到对应的页面,用鼠标勾选表格区域。
! g& r, \# z7 A/ P" e 然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。9 X1 E) W( V+ j0 |- A, u. W) A$ i- o! o% W
然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。8 r* y8 e0 X9 q4 g$ B; E
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。) Z8 G2 l; s! `. B! S
例如选择这个表格的时候。
) I" Y+ a. [3 d' j: M, a 导出的结果就成了这个样子:/ o( Z; k2 T a! \) H
这怎么办呢?
' t: C/ o' h: Q其实,处理起来并不算困难。
T! ?6 b) T4 U+ @2 Y我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
4 M1 @0 F# w! N/ @9 w* S0 s 这里以第一列为例。显然,这里三列数据被挤在了一起。
" N$ M) x- U' D好在因为这些数据都是用空格分割,因此拆分并不困难。
^7 k% @" \5 ^ {( s我们新建两个空列,好容纳新拆出来的数据。
- ]! s) g" o, W/ q 然后选中第一列中需要拆分的数据。9 m2 I# u, y$ H
进入 Data 选单,选择 Text to Columns (文本到列)按钮。' _% ]. H6 q1 `* v* |
第一屏直接继续。
9 ? c$ q0 r+ P! Q u4 N( j 第二屏选择 Space (空格) 作为切分符号。
; G3 F* N% \5 |! W* N+ ]' v3 k 点击 Finish ,就可以了。
3 f8 Z; p* y2 y 看,是不是已经拆分成功了?; A; O. A9 L3 k* W
5 \) L8 B/ c" X1 }. K; ]- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;. t! R( }8 b- J& O$ d/ Y+ j' w( D4 Y
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;
5 \" [' c: w; ^* I% T) j - 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;
$ _) ^ z" [4 W; ] }& z - 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。0 V) r+ Q: s- |: S; Y
祝学习进步!
$ S4 p: X! R0 U+ c& y" Z
5 @) t7 ?) l% B' _) P3 a来源:http://www.yidianzixun.com/article/0LcrRSSQ
, \+ w; g; l. } s9 A6 A% V0 j免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|