|
所见即所获,提升你的数据采集效率。
: g8 m# i O' ?0 u. s5 X% S写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。
5 {# h% R2 e" S. P( _; z不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?* K0 j% ]( C. Q( y! I# |, }+ v- \
我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。
6 a. c4 b+ t. u) X" U《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。+ W) ^9 ` O* N
然而,最近我自己也遇到了这种需求。4 w+ t: y3 \0 r% O0 ^
我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。
5 r: q# j: {2 b. a* e+ o在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。) k9 Y h: j8 e" t. d3 C+ |
例如这样的:, e+ ]( U& F6 s0 p
如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?5 y$ B4 a9 d5 S1 M+ W1 A% T, O0 j
对,就是大名鼎鼎 BERT 语言模型。
0 F1 v, Z1 C/ Q: b6 Z/ x一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。5 M! I3 {5 s( Z8 g
我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。
# a! ^8 u3 d8 |) [- `6 n5 L既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。* a! J) M6 p- Q D* B8 _
但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。4 \4 `1 q; Q& j& Z; \. x% V
其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。% Y, k" b/ }7 h! y, p
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。
) |, W# |( ^3 |; ?# e" f. \这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。6 n. I" p( e( Q8 d7 c
它的名字叫做 Tabula ,网站链接在这里。1 p0 G1 }; a5 K& N6 P# p) E
网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。
8 ~$ Q4 @ a+ F5 z5 r我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
" l4 Z6 J% _5 _/ a I! l请点击对应的链接下载安装。( s! \6 Y L O$ ]$ i* ~0 ]9 t
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。- N# ]: k' ]6 O: ^% h; F' ]
双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。
. M# o w2 H! \5 m% c1 r5 n 下面我们转换一个 PDF 文件试试看。5 X9 G7 X0 H( F
这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。' |8 ?3 m1 I$ l3 R+ F9 ?
点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。/ D8 |4 G3 D4 X- \( K
然后点击 Import 按钮导入。; `% F4 a1 P' }( H( F1 x" A5 @' }: u
导入后的 PDF 文章内容会分页显示出来。( T# r$ [# Z9 C4 l( W1 J* {
你只需要翻到对应的页面,用鼠标勾选表格区域。
) }# p1 O$ x1 i) X* z% q 然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。
" p+ V: v8 y) j2 ]' ~, r( } 然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。; g h" g9 Q( m9 n% ^
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。
7 _9 G* L( d8 @% ]例如选择这个表格的时候。
9 _7 ^( m; b3 X6 ` 导出的结果就成了这个样子:! N# Y( X: ~! A
这怎么办呢?! G+ M! L' h+ z8 r `* @
其实,处理起来并不算困难。
9 s* e" S# l8 I# P我们先导出自动转换结果为 CSV ,然后用 Excel 打开。1 u& I8 N# |! h, }
这里以第一列为例。显然,这里三列数据被挤在了一起。5 U! Q+ e7 F2 v: G( k
好在因为这些数据都是用空格分割,因此拆分并不困难。1 ?3 ?, W! [" T$ J
我们新建两个空列,好容纳新拆出来的数据。! z6 Q |& ]% `% ^* |: [" |
然后选中第一列中需要拆分的数据。; ?; w5 Z. x( b
进入 Data 选单,选择 Text to Columns (文本到列)按钮。# N3 ` U/ S2 F; U
第一屏直接继续。7 r: f( ?9 ^7 O J5 U
第二屏选择 Space (空格) 作为切分符号。
& K# C. ?& |) ?9 \8 ^( O+ r 点击 Finish ,就可以了。7 J8 R/ v: V2 A, U5 d3 n& P+ t0 k
看,是不是已经拆分成功了?4 _/ G' ~& ?% P7 m+ O9 _6 i
* N( _' L. l! {1 ?! K4 D- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;
% _8 i; |$ T: r% b' R0 ?9 f - 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;. D* T' m- P1 q4 s
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;
" W4 Z% t( h/ O9 s8 J" j - 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。+ j7 J, D% ^) l+ t0 F$ M1 u+ f
祝学习进步!
J5 L) D! y6 a& m: l. {5 r
0 b4 w; |$ i/ U! N7 G+ p来源:http://www.yidianzixun.com/article/0LcrRSSQ
1 i: w* ~9 ~4 c! F免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|