|
|
所见即所获,提升你的数据采集效率。
: }6 _3 u7 d9 g# F$ i( |写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。
3 B* ~6 |* n* j4 @- C: \" H不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?3 `4 T7 K! x# y1 _: T% n" ]0 o6 s
我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。
, t! |9 A3 e# {& p; d: A《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。
! X. I X+ v* ]0 C然而,最近我自己也遇到了这种需求。
( e2 P0 A! j/ o我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。9 k: p9 L2 n4 b/ M
在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。
$ N3 l- Z" W! G, N/ H0 e例如这样的:
% n2 [: o4 S/ |2 L 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?
( I" V- W H/ P/ }7 @1 y对,就是大名鼎鼎 BERT 语言模型。
0 i8 {8 O7 X* q8 R# t; \2 I# W一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。
- e2 N0 S! u2 n) b( ]; s" P: q7 h& m我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。" Y. }: E$ r6 `; I6 t
既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。
% v9 K% o; C( I. x$ x4 R: t 但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
/ D |9 z! N0 N+ K; B8 h其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。. x d$ u5 p) W. K1 ]7 Y% a
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。* u5 D0 k2 J8 \3 B
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。( E& v$ m. E- q" w ?, f8 b) K- E
它的名字叫做 Tabula ,网站链接在这里。
1 k+ D8 _. T4 _, b. |1 w) C 网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。7 R4 r: q& g; f- d
我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
5 c) r5 a2 q- H' I9 X请点击对应的链接下载安装。7 f8 U y+ s \' M) [, r
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。! {* \8 A6 U2 @6 f) P" K8 G
双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。
( N- K( y( g" V8 z6 |- U1 e 下面我们转换一个 PDF 文件试试看。
( D, B2 }, |+ G2 |) N$ U这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。
( s8 g. c, f" _) ~点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。( q4 x! X# v7 D/ h l6 e/ M7 r
然后点击 Import 按钮导入。
9 S* G: P4 Z2 b8 i+ y, Y8 n: q( l 导入后的 PDF 文章内容会分页显示出来。& \% j3 m+ }5 }) P
你只需要翻到对应的页面,用鼠标勾选表格区域。
; [% j" S/ A1 S$ A! f: b 然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。7 m0 H$ V' G( W" R" H" i
然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。$ W6 V: M" A: P
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。8 ?4 p+ P- ?4 i" H4 T ]
例如选择这个表格的时候。
+ F, u! s4 n7 ~ 导出的结果就成了这个样子:
$ r9 T2 Y! G5 m& r+ e 这怎么办呢?; |8 I' j( ^* ~& g) n
其实,处理起来并不算困难。
1 Z6 @- u# H6 }' ]; X* K我们先导出自动转换结果为 CSV ,然后用 Excel 打开。3 [9 I. \4 N' C3 c* n0 e
这里以第一列为例。显然,这里三列数据被挤在了一起。
3 D: v/ v# c" Y4 h, a. H, @: t好在因为这些数据都是用空格分割,因此拆分并不困难。3 Y( H8 i! E" V+ J% }- X: [
我们新建两个空列,好容纳新拆出来的数据。
" W- u( j7 {# f 然后选中第一列中需要拆分的数据。6 `9 w6 ]7 W, ?2 G
进入 Data 选单,选择 Text to Columns (文本到列)按钮。9 I5 \4 c; n% q; h& r1 v( M' P/ r7 V; {6 Q4 {
第一屏直接继续。 ^# Q( K3 Y5 ^! L7 K& I
第二屏选择 Space (空格) 作为切分符号。) b+ W* v9 T* M# w
点击 Finish ,就可以了。& @& @( M. U9 h' F; e+ J# k4 ?; Q
看,是不是已经拆分成功了?
6 l; b1 o; o2 E% l% h. E( e2 ^* i# m9 d# V8 Z: J
- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;
. m3 p. s: d- g" l - 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;& o" m9 l% f, Z
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;8 T5 v0 e5 [ @
- 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。
: d5 Y k2 L/ U& _; [+ q& k3 l& Q 祝学习进步!
6 C4 u; j) ?1 j; @% J b, c& G& A, y' }. q
来源:http://www.yidianzixun.com/article/0LcrRSSQ1 l4 k/ O6 j) B! {3 u. g* J5 J
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|