|
|
所见即所获,提升你的数据采集效率。
, m% ]" H0 q& ]$ S2 i写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。; Q9 _! i9 h* _, x$ b0 M* `1 M
不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?! E: Z* _+ t: {6 e j& b. ~
我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。
7 @$ l# v+ ?& [+ J# k# K《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。$ o- W6 U$ N" a% d& l5 m% `' U* w
然而,最近我自己也遇到了这种需求。
* V+ d b: W* B- n3 `- B我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。
. j2 G" M4 b& h( W1 M' `在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。. T) ^+ J/ Q: f) s/ c
例如这样的:
a2 } |4 I4 M$ L) U% A$ e$ T 如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?
1 c; V$ `! E, z' S/ s对,就是大名鼎鼎 BERT 语言模型。$ f3 s9 r( |( q3 R
一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。5 h1 J- F; A% c' \# y4 j( d
我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。
- s* T6 @3 z4 K: ~2 v& Z0 q既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。
E) Y5 t% L5 X* c4 N( R" g 但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
( A3 |4 d5 i. b3 w1 M' h其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。( z# [. w& P) P o/ c) b/ S
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。; C* r3 C. n- ^/ A/ p* E/ |
这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。" X4 ^5 l6 H1 V! g4 a) K: ?* W
它的名字叫做 Tabula ,网站链接在这里。
: n4 [1 I ^& t! N0 [ 网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。
# x1 F: q$ }+ @, A- x5 q我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。( P; N4 u8 B) d0 H1 k9 P* x- X8 V
请点击对应的链接下载安装。" b: X, c9 d4 X& ]' x
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。
& M) Y4 }. X2 T3 k- ^* [ 双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。
! \; ~1 v$ G9 N% r+ S% ~- d 下面我们转换一个 PDF 文件试试看。$ W. B$ q, K) i. E5 h
这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。
4 h2 }; v% X- n ?( ]. M点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。
: E, j# O5 ^/ Q4 j 然后点击 Import 按钮导入。
/ f& n q( x9 o& H7 h 导入后的 PDF 文章内容会分页显示出来。
" T9 k% X0 i# N& K! w K. ] 你只需要翻到对应的页面,用鼠标勾选表格区域。
1 Y) O( S0 u& O9 ~! z" @ 然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。8 e. O$ H' _4 J
然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。# u2 D/ W" q: m
但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。, @8 {* G* `; |3 g0 S; k+ |) O3 t9 X
例如选择这个表格的时候。. H; G' J* Z1 |4 R# H k
导出的结果就成了这个样子:; s# P/ z) x- P; Y: @3 Z
这怎么办呢?
7 d" x m/ v- @) v, Y I H其实,处理起来并不算困难。
5 X& G7 H6 D( f& J我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
; K- C3 D; e9 m8 {5 s1 v 这里以第一列为例。显然,这里三列数据被挤在了一起。
4 b! @# u+ k4 o- q& g! g/ Q( r好在因为这些数据都是用空格分割,因此拆分并不困难。
2 N& ~0 k; L7 t l C' i5 d5 P我们新建两个空列,好容纳新拆出来的数据。
! W- A5 O5 U, a% q1 K2 {! c 然后选中第一列中需要拆分的数据。
$ x- q+ I; g( e" ~* q- \) [' C+ I9 K进入 Data 选单,选择 Text to Columns (文本到列)按钮。( W1 M8 \/ R3 N( B: Z
第一屏直接继续。
9 w% R0 N v3 ] 第二屏选择 Space (空格) 作为切分符号。) Y3 K! Y M, M
点击 Finish ,就可以了。
8 Y2 ], S3 C& s 看,是不是已经拆分成功了?
9 |9 {4 V* p; P; M& M6 J( Q' t" `+ m3 B3 Z
- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;) m& w. S H m5 Y: Y( d* S
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;) n J+ p: M/ E" L5 V+ c
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;
& \; k; }6 U! y& f4 X% a2 S" c& } - 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。" L/ e4 @- p4 C( r V" V. Q1 x/ s% d
祝学习进步!
; I+ X+ ~& M; o4 ?5 m* s! G4 v+ ]3 |
来源:http://www.yidianzixun.com/article/0LcrRSSQ0 K# m6 w2 } z j! J( Q c$ M3 }: C' s
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|