|
所见即所获,提升你的数据采集效率。
" A R2 b( G% n* |2 x写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。3 j3 C% l: c) y. m( M' c
不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?
: T/ R, Z6 y4 S- j. X% X% \7 [" ~4 i我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。
7 C5 e$ Y& F3 L2 s0 M- a1 E《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。* z1 }( S# V# m* ^
然而,最近我自己也遇到了这种需求。
: j( C5 O' ?+ U0 ?我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。/ O) \9 _4 y1 O5 J7 D7 T2 R
在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。0 e; V7 ~" Z2 Y, U# J% I
例如这样的:
) T; X" T; u2 e, s( p 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?
g, S3 \! P/ t% X! C7 O对,就是大名鼎鼎 BERT 语言模型。
; Y4 \8 U" o1 K* Z7 j: n一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。' }! z6 I2 Z9 k. N& c+ n% U* z
我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。
8 Q( F7 P: M* t- o5 C既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。& j9 `0 m4 r. I: b. n- G& @! v
但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。7 J/ `5 E f% R$ W
其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。
, O0 A, ?# L( B# l* t几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。7 b/ I3 v6 L( O7 M2 w2 u, ?# w( b
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。
V* s# [; s6 _9 x$ ]' F- w它的名字叫做 Tabula ,网站链接在这里。; s3 M* A* z7 E3 n. Z
网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。
. f# Q, j5 i3 T5 ^我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。0 B/ @0 S) E5 f# A4 A) r
请点击对应的链接下载安装。
$ E& [/ c1 G1 amacOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。* q/ _; m e) I0 y3 [# m
双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。
0 ^' s7 [, l2 p& i$ w1 o 下面我们转换一个 PDF 文件试试看。6 {$ X4 M% Q# W& C& Q0 a
这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。3 v0 o' o0 d/ f$ l9 d. p
点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。" b: J% ?4 r) r5 o9 x
然后点击 Import 按钮导入。
% L0 o; d+ J1 J- T. I 导入后的 PDF 文章内容会分页显示出来。* @9 P; B+ W9 z' l2 W
你只需要翻到对应的页面,用鼠标勾选表格区域。& G+ I" m j$ N
然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。
# |0 G7 I$ P4 t: \" y 然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。. X1 |. X6 Q# d0 B2 c% r$ B* V; J
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。
' t. j3 @3 \! {* C9 `3 q例如选择这个表格的时候。! h/ |' _ Q8 W q1 |
导出的结果就成了这个样子: k5 j! t4 ?9 I( @8 R k+ D2 a
这怎么办呢?
. s/ ^& Q9 |% ^; a8 E9 k其实,处理起来并不算困难。
) R# Q$ j& d( z9 o" U& ?: c我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
! w" y" G h- O9 Z( K 这里以第一列为例。显然,这里三列数据被挤在了一起。
v% Y1 v) j* X" q# J) g7 x好在因为这些数据都是用空格分割,因此拆分并不困难。4 f. F! A# \( l. M
我们新建两个空列,好容纳新拆出来的数据。
( ~9 V. \. O* ` 然后选中第一列中需要拆分的数据。7 J f" J8 z$ S8 C5 l
进入 Data 选单,选择 Text to Columns (文本到列)按钮。
5 I5 B- r$ I4 e1 \/ R$ P% ]* R: B 第一屏直接继续。7 R+ r' e$ d+ p- x4 j" b& p% T
第二屏选择 Space (空格) 作为切分符号。' x* u& o- H' ?4 D7 U$ y) {- q6 y
点击 Finish ,就可以了。
( q! v. O. L2 L; i( A 看,是不是已经拆分成功了?) b2 K# V: m( Z7 F
! D5 f( F n; B- a' l$ X- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;; l# N6 J1 ^8 c
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;# s( p [& Q# K- u
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;
J" \2 J$ `/ Q! S8 ~/ w* H - 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。: M5 ]# S, F4 Y: z7 l
祝学习进步!& u4 }6 y1 Z3 F2 |, }5 G- i
8 R; Q8 i- c! g5 K2 h" ~来源:http://www.yidianzixun.com/article/0LcrRSSQ
; j6 p0 r3 I. u7 V. g. n- c' d3 S免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|