|
|
所见即所获,提升你的数据采集效率。+ h; o, Q( A R8 J' }5 K
写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。
( k% }! M) u, o不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?
4 S; A+ b( [3 J0 [& W0 Q' l我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。) f$ ~6 j/ \$ n, l9 y4 p
《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。$ Z2 U4 v8 ]$ l7 i* Z2 I- s1 o5 |
然而,最近我自己也遇到了这种需求。7 h1 w/ Z) a5 ?$ C* N7 R9 _: s% I
我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。
4 ~2 E1 R+ l2 Q- N在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。
0 W( o( o5 {& D: M6 ]. m' `8 o例如这样的:
& D( Q, w) l9 x7 T- h' s/ g 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?. X7 `4 E3 H9 T1 l8 x# O/ r q
对,就是大名鼎鼎 BERT 语言模型。8 D0 i+ `/ N% v9 ^
一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。8 l1 H2 u& Q8 r
我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。8 E. _2 i! `( I+ ~. {
既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。
7 `4 l4 Y) U1 p 但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
/ @ y3 `5 D5 R, K: E其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。
+ y6 V7 C. q3 W' _. v. D. P' Q0 b几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。& Y: A K( O. K/ O! b7 i% ]/ d
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。
" P/ u! ]' \3 n1 N2 j它的名字叫做 Tabula ,网站链接在这里。2 _+ f! _7 ^! e& |9 D b
网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。
; R6 y A; s5 s3 }我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
2 R& d" h2 U" k( f. A& Q9 a3 f& |请点击对应的链接下载安装。
* G) n# K, v4 f3 L8 u# u) TmacOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。) ^6 K/ c( w: f7 c
双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。
* F d, n9 \6 P7 ^9 B' p( W3 _ 下面我们转换一个 PDF 文件试试看。
2 x( y5 z7 J; }( ^% _) }. _这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。' s' l- ]* j4 \
点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。+ ]; D1 X( Y/ O6 c s% Z: h
然后点击 Import 按钮导入。% n! V/ f0 W! }2 x' E
导入后的 PDF 文章内容会分页显示出来。& M) h+ w3 l/ p# f+ m y9 u
你只需要翻到对应的页面,用鼠标勾选表格区域。
) ?, B+ a/ w" J( @6 a. X0 V 然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。# g a) @% d- D- f! I
然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。
# x- w5 \. t. I0 ] 但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。
, A8 P/ Z9 s3 s, ?! {- q例如选择这个表格的时候。& w/ N2 Q( l/ ~9 {/ l
导出的结果就成了这个样子:
1 Q, v/ {) W0 Z. E( c9 Z0 v& y 这怎么办呢?: X$ @1 L2 i2 M, g6 }5 a- f
其实,处理起来并不算困难。+ \* E; _& i2 L; r0 M0 e
我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
d% c2 E( R3 ^2 B0 D g$ d* Q( O 这里以第一列为例。显然,这里三列数据被挤在了一起。/ Y; x1 |0 Q, X9 t1 d2 |
好在因为这些数据都是用空格分割,因此拆分并不困难。
; Z% n3 U4 O8 p! X1 x: f我们新建两个空列,好容纳新拆出来的数据。7 Y5 H2 [# a7 X- q J) u* b' m
然后选中第一列中需要拆分的数据。 G- ?' x! q/ Y H
进入 Data 选单,选择 Text to Columns (文本到列)按钮。
; M* S# Q' Q* e! Y& b$ R$ o 第一屏直接继续。
$ F3 P7 W7 U- u# U' ] 第二屏选择 Space (空格) 作为切分符号。
, X9 o# ?9 o" k+ J$ D( Y 点击 Finish ,就可以了。
% d" s- Q0 m! V3 D3 o+ b Q ? 看,是不是已经拆分成功了?# V1 F. r: P9 O) f& u& M
3 L1 t( U3 _8 O! a; ^6 y6 Q8 \- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;1 e3 ]& ~! B& u) P8 ~0 l3 {" f
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;/ B( \/ X* C. [) k6 F1 n
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;
; P* }/ J0 c& h* ?5 {1 G+ b- b - 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。; t Q, m2 N$ \+ z6 `
祝学习进步!
- J8 e6 d1 S; {) l0 {9 h
2 P. l" j& L: G8 f8 d4 k来源:http://www.yidianzixun.com/article/0LcrRSSQ4 _" t' V# s, b
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|