由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请问如何批量把PDF里的表格转换成Excel
相关主题
如何在Excel文档的一个cell中嵌入文件? (转载)fetching PDF articles on journals websites
水平表头什么软件可以把chm文件转换成pdf文件?
把同一个目录夹的PDF文件转换成txt文件如何把一个char转换成一个int啊?
什么软件能删除PDF的文字?acrobat好像不可以有Matlab的代码,怎么样能转换成C/C++能用的库文件?
再问个script的问题什么程序可以把中文转换成unicode ?
怎么生成表格(excel或其它的)?请教python中如何向文件写入矩阵
请教一个excel表格插值问题[合集] 【求助】如何将c string中的string转换成int?谢谢
单链表里找循环链的起点的解法质疑什么方法能把matlab文件转换成c并且执行这个转换后的c不依赖于matlab
相关话题的讨论汇总
话题: pdf话题: 空格话题: 表格话题: excel话题: java
进入Programming版参与讨论
1 (共1页)
F****3
发帖数: 1504
1
目前有2w多排版一样的pdf,里面有表格,可以用Adobe Acrobat把table弄出来,但是
一个一个弄估计会死。。。
查了stackoverflow,弄了半天没实现。 请问有什么好办法吗? 谢谢!
t****a
发帖数: 1212
2
ubuntu的sudo apt-get install poppler-utils中有个tool叫做pdf2text可以转换pdf
成text格式,使用-layout参数可以保持表格的式样在text里,如果你的表格不太复杂
的话,运气好应该能留下来。
之后,如果你的表格有某些特殊的标记比如表头之类的,我想可以用个脚本语言把表格
抓出来生成excel。
当然,是运气好你的表格能留在txt里并且容易解析。

【在 F****3 的大作中提到】
: 目前有2w多排版一样的pdf,里面有表格,可以用Adobe Acrobat把table弄出来,但是
: 一个一个弄估计会死。。。
: 查了stackoverflow,弄了半天没实现。 请问有什么好办法吗? 谢谢!

e*******o
发帖数: 4654
3
貌似你用的是python, 搜一下Python的pdf lib 然后看文档。
如果你足够brave 看 adobe的 pdf specificaton。你找个很简单的PDF 文件用文本编
辑器查看,也能看出来些眉目的。
我做过生成PDF的活,逆向没做过。
z*******3
发帖数: 13709
4
iText
jExcel
F****3
发帖数: 1504
5
谢谢楼上几位!
PDF内的表格非常工整,可以用Acrobat Professional单击右键就可以导出成csv文件,
转换成Excel没有问题。但是手工做实在麻烦。
试过pdftotext,但是有很多空余,misalignment问题有点小问题,怎么再用Python把
这些文件parse成表格目前还不会。。。水平还是入门级的。
iText下载了java的版本,好像不再是免费的了。Java有点专业目前还不太敢搞。
准备什么时候弄一些jExcel, 搜一搜PDF的python lib。
请问还有什么门槛比较低一点的办法吗?
z*******3
发帖数: 13709
6
我看了下,目测还是可以免费用的,你试试不就知道了
这个我想出来比较麻烦的是要倒腾java.io,这个有些小烦
其它都还好
如果你真怕不免费,简单,google会告诉你很多其它选择,来看看java的类库有多牛吧
http://stackoverflow.com/questions/6118635/what-is-the-best-pdf
类似的,excel也一样
google会告诉你很多
目测apache有两个项目,正好对应这两个文件格式
一个是
http://poi.apache.org/
针对excel
一个是
http://pdfbox.apache.org/
针对pdf
so,放马上吧

【在 F****3 的大作中提到】
: 谢谢楼上几位!
: PDF内的表格非常工整,可以用Acrobat Professional单击右键就可以导出成csv文件,
: 转换成Excel没有问题。但是手工做实在麻烦。
: 试过pdftotext,但是有很多空余,misalignment问题有点小问题,怎么再用Python把
: 这些文件parse成表格目前还不会。。。水平还是入门级的。
: iText下载了java的版本,好像不再是免费的了。Java有点专业目前还不太敢搞。
: 准备什么时候弄一些jExcel, 搜一搜PDF的python lib。
: 请问还有什么门槛比较低一点的办法吗?

z*******3
发帖数: 13709
7
java直接写一个main不就搞定了
你把java放在eclipse当脚本写就好了
不用理会什么class之类的关键字
表被什么对象之类的给吓住了
要包装成web服务的话,可能还需要一些额外的操作
比如上传文件之类的
也可以从apache项目中找
比如这个:
http://commons.apache.org/
再弄一个tomcat
小server就出来了
F****3
发帖数: 1504
8
真是谢谢楼上的各位的帮助!
我按照你们的提示回去仔细一下,然后回来汇报一下,如果搞定了的话。
d******k
发帖数: 4295
9
你可以先试试是否可以写batch script把所有pdf文件批量save as csv文件。

【在 F****3 的大作中提到】
: 谢谢楼上几位!
: PDF内的表格非常工整,可以用Acrobat Professional单击右键就可以导出成csv文件,
: 转换成Excel没有问题。但是手工做实在麻烦。
: 试过pdftotext,但是有很多空余,misalignment问题有点小问题,怎么再用Python把
: 这些文件parse成表格目前还不会。。。水平还是入门级的。
: iText下载了java的版本,好像不再是免费的了。Java有点专业目前还不太敢搞。
: 准备什么时候弄一些jExcel, 搜一搜PDF的python lib。
: 请问还有什么门槛比较低一点的办法吗?

F****3
发帖数: 1504
10
谢谢啊!我用了下面这个
for file in *.pdf; do pdftotext -layout "$file" "$file.txt"; done
可以把所有的PDF转换成text文件,但是表格是"看上去"对齐了,但是好像中间空格数
目不一致,所以很难把text转换成table。
另外PDF里面有很多解释的文档,要把文档和table分开目前还不知道怎么实现。
文科的水平很菜,千万别笑啊。

【在 d******k 的大作中提到】
: 你可以先试试是否可以写batch script把所有pdf文件批量save as csv文件。
相关主题
怎么生成表格(excel或其它的)?fetching PDF articles on journals websites
请教一个excel表格插值问题什么软件可以把chm文件转换成pdf文件?
单链表里找循环链的起点的解法质疑如何把一个char转换成一个int啊?
进入Programming版参与讨论
z*******3
发帖数: 13709
11
你需要parse文档
我估计你投机取巧之后,最后会发现还是java最简单
嘿嘿
比如你这个解释文档和table,在pdfbox里面就是不同的对象
直接丢掉解释文档就好了

【在 F****3 的大作中提到】
: 谢谢啊!我用了下面这个
: for file in *.pdf; do pdftotext -layout "$file" "$file.txt"; done
: 可以把所有的PDF转换成text文件,但是表格是"看上去"对齐了,但是好像中间空格数
: 目不一致,所以很难把text转换成table。
: 另外PDF里面有很多解释的文档,要把文档和table分开目前还不知道怎么实现。
: 文科的水平很菜,千万别笑啊。

F****3
发帖数: 1504
12
呵呵,谢谢!
要是要用java,就搞大了。。。

【在 z*******3 的大作中提到】
: 你需要parse文档
: 我估计你投机取巧之后,最后会发现还是java最简单
: 嘿嘿
: 比如你这个解释文档和table,在pdfbox里面就是不同的对象
: 直接丢掉解释文档就好了

d******k
发帖数: 4295
13
两个问题:
1.你的tables的格式是否统一?是否都是固定列数?
2.table里头的每一个cell的值是数字?还是字符串,有没有包含空格逗号等特殊符号
的可能?
如果你的tables固定列数,且没有包含空格逗号等特殊符号的字符串。那你可以试着用
python,读文件的每一行,把空格数目(连续的空格当做一个空格)等于table列数的
行输出到新文件,把空格替换成逗号。这样新文件就变成csv了。
这是个笨办法吧,会有小错误,但你没法用java,.net的类库,也只能凑活了。

【在 F****3 的大作中提到】
: 谢谢啊!我用了下面这个
: for file in *.pdf; do pdftotext -layout "$file" "$file.txt"; done
: 可以把所有的PDF转换成text文件,但是表格是"看上去"对齐了,但是好像中间空格数
: 目不一致,所以很难把text转换成table。
: 另外PDF里面有很多解释的文档,要把文档和table分开目前还不知道怎么实现。
: 文科的水平很菜,千万别笑啊。

F****3
发帖数: 1504
14
谢谢你的热心帮助!
1. 固定列数
2. 包括数字,string,和date, 有cell里面有些空格(见item 3)
3. date的格式是“Feb 01, 2011”
4. 左边第一列是列别,里面也有空格(比如, “Cost of Goods Sold ($ mlns)”)
5. 用pdftotext -layout以后,列于列时间的空格数目不完全一致,因为有的cell里面
东西都,所以不需要很多空格吧列于列据别开来,有的列cell东西少,需要很多空格吧
column区别开来。
:)
最终真的可能还是要用牛逼的东西比如java

【在 d******k 的大作中提到】
: 两个问题:
: 1.你的tables的格式是否统一?是否都是固定列数?
: 2.table里头的每一个cell的值是数字?还是字符串,有没有包含空格逗号等特殊符号
: 的可能?
: 如果你的tables固定列数,且没有包含空格逗号等特殊符号的字符串。那你可以试着用
: python,读文件的每一行,把空格数目(连续的空格当做一个空格)等于table列数的
: 行输出到新文件,把空格替换成逗号。这样新文件就变成csv了。
: 这是个笨办法吧,会有小错误,但你没法用java,.net的类库,也只能凑活了。

d******k
发帖数: 4295
15
不客气,以前折腾过类似的东西,算有点经验。
如果date格式在固定的列,相对好解决。
如果有特征可以把第一列的内容和第二列简单区别开来,比如第一列以)”结尾,第二
列是数字,也是可以通过代码专门处理的。
(关键就是你要找到这个table的每一列的特征,用程序语言把他们区分开来。)
另外,可以直接在excel里面用vba把txt里头写到sheet里面,可以参考下边的例子。
vba要比java,c#简单一些。
http://stackoverflow.com/questions/15045446/extract-tables-from

【在 F****3 的大作中提到】
: 谢谢你的热心帮助!
: 1. 固定列数
: 2. 包括数字,string,和date, 有cell里面有些空格(见item 3)
: 3. date的格式是“Feb 01, 2011”
: 4. 左边第一列是列别,里面也有空格(比如, “Cost of Goods Sold ($ mlns)”)
: 5. 用pdftotext -layout以后,列于列时间的空格数目不完全一致,因为有的cell里面
: 东西都,所以不需要很多空格吧列于列据别开来,有的列cell东西少,需要很多空格吧
: column区别开来。
: :)
: 最终真的可能还是要用牛逼的东西比如java

e*******o
发帖数: 4654
16
Perl 的老大也是你们文科生。

【在 F****3 的大作中提到】
: 谢谢啊!我用了下面这个
: for file in *.pdf; do pdftotext -layout "$file" "$file.txt"; done
: 可以把所有的PDF转换成text文件,但是表格是"看上去"对齐了,但是好像中间空格数
: 目不一致,所以很难把text转换成table。
: 另外PDF里面有很多解释的文档,要把文档和table分开目前还不知道怎么实现。
: 文科的水平很菜,千万别笑啊。

l*********s
发帖数: 5409
17
嗯,忘了那里看到的,说是最牛的程序员都是学社科出身的。

【在 e*******o 的大作中提到】
: Perl 的老大也是你们文科生。
F****3
发帖数: 1504
18
谢谢大家的热心帮助啊。我仔细研究一下 :D 怎么解决这个工程问题.

【在 d******k 的大作中提到】
: 不客气,以前折腾过类似的东西,算有点经验。
: 如果date格式在固定的列,相对好解决。
: 如果有特征可以把第一列的内容和第二列简单区别开来,比如第一列以)”结尾,第二
: 列是数字,也是可以通过代码专门处理的。
: (关键就是你要找到这个table的每一列的特征,用程序语言把他们区分开来。)
: 另外,可以直接在excel里面用vba把txt里头写到sheet里面,可以参考下边的例子。
: vba要比java,c#简单一些。
: http://stackoverflow.com/questions/15045446/extract-tables-from

e*******o
发帖数: 4654
19
估计是文科生喜欢留胡子

【在 l*********s 的大作中提到】
: 嗯,忘了那里看到的,说是最牛的程序员都是学社科出身的。
l*******s
发帖数: 1258
20
记得nuance有个什么软件 搞这个不错
r****o
发帖数: 1950
21
用 Perl
做这个最适合了。

【在 F****3 的大作中提到】
: 谢谢你的热心帮助!
: 1. 固定列数
: 2. 包括数字,string,和date, 有cell里面有些空格(见item 3)
: 3. date的格式是“Feb 01, 2011”
: 4. 左边第一列是列别,里面也有空格(比如, “Cost of Goods Sold ($ mlns)”)
: 5. 用pdftotext -layout以后,列于列时间的空格数目不完全一致,因为有的cell里面
: 东西都,所以不需要很多空格吧列于列据别开来,有的列cell东西少,需要很多空格吧
: column区别开来。
: :)
: 最终真的可能还是要用牛逼的东西比如java

1 (共1页)
进入Programming版参与讨论
相关主题
什么方法能把matlab文件转换成c并且执行这个转换后的c不依赖于matlab再问个script的问题
求助:maple转换成Fortran的问题怎么生成表格(excel或其它的)?
怎样将array^转换成string?请教一个excel表格插值问题
怎样实现这个线性转换的算法 (转载)单链表里找循环链的起点的解法质疑
如何在Excel文档的一个cell中嵌入文件? (转载)fetching PDF articles on journals websites
水平表头什么软件可以把chm文件转换成pdf文件?
把同一个目录夹的PDF文件转换成txt文件如何把一个char转换成一个int啊?
什么软件能删除PDF的文字?acrobat好像不可以有Matlab的代码,怎么样能转换成C/C++能用的库文件?
相关话题的讨论汇总
话题: pdf话题: 空格话题: 表格话题: excel话题: java