|
|
所见即所获,提升你的数据采集效率。
7 T3 a$ X5 U$ t/ G5 t写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。7 h. [3 \& p( n1 Q
不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?6 |, k- c2 {; N) C1 f: s
我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。1 U/ H9 c; C3 t& r
《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。
& O: O+ Z) K4 t0 L然而,最近我自己也遇到了这种需求。 }% T$ y; b2 n9 s9 b* K) q
我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。
2 @5 q! F; _; S( r在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。
' Q. t2 m6 @( ^( M( I例如这样的:
3 w- y/ z4 P" _ 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?. I& G. f Z5 V
对,就是大名鼎鼎 BERT 语言模型。0 m) F" i# _7 W8 Z1 T
一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。; t" \* v: @" {" t4 U q
我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。$ [4 \, |/ d/ j- `5 H2 ^5 c* A
既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。
2 R |4 G0 |5 j4 U' v: K 但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。) \( X, G5 p. f' {' \+ G5 \5 _ I
其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。. c, H7 P. |" O8 J3 _
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。
q m K& U8 a! v' o6 s0 Z这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。
8 _$ u( b9 n2 u7 Z# ^. N8 E0 K9 y它的名字叫做 Tabula ,网站链接在这里。
- _ a" G7 y1 G2 R( M 网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。$ k3 l" J; _, @. Q0 s
我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
- g* [ i' n& a0 h% _请点击对应的链接下载安装。! T1 a' S6 o- W* q! Q$ K+ U7 H( X
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。9 B' o- e4 B% a0 S
双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。
( [/ ]3 i9 _6 F 下面我们转换一个 PDF 文件试试看。/ m2 M3 ]' A! _
这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。
- D, j$ |% `! ?点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。' B P2 F% s2 D% C# W# e
然后点击 Import 按钮导入。
# e( _- l# Y5 c 导入后的 PDF 文章内容会分页显示出来。
/ T% g$ a: k- I9 Y; i' t 你只需要翻到对应的页面,用鼠标勾选表格区域。" a" ^( V( [0 z0 @; l
然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。4 }# B5 S! c, s C/ ~; K
然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。
5 Z5 t4 Z( \; p+ { 但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。' ?/ |4 z0 Q/ \9 u( |
例如选择这个表格的时候。: B& _/ `# ]2 l1 v: C6 m
导出的结果就成了这个样子:
, C$ d' l" |$ G! _$ ?+ D% L# h 这怎么办呢?
$ m% B+ _+ Z5 D* ]# @其实,处理起来并不算困难。2 }. @2 I. A' v @- J3 _2 M5 M O- W" K! _
我们先导出自动转换结果为 CSV ,然后用 Excel 打开。: b5 N- a6 S; p
这里以第一列为例。显然,这里三列数据被挤在了一起。. d& T: u& b0 M
好在因为这些数据都是用空格分割,因此拆分并不困难。
' c2 p: K% F6 p" R( [" _3 c& t我们新建两个空列,好容纳新拆出来的数据。
/ n2 s& E, h3 I& Y1 f6 s* I 然后选中第一列中需要拆分的数据。" ?# y$ a: ^ x1 u/ S. }
进入 Data 选单,选择 Text to Columns (文本到列)按钮。) e+ j+ N1 [4 H) T- O. e1 h' z
第一屏直接继续。9 Y5 S+ O" j8 ~
第二屏选择 Space (空格) 作为切分符号。
/ J4 k; p( ?8 `) S/ K1 R 点击 Finish ,就可以了。# L7 [+ f, ]! G5 t: ]5 e! f
看,是不是已经拆分成功了?. I8 t$ d7 J4 @' N. m u3 l
" X7 V* X$ Z+ X% p6 v* w' _+ v7 H- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;0 D" n% R* t2 B+ V, n* G
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;2 w' H& b& H2 z- r: o9 p
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;
" v' v' U! d0 a& E% D - 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。% s8 w# J! j2 A" f1 \) }& u
祝学习进步!1 |* H0 L$ x) S f' W* F. g
C, \6 v2 J6 v( @$ v6 z# r来源:http://www.yidianzixun.com/article/0LcrRSSQ6 K: L. `& T) H: z( k% ~* J: _$ V
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|