Dirty Job: PDF文本提取

一个同学说他们以后要读研有这样一个需求, 在上交所搜集上市公司的各种报告, PDF格式, 手工搜集提取整理数据要做几个月. 然后给我华丽丽的演示了一个他们找人写的工具, 自动搜集PDF并且提取数据写入表格, 解开那jar看了一下用到了Apache的PDFBox, 我想这也太dirty了吧, 真忍不了 ... 上交所那货至少不是还提供了一个XBLR接口么 ... 今天又说花了几天时间开了n台机器终于跑完了, 本人表示默默路过 ...

好吧, 为了无限可能的dirty job, 几个十分无奈的PDF文本提取的选择(排除需要OCR这货的情况):

Linux下poppler-utils中的pdftotext.

$ for f in *.pdf
> do
>   pdftotext "$f"
> done

测试了一下, 速度不错, 对中文支持很好. 在R中直接调用也非常方便.

第二个选择, stackoverflow上推荐的PDF Miner, CJK支持什么的, 安装起来稍微有点麻烦, 支持竖排文档, 支持密码访问, 支持提取TOC信息, 纯python, 速度慢.

$ pdf2txt.py -P password -c gb2312 -o foo.txt foo.pdf

第三个选择, python recipes中提到的pyPdf方案.

?View Code PYTHON
import pyPdf
 
def getPDFContent(path):
    content = ""
    # 读入文件
    pdf = pyPdf.PdfFileReader(file(path, "rb"))
    # 循环所有页
    for i in range(0, pdf.getNumPages()):
        # 提取文本
        content += pdf.getPage(i).extractText() + "\n"
    # 处理空格
    content = " ".join(content.replace(u"\xa0", " ").strip().split())
    return content
 
print getPDFContent("test.pdf").encode("ascii", "ignore")

更底层的lib倒是有一堆可以选择, 仁者见仁了.

POC2009的Slides

poc 看邮件列表,发现有人说POC2009上n多大牛的slides可以下载了 .. 顺手down下来看看,呃,基本上没有看懂的 .. 所以只能在此给出简单的膜拜模型了 .. 不过,单从每个presentation的标题来看就可以知道大家的研究领域涵盖之广,竟然还有一位讲的是Hacking Satellite(都研究到卫星安全了?),人与人的视野和思维确实不一样啊 .. 仰望中 .. 三位来自中国的演讲者MJ0011(内核驱动研究,人和技术都很好,似乎几年前在BBS上有过交流)、Xu Hao、TieLei Wang(Google了一下,是一位北大计算机所的博士)的题目也都很不错,有兴趣的同学可以到下面的网站下载pdf格式的slides观摩:

http://www.powerofcommunity.net/pastcon_2009.html

忍不住感慨一句,他们的slides,都很精致!

注:
POC,全称为Power of Community,定位于“International Hacking & Security Conference”,本次的POC2009为第四届,已于今年的11月5日到11月6日在韩国的首尔举行。

分享一个教育网的优质资源站

闲逛时就逛进了一个教育网的优质资源站点,提供了很多Unix和Linux发行版、各个版本的Oracle、Apache、MySQL、PHP,html、chm、pdf格式的各类电子书,Linux、Oracle、PHP+MySQL编程、Shell编程等方面的视频教程。

我这里的全局速度大概是几M每秒(深夜):

http://eduunix.ccut.edu.cn

其实,如果你能够好奇地挖掘一下的话,资源并不只有首页链到的那么多:

继续阅读