|
|
所见即所获,提升你的数据采集效率。
2 B6 l1 F+ d2 _; `4 u写了那篇《如何用Python批量提取PDF文本内容?》后,我在后台收到了许多留言。" ]7 B" O. i1 U5 [+ }2 X
不少读者询问,如果是 PDF 文件中的表格呢?能否正确转换?
$ e8 L6 H5 `6 c' O7 O我当时没有理解这种需求。因为那篇文章谈的主要是把文本抽取出来,目的主要是进行下一步的自然语言处理。这种 PDF 文件中大量的内容,都是文字。表格在其中,只占非常小的比例。
3 v9 g6 O( i# x8 H3 [《如何用Python批量提取PDF文本内容?》一文提供的工具pdf_extractor会保留表格里面的数据,但是结构信息基本就被丢弃掉了。表格转换,属于结构化数据提取。这和我当时文章所谈的主旨不同。所以我没有一一回复。
8 x0 ~* Y3 y8 T" n+ K$ }: R然而,最近我自己也遇到了这种需求。
6 Y* q; Q! Z) |& r$ j5 _7 w5 D我需要从一些论文的表格中,抽取一些数据。尤其是一些对比结果的列表。
* d c# ?. j) t* }在机器学习的论文中,总会有这种对比表格。主要是把目前模型的结果,与基准线或者当前最好的结果进行比对,从而说明论文的价值和意义。我在《文科生用机器学习做论文,该写些什么?》一文里,专门给你谈过这种对比的选择。
0 w8 w6 A- U9 N例如这样的:$ d* r, G' y$ G# H# p. d% N
如果在跟踪自然语言处理进展的话,你一眼就能认出,这个表格来自于哪篇论文,对吧?
% A; V) a" A7 b对,就是大名鼎鼎 BERT 语言模型。
3 S8 ^) l7 w" k- a& u一方面,我们可能需要对论文表格中出现的一些数据进行统计计算。另一方面,我们也需要把部分结果,放在自己的论文里作为对比。而这些,如果都需要我们手动提取数据,然后再输入到程序中或者 Excel 里,会很低效。
, ?2 |# X2 Z0 u我们需要一种简便的方法,帮助自己把 PDF 表格里面的信息,在尽可能保持格式的情况下,正确提取出来。
2 n3 y+ U) y# z- Y既然有了需求,我就开始搜集信息。我发现,目前支持从 PDF 中抽取表格的应用,其实还真不少。' y R1 N' t/ y
但是转换的效果,真的是参差不齐。使用的难易程度,也高低不一。有的需要你自己编写脚本,才能完成操作。
N6 v# [' c& ^6 y" ]其中转换效果较好,使用又方便的,大多是收费的。而且其中有些还着实并不便宜。' _& {+ g$ ]5 h
几经搜寻对比,我终于找到了一款免费且简便好用的工具。而且经过实际尝试,发现转换效果还不错。
& ~0 u- n) ~& b, H3 x1 S( Z0 D这里,我把它推荐给你。希望能帮你在阅读和写作过程中,提升 PDF 表格数据采集的效率。. ~( D) I% j. y4 _: r
它的名字叫做 Tabula ,网站链接在这里。
5 g8 \! l* d# ?) [) U 网站提供了 Windows 和 macOS 版本的下载链接,还有对应的源代码。" Y- Z5 g1 D, o3 [8 [
我的操作系统是 macOS ,因此这里以 macOS 版本为例。你如果使用 Windows 系统,操作是大同小异的。
5 d1 e9 A c1 y, e0 I" e- ~: g请点击对应的链接下载安装。' L1 ^5 g; V4 t
macOS 系统下载安装文件压缩包,解压之后,会出现这样一个目录。
# t+ i' l- l$ [" Y3 y# \4 z 双击执行其中的 Tabula.app ,你就可以看见浏览器中出现这样的 Web 界面。
5 {2 Q; h" |' G$ V% p 下面我们转换一个 PDF 文件试试看。9 I0 t6 n5 s! R0 q4 e8 z
这里,我用 BERT 论文中的表格采集为例,给你讲讲 Tabula 的使用方法。
+ s: a; w- j% u0 Y点击上图中的 Browse 按钮,选择硬盘上的 PDF 文件。
& f( f( e# b/ |% s D) ]+ I1 B 然后点击 Import 按钮导入。
! X/ x) n9 s0 s$ Q$ m1 n M# t2 ^ 导入后的 PDF 文章内容会分页显示出来。% j) e( Y% P: ^* Y
你只需要翻到对应的页面,用鼠标勾选表格区域。
6 S) w" M' c- t( Z7 t7 ^ 然后点击右上方绿色的 “Preview and Export Extracted Data” 按钮,就可以看到抽取结果了。6 W* n$ V- S' y: Q( m- h( h- K
然后,点击 Export 按钮,就可以把结果用 CSV 格式导出,并且可以在 Excel 中打开了。
5 I3 J' a* P2 y# T 但是,有些复杂表格的提取中,原本不同的列,可能会被错误地放在一起。 d3 m2 \3 K N5 X( n9 Q. i
例如选择这个表格的时候。: Z$ m' m+ h9 w5 t# C$ N6 w
导出的结果就成了这个样子:! U% K' j* S* P; u$ }6 P
这怎么办呢?
! j$ R" c$ S9 ?( |其实,处理起来并不算困难。
! z5 ]. R1 M4 V8 C我们先导出自动转换结果为 CSV ,然后用 Excel 打开。
% D& e7 P8 C6 B- A& c 这里以第一列为例。显然,这里三列数据被挤在了一起。
) d U8 L2 u( S6 U6 F/ [. P' a好在因为这些数据都是用空格分割,因此拆分并不困难。# i2 N% z( I0 z0 k! p
我们新建两个空列,好容纳新拆出来的数据。
) N7 [* c1 W; i, R$ f: \, F6 e/ v+ } 然后选中第一列中需要拆分的数据。" X# c0 E! Y6 p4 h+ V) H1 \
进入 Data 选单,选择 Text to Columns (文本到列)按钮。
( f: |7 i4 D6 q- z9 T( i0 v 第一屏直接继续。
& b1 L' @# ~1 H/ Q) V8 d8 X; \ 第二屏选择 Space (空格) 作为切分符号。: i, p" u0 i* G7 E2 c; Y8 Z( s- i
点击 Finish ,就可以了。1 a0 c7 Z+ P- x1 @) s5 X, Q& E6 l
看,是不是已经拆分成功了?1 l$ l. Y' u# i" R
1 V1 J% N: V; V! x& z$ `: q
- 你遇到的功能需求,可能别人早就解决了。因此可以找寻工具来解决,而不必自己重复发明轮子;4 {: l% b1 M( O& f: s( U' h
- 对于工具的搜寻,需要掌握主动搜索的技巧。这样才能迅速定位候选项。这里给你推荐一篇搜索引擎使用技巧的教程,链接在这里;6 ~0 |1 e ?: j8 }% c) I4 o
- 学会利用 Tabula 从 PDF 格式的文档中自动转换表格为 Excel 可读的 CSV 格式;
$ o2 N1 y b- F1 U& n5 H- \ - 对于未能正确分列的转换结果,可以使用 Excel 快速进行调整。- q% P" b1 q) W
祝学习进步!
4 x# e# ^3 f% @2 I( d( j/ R, P
来源:http://www.yidianzixun.com/article/0LcrRSSQ
' B7 Y1 T& j% W5 s5 V( |. S; P免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|