支持HW团队,就支付宝领取下面的红包吧!(2018年3月31前,就几毛,也会几块,可以和其他红包叠加使用),你领取消费,HW有奖励。红包使用无条件限制,有条件请注意是不是有病毒。

小伙伴们,给大家发红包喽!人人可领,领完就能用。祝大家领取的红包金额大大大!#吱口令#长按复制此消息,打开支付宝就能领取!er1OEj73Uj

登入 注册 | 验证
| 搜索
HelloWorld论坛 : > 计算机科学、技术、教学> 电脑应用> linux系统> [转]PDF文本提取
 
 
 
 
 
 
类别:python 阅读:5322 评论:0 时间:三月 17, 2012, 3:20 p.m. 关键字:

 

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

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

Linux下poppler-utils中的pdftotext.

?View Code BASH
 

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

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

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

?View Code BASH
 

$ 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倒是有一堆可以选择, 仁者见仁了.

[挂载人]初学MPEG [审核人]初学MPEG 推荐

个人签名--------------------------------------------------------------------------------

Please Login (or Sign Up) to leave a comment