|
|
所见即所获,提升你的数据采集效率。+ {0 ?# `2 F, `5 e4 H9 x; V
写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。
7 p& O- X4 n. Q2 s }" L不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?5 J+ B4 ^6 J: u+ E" U
我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。/ W; | d% ~! V, ?5 a; V, l
《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。! G6 h$ J1 j- b9 z+ x! m- j
然而,最近我自己也遇到了这种需求。
% Y. W& N3 I% i7 v我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。5 I$ d* B. U1 I. ^' G, l8 n8 o
在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。+ n" [2 I$ N" U6 {4 v& ]- ?. P
例如这样的:
# T# ^1 z/ x; N5 V6 T+ K" I 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?3 q. L( Y6 m, ~
对,就是大名鼎鼎 BERT 语言模型。
5 W6 o! @6 C& q# h$ M一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。/ ~7 @# h1 `% k# m; A: x
我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。
% x" e* I' K3 L7 e* Z) Q既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。6 N5 f& c6 L5 X$ i& Y: L
但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
3 \7 _8 v( n( ]. K8 W8 ]' X! Y, ?其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。
+ {! g5 s) @! {2 q! m. |' O q几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。( ], ~% H& u* m6 T8 y6 @
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。% e$ A0 x; y6 x
它的名字叫做 Tabula ,网站链接在这里。7 i/ ^+ R# t2 t7 `) h. T7 L: F
网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。
' s) I) n( n+ G$ Z# o我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
/ Z* Q5 O2 n Q! {7 c请点击对应的链接下载安装。
7 @4 O9 W& i% d1 D! lmacOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。: Y! B3 d) g9 }% D
双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。9 I, G. [- T: L5 q/ N% d; y
下面我们转换一个 PDF 文件试试看。1 k6 |1 G. w+ N
这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。% T& ]# C/ K2 X" W" a- S- P
点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。
% y+ s7 b s) X, X 然后点击 Import 按钮导入。
5 a: C& ]- q& c) g& s( ~! E/ A/ u% ~ 导入后的 PDF 文章内容会分页显示出来。
( P4 a% l8 B u$ r) e. K+ g$ g# [ 你只需要翻到对应的页面,用鼠标勾选表格区域。) }; p$ O0 R, d1 Q
然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。" S U% y; f. c- V% B* d" F- y
然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。& Q# o# H2 W M6 W; Q
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。
$ Q- a# S, F% E! ~5 ~) M例如选择这个表格的时候。- |" ^8 c$ U0 K0 Y0 o, Z& G3 [
导出的结果就成了这个样子:
. c- q7 B, d' Q* W: Y 这怎么办呢?
! P, V- H% b$ C$ \其实,处理起来并不算困难。$ V' w+ W$ i: O; m
我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
) c" N2 i; K% i9 I5 D) a" w 这里以第一列为例。显然,这里三列数据被挤在了一起。
7 K" _3 S0 D/ A/ d; e好在因为这些数据都是用空格分割,因此拆分并不困难。5 I, W- _( i( Y$ C' T
我们新建两个空列,好容纳新拆出来的数据。/ ]: Y2 D" f0 h+ ]. D) s& |2 ^4 _- e
然后选中第一列中需要拆分的数据。$ Q' ]9 p& ~! H! k
进入 Data 选单,选择 Text to Columns (文本到列)按钮。
5 e$ r$ M0 v$ ]$ Y2 z 第一屏直接继续。
) @/ |2 `" n- v% i4 A5 t 第二屏选择 Space (空格) 作为切分符号。: i7 R; ^! p2 A. u# W
点击 Finish ,就可以了。6 _# w7 ?& ?' F6 E
看,是不是已经拆分成功了?; B& g, P6 X/ g+ X2 C
% g2 s5 M) Q: y+ |: L! @- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;
3 g" A% H0 c7 C2 ]3 O' H: n - 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;
2 v2 s4 ~/ p; r% o - 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;
- Y# h* D+ z* u - 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。2 c4 @/ R9 L% B7 {# F" e( s
祝学习进步!$ G3 Z+ H9 G& W6 {9 j
3 R3 B H- H' m来源:http://www.yidianzixun.com/article/0LcrRSSQ7 _; k0 a. T7 ^
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|