|
|
所见即所获,提升你的数据采集效率。$ J: U( g. E; n& _5 ?
写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。
% T( F1 P$ V6 l2 i% w0 r9 P4 p不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?" I, q X7 k* C4 m
我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。
( o: k" Z6 b1 A* L1 w《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。' j5 Z/ t& `7 r6 m
然而,最近我自己也遇到了这种需求。
! ]- }. T5 x8 D- U) _; x/ V我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。' a6 w% Y( E8 O; R" P$ J, N. E0 T
在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。/ \" x* o- _8 c# l8 }+ ]+ i! s& n
例如这样的:
+ U3 {1 r4 W7 T4 _/ u 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?; T8 C3 W4 V: v; s' U
对,就是大名鼎鼎 BERT 语言模型。
9 k3 H" }1 Y' j一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。( V6 a! |9 x% f6 e3 w; r8 Q
我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。
/ q$ |3 S0 {3 @& `0 W% c既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。
9 V# r( e/ @6 F! V0 _ 但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
$ C ^+ L9 g l+ y其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。" i% M8 Y& Z _
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。! f0 z8 a: b" P6 X7 r* V
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。5 g' C7 Z" c2 q, y# J* y" a
它的名字叫做 Tabula ,网站链接在这里。8 z$ N2 I* t/ Q3 w. l8 f
网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。
0 G9 I t& \5 w9 [我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。, Q9 x. v! F5 p. l. q
请点击对应的链接下载安装。
: q, e8 B9 }- W4 k. Q/ _macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。
# ?$ ]" B. Z' U2 q w$ A! L 双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。1 n* z: ^2 r+ a E) y
下面我们转换一个 PDF 文件试试看。" ^* l1 ^: C# P2 _
这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。$ ~* B' `" c( L- z) V9 q
点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。- f ], e4 L& y# ?/ D0 y2 U" Q
然后点击 Import 按钮导入。& k$ z3 @6 K8 ^6 f; x2 L
导入后的 PDF 文章内容会分页显示出来。5 S6 b9 }- x. D
你只需要翻到对应的页面,用鼠标勾选表格区域。$ M* t# T+ x" N& H1 P$ O
然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。
" ?5 {) I0 B4 W6 t# D 然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。
1 V( {& o2 B% t# P' s' w 但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。7 {* y4 D' C$ C
例如选择这个表格的时候。: ^4 i+ ]% r. D3 F$ `% T1 k/ A* m
导出的结果就成了这个样子:& ^8 S* L4 {4 m S9 g
这怎么办呢?
3 P3 E4 z! M4 c: ^其实,处理起来并不算困难。
4 I( Y$ V/ @3 k/ o% Q) ^我们先导出自动转换结果为 CSV ,然后用 Excel 打开。- ?) M; p) I) y& n# \8 K* h
这里以第一列为例。显然,这里三列数据被挤在了一起。
! N: h* {# o) b6 m好在因为这些数据都是用空格分割,因此拆分并不困难。# o+ a2 u4 c7 O6 j
我们新建两个空列,好容纳新拆出来的数据。' h' X, n# X. C; ]
然后选中第一列中需要拆分的数据。
/ H% l6 C }8 V( o) n8 n: u% H# e进入 Data 选单,选择 Text to Columns (文本到列)按钮。1 L3 C2 q& f) N8 ~( f
第一屏直接继续。. d$ W0 e3 p# \' `8 i% _+ l4 m& g
第二屏选择 Space (空格) 作为切分符号。- \# h9 Y0 `$ }' F9 Q% ^
点击 Finish ,就可以了。' {1 K h7 X; F: s
看,是不是已经拆分成功了?7 @( b+ F- S, Y: w* `- S. \& ]% W. J
5 i4 J L4 F, G( Y. w- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;' D: m& Z6 G/ w5 a
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里; T4 \+ N. C( h+ h+ u
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;2 p9 o+ m% O+ F x5 p
- 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。
! X' B$ \% A, f$ }! [" N 祝学习进步!3 r9 z4 d c6 {9 H8 h$ {- L' D
4 Z* j. ?) V' h3 n
来源:http://www.yidianzixun.com/article/0LcrRSSQ# _: w8 T, R: C: q* |; e
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|