|
|
所见即所获,提升你的数据采集效率。
- v3 U" _$ n, ]- B7 c) _/ J, c写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。
; B V9 K# R% K: G ~不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?, C2 ~" y7 n" W/ m6 V
我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。8 l# l0 a0 A& D# \- n$ ~! d- w
《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。$ ^6 q& P. r4 {* T2 B6 v" I
然而,最近我自己也遇到了这种需求。/ w+ c' F: y1 S+ ?/ D6 B
我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。$ ^ m! z, V0 X) a; H
在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。7 [! v* l5 a8 G' z$ R+ ]; h4 {' d
例如这样的:
- `/ V7 `( u' A" M, D1 N 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧? U5 x) T1 x, @4 a6 D" C/ i
对,就是大名鼎鼎 BERT 语言模型。4 m8 y6 [7 L7 M6 _
一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。! c" @6 M& ]7 i7 o$ _6 [) B: |' \
我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。
, r+ s% y5 c/ A; U; |4 B既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。" `1 F# a3 P' g
但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
5 U+ i2 M( D# H% r- C其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。
' ~# I& l! ]* t3 J8 U# W3 V几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。
# P/ P0 l8 w; s! Q" Q这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。1 ^: q% R7 z9 F9 O( I; F, D/ E
它的名字叫做 Tabula ,网站链接在这里。- Y( `8 |4 l/ `
网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。
" ~) m7 `8 d0 x9 h/ ]我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。7 r+ T' t* B1 z3 p5 ]
请点击对应的链接下载安装。2 g9 l8 R7 }7 E/ w; K- R9 q7 X, T
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。
" _" n( q; I7 u2 q5 M 双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。) S! J: `/ f* w' g7 f
下面我们转换一个 PDF 文件试试看。8 I' C. B; d: b5 U5 ~; z
这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。! E7 B, O( ?2 }$ y
点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。+ l4 d( N0 O9 U" i$ ~) H0 \
然后点击 Import 按钮导入。
! i! X; g6 {9 T& W' `4 `6 G# b 导入后的 PDF 文章内容会分页显示出来。
4 l5 _' G, {$ k- N1 s 你只需要翻到对应的页面,用鼠标勾选表格区域。
* U4 d2 B1 w& v" A5 P 然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。
7 s, X, |, X5 _' p4 m 然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。" t5 }- s7 l2 ~- G+ F, P: W ]
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。
3 X( p2 b; {: j3 r q例如选择这个表格的时候。6 U9 w$ U) a2 h/ J
导出的结果就成了这个样子:
) S: X, f( k% w2 G4 d( H 这怎么办呢?$ X" O" g. e3 v
其实,处理起来并不算困难。
. C+ [3 _4 j0 X, |; n. g我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
" D% S8 n8 @- {. a2 `' S' m 这里以第一列为例。显然,这里三列数据被挤在了一起。- g- A; Z/ T L* E% J2 w7 r# ^
好在因为这些数据都是用空格分割,因此拆分并不困难。
6 D0 S. T# a7 j; f7 M2 l4 _我们新建两个空列,好容纳新拆出来的数据。
$ @0 d& e1 j, [7 |6 E4 N8 J 然后选中第一列中需要拆分的数据。
! X$ E9 h5 S' @' A o! R4 a进入 Data 选单,选择 Text to Columns (文本到列)按钮。2 Z" S' j6 W0 s
第一屏直接继续。
# r3 a" D- ]' a( F0 K( X( K 第二屏选择 Space (空格) 作为切分符号。7 l, [; p* Q: C J* A
点击 Finish ,就可以了。4 ~* C2 b! J* P
看,是不是已经拆分成功了?
5 ?. C3 S9 F4 Z+ p
$ i) |3 X: q) ^. f* _2 t$ l- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;
V) N) [8 Y% q! _/ r3 n2 i7 X* S - 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;
9 u0 [7 |* V" D& s, @4 x F8 e - 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;* W7 w% d1 v' S [9 r
- 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。
" v+ m) P! x. x9 k: L* q" B( Y 祝学习进步!
$ j/ | q7 z; t9 t3 n' B0 h) l0 Z q( U. s, p* n0 ^) Y& i7 k! `7 p
来源:http://www.yidianzixun.com/article/0LcrRSSQ
9 J/ _4 |; Q8 M$ p( ` s9 S$ d免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|