|
所见即所获,提升你的数据采集效率。$ g; q0 ~5 Z7 }
写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。
$ c1 u& r5 m6 b不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?
5 e6 u" | ~* O# z+ ^+ \; t我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。9 s3 ^ j- O S- n3 Z8 ^% G" R
《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。
3 l9 \" y9 y3 g- o6 c0 k# w然而,最近我自己也遇到了这种需求。
6 W J2 M& a) K1 d7 X我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。+ K, z& o) R. T* M/ v
在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。$ F: e4 q& O7 Y x+ S( a# P
例如这样的:
3 \) I. Z$ t+ p) z$ V* _: H 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?6 W5 q; Y' G6 z& t7 |0 ]6 s& V" p# @
对,就是大名鼎鼎 BERT 语言模型。2 n6 k4 I% Y* I) y
一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。
& R4 x5 B( c/ ?( s9 e我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。
2 }7 q( O, l7 V; I; B+ _2 j$ S既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。
& ~, t) @/ ]8 u% o2 j- z 但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
: B% r8 h/ F0 s" }( i+ _4 b3 ~: v其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。1 ~/ ~4 o( Y5 l3 K7 l, V( u6 l6 x
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。2 D1 u$ p0 O' a k# n. K
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。
. a }& F! W) @$ D! j它的名字叫做 Tabula ,网站链接在这里。
. ?3 @: U. o% {5 y 网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。+ M( x* C g$ ~0 Q
我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
- c; e7 e& B6 S/ y请点击对应的链接下载安装。* ?( s! e8 g# C }/ _
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。
4 y: e& D4 n& h/ l. r 双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。
* U: V+ \% h" b 下面我们转换一个 PDF 文件试试看。: a' P( |7 w& C* J+ m$ \( E
这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。
. Q0 j" q6 z* \4 ~* H: ~3 d. E( X点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。: |* T1 B6 a% C# T8 e
然后点击 Import 按钮导入。
( k; u8 w. z' }$ F 导入后的 PDF 文章内容会分页显示出来。) a3 `) ]$ g: o S8 e( D2 u
你只需要翻到对应的页面,用鼠标勾选表格区域。, h$ c7 ]% A9 L; O
然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。! }2 |7 n/ x7 p9 Q# H$ _: Q' m+ s; [# X
然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。; }: i5 ~: R. Y; S. U
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。7 H- Y Y. G9 \! L( F% v. s% ^% d, N, z3 `
例如选择这个表格的时候。
/ E! k4 M0 i" P' ^% |- u 导出的结果就成了这个样子:+ ]9 U; W1 E9 K+ x- _( i
这怎么办呢?
7 O- q/ f4 [5 S. ~! x) P其实,处理起来并不算困难。6 b4 t0 c* t' M8 {; Y, y# w/ f3 f
我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
* R2 v- K/ d( L6 j+ E+ C( @# l 这里以第一列为例。显然,这里三列数据被挤在了一起。
6 E$ F) p6 C/ j& q) @好在因为这些数据都是用空格分割,因此拆分并不困难。, q5 i4 B& h4 V0 E
我们新建两个空列,好容纳新拆出来的数据。2 g6 T: X4 f- L! i
然后选中第一列中需要拆分的数据。
( ^( f# o @* \6 D6 J$ c进入 Data 选单,选择 Text to Columns (文本到列)按钮。) K' f" a3 M0 V$ |, |9 K% W! u
第一屏直接继续。1 v* z. e4 a3 |% f0 o4 O
第二屏选择 Space (空格) 作为切分符号。
- \7 R$ x7 F, Q- v1 p6 n6 _ 点击 Finish ,就可以了。# q6 D0 `3 i% L% u7 t
看,是不是已经拆分成功了?
# a% C a5 T3 p9 [' ^* y8 [
- S- ?9 \) S7 [! n$ o" h, j- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;" X, J+ L9 _- U2 e7 }9 `5 [
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;
0 ]7 n1 O4 Q$ J) Q. X - 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;; H" ~" _. q! X8 M1 T$ ^5 b% t
- 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。' k0 f! O( m* K" _( p$ ?$ a
祝学习进步!
. C5 w7 O2 ~( ?. u3 g) A
: Z6 M& X+ i% }6 r) k' ?) M来源:http://www.yidianzixun.com/article/0LcrRSSQ+ J3 Z7 k- U+ R( @ A
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|