|
|
所见即所获,提升你的数据采集效率。) H* b ]. B& W K' M
写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。% ~% m) \4 F" y- V
不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?: ^7 N- i3 w- j- R( }/ ?
我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。8 S4 x7 g8 t. I" w( A$ w2 {" O+ i
《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。3 Y, ~5 p8 h0 r7 w* X
然而,最近我自己也遇到了这种需求。& Y3 l& w! H/ `! k; d: E U
我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。 A1 M( i+ `/ i: Z9 S
在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。
* C7 H- i" N5 }. ]% [- x例如这样的:1 L5 e5 u+ V0 G5 G
如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?# N j0 R* n E0 m
对,就是大名鼎鼎 BERT 语言模型。
! Y k* w+ x ^8 d( Z; T一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。; g; q7 K/ @: l
我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。
% s& y2 y4 U2 ~- d既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。
" f! q- F" }1 j7 b 但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
- ~: C% u6 |, t其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。$ l. [4 J* n2 D3 O$ [/ W$ U
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。
4 ^: }/ Q6 ~- `& ^% D这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。
1 g3 D& J# y% _3 P它的名字叫做 Tabula ,网站链接在这里。
0 B+ L' X% c+ ~- b2 @! G+ X 网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。' b/ H) t/ c" u8 b0 d3 a. e. O
我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
. e# _, @( d1 e请点击对应的链接下载安装。
/ f8 i4 i& ~+ z% ?# t3 I& lmacOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。
1 a+ O; H# m$ G: T( g* Z1 T 双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。
/ `& T6 C& O5 r; ?0 p 下面我们转换一个 PDF 文件试试看。
3 a, v' ^- S N# A, t. M+ ]& f这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。' Y% c( l% B& h" Z* W1 ^
点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。
0 A0 g i- X! b4 } 然后点击 Import 按钮导入。
, i9 {/ M* z, E( L: E 导入后的 PDF 文章内容会分页显示出来。
/ i C4 a1 p' o- j9 \7 f& X 你只需要翻到对应的页面,用鼠标勾选表格区域。) }) S- L0 G/ f/ p! p
然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。) L$ {; U7 u+ [5 o5 x/ A
然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。
% w; A& e# I2 v% m0 A8 W) G 但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。
/ G7 p E/ q5 N0 Z2 N0 f0 V* d) g例如选择这个表格的时候。( f# ?4 F% b* c3 T0 o8 `
导出的结果就成了这个样子:
5 u5 M0 l( P: I% x' R: N: Z 这怎么办呢?
8 p5 b. \8 P+ H( O/ T其实,处理起来并不算困难。
, i$ |; x. u- a, }! C' Y4 [4 h我们先导出自动转换结果为 CSV ,然后用 Excel 打开。: d2 V& A$ \0 v5 e0 {6 Z1 |' H
这里以第一列为例。显然,这里三列数据被挤在了一起。
- M5 u W+ m( ]: E2 c+ z好在因为这些数据都是用空格分割,因此拆分并不困难。
/ p5 t* ?" `3 m' V" t7 Z4 s! U我们新建两个空列,好容纳新拆出来的数据。2 o& h1 g$ I4 d8 e2 r1 h" z
然后选中第一列中需要拆分的数据。
! |, i2 ~4 Y5 ?: P& X0 z进入 Data 选单,选择 Text to Columns (文本到列)按钮。
& x' u1 v1 V8 q2 O) A! v1 n 第一屏直接继续。
, G# y" A1 ^; q& z0 X8 s; S6 X 第二屏选择 Space (空格) 作为切分符号。! d. O7 d- K( t$ A- X6 ?
点击 Finish ,就可以了。
% x4 ^5 w: g$ @$ a7 P+ B1 R! e: p 看,是不是已经拆分成功了?4 U( L" A) E8 s
9 L# v6 ^' P1 a( G( c1 A7 E9 x- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;$ A9 a b$ [* U# O6 k) ^
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;: o6 L0 Y: T7 \* s
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式; T5 y. ?: z' L7 @
- 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。
5 h4 ~" U2 \' _) \, [/ I 祝学习进步!8 P5 E K$ Q; `( W# j( D% h0 `; K
" M0 R6 T: ~, W1 s
来源:http://www.yidianzixun.com/article/0LcrRSSQ
/ H" ]- D/ Q8 ]0 B1 I免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|