|
|
所见即所获,提升你的数据采集效率。
; v4 s0 }. G: Q) X& y写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。 m5 L, g# x/ w3 [
不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?
! V, G, w0 V& r) T6 x* c我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。, v; ^% e7 e8 ]$ s" H( x
《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。
! k8 G4 x" F( O, D) X G然而,最近我自己也遇到了这种需求。2 P, q3 {8 Y+ p4 s
我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。
% Z* I+ w3 L, n) @/ a5 ]0 X9 |在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。
! e7 `2 y5 V2 b2 q/ N! g- H例如这样的:
. O. A) h3 X3 |- k8 v6 G 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧? h- ]. Z% h: d1 Y, x( n
对,就是大名鼎鼎 BERT 语言模型。
' O. h+ ~9 E! D5 _一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。3 |. P ]7 @$ Q+ m
我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。
+ O4 ]* z1 E* y8 F& [既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。
; }! |9 v0 g( p- M# |7 [ 但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。/ H" \% E4 P, u, U
其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。
* }2 v# c* R p; b1 B" L7 B# k: I几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。$ W( s' D9 y/ h+ Y% b7 S: J% `) J
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。
! L9 a' M* d7 _ ?) R/ y它的名字叫做 Tabula ,网站链接在这里。
* |9 Z1 k1 _( f 网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。
/ r: G9 c( K' m* I1 c1 M2 A我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
; d0 a7 o5 ~8 l+ P# B; s1 {, d请点击对应的链接下载安装。+ |& m7 q6 X5 f/ {
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。
6 M& Y. Q7 O6 Y, U+ j- Z$ s! S r 双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。2 B7 z5 l6 O8 l
下面我们转换一个 PDF 文件试试看。/ L0 D5 k, H* x/ |: V1 H# R8 x4 H
这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。
9 f) C/ b; l- L( e! Z点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。
* W" Z. D3 R$ g5 U* E$ K 然后点击 Import 按钮导入。
- Z* w G# r, Z$ P0 p 导入后的 PDF 文章内容会分页显示出来。+ I, k! A( N$ C( C
你只需要翻到对应的页面,用鼠标勾选表格区域。
- a0 K! v' k1 ]+ B& O 然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。
+ p! j5 o4 w! h. v: g/ l: |" B 然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。0 ?* Z, g5 V2 t7 `( ?
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。+ O7 Q' g& u$ _
例如选择这个表格的时候。 C1 `; i2 K8 W
导出的结果就成了这个样子:0 S A9 x4 T) W9 \: h3 P
这怎么办呢?" @8 A8 H7 |! l ~% Y
其实,处理起来并不算困难。
0 C- h$ b- _+ T- ~7 g6 W% o" C我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
/ B9 U9 @% i$ T' ^ 这里以第一列为例。显然,这里三列数据被挤在了一起。
/ C8 x% e; A+ w! L1 j: t好在因为这些数据都是用空格分割,因此拆分并不困难。0 Q* T' F# F. d$ _5 O9 H
我们新建两个空列,好容纳新拆出来的数据。6 {" f$ o" e0 L9 V% P; |, q( R/ F
然后选中第一列中需要拆分的数据。
* K; L7 v6 C8 y! t4 ]- t进入 Data 选单,选择 Text to Columns (文本到列)按钮。
4 ^/ o4 M1 H. X/ \0 P- ] 第一屏直接继续。% e0 w( e5 e5 U
第二屏选择 Space (空格) 作为切分符号。
$ h, \& O( O; l# U/ n: ? 点击 Finish ,就可以了。. A1 C* K/ |* [$ |3 _- K
看,是不是已经拆分成功了?
3 d! X* p! g" h* `. {3 l4 W
: ^( ?+ |6 N) j* W; M9 X+ H: U- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;$ Z& O+ q" e+ f; V5 X! T
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;" ~$ Z* }$ v0 h8 B& Q
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;
) z+ S; B5 ^" e1 n' @5 Z8 E - 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。
* v! ]) P* O8 m! b' G, Y# [ 祝学习进步!
5 v5 V$ h; G1 }/ }9 V5 c+ m+ k; Y" `
来源:http://www.yidianzixun.com/article/0LcrRSSQ
0 _1 t7 |$ \+ R免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|