|
|
所见即所获,提升你的数据采集效率。
: M1 {: I V% k5 m2 n写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。
8 V1 Y9 g" v# i% P' l# o不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?. Z/ A( v: P- i7 \7 v+ N
我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。
. O6 a7 b: D+ y( i1 e3 ~《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。
4 X; E# `. R3 l A Q- D然而,最近我自己也遇到了这种需求。8 ]3 g! {0 _4 S6 O% a" D
我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。7 x6 ] ]) B3 w
在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。
, G' E' I# H% H- s例如这样的:
* ~. l2 r2 W; [ 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?, b7 J/ V$ o& v5 C7 O
对,就是大名鼎鼎 BERT 语言模型。* d2 l/ `3 E) }
一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。
, V& C. C7 d1 u- u% S- N0 d$ f我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。& C1 H5 W$ o6 q1 v# i* N
既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。8 G3 I7 n0 f) ] S1 l6 N. V
但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
/ F$ s" z: b X6 h4 W- m2 T其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。6 {6 w% [9 g& C5 S; Y2 N$ W5 O
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。8 |2 ]5 Z8 W+ O0 p# ?) N5 z3 O0 G
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。& e& n, P( q0 O {4 j, j6 C) y
它的名字叫做 Tabula ,网站链接在这里。
& q* t, ^ ~2 k8 w- ^8 p 网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。 W1 B" g* R) c. t: o* U
我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
9 B; v9 W' u4 A) T请点击对应的链接下载安装。9 x4 R: @9 V( \/ @- H
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。+ F4 x. I$ }1 K3 @) h8 u; b% ]$ X
双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。& ~# Z% c7 T. i3 h
下面我们转换一个 PDF 文件试试看。/ W+ r: F2 u2 a' x# g' r, D- L ]; [
这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。1 z0 E: V' Y( R/ b
点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。
* Q# F5 {( s, j7 [8 |2 V/ m 然后点击 Import 按钮导入。
) I$ f) a; t5 w# c- z 导入后的 PDF 文章内容会分页显示出来。% e6 i* j0 }, t# l
你只需要翻到对应的页面,用鼠标勾选表格区域。
9 V; z. m, s" n% v5 t 然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。
8 y0 }6 d6 h. Z5 Z5 o 然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。6 Y D) K2 {! R1 b& t5 o- g3 u
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。
+ O7 e4 m, {9 G, Z例如选择这个表格的时候。" {: {1 E% O& U
导出的结果就成了这个样子:
5 o* S6 q4 h+ e9 g 这怎么办呢?% `& p# e$ i: Y K5 Y
其实,处理起来并不算困难。+ D4 c% R% G) W! l; A" E4 D
我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
. @+ {: e i u& |0 r0 `7 q2 d+ B 这里以第一列为例。显然,这里三列数据被挤在了一起。
2 w$ Y+ @% U& }" B好在因为这些数据都是用空格分割,因此拆分并不困难。
( s# M$ p6 n; K3 K我们新建两个空列,好容纳新拆出来的数据。
* U: ?( j; S' M E9 E: I% ? 然后选中第一列中需要拆分的数据。4 i( X2 K V( u3 U! ~# i
进入 Data 选单,选择 Text to Columns (文本到列)按钮。% I/ x% m5 ^1 }: p; D) F A
第一屏直接继续。' b3 J: o1 l) v8 a7 E
第二屏选择 Space (空格) 作为切分符号。
+ p Y# y5 K) {0 F( O7 F 点击 Finish ,就可以了。: c! J9 H5 [ n: w) {2 y$ `; N2 h+ w9 o
看,是不是已经拆分成功了?, M' m' i, e" B. H+ _7 X0 ~" j! I. u
& R, \. m1 x W. \/ l- n- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;: P, d! u( J$ T+ i6 C* |
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;# x. D% ^3 Q$ J8 d* f1 _' h
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;
" O' q4 ?9 g2 V' q - 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。
2 P; @: w. o" X) \6 G3 H' v 祝学习进步!( ~0 ]( x6 D! k/ w9 e" B% r
2 K& s, V: _8 E4 E F2 Z8 @# _& v# t
来源:http://www.yidianzixun.com/article/0LcrRSSQ5 I3 X1 J) P, G ]
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|